ngx-histaff-alpha 5.8.7 → 5.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DbJfutOU.mjs → ngx-histaff-alpha-ai-hint-for-table.component-DkR68g_D.mjs} +3 -3
  2. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DbJfutOU.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-DkR68g_D.mjs.map} +1 -1
  3. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-B_-v1yYK.mjs → ngx-histaff-alpha-core-form-design.component-BdhATAGQ.mjs} +5 -5
  4. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-B_-v1yYK.mjs.map → ngx-histaff-alpha-core-form-design.component-BdhATAGQ.mjs.map} +1 -1
  5. package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-CYIJgW4r.mjs → ngx-histaff-alpha-core-sticker-collection.component-BpGs-DPS.mjs} +3 -3
  6. package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-CYIJgW4r.mjs.map → ngx-histaff-alpha-core-sticker-collection.component-BpGs-DPS.mjs.map} +1 -1
  7. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BfGlpVVG.mjs → ngx-histaff-alpha-core-toast-loading.component-DgkCGcO3.mjs} +2 -2
  8. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BfGlpVVG.mjs.map → ngx-histaff-alpha-core-toast-loading.component-DgkCGcO3.mjs.map} +1 -1
  9. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-BfYpNMIr.mjs → ngx-histaff-alpha-core-workflow-consume.component-DcW5-ccd.mjs} +2 -2
  10. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-BfYpNMIr.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-DcW5-ccd.mjs.map} +1 -1
  11. package/fesm2022/{ngx-histaff-alpha-db-settings.component-CJ_Lw-pH.mjs → ngx-histaff-alpha-db-settings.component--A9LF6qi.mjs} +5 -5
  12. package/fesm2022/{ngx-histaff-alpha-db-settings.component-CJ_Lw-pH.mjs.map → ngx-histaff-alpha-db-settings.component--A9LF6qi.mjs.map} +1 -1
  13. package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-8kFLNM6i.mjs → ngx-histaff-alpha-design-wrapper.component-C7KFfwIO.mjs} +25 -12
  14. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-C7KFfwIO.mjs.map +1 -0
  15. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-24BM6SEl.mjs → ngx-histaff-alpha-design-wrapper.route-BwqRICHr.mjs} +5 -5
  16. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-24BM6SEl.mjs.map → ngx-histaff-alpha-design-wrapper.route-BwqRICHr.mjs.map} +1 -1
  17. package/fesm2022/{ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs → ngx-histaff-alpha-live-form.component-CResWrTN.mjs} +43 -17
  18. package/fesm2022/ngx-histaff-alpha-live-form.component-CResWrTN.mjs.map +1 -0
  19. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-BrCaji39.mjs → ngx-histaff-alpha-ngx-histaff-alpha-KQfMzGte.mjs} +12 -11
  20. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-KQfMzGte.mjs.map +1 -0
  21. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-CQBYc9j3.mjs → ngx-histaff-alpha-tracker-studio.component-CrOqWArR.mjs} +2 -2
  22. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-CQBYc9j3.mjs.map → ngx-histaff-alpha-tracker-studio.component-CrOqWArR.mjs.map} +1 -1
  23. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BalvovBt.mjs → ngx-histaff-alpha-wf-form-assign.component-zmq-EMFu.mjs} +2 -2
  24. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BalvovBt.mjs.map → ngx-histaff-alpha-wf-form-assign.component-zmq-EMFu.mjs.map} +1 -1
  25. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-C7yV2MVH.mjs → ngx-histaff-alpha-wf-instance-status.component-D0gG67sV.mjs} +2 -2
  26. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-C7yV2MVH.mjs.map → ngx-histaff-alpha-wf-instance-status.component-D0gG67sV.mjs.map} +1 -1
  27. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-DBRrqNWi.mjs → ngx-histaff-alpha-wf-instance-step-react.component-DtkWD_Rl.mjs} +3 -3
  28. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-DBRrqNWi.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-DtkWD_Rl.mjs.map} +1 -1
  29. package/fesm2022/ngx-histaff-alpha.mjs +1 -1
  30. package/lib/app/libraries/core-workflow-builder/interfaces/IWfWorkflow.d.ts +1 -0
  31. package/lib/app/libraries/core-workflow-builder/wf-more/wf-more.component.d.ts +6 -1
  32. package/package.json +1 -1
  33. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-8kFLNM6i.mjs.map +0 -1
  34. package/fesm2022/ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs.map +0 -1
  35. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-BrCaji39.mjs.map +0 -1
@@ -1,23 +1,23 @@
1
- import { h as CanDeactivateGuard } from './ngx-histaff-alpha-ngx-histaff-alpha-BrCaji39.mjs';
1
+ import { h as CanDeactivateGuard } from './ngx-histaff-alpha-ngx-histaff-alpha-KQfMzGte.mjs';
2
2
 
3
3
  const wfDesignWrapperRoutes = [
4
4
  {
5
5
  path: '',
6
- loadComponent: () => import('./ngx-histaff-alpha-design-wrapper.component-8kFLNM6i.mjs').then(m => m.DesignWrapperComponent),
6
+ loadComponent: () => import('./ngx-histaff-alpha-design-wrapper.component-C7KFfwIO.mjs').then(m => m.DesignWrapperComponent),
7
7
  canDeactivate: [CanDeactivateGuard],
8
8
  children: [
9
9
  {
10
10
  path: ':id',
11
11
  outlet: 'preview',
12
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
12
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CResWrTN.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
13
13
  },
14
14
  ]
15
15
  },
16
16
  {
17
17
  path: ':id',
18
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
18
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CResWrTN.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent)
19
19
  }
20
20
  ];
21
21
 
22
22
  export { wfDesignWrapperRoutes };
23
- //# sourceMappingURL=ngx-histaff-alpha-design-wrapper.route-24BM6SEl.mjs.map
23
+ //# sourceMappingURL=ngx-histaff-alpha-design-wrapper.route-BwqRICHr.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-design-wrapper.route-24BM6SEl.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.route.ts"],"sourcesContent":["import { Routes } from '@angular/router';\r\nimport { CanDeactivateGuard } from '../../../guards/can-deactivate.guard';\r\n\r\nexport const wfDesignWrapperRoutes: Routes = [\r\n {\r\n path: '',\r\n loadComponent: () => import('./design-wrapper.component').then(m => m.DesignWrapperComponent),\r\n canDeactivate: [CanDeactivateGuard],\r\n children: [\r\n {\r\n path: ':id',\r\n outlet: 'preview',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n },\r\n ]\r\n },\r\n {\r\n path: ':id',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n }\r\n]"],"names":[],"mappings":";;AAGa,MAAA,qBAAqB,GAAW;AACzC,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MAAM,OAAO,2DAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;QAC7F,aAAa,EAAE,CAAC,kBAAkB,CAAC;AACnC,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH,aAAA;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH;;;;;"}
1
+ {"version":3,"file":"ngx-histaff-alpha-design-wrapper.route-BwqRICHr.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.route.ts"],"sourcesContent":["import { Routes } from '@angular/router';\r\nimport { CanDeactivateGuard } from '../../../guards/can-deactivate.guard';\r\n\r\nexport const wfDesignWrapperRoutes: Routes = [\r\n {\r\n path: '',\r\n loadComponent: () => import('./design-wrapper.component').then(m => m.DesignWrapperComponent),\r\n canDeactivate: [CanDeactivateGuard],\r\n children: [\r\n {\r\n path: ':id',\r\n outlet: 'preview',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n },\r\n ]\r\n },\r\n {\r\n path: ':id',\r\n loadComponent: () => import('../../core-form-design/live-form/live-form.component').then(m => m.LiveFormComponent)\r\n }\r\n]"],"names":[],"mappings":";;AAGa,MAAA,qBAAqB,GAAW;AACzC,IAAA;AACI,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,EAAE,MAAM,OAAO,2DAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC;QAC7F,aAAa,EAAE,CAAC,kBAAkB,CAAC;AACnC,QAAA,QAAQ,EAAE;AACN,YAAA;AACI,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,SAAS;AACjB,gBAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH,aAAA;AACJ;AACJ,KAAA;AACD,IAAA;AACI,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,aAAa,EAAE,MAAM,OAAO,sDAAsD,oCAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB;AACpH;;;;;"}
@@ -1,13 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, signal, computed, isDevMode, inject, HostListener, ChangeDetectionStrategy, Component, output, ChangeDetectorRef, Injector, effect } from '@angular/core';
3
- import { e as BaseComponent, a0 as EnumImageResolverType, b as CoreWorkflowService, i as AlertService, L as AppConfigService, l as alertOptions, M as MultiLanguageService, T as TranslatePipe, I as ImageErrorResolverDirective, a1 as NormalizeHumanNamePipe, g as TooltipDirective, a2 as CoreIosSwitcherComponent, m as CoreTerminalSpinnerComponent, C as CorePageHeaderComponent, q as DomService, x as CoreParamControlComponent, n as CoreFormDesignService, z as ApplicationHelpService, K as JsonService, A as AppService, a3 as CoreFormService, E as EnumFormBaseContolType, O as EnumCorePageEditMode, P as EnumCoreButtonVNSCode, c as EnumCoreFormControlSeekerSourceType, H as HotKeysDirective, U as CoreFormComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-BrCaji39.mjs';
3
+ import { e as BaseComponent, a0 as EnumImageResolverType, b as CoreWorkflowService, i as AlertService, L as AppConfigService, l as alertOptions, M as MultiLanguageService, T as TranslatePipe, I as ImageErrorResolverDirective, a1 as NormalizeHumanNamePipe, g as TooltipDirective, a2 as CoreIosSwitcherComponent, m as CoreTerminalSpinnerComponent, C as CorePageHeaderComponent, q as DomService, x as CoreParamControlComponent, n as CoreFormDesignService, z as ApplicationHelpService, K as JsonService, A as AppService, a3 as CoreFormService, E as EnumFormBaseContolType, O as EnumCorePageEditMode, P as EnumCoreButtonVNSCode, c as EnumCoreFormControlSeekerSourceType, H as HotKeysDirective, U as CoreFormComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-KQfMzGte.mjs';
4
4
  import { catchError, of, finalize, BehaviorSubject, filter, distinctUntilChanged, tap } from 'rxjs';
5
5
  import { NgClass, JsonPipe, NgStyle } from '@angular/common';
6
6
  import { RouterLink, Router, ActivatedRoute } from '@angular/router';
7
7
  import * as i1 from '@angular/forms';
8
8
  import { FormsModule, Validators } from '@angular/forms';
9
9
  import { trigger, transition, style, animate } from '@angular/animations';
10
- import { EnumTranslateKey } from 'alpha-global-constants';
11
10
 
12
11
  class RoutingPreviewComponent extends BaseComponent {
13
12
  constructor(mls) {
@@ -705,6 +704,7 @@ class LiveFormComponent extends BaseComponent {
705
704
  }
706
705
  }
707
706
  addKickOffInjectedFields() {
707
+ const workflow = this.$workflow();
708
708
  const current = this.$inputSections();
709
709
  const sections = [...current];
710
710
  sections.push({
@@ -744,17 +744,43 @@ class LiveFormComponent extends BaseComponent {
744
744
  flexSize: 12,
745
745
  controlType: EnumFormBaseContolType.TEXTAREA,
746
746
  textareaRows: 5,
747
+ /*
747
748
  validators: [
748
- {
749
- name: 'required',
750
- validator: Validators.required,
751
- errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED
752
- }
749
+ {
750
+ name: 'required',
751
+ validator: Validators.required,
752
+ errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED
753
+ }
753
754
  ],
755
+ */
754
756
  }
755
757
  ]
756
758
  ]
757
759
  });
760
+ if (!!workflow && !!workflow.allowCustomCc) {
761
+ sections.push({
762
+ rows: [
763
+ [
764
+ {
765
+ field: "___customCcs",
766
+ type: "text",
767
+ value: '',
768
+ label: "UI_FORM_CONTROL_LABEL.CUSTOM_CCS",
769
+ flexSize: 12,
770
+ controlType: EnumFormBaseContolType.TEXTAREA,
771
+ textareaRows: 3,
772
+ validators: [
773
+ {
774
+ name: 'pattern',
775
+ validator: Validators.pattern(/^(\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\s*;)*\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\s*$/),
776
+ errorMessage: "Please enter a list of email addresses separated by semicolons (;)"
777
+ }
778
+ ]
779
+ }
780
+ ]
781
+ ]
782
+ });
783
+ }
758
784
  if (!!this.$onBehalfMode()) {
759
785
  sections.push({
760
786
  rows: [
@@ -819,13 +845,13 @@ class LiveFormComponent extends BaseComponent {
819
845
  flexSize: 12,
820
846
  controlType: EnumFormBaseContolType.TEXTAREA,
821
847
  textareaRows: 5,
822
- validators: [
823
- {
824
- name: 'required',
825
- validator: Validators.required,
826
- errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED
827
- }
828
- ],
848
+ // validators: [
849
+ // {
850
+ // name: 'required',
851
+ // validator: Validators.required,
852
+ // errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED
853
+ // }
854
+ // ],
829
855
  }
830
856
  ]
831
857
  ]
@@ -870,7 +896,7 @@ class LiveFormComponent extends BaseComponent {
870
896
  this.clearInjectedFields();
871
897
  }
872
898
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: LiveFormComponent, deps: [{ token: MultiLanguageService }, { token: CoreFormService }], target: i0.ɵɵFactoryTarget.Component }); }
873
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: LiveFormComponent, isStandalone: true, selector: "live-form", inputs: { $designMode: { classPropertyName: "$designMode", publicName: "$designMode", isSignal: true, isRequired: false, transformFunction: null }, $forKickOff: { classPropertyName: "$forKickOff", publicName: "$forKickOff", isSignal: true, isRequired: false, transformFunction: null }, $workflowReactContext: { classPropertyName: "$workflowReactContext", publicName: "$workflowReactContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { $onClose: "$onClose" }, usesInheritance: true, ngImport: i0, template: "<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>", styles: [".live-form-container .modal-container{overflow-y:auto!important;box-sizing:border-box}.live-form-container .form-wrapper.live-form{padding-top:0;padding-bottom:15px;background-color:#fff;position:relative}.live-form-container .form-wrapper.live-form .live-form-header{padding:0 15px}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon{position:absolute;right:7px;top:6px;z-index:2;color:gray;cursor:pointer}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon i{font-size:18px}.live-form-container .form-wrapper.live-form .submition-wrapper{display:flex;align-items:center;justify-content:flex-end;padding:0 24px;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button{border-radius:0}.live-form-container .form-wrapper.live-form .submition-wrapper button:not(:last-child){margin-right:8px}.live-form-container .form-wrapper.live-form .show-routing-wrapper{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .form-wrapper.live-form .show-routing-wrapper input{width:120px}.live-form-container .modal-content-root{padding:0;overflow-y:visible;background-color:transparent!important;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.live-form-container pre{background-color:#fff;color:#333;padding:1rem 1.5rem;border-radius:10px;box-shadow:0 2px 6px #00000014;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;overflow-x:auto;line-height:1.5;max-height:500px;overflow-y:auto;margin:0}.live-form-container .dev-hint{font-size:12px;color:#888;background-color:#f9f9f9;padding:6px 12px;margin:8px 0;border-left:4px solid #ccc}.live-form-container .h50{height:50px}.live-form-container .routing-preview-wrapper{overflow:hidden;max-height:0;opacity:0;transform:translateY(-10px);transition:max-height .4s ease-out,opacity .4s ease-out,transform .4s ease-out}.live-form-container .routing-preview-wrapper.visible{max-height:800px;overflow:visible;opacity:1;transform:translateY(0)}.live-form-container .show-routing-wrapper button{height:35px;font-size:13px;border-radius:0;color:#fff}.live-form-container .hidden-requester-selector{position:absolute;width:0;height:0;top:-200px;left:-200px;overflow:visible}.live-form-container .button-group{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .button-group button{height:35px;border-radius:0;font-size:13px;margin:0 7.5px;width:120px}.live-form-container .button-group button:last-child{margin-right:0}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: HotKeysDirective, selector: "[hotKeys]", inputs: ["hotKeys"] }, { kind: "component", type: RoutingPreviewPanelComponent, selector: "routing-preview-panel", inputs: ["$minWidth"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "width", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "disableCancelButton", "checkError$", "hideButtons", "forceCreateNewForm", "secondBottomTemplateRef", "hideDevSector", "hideCalculatedSection", "buttonGroupTemplateRef"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
899
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: LiveFormComponent, isStandalone: true, selector: "live-form", inputs: { $designMode: { classPropertyName: "$designMode", publicName: "$designMode", isSignal: true, isRequired: false, transformFunction: null }, $forKickOff: { classPropertyName: "$forKickOff", publicName: "$forKickOff", isSignal: true, isRequired: false, transformFunction: null }, $workflowReactContext: { classPropertyName: "$workflowReactContext", publicName: "$workflowReactContext", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { $onClose: "$onClose" }, usesInheritance: true, ngImport: i0, template: "<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>", styles: [".live-form-container .modal-container{overflow-y:auto!important;box-sizing:border-box}.live-form-container .form-wrapper.live-form{padding-top:0;padding-bottom:15px;background-color:#fff;position:relative}.live-form-container .form-wrapper.live-form .live-form-header{padding:0 15px}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon{position:absolute;right:7px;top:6px;z-index:2;color:gray;cursor:pointer}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon i{font-size:18px}.live-form-container .form-wrapper.live-form .submition-wrapper{display:flex;align-items:center;justify-content:flex-end;padding:0 24px;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button{border-radius:0;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button:not(:last-child){margin-right:8px}.live-form-container .form-wrapper.live-form .show-routing-wrapper{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .form-wrapper.live-form .show-routing-wrapper input{width:120px}.live-form-container .modal-content-root{padding:0;overflow-y:visible;background-color:transparent!important;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.live-form-container pre{background-color:#fff;color:#333;padding:1rem 1.5rem;border-radius:10px;box-shadow:0 2px 6px #00000014;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;overflow-x:auto;line-height:1.5;max-height:500px;overflow-y:auto;margin:0}.live-form-container .dev-hint{font-size:12px;color:#888;background-color:#f9f9f9;padding:6px 12px;margin:8px 0;border-left:4px solid #ccc}.live-form-container .h50{height:50px}.live-form-container .routing-preview-wrapper{overflow:hidden;max-height:0;opacity:0;transform:translateY(-10px);transition:max-height .4s ease-out,opacity .4s ease-out,transform .4s ease-out}.live-form-container .routing-preview-wrapper.visible{max-height:800px;overflow:visible;opacity:1;transform:translateY(0)}.live-form-container .show-routing-wrapper button{height:35px;font-size:13px;border-radius:0;color:#fff}.live-form-container .hidden-requester-selector{position:absolute;width:0;height:0;top:-200px;left:-200px;overflow:visible}.live-form-container .button-group{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .button-group button{height:35px;border-radius:0;font-size:13px;margin:0 7.5px;width:120px}.live-form-container .button-group button:last-child{margin-right:0}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: HotKeysDirective, selector: "[hotKeys]", inputs: ["hotKeys"] }, { kind: "component", type: RoutingPreviewPanelComponent, selector: "routing-preview-panel", inputs: ["$minWidth"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "width", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "disableCancelButton", "checkError$", "hideButtons", "forceCreateNewForm", "secondBottomTemplateRef", "hideDevSector", "hideCalculatedSection", "buttonGroupTemplateRef"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
874
900
  }
875
901
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: LiveFormComponent, decorators: [{
876
902
  type: Component,
@@ -881,7 +907,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
881
907
  CorePageHeaderComponent,
882
908
  CoreFormComponent,
883
909
  TranslatePipe,
884
- ], template: "<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>", styles: [".live-form-container .modal-container{overflow-y:auto!important;box-sizing:border-box}.live-form-container .form-wrapper.live-form{padding-top:0;padding-bottom:15px;background-color:#fff;position:relative}.live-form-container .form-wrapper.live-form .live-form-header{padding:0 15px}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon{position:absolute;right:7px;top:6px;z-index:2;color:gray;cursor:pointer}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon i{font-size:18px}.live-form-container .form-wrapper.live-form .submition-wrapper{display:flex;align-items:center;justify-content:flex-end;padding:0 24px;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button{border-radius:0}.live-form-container .form-wrapper.live-form .submition-wrapper button:not(:last-child){margin-right:8px}.live-form-container .form-wrapper.live-form .show-routing-wrapper{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .form-wrapper.live-form .show-routing-wrapper input{width:120px}.live-form-container .modal-content-root{padding:0;overflow-y:visible;background-color:transparent!important;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.live-form-container pre{background-color:#fff;color:#333;padding:1rem 1.5rem;border-radius:10px;box-shadow:0 2px 6px #00000014;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;overflow-x:auto;line-height:1.5;max-height:500px;overflow-y:auto;margin:0}.live-form-container .dev-hint{font-size:12px;color:#888;background-color:#f9f9f9;padding:6px 12px;margin:8px 0;border-left:4px solid #ccc}.live-form-container .h50{height:50px}.live-form-container .routing-preview-wrapper{overflow:hidden;max-height:0;opacity:0;transform:translateY(-10px);transition:max-height .4s ease-out,opacity .4s ease-out,transform .4s ease-out}.live-form-container .routing-preview-wrapper.visible{max-height:800px;overflow:visible;opacity:1;transform:translateY(0)}.live-form-container .show-routing-wrapper button{height:35px;font-size:13px;border-radius:0;color:#fff}.live-form-container .hidden-requester-selector{position:absolute;width:0;height:0;top:-200px;left:-200px;overflow:visible}.live-form-container .button-group{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .button-group button{height:35px;border-radius:0;font-size:13px;margin:0 7.5px;width:120px}.live-form-container .button-group button:last-child{margin-right:0}\n"] }]
910
+ ], template: "<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>", styles: [".live-form-container .modal-container{overflow-y:auto!important;box-sizing:border-box}.live-form-container .form-wrapper.live-form{padding-top:0;padding-bottom:15px;background-color:#fff;position:relative}.live-form-container .form-wrapper.live-form .live-form-header{padding:0 15px}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon{position:absolute;right:7px;top:6px;z-index:2;color:gray;cursor:pointer}.live-form-container .form-wrapper.live-form .live-form-header .preview-close-icon i{font-size:18px}.live-form-container .form-wrapper.live-form .submition-wrapper{display:flex;align-items:center;justify-content:flex-end;padding:0 24px;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button{border-radius:0;font-size:13px}.live-form-container .form-wrapper.live-form .submition-wrapper button:not(:last-child){margin-right:8px}.live-form-container .form-wrapper.live-form .show-routing-wrapper{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .form-wrapper.live-form .show-routing-wrapper input{width:120px}.live-form-container .modal-content-root{padding:0;overflow-y:visible;background-color:transparent!important;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.live-form-container pre{background-color:#fff;color:#333;padding:1rem 1.5rem;border-radius:10px;box-shadow:0 2px 6px #00000014;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;overflow-x:auto;line-height:1.5;max-height:500px;overflow-y:auto;margin:0}.live-form-container .dev-hint{font-size:12px;color:#888;background-color:#f9f9f9;padding:6px 12px;margin:8px 0;border-left:4px solid #ccc}.live-form-container .h50{height:50px}.live-form-container .routing-preview-wrapper{overflow:hidden;max-height:0;opacity:0;transform:translateY(-10px);transition:max-height .4s ease-out,opacity .4s ease-out,transform .4s ease-out}.live-form-container .routing-preview-wrapper.visible{max-height:800px;overflow:visible;opacity:1;transform:translateY(0)}.live-form-container .show-routing-wrapper button{height:35px;font-size:13px;border-radius:0;color:#fff}.live-form-container .hidden-requester-selector{position:absolute;width:0;height:0;top:-200px;left:-200px;overflow:visible}.live-form-container .button-group{padding:15px;display:flex;align-items:center;justify-content:flex-end}.live-form-container .button-group button{height:35px;border-radius:0;font-size:13px;margin:0 7.5px;width:120px}.live-form-container .button-group button:last-child{margin-right:0}\n"] }]
885
911
  }], ctorParameters: () => [{ type: MultiLanguageService }, { type: CoreFormService }] });
886
912
 
887
913
  var liveForm_component = /*#__PURE__*/Object.freeze({
@@ -890,4 +916,4 @@ var liveForm_component = /*#__PURE__*/Object.freeze({
890
916
  });
891
917
 
892
918
  export { LiveFormComponent as L, RoutingPreviewPanelComponent as R, liveForm_component as l };
893
- //# sourceMappingURL=ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs.map
919
+ //# sourceMappingURL=ngx-histaff-alpha-live-form.component-CResWrTN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-histaff-alpha-live-form.component-CResWrTN.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview/routing-preview.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview/routing-preview.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview-panel/routing-preview-panel.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/routing-preview-panel/routing-preview-panel.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/live-form/live-form.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/live-form/live-form.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, HostListener, inject, input, isDevMode, signal, WritableSignal } from '@angular/core';\r\nimport { ISubmitResponseItem } from '../interfaces/ISubmitResponseItem';\r\nimport { IRoutingResult } from '../interfaces/IRoutingResult';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { EnumImageResolverType, ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { IGenerateWorkflowRoutingRequest } from '../interfaces/IGenerateWorkflowRoutingRequest';\r\nimport { catchError, of, tap, finalize } from 'rxjs';\r\nimport { NormalizeHumanNamePipe } from '../../pipes/normalize-human-name.pipe';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { CoreIosSwitcherComponent } from '../../core-ios-switcher/core-ios-switcher/core-ios-switcher.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { JsonPipe, NgClass } from '@angular/common';\r\nimport { AppConfigService } from '../../../services/app-config.service';\r\nimport {\r\n trigger,\r\n transition,\r\n style,\r\n animate\r\n} from '@angular/animations';\r\nimport { IInitialDebugSubmitRequest } from '../interfaces/IInitialDebugSubmitRequest';\r\nimport { IPlannedActor } from '../interfaces/IPlannedActor';\r\nimport { CoreTerminalSpinnerComponent } from '../../core-terminal-spinner/core-terminal-spinner.component';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { RouterLink } from '@angular/router';\r\nimport { ISubmitResult } from '../interfaces/ISubmitResult';\r\n\r\n@Component({\r\n selector: 'routing-preview',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n RouterLink,\r\n NgClass,\r\n JsonPipe,\r\n TranslatePipe,\r\n ImageErrorResolverDirective,\r\n NormalizeHumanNamePipe,\r\n TooltipDirective,\r\n CoreIosSwitcherComponent,\r\n CoreTerminalSpinnerComponent,\r\n CorePageHeaderComponent\r\n ],\r\n templateUrl: './routing-preview.component.html',\r\n styleUrl: './routing-preview.component.scss',\r\n animations: [\r\n trigger('fadeToggle', [\r\n transition(':enter', [\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 }))\r\n ]),\r\n transition(':leave', [\r\n animate('150ms ease-in', style({ opacity: 0 }))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class RoutingPreviewComponent extends BaseComponent {\r\n\r\n $previewMode = input<boolean>(true);\r\n $loading = signal(false);\r\n $loadingMessage = signal('');\r\n $backendMessage = signal('');\r\n $submitResult = signal<ISubmitResult | null>(null);\r\n\r\n $submitErrors = computed(() => {\r\n const submitResult = this.$submitResult();\r\n return submitResult?.items.map(x => x.error)\r\n })\r\n\r\n $results: WritableSignal<IRoutingResult[]> = signal([]);\r\n $logExpandedStates: WritableSignal<boolean[]> = signal([]);\r\n $logs: WritableSignal<string[]> = signal([]);\r\n imageResolverType = EnumImageResolverType.AVATAR;\r\n\r\n isDevMode = isDevMode();\r\n\r\n $isDebugMode = signal(false);\r\n $showResolvedSteps = signal(false);\r\n\r\n //$resolvedStepsJson = computed(() => JSON.stringify(this.$steps(), null, 2));\r\n\r\n wfs = inject(CoreWorkflowService);\r\n as = inject(AlertService);\r\n public appConfigService = inject(AppConfigService);\r\n\r\n liveForm = this.wfs.liveForm;\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.wfs.$showLiveRouting.set(false);\r\n }\r\n }\r\n\r\n getGroupSubmitErrors(index: number): string[] {\r\n if (!this.$submitResult()) return [];\r\n return this.$submitResult()!.items.filter(x => !!x.error && !!x.error.length).map(x => x.error!)\r\n }\r\n\r\n generateRouting(): void {\r\n\r\n const steps = this.wfs.$currentSteps();\r\n\r\n const nameMap = new Map<string, number>();\r\n\r\n for (const step of steps) {\r\n const name = step.name?.trim();\r\n if (!name) continue;\r\n\r\n nameMap.set(name, (nameMap.get(name) ?? 0) + 1);\r\n }\r\n\r\n const duplicateNames = [...nameMap.entries()]\r\n .filter(([_, count]) => count > 1)\r\n .map(([name]) => name);\r\n\r\n if (duplicateNames.length > 0) {\r\n this.as.warn(\r\n `Duplicate step name(s) found: ${duplicateNames.join(\", \")}`,\r\n alertOptions\r\n );\r\n this.wfs.$designActiveTab.set(3);\r\n return;\r\n }\r\n\r\n\r\n if (!this.liveForm.valid) {\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n this.as.info(\"Please fill required fields\", alertOptions);\r\n return;\r\n }\r\n\r\n if (!this.wfs.$currentFlow()) {\r\n this.as.info(\"No flow detected\", alertOptions);\r\n return;\r\n }\r\n\r\n const request: IGenerateWorkflowRoutingRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.liveForm.getRawValue(),\r\n ___targetEmployees: this.liveForm.get('___targetEmployees')?.getRawValue()\r\n };\r\n\r\n this.$backendMessage.set('');\r\n this.$loading.set(true);\r\n this.$loadingMessage.set(\"Generating routes...\")\r\n\r\n this.wfs.generateRouting(request).pipe(\r\n catchError(err => {\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n this.$backendMessage.set(msg);\r\n return of({ ok: false, status: 500, body: { messageCode: msg } });\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false);\r\n this.$loadingMessage.set('');\r\n })\r\n ).subscribe(x => {\r\n\r\n if (x.ok && x.status === 200) {\r\n const body = x.body;\r\n\r\n if (body?.statusCode === 200) {\r\n const inner = body.innerBody;\r\n\r\n this.$logs.set(inner.logs ?? []);\r\n\r\n const backendResults = inner.results as IRoutingResult[];\r\n\r\n const validResults: IRoutingResult[] = [];\r\n const allErrors: string[] = [];\r\n\r\n for (const result of backendResults) {\r\n const { targetEmployeeId, targetEmployeeFullName, error, response } = result;\r\n\r\n if (error || !response) {\r\n allErrors.push(`🚫 Employee ${targetEmployeeId} (${targetEmployeeFullName}): ${error || 'Unknown error'}`);\r\n continue;\r\n }\r\n\r\n // Ensure deep cloning or normalization if needed\r\n response.steps = response.steps.map(step => ({\r\n id: step.id,\r\n workflowId: step.workflowId,\r\n name: step.name,\r\n type: step.type,\r\n config: step.config,\r\n resolvedActors: step.resolvedActors\r\n }));\r\n\r\n validResults.push(result);\r\n\r\n // Patch latest attributes (or collect per-employee if needed)\r\n this.liveForm.patchValue(response.attributes);\r\n }\r\n\r\n this.$results.set(validResults);\r\n this.$logExpandedStates.set(new Array(validResults.length).fill(false));\r\n this.$backendMessage.set(allErrors.join('\\n'));\r\n\r\n } else {\r\n this.$backendMessage.set(body?.messageCode || 'UNEXPECTED_ERROR');\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set('API_ERROR');\r\n }\r\n });\r\n\r\n }\r\n\r\n initialDebugSubmit(): void {\r\n const request: IInitialDebugSubmitRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.liveForm.getRawValue(),\r\n results: this.$results()\r\n };\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.initialDebugSubmit(request)\r\n .pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of({ ok: false, status: 500, body: { messageCode: \"Error\" } });\r\n }),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n .subscribe(x => {\r\n\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.$submitResult.set(x.body.innerBody);\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n backToLiveForm(): void {\r\n this.wfs.$showLiveRouting.set(false);\r\n }\r\n\r\n onIsDebugModeChange(value: boolean): void {\r\n this.$isDebugMode.set(value);\r\n }\r\n\r\n toggleResolvedSteps(): void {\r\n this.$showResolvedSteps.set(!this.$showResolvedSteps());\r\n }\r\n\r\n\r\n onEmailChange(actor: IPlannedActor, email: string): void {\r\n this.$results.update(current => {\r\n current.forEach(stepGroup => {\r\n stepGroup.response?.steps.forEach(step => {\r\n step.resolvedActors\r\n .filter(a => a.employeeId === actor.employeeId)\r\n .forEach(a => a.email = email);\r\n });\r\n });\r\n return current;\r\n });\r\n }\r\n\r\n copy(value: string | number | undefined | null): void {\r\n if (!value) return;\r\n navigator.clipboard.writeText(value.toString()).then(() => {\r\n this.as.success('Copied!', alertOptions);\r\n });\r\n }\r\n\r\n toggleLog(index: number): void {\r\n this.$logExpandedStates.update(arr => {\r\n const newArr = [...arr];\r\n newArr[index] = !newArr[index];\r\n return newArr;\r\n });\r\n }\r\n\r\n isLogVisible(index: number): boolean {\r\n return this.$logExpandedStates()?.[index] ?? false;\r\n }\r\n\r\n getLogLinesFor(index: number): string[] {\r\n const logs = this.$logs();\r\n const prefix = `on behalf of`;\r\n const match = `#${index}`;\r\n return logs.filter(line => line.includes(prefix) ? line.includes(match) : true);\r\n }\r\n\r\n getCorrelationId(result: IRoutingResult): string | null {\r\n const filter = this.$submitResult()?.items?.filter(i => i.employeeId == result.targetEmployeeId);\r\n if (!!filter && !!filter.length) {\r\n return filter[0].correlationId;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n}","<div class=\"routing-preview-container inter-font p-relative\">\r\n\r\n <div class=\"correlation-id\">\r\n </div>\r\n\r\n <div class=\"routing-preview-header\">\r\n\r\n <div class=\"button-group\">\r\n <button type=\"button\" class=\"btn btn-primary h35\" (click)=\"backToLiveForm()\">Back to Form (ESC)</button>\r\n <button type=\"button\" class=\"btn btn-secondary h35\" (click)=\"generateRouting()\">Generate</button>\r\n <button @fadeToggle type=\"button\" class=\"btn btn-primary h35\" (click)=\"initialDebugSubmit()\">Submit</button>\r\n </div>\r\n\r\n @if (!!appConfigService.WORKFLOW_ENABLE_DEBUG_MODE) {\r\n <div class=\"debug-group\">\r\n <label>Debug mode</label>\r\n <core-ios-switcher [width]=\"45\" [showOnOffText]=\"false\" [ngModel]=\"$isDebugMode()\"\r\n (ngModelChange)=\"onIsDebugModeChange($event)\"></core-ios-switcher>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"workflows-wrapper\">\r\n @if ($loading()) {\r\n <core-terminal-spinner /><span>Generating...</span>\r\n } @else {\r\n\r\n\r\n @if (!!$results().length) {\r\n\r\n @for (result of $results(); track $index) {\r\n\r\n <div class=\"result-group mb-8 p-4 rounded bg-white shadow-sm\">\r\n\r\n <div class=\"flex items-center justify-between mb-3\">\r\n <h6 class=\"text-base font-semibold text-sky-700\">Routing for {{ result.targetEmployeeFullName }}</h6>\r\n <div class=\"d-flex d-flex-between\">\r\n <button type=\"button\" class=\"text-xs text-blue-500 underline btn btn-secondary\" (click)=\"toggleLog($index)\">\r\n {{ $logExpandedStates()[ $index ] ? 'Hide log' : 'Show log' }}\r\n </button>\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\r\n @for (result of $submitResult()?.items || []; track result.employeeId) {\r\n <div class=\"saga-link d-flex d-flex-start\">\r\n <label>{{ result.employeeFullName }}:</label>\r\n\r\n @if (result.correlationId) {\r\n <a class=\"external-link\" [routerLink]=\"['/root/workflow/status', result.correlationId]\">\r\n ✅ Click to see status\r\n </a>\r\n } @else {\r\n <span class=\"text-danger d-flex flex-column\">\r\n @for (line of (result.error?.split('\\n') || []); track line) {\r\n <div>❌ {{ line }}</div>\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"workflow-wrapper\">\r\n\r\n @for (step of result.response.steps! ?? []; track step.id) {\r\n <div class=\"step-column\" [attr.data-actor-count]=\"step.resolvedActors?.length || 0\">\r\n\r\n <div class=\"step-column-aux\">\r\n\r\n <div class=\"step-header {{ step.type.toLowerCase() }}\"\r\n [ngClass]=\"(step.actorResolvedStatus ?? 'RESOLVED').toLowerCase()\">\r\n {{ step.name | translate : lang }} {{ step.config?.routingLogic }}\r\n </div>\r\n\r\n @for (actor of step.resolvedActors; track $index) {\r\n <div class=\"actor-card-aux\">\r\n <div class=\"actor-card d-flex d-flex-start {{ step.type.toLowerCase() }}\">\r\n <div class=\"avatar-wrapper\">\r\n <img [src]=\"actor.avatar\" appImageErrorResolver [type]=\"imageResolverType\"\r\n [isFemale]=\"!!actor.isFemale!\" class=\"actor-avatar\" alt=\"{{ actor.fullName }}\" />\r\n </div>\r\n <div class=\"actor-details\">\r\n <div class=\"actor-line\">\r\n <i class=\"feather-user\"></i>\r\n <span class=\"actor-full-name\" [appTooltip]=\"actor.fullName\">{{ actor.fullName | normalizeHumanName\r\n }}</span>\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-briefcase\"></i>\r\n <span [appTooltip]=\"actor.jobName\">{{ actor.jobName }}</span>\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-mail\"></i>\r\n @if ($isDebugMode()) {\r\n <input @fadeToggle class=\"email-debug-input\" type=\"email\" [(ngModel)]=\"actor.email\"\r\n (ngModelChange)=\"onEmailChange(actor, $event)\" placeholder=\"Enter demo email\" />\r\n } @else {\r\n <span [appTooltip]=\"actor.email\">{{ actor.email }}</span>\r\n }\r\n </div>\r\n <div class=\"actor-line\">\r\n <i class=\"feather-hash\"></i>\r\n <span @fadeToggle [appTooltip]=\"actor.employeeCode\">{{ actor.employeeCode }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (!!$submitErrors() && !!$submitErrors()!.length) {\r\n <pre>\r\n <span>{{ $submitErrors()![$index] }}</span>\r\n </pre>\r\n }\r\n\r\n @if (isLogVisible($index)) {\r\n <pre class=\"employee-log mt-4 bg-gray-50 p-3 rounded text-xs font-mono text-gray-800\">\r\n @for (line of getLogLinesFor($index); track $index) {\r\n {{ line }}\r\n }\r\n </pre>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n } @else if (!!$backendMessage()) {\r\n\r\n <div class=\"backend-message error-list bg-red-50 rounded p-4 text-sm text-red-800 leading-relaxed\">\r\n @for (line of $backendMessage().split('\\n'); track $index) {\r\n <div class=\"error-item flex items-start gap-2\">\r\n <i class=\"feather-alert-circle text-red-600 mt-0.5\"></i>\r\n <span [innerText]=\"line\"></span>\r\n </div>\r\n }\r\n </div>\r\n\r\n } @else {\r\n No routing steps found.\r\n }\r\n\r\n\r\n }\r\n\r\n </div>\r\n\r\n @if ($showResolvedSteps()) {\r\n <h5>Resolved steps</h5>\r\n <div class=\"resolved-steps\">\r\n <!-- <pre>{{ $resolvedStepsJson() }}</pre> -->\r\n </div>\r\n }\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { CoreParamControlComponent } from '../../core-param-control/core-param-control/core-param-control.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { NgStyle } from '@angular/common';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { RoutingPreviewComponent } from '../routing-preview/routing-preview.component';\r\n\r\n@Component({\r\n selector: 'routing-preview-panel',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle,\r\n CoreParamControlComponent,\r\n RoutingPreviewComponent\r\n ],\r\n templateUrl: './routing-preview-panel.component.html',\r\n styleUrl: './routing-preview-panel.component.scss'\r\n})\r\nexport class RoutingPreviewPanelComponent extends BaseComponent {\r\n\r\n $minWidth = input<number | undefined>();\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n ds = inject(DomService);\r\n as = inject(AlertService);\r\n\r\n employeeId: number | undefined = undefined;\r\n\r\n seekerClick$ = new BehaviorSubject<any>(0);\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n }\r\n\r\n}\r\n","<div class=\"routing-preview-panel-container\" [ngStyle]=\"{\r\n minWidth: $minWidth() ? $minWidth() + 'px' : 'unset'\r\n}\">\r\n \r\n <!-- <div class=\"param-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"generateRouting()\">Generate Routing</button>\r\n </div> -->\r\n\r\n <routing-preview />\r\n \r\n\r\n <!-- <div class=\"graph-wrapper\">\r\n <svg id=\"routing-graph\" width=\"100%\"></svg>\r\n </div> -->\r\n\r\n</div>","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, Injector, inject, input, isDevMode, output, signal, effect, WritableSignal } from '@angular/core';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { CoreFormComponent } from '../../core-form/core-form/core-form.component';\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, finalize, of, tap } from 'rxjs';\r\nimport { EnumCorePageEditMode } from '../../core-page-edit/EnumCorePageEditMode';\r\nimport { CoreFormDesignService } from '../core-form-design.service';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { NgStyle } from '@angular/common';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CoreWorkflowService } from '../../core-workflow-builder/core-workflow.service';\r\nimport { IAfInstance } from '../interfaces';\r\nimport { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { HotKeysDirective } from '../../../directives/hot-keys.directive';\r\nimport { ApplicationHelpService } from '../../../services/application-help.service';\r\nimport { IWfWorkflow } from '../../core-workflow-builder/interfaces/IWfWorkflow';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { RoutingPreviewPanelComponent } from '../../core-workflow-builder/routing-preview-panel/routing-preview-panel.component';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { CoreFormService } from '../../core-form/core-form.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { AppConfigService } from '../../../services/app-config.service';\r\nimport { JsonService } from '../../../services/json.service';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport { EnumCoreButtonVNSCode } from '../../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';\r\nimport { IWorkflowReactContext } from '../../core-workflow-builder/interfaces/IWorkflowReactContext';\r\nimport { ISubmitResult } from '../../core-workflow-builder/interfaces/ISubmitResult';\r\nimport { IGenerateWorkflowRoutingRequest } from '../../core-workflow-builder/interfaces/IGenerateWorkflowRoutingRequest';\r\nimport { IRoutingResult } from '../../core-workflow-builder/interfaces/IRoutingResult';\r\nimport { ISubmitResponseItem } from '../../core-workflow-builder/interfaces/ISubmitResponseItem';\r\n\r\n@Component({\r\n selector: 'live-form',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle,\r\n HotKeysDirective,\r\n RoutingPreviewPanelComponent,\r\n CorePageHeaderComponent,\r\n CoreFormComponent,\r\n TranslatePipe,\r\n\r\n ],\r\n templateUrl: './live-form.component.html',\r\n styleUrl: './live-form.component.scss'\r\n})\r\nexport class LiveFormComponent extends BaseComponent implements AfterViewInit {\r\n\r\n $designMode = input<boolean>(false);\r\n $forKickOff = input<boolean>();\r\n\r\n $workflowReactContext = input<IWorkflowReactContext | null>(null);\r\n $form = signal<FormGroup | null>(null);\r\n\r\n\r\n $onClose = output();\r\n $loading = signal<boolean>(false);\r\n $showAfInstanceJson = signal<boolean>(false);\r\n $showWfWorkflowJson = signal<boolean>(false);\r\n $logExpandedStates: WritableSignal<boolean[]> = signal([]);\r\n\r\n $backendMessage = signal('');\r\n $loadingMessage = signal('');\r\n $logs = signal<string[]>([]);\r\n $results: WritableSignal<IRoutingResult[]> = signal([]);\r\n\r\n workflowId: string | undefined;\r\n\r\n public coreFormDesignService = inject(CoreFormDesignService);\r\n applicationHelpService = inject(ApplicationHelpService);\r\n ds = inject(DomService);\r\n public wfs = inject(CoreWorkflowService);\r\n fds = inject(CoreFormDesignService);\r\n js = inject(JsonService);\r\n cdr = inject(ChangeDetectorRef);\r\n router = inject(Router);\r\n route = inject(ActivatedRoute);\r\n alertService = inject(AlertService);\r\n appService = inject(AppService);\r\n cfs = inject(CoreFormService);\r\n appConfigService = inject(AppConfigService);\r\n injector = inject(Injector);\r\n\r\n isDevMode = isDevMode();\r\n $previewMode = signal(false);\r\n\r\n $employeeSubmiterId = signal(0);\r\n\r\n simulatedEmployee$ = new BehaviorSubject<any>(null);\r\n\r\n $showLiveRouting = this.wfs.$showLiveRouting;\r\n\r\n\r\n $zIndex = signal(0);\r\n\r\n $reactMode = signal(false);\r\n\r\n $onBehalfMode = computed(() => this.$workflow()?.allowOnBehalf)\r\n\r\n $reactInjectedFieldsAdded = signal(false);\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private coreFormService: CoreFormService\r\n ) {\r\n super(mls);\r\n\r\n effect(() => {\r\n const context = this.$workflowReactContext();\r\n const form = this.$form();\r\n\r\n const reactMode = this.$reactMode();\r\n const ___reasonsField = this.wfs.liveForm?.get('___reasons');\r\n\r\n if (!context || !form || (reactMode && !___reasonsField)) return;\r\n\r\n try {\r\n const attributesJson = context.instance.attributesJson;\r\n const formValue = JSON.parse(attributesJson);\r\n const reasons = context.instance.reasons;\r\n let ___reasons = \"\";\r\n\r\n try {\r\n ___reasons = JSON.parse(reasons);\r\n } catch (err: any) {\r\n if (isDevMode()) {\r\n this.alertService.error(err?.message || \"Error while deserializing 'reasons' value from the instance\");\r\n }\r\n }\r\n\r\n try {\r\n delete formValue['___reason']; // Focus only on new ___reason\r\n } catch (err: any) {\r\n if (isDevMode()) {\r\n this.alertService.error(err?.message || \"Error while delete '___reason' value for the attributes\");\r\n }\r\n }\r\n\r\n this.wfs.liveForm.patchValue(formValue);\r\n\r\n\r\n if (reactMode) {\r\n ___reasonsField!.patchValue(___reasons);\r\n }\r\n\r\n\r\n } catch (err: any) {\r\n if (isDevMode()) {\r\n this.alertService.error(err?.message || \"Error while set value for the context\");\r\n }\r\n }\r\n })\r\n\r\n const navigation = this.router.getCurrentNavigation();\r\n const previewMode = navigation?.extras?.state?.['previewMode'];\r\n this.$previewMode.set(previewMode ?? false);\r\n\r\n this.subscriptions.push(\r\n this.simulatedEmployee$.pipe(\r\n filter(x => !!x)\r\n ).subscribe(x => {\r\n this.wfs.$simulatedEmployee.set(x);\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.route.params.subscribe(p => {\r\n const rawId = p['id'];\r\n\r\n if (rawId && rawId.includes('___')) {\r\n const parts = rawId.split('___');\r\n\r\n if (parts.length === 4) {\r\n const [workflowId] = parts;\r\n this.workflowId = workflowId;\r\n this.$customButtons.set([\r\n EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,\r\n EnumCoreButtonVNSCode.NONE_HEADER_REJECT,\r\n EnumCoreButtonVNSCode.NONE_HEADER_APPROVE\r\n ])\r\n this.$reactMode.set(true);\r\n this.clearInjectedFields();\r\n // this.makeOriginReadonly();\r\n this.addReactInjectedFields();\r\n }\r\n } else {\r\n\r\n this.$reactMode.set(false);\r\n\r\n this.$customButtons.set([\r\n EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,\r\n EnumCoreButtonVNSCode.NONE_HEADER_SEND\r\n ])\r\n\r\n const preview = this.route.snapshot.queryParamMap.get('preview');\r\n const isPreviewMode = preview === 'true';\r\n if (isPreviewMode) {\r\n // This route is inside the (preview:) outlet\r\n this.workflowId = this.route.parent?.snapshot.params['id'];\r\n } else {\r\n // Not preview mode → Get workflowId from parent route\r\n const id = this.route.snapshot.params['id'];\r\n this.workflowId = id;\r\n }\r\n }\r\n })\r\n );\r\n\r\n }\r\n\r\n generateSubmitDto(): any {\r\n return {};\r\n }\r\n\r\n toggleShowRouting(): void {\r\n if (!this.$showLiveRouting() && !!this.wfs.liveForm.invalid) {\r\n this.alertService.info(\"The form value is invalid\", alertOptions);\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n return;\r\n }\r\n this.$showLiveRouting.set(!this.$showLiveRouting())\r\n }\r\n\r\n initialSubmit(): void {\r\n const steps = this.wfs.$currentSteps();\r\n\r\n const nameMap = new Map<string, number>();\r\n\r\n for (const step of steps) {\r\n const name = step.name?.trim();\r\n if (!name) continue;\r\n\r\n nameMap.set(name, (nameMap.get(name) ?? 0) + 1);\r\n }\r\n\r\n const duplicateNames = [...nameMap.entries()]\r\n .filter(([_, count]) => count > 1)\r\n .map(([name]) => name);\r\n\r\n if (duplicateNames.length > 0) {\r\n this.alertService.warn(\r\n `Duplicate step name(s) found: ${duplicateNames.join(\", \")}`,\r\n alertOptions\r\n );\r\n this.wfs.$designActiveTab.set(3);\r\n return;\r\n }\r\n\r\n\r\n const form = this.$form();\r\n if (!form || !form.valid) {\r\n const controls = form?.controls ?? {};\r\n const entries = Object.entries(controls);\r\n\r\n const filteredInvalids = entries.filter(([key, ctrl]) => {\r\n if (key === '___submitterEmployeeId') return false; // skip check\r\n return ctrl.invalid;\r\n });\r\n\r\n if (filteredInvalids.length > 0) {\r\n this.wfs.liveFormCheckError$.next(true);\r\n setTimeout(() => this.wfs.liveFormCheckError$.next(false), 5000);\r\n this.alertService.info(\"Please fill required fields\", alertOptions);\r\n return;\r\n }\r\n }\r\n\r\n if (!this.wfs.$currentFlow()) {\r\n this.alertService.info(\"No flow detected\", alertOptions);\r\n return;\r\n }\r\n\r\n const request: IGenerateWorkflowRoutingRequest = {\r\n workflowId: this.wfs.$currentFlow()?.id!,\r\n attributes: this.$form()?.getRawValue(),\r\n ___targetEmployees: this.$form()?.get('___targetEmployees')?.getRawValue()\r\n };\r\n\r\n this.$backendMessage.set('');\r\n this.$loading.set(true);\r\n this.$loadingMessage.set(\"Generating routes...\")\r\n\r\n this.wfs.initialSubmit(request).pipe(\r\n catchError(err => {\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n this.$backendMessage.set(msg);\r\n return of({ ok: false, status: 500, body: { messageCode: msg } });\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false);\r\n this.$loadingMessage.set('');\r\n })\r\n ).subscribe(x => {\r\n\r\n if (x.ok && x.status === 200) {\r\n const body = x.body;\r\n\r\n if (body?.statusCode === 200) {\r\n const inner: ISubmitResult = body.innerBody;\r\n\r\n if (!!inner.violations.length) {\r\n if (this.lang === 'en') {\r\n this.alertService.error(inner.violations[0].messageEnglish);\r\n } else {\r\n this.alertService.error(inner.violations[0].messageDefault);\r\n }\r\n }\r\n\r\n this.$logs.set(inner.logs ?? []);\r\n\r\n const backendResults = inner.items as ISubmitResponseItem[];\r\n\r\n const allErrors: string[] = [];\r\n\r\n for (const result of backendResults) {\r\n\r\n const { employeeId, employeeFullName, correlationId, error } = result;\r\n\r\n if (error || !correlationId) {\r\n allErrors.push(`🚫 Employee ${employeeId} (${employeeFullName}): ${error || 'Unknown error'}`);\r\n continue;\r\n }\r\n\r\n }\r\n\r\n this.$backendMessage.set(allErrors.join('\\n'));\r\n\r\n if (!!allErrors.length) {\r\n this.alertService.error(allErrors[0]);\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set(body?.messageCode || 'UNEXPECTED_ERROR');\r\n }\r\n\r\n } else {\r\n this.$backendMessage.set('API_ERROR');\r\n }\r\n });\r\n }\r\n\r\n\r\n // 🔁 Reactive bindings\r\n $inputSections = signal<ICoreFormSection[]>([\r\n {\r\n rows: [\r\n [\r\n {\r\n field: 'id',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'string',\r\n flexSize: 0,\r\n hidden: true,\r\n label: '',\r\n value: ''\r\n }\r\n ]\r\n ]\r\n }\r\n ]);\r\n $workflow = this.wfs.$currentFlow;\r\n $afInstance = signal<IAfInstance | undefined>(undefined);\r\n $customButtons = signal<string[] | undefined>(undefined);\r\n $normalMode = signal<boolean | undefined>(undefined);\r\n $submitApi = signal<string | undefined>(undefined);\r\n\r\n $inputSectionsJson = computed(() => this.js.safeStringify(this.$inputSections()))\r\n\r\n removeSignalKeysDeep = (obj: any) => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(this.removeSignalKeysDeep);\r\n }\r\n\r\n if (obj && typeof obj === 'object') {\r\n return Object.entries(obj)\r\n .filter(([key]) => !key.endsWith('$'))\r\n .reduce((acc, [key, value]) => {\r\n acc[key] = this.removeSignalKeysDeep(value);\r\n return acc;\r\n }, {} as any);\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n $afInstanceJson = computed(() => {\r\n const instance = this.$afInstance();\r\n const cleanedInstance = this.removeSignalKeysDeep(instance); // Remove signals or $ fields\r\n return JSON.stringify(cleanedInstance, null, 2);\r\n\r\n });\r\n\r\n $wfWorkflowJson = computed(() => {\r\n const workflow = this.$workflow();\r\n const cleanedInstance = this.removeSignalKeysDeep(workflow); // Remove signals or $ fields\r\n return JSON.stringify(cleanedInstance, null, 2);\r\n\r\n });\r\n\r\n mode$: BehaviorSubject<EnumCorePageEditMode> = new BehaviorSubject<EnumCorePageEditMode>(EnumCorePageEditMode.CREATE);\r\n\r\n checkError$ = this.wfs.liveFormCheckError$;\r\n\r\n override ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.mls.lang$.subscribe(x => this.lang = x)\r\n )\r\n\r\n // Get query param ?preview=true\r\n const preview = this.route.snapshot.queryParamMap.get('preview');\r\n const isPreviewMode = preview === 'true';\r\n this.$previewMode.set(isPreviewMode);\r\n\r\n if (isDevMode()) {\r\n this.applicationHelpService.activeKey$.pipe(\r\n distinctUntilChanged()\r\n ).subscribe(x => {\r\n switch (x) {\r\n case 'F3':\r\n this.$showAfInstanceJson.set(true);\r\n break;\r\n case 'F6':\r\n this.$showWfWorkflowJson.set(true);\r\n break\r\n case 'Escape':\r\n this.$showAfInstanceJson.set(false);\r\n this.$showWfWorkflowJson.set(false);\r\n break;\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n if (!this.$designMode() && !this.$previewMode()) {\r\n\r\n if (!!this.workflowId) {\r\n setTimeout(() => {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.loadWorkflowWithAfInstance(this.workflowId!).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err)\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const workflow: IWfWorkflow = x.body.innerBody;\r\n\r\n this.$workflow.set(workflow);\r\n\r\n if (workflow.afInstanceDTO) {\r\n const afInstanceDto = workflow.afInstanceDTO;\r\n const instance = this.coreFormDesignService.mapFromAfInstanceDTO(afInstanceDto);\r\n\r\n instance.sections = this.coreFormDesignService.toCoreFormSections(instance.formDesignSections)\r\n\r\n this.$afInstance.set(instance);\r\n\r\n this.$inputSections.set([...instance.sections, ...this.$inputSections()]);\r\n\r\n this.$normalMode.set(instance.normalMode);\r\n this.$submitApi.set(instance.submitApi);\r\n\r\n this.coreFormDesignService.$afInstance.set(instance);\r\n\r\n this.clearInjectedFields();\r\n\r\n if (this.$reactMode()) {\r\n this.addReactInjectedFields();\r\n } else {\r\n this.addKickOffInjectedFields();\r\n }\r\n\r\n }\r\n\r\n }\r\n })\r\n )\r\n\r\n })\r\n }\r\n\r\n } else {\r\n\r\n this.$afInstance.set(this.coreFormDesignService.$afInstance());\r\n console.log(\"sections in ngAfterViewInit when !this.workflowId, being set\", this.coreFormDesignService.$afInstance().sections)\r\n this.$inputSections.set(this.coreFormDesignService.$afInstance().sections ?? []);\r\n this.$customButtons.set(this.coreFormDesignService.$afInstance().customFormButtonItems ?? []);\r\n this.$normalMode.set(this.coreFormDesignService.$afInstance().normalMode);\r\n this.$submitApi.set(this.coreFormDesignService.$afInstance().submitApi);\r\n\r\n this.clearInjectedFields();\r\n if (this.$reactMode()) {\r\n this.addReactInjectedFields();\r\n } else {\r\n this.addKickOffInjectedFields();\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n onLiveFormCreated(e: any): void {\r\n const form: FormGroup = e.formGroup;\r\n this.$form.set(form);\r\n this.wfs.liveForm = form;\r\n\r\n if (this.$reactMode()) {\r\n this.$inputSections().forEach(s => {\r\n s.rows.forEach(r => {\r\n r.forEach(c => {\r\n const toBeDisabled = c.field !== '___reason';\r\n if (toBeDisabled) {\r\n form.get(c.field)?.disable();\r\n }\r\n })\r\n })\r\n })\r\n } else {\r\n this.wfs.liveForm.get('___submitOnBehalf')?.valueChanges.subscribe(x => {\r\n const inputSections = this.$inputSections();\r\n const targetCtrl = this.coreFormService.getFormBaseControlByName(inputSections, '___targetEmployees');\r\n\r\n if (targetCtrl) {\r\n targetCtrl.hidden = !x;\r\n this.$inputSections.set([...inputSections]);\r\n\r\n // Optional: restore current form values without triggering another valueChanges loop\r\n const currentValue = this.wfs.liveForm.getRawValue();\r\n setTimeout(() => {\r\n this.wfs.liveForm.patchValue({\r\n ...currentValue,\r\n ___submitOnBehalf: x // ensure value stays intact\r\n }, { emitEvent: false });\r\n if (!x && targetCtrl) {\r\n this.wfs.liveForm.patchValue({ ___targetEmployees: null }, { emitEvent: false });\r\n }\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n onLiveSubmit(e: any): void {\r\n\r\n if (!this.wfs.liveForm.valid) {\r\n this.checkError$.next(true);\r\n return;\r\n }\r\n\r\n if (!!this.$submitApi()) {\r\n const payload = this.generateSubmitDto();\r\n\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.appService.postFullUrl(this.$submitApi()!, payload).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // MILESTONE!\r\n }\r\n })\r\n )\r\n\r\n }\r\n }\r\n\r\n onClose(): void {\r\n if (this.$designMode()) {\r\n this.$onClose.emit();\r\n } else {\r\n if (!!this.$afInstance()?.normalMode) {\r\n\r\n } else {\r\n if (this.$previewMode()) {\r\n this.router.navigate(\r\n [\r\n {\r\n outlets: { preview: null }\r\n }\r\n ],\r\n { relativeTo: this.route.parent }\r\n );\r\n } else {\r\n this.router.navigate([\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: null } }\r\n ]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n addKickOffInjectedFields(): void {\r\n\r\n const workflow = this.$workflow();\r\n const current = this.$inputSections();\r\n const sections = [...current];\r\n\r\n sections.push({\r\n rows: [\r\n [\r\n {\r\n field: '___submitterEmployeeId',\r\n flexSize: 12,\r\n type: 'number',\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n getByIdApi: '',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n label: 'Simulated Requester',\r\n boundFrom: 'id',\r\n shownFrom: 'fullname',\r\n value: null,\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: 'Simulated ___submitterEmployeeId required'\r\n }\r\n ]\r\n },]\r\n ]\r\n })\r\n\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___reason\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.REASON\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 5,\r\n /*\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n }\r\n ],\r\n */\r\n }\r\n ]\r\n ]\r\n })\r\n\r\n if (!!workflow && !!workflow.allowCustomCc) {\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___customCcs\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.CUSTOM_CCS\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 3,\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(\r\n /^(\\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\s*;)*\\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\s*$/\r\n ),\r\n errorMessage: \"Please enter a list of email addresses separated by semicolons (;)\"\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n ]\r\n })\r\n }\r\n\r\n if (!!this.$onBehalfMode()) {\r\n\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___submitOnBehalf\",\r\n type: \"boolean\",\r\n hint: 'If enabled, users can submit this workflow request on behalf of other employees.',\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.SUBMIT_ON_BEHALF\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n }\r\n ],\r\n [\r\n {\r\n field: \"___targetEmployees\",\r\n type: \"object\",\r\n value: null,\r\n label: \"UI_FORM_CONTROL_LABEL.TARGET_EMPLOYEES\",\r\n hidden: true,\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n multiMode: true,\r\n }\r\n ],\r\n ]\r\n })\r\n\r\n }\r\n\r\n\r\n\r\n this.$inputSections.set(sections);\r\n\r\n }\r\n\r\n addReactInjectedFields(): void {\r\n\r\n if (this.$reactInjectedFieldsAdded()) return;\r\n\r\n const current = this.$inputSections();\r\n const sections = [...current];\r\n\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___reasons\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.REASON_HISTORY\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 5,\r\n disabled: true,\r\n }\r\n ]\r\n ]\r\n })\r\n\r\n sections.push({\r\n rows:\r\n [\r\n [\r\n {\r\n field: \"___reason\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.REASON\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 5,\r\n // validators: [\r\n // {\r\n // name: 'required',\r\n // validator: Validators.required,\r\n // errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n // }\r\n // ],\r\n }\r\n ]\r\n ]\r\n })\r\n\r\n this.$inputSections.set(sections);\r\n this.$reactInjectedFieldsAdded.set(true);\r\n\r\n }\r\n\r\n clearInjectedFields(): void {\r\n\r\n const current = this.$inputSections();\r\n const sections = [...current];\r\n\r\n console.log(\"sections before in clearInjectedFields\", sections)\r\n\r\n sections\r\n .map(section => ({\r\n ...section,\r\n rows: section.rows\r\n ?.map(row => row.filter(ctrl => ctrl.field.indexOf('___') !== 0))\r\n .filter(row => row.length > 0)\r\n }))\r\n .filter(section => section.rows?.length);\r\n\r\n console.log(\"sections after in clearInjectedFields, being set\", sections)\r\n\r\n this.$inputSections.set(sections);\r\n }\r\n\r\n react(reactType: string): void {\r\n const context = this.$workflowReactContext();\r\n if (!context) {\r\n this.alertService.error(\"NO_CONTEXT_FOUND\");\r\n return;\r\n }\r\n const { workflow, instance, step, actor } = context;\r\n const unitedCorrelationIds = `${workflow.id}___${instance.correlationId}___${step.id}___${actor.id}`;\r\n this.subscriptions.push(\r\n this.wfs.react(unitedCorrelationIds, reactType, this.wfs.liveForm.get('___reason')?.getRawValue()).pipe(\r\n tap(_ => this.$loading.set(true)),\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n this.clearInjectedFields()\r\n }\r\n\r\n\r\n}\r\n","<div class=\"live-form-container\" [hotKeys]=\"['F3', 'F6', 'Escape']\">\r\n\r\n @if ($normalMode()) {\r\n <div class=\"form-wrapper live-form\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [hideCalculatedSection]=\"true\"\r\n [hideDevSector]=\"true\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n @if ($previewMode()) {\r\n <div class=\"show-routing-wrapper\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <routing-preview-panel />\r\n }\r\n </div>\r\n\r\n\r\n } @else {\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root no-padding\">\r\n\r\n <div class=\"form-wrapper live-form\" [class.d-none]=\"$showLiveRouting()\" [ngStyle]=\"{\r\n width: !!coreFormDesignService.$afInstance().width ? coreFormDesignService.$afInstance().width + 'px' : 'unset'\r\n }\">\r\n\r\n <div class=\"live-form-header\">\r\n <core-page-header [title]=\"coreFormDesignService.$afInstance().captionCode | translate : lang\" [hideButtonGroup]=\"true\" />\r\n <div class=\"preview-close-icon\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <core-form\r\n [inputSections]=\"$inputSections()\"\r\n [customFormButtonItems]=\"$customButtons()!\"\r\n [forceCreateNewForm]=\"true\"\r\n [hideCalculatedSection]=\"true\"\r\n [mode$]=\"mode$\"\r\n [hideButtons]=\"$previewMode()\"\r\n [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [buttonGroupTemplateRef]=\"buttonGroupTemplateRef\"\r\n [hideDevSector]=\"false\"\r\n [checkError$]=\"checkError$\"\r\n (onSubmit)=\"onLiveSubmit($event)\"\r\n (onFormCreated)=\"onLiveFormCreated($event)\"\r\n (onCancal)=\"onClose()\"\r\n />\r\n\r\n <div class=\"submition-wrapper\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"toggleShowRouting()\">\r\n {{ $showLiveRouting() ? 'Hide Routing' : 'Show Routing' }}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"initialSubmit()\">\r\n Submit \r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"routing-preview-wrapper\" [class.visible]=\"$showLiveRouting()\">\r\n @if ($showLiveRouting()) {\r\n <div class=\"h50\"></div>\r\n <routing-preview-panel [$minWidth]=\"coreFormDesignService.$afInstance().width\"/>\r\n <div class=\"h50\"></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <ng-template #bottomTemplateRef>\r\n <!-- <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $inputSectionsJson() }}</pre> -->\r\n <!-- @if (isDevMode) {\r\n <p class=\"dev-hint\">F3/ESC: Show/Hide afInstance | F6/ESC: Show/Hide Workflow</p>\r\n } -->\r\n @if ($showAfInstanceJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $afInstanceJson() }}</pre>\r\n }\r\n @if ($showWfWorkflowJson()) {\r\n <pre [ngStyle]=\"{ maxWidth: !!$afInstance()?.width ? $afInstance()?.width! + 'px' : 'unset'}\">{{ $wfWorkflowJson() }}</pre>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #buttonGroupTemplateRef>\r\n <div class=\"button-group\">\r\n <div class=\"button-group-left\"></div>\r\n <div class=\"button-group-right\">\r\n @if ($reactMode()) {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"react('REJECTED')\">Reject</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"react('APPROVED')\">Approve</button>\r\n } @else {\r\n <button type=\"button\" class=\"btn btn-secondary\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary\">Send Request</button>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n</div>"],"names":["i1.MultiLanguageService","i2.CoreFormService"],"mappings":"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"}
@@ -10286,6 +10286,7 @@ class CoreCheckboxComponent extends CoreFormControlBaseComponent {
10286
10286
  ngOnChanges(e) {
10287
10287
  if (!!e['inputValue'])
10288
10288
  this.writeValue(e['inputValue'].currentValue);
10289
+ this.cdr.markForCheck();
10289
10290
  }
10290
10291
  writeValue(obj) {
10291
10292
  this.value = obj;
@@ -33504,7 +33505,7 @@ const coreFormDesignRoutes = [
33504
33505
  },
33505
33506
  {
33506
33507
  path: ':id',
33507
- loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-B_-v1yYK.mjs').then(m => m.CoreFormDesignComponent)
33508
+ loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-BdhATAGQ.mjs').then(m => m.CoreFormDesignComponent)
33508
33509
  }
33509
33510
  ];
33510
33511
 
@@ -34398,7 +34399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
34398
34399
  const coreNavigationTrackerRoutes = [
34399
34400
  {
34400
34401
  path: '',
34401
- loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-CQBYc9j3.mjs').then(m => m.TrackerStudioComponent)
34402
+ loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-CrOqWArR.mjs').then(m => m.TrackerStudioComponent)
34402
34403
  }
34403
34404
  ];
34404
34405
 
@@ -37043,29 +37044,29 @@ const coreWorkflowRoutes = [
37043
37044
  {
37044
37045
  path: 'form-assign/:id',
37045
37046
  outlet: "formAssignAux",
37046
- loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-BalvovBt.mjs').then(m => m.WfFormAssignComponent),
37047
+ loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-zmq-EMFu.mjs').then(m => m.WfFormAssignComponent),
37047
37048
  canDeactivate: [CanDeactivateGuard]
37048
37049
  }
37049
37050
  ]
37050
37051
  },
37051
37052
  {
37052
37053
  path: 'db-settings',
37053
- loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-CJ_Lw-pH.mjs').then(m => m.DbSettingsComponent)
37054
+ loadComponent: () => import('./ngx-histaff-alpha-db-settings.component--A9LF6qi.mjs').then(m => m.DbSettingsComponent)
37054
37055
  },
37055
37056
  {
37056
37057
  path: 'workflow-consume',
37057
- loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-BfYpNMIr.mjs').then(m => m.CoreWorkflowConsumeComponent),
37058
+ loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-DcW5-ccd.mjs').then(m => m.CoreWorkflowConsumeComponent),
37058
37059
  children: [
37059
37060
  {
37060
37061
  path: ':id',
37061
37062
  outlet: "workflowConsume",
37062
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
37063
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CResWrTN.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
37063
37064
  }
37064
37065
  ]
37065
37066
  },
37066
37067
  {
37067
37068
  path: 'workflow-consume/:id',
37068
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-BVvN-SsW.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
37069
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CResWrTN.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
37069
37070
  },
37070
37071
  {
37071
37072
  path: 'workflow-group-edit/:id',
@@ -37075,17 +37076,17 @@ const coreWorkflowRoutes = [
37075
37076
  },
37076
37077
  {
37077
37078
  path: 'design/:id',
37078
- loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-24BM6SEl.mjs').then(m => m.wfDesignWrapperRoutes),
37079
+ loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-BwqRICHr.mjs').then(m => m.wfDesignWrapperRoutes),
37079
37080
  },
37080
37081
  ]
37081
37082
  },
37082
37083
  {
37083
37084
  path: 'react/:id',
37084
- loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-DBRrqNWi.mjs').then(m => m.WfInstanceStepReactComponent)
37085
+ loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-DtkWD_Rl.mjs').then(m => m.WfInstanceStepReactComponent)
37085
37086
  },
37086
37087
  {
37087
37088
  path: 'status/:id',
37088
- loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-C7yV2MVH.mjs').then(m => m.WfInstanceStatusComponent)
37089
+ loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-D0gG67sV.mjs').then(m => m.WfInstanceStatusComponent)
37089
37090
  }
37090
37091
  ];
37091
37092
 
@@ -39614,4 +39615,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
39614
39615
  */
39615
39616
 
39616
39617
  export { CoreMonthSelectorComponent as $, AppService as A, BaseEditComponent as B, CorePageHeaderComponent as C, DragReorderDirective as D, EnumFormBaseContolType as E, FullscreenModalLoaderComponent as F, GptService as G, HotKeysDirective as H, ImageErrorResolverDirective as I, CoreCheckboxComponent as J, JsonService as K, AppConfigService as L, MultiLanguageService as M, NavigatorService as N, EnumCorePageEditMode as O, EnumCoreButtonVNSCode as P, noneAutoClosedAlertOptions as Q, READONLY_WORKFLOW_FIELDS as R, SocketService as S, TranslatePipe as T, CoreFormComponent as U, CoreButtonGroupVnsComponent as V, EnumCoreTablePipeType as W, HtmlTooltipDirective as X, EnumFormDesignMode as Y, CoreControlComponent as Z, CoreAttachmentComponent as _, CoreTabsComponent as a, HeaderService as a$, EnumImageResolverType as a0, NormalizeHumanNamePipe as a1, CoreIosSwitcherComponent as a2, CoreFormService as a3, SunnyRotatingComponent as a4, MapAppdemoToServerPipePipe as a5, MapAttachmentToServerPipe as a6, MapNewsfeedMediaToServerPipe as a7, StringHtmlPipe as a8, UploadedFilenameCutoffPipe as a9, baseUrlInterceptor as aA, authInterceptor as aB, graphInterceptor as aC, tokenInterceptor as aD, responseInterceptor as aE, timeZoneInterceptor as aF, cachingInterceptor as aG, langInterceptor as aH, EnumFilterOperator as aI, OnlineUsersComponent as aJ, ActionService as aK, AppInitializationService as aL, AuthService as aM, CacheService as aN, EnumSwUpdateVersionUpdatesEventType as aO, CheckForUpdateService as aP, EnumDeviceType as aQ, EnumBrowserType as aR, EnumOsType as aS, ClientService as aT, CommonHttpRequestService as aU, TLA_CONFIG as aV, ConfigService as aW, CoreTableService as aX, DndService as aY, FilterKitService as aZ, GrpcService as a_, DialogStateComponent as aa, FooterComponent as ab, RightchatComponent as ac, WaittingScreenComponent as ad, longAlertOptions as ae, attachmentOptions as af, CORE_VNS_BUTTONS as ag, defaultPaging as ah, DESKTOP_SCREEN_HEDER_HEIGHT as ai, MOBILE_SCREEN_HEDER_HEIGHT as aj, themeBlue as ak, DATE_VALUE_ACCESSOR as al, DateValueAccessor as am, EnumDragType as an, EnumErrorType as ao, EnumIconClass as ap, EnumProfileInfoSector as aq, EnumSignalRType as ar, EnumSortDirection as as, EnumStyleButtonClass as at, CanActivateFunctionUrlMapperGuard as au, InitializationCanActivateFn as av, InitializationCanMatchFn as aw, httpInterceptorProviders as ax, InterceptorSkipHeader as ay, appTypeInterceptor as az, CoreWorkflowService as b, SysActionComponent as b$, HistoryService as b0, HttpErrorHandler as b1, HubConnectionService as b2, IpServiceService as b3, LayoutService as b4, MapService as b5, MenuService as b6, MessageService as b7, ModalService as b8, OrganizationService as b9, AtShiftPatternApplyComponent as bA, AtShiftPatternEditComponent as bB, AtWorksignComponent as bC, AtWorksignService as bD, FunctionComponent as bE, IndividualScheduleApplyComponent as bF, FunctionEditComponent as bG, FunctionIgnoreComponent as bH, FunctionIgnoreEditComponent as bI, GroupFunctionComponent as bJ, GroupFunctionEditComponent as bK, InMemoryComponent as bL, LanguageComponent as bM, LanguageEditComponent as bN, MenuComponent as bO, MenuEditComponent as bP, MutationLogComponent as bQ, MutationViewComponent as bR, PaSalaryPolicyComponent as bS, PaSalaryPolicyEditComponent as bT, PortalRouteComponent as bU, ScheduleOverviewComponent as bV, PortalRouteEditComponent as bW, SysOtherListComponent as bX, SysOtherListEditComponent as bY, SysOtherListTypeComponent as bZ, SysOtherListTypeEditComponent as b_, PkceService as ba, PositionTransferService as bb, EnumNotificationDir as bc, NotificationActionType as bd, PushNotificationService as be, RandomAvatarService as bf, RequestCache as bg, RequestCacheWithMap as bh, ResponseService as bi, RoutingService as bj, EnumSsrsExpressFileExtension as bk, EnumSsrsExpressExportFormat as bl, SsrsExpressService as bm, StatisticService as bn, StatisticAuthService as bo, SysMenuService as bp, TimeSheetService as bq, TopicPermissionService as br, TopicTreeService as bs, UploadedFileService as bt, UrlService as bu, UserActivityService as bv, EvaluateDialogService as bw, EnumWorkScheduleViewMode as bx, WorkShiftDndService as by, AtShiftPatternComponent as bz, EnumCoreFormControlSeekerSourceType as c, EnumCoreSeekerColumnJob as c$, SysActionEditComponent as c0, SysFunctionActionComponent as c1, SysFunctionActionEditComponent as c2, SysFunctionActionMapperComponent as c3, SysFunctionUrlMapperComponent as c4, FunctionEditService as c5, SysModuleComponent as c6, SysModuleEditComponent as c7, SysRouteAccessComponent as c8, liner_to_nested_array_script as c9, CoreCompositionComponent as cA, CoreConfirmDialogComponent as cB, ConfirmDialogStateComponent as cC, CoreLazyMountComponent as cD, CoreRootMenuItemPickerComponent as cE, CoreRootMenuItemPickerService as cF, ECoreTableToolCode as cG, ECoreTableToolClass as cH, CoreTableComponent as cI, CoreContractSeekerComponent as cJ, CoreControlNoGridBufferComponent as cK, CoreControlNoSeekerComponent as cL, CoreEmployeeScheduleComponent as cM, CoreEmployeeSeekerComponent as cN, EnumCoreFileUploaderType as cO, CoreFileUploaderComponent as cP, CoreFilterHubComponent as cQ, CoreFilterHubService as cR, ControlBase as cS, Textbox as cT, CoreControlService as cU, CustomValidators as cV, URL_PATTERN as cW, coreFormDesignRoutes as cX, CoreFormTabComponent as cY, CoreFormLiteComponent as cZ, CoreFormControlBaseComponent as c_, blob_to_base64_script as ca, AlertComponent as cb, EnumAlertType as cc, IAlertOptions as cd, AnimatedTextService as ce, AnimatedTextComponent as cf, BaseDropdownComponent as cg, ButtonGroupModule as ch, ButtonGroupService as ci, ButtonGroupComponent as cj, EnumButtonCaptionCode as ck, CoreButtonComponent as cl, CoreAccordionComponent as cm, CoreAccordionService as cn, CoreActiveUserCountComponent as co, NewlyCreatedTokenService as cp, CoreApiProgressComponent as cq, CoreButtonGroupComponent as cr, EnumCoreButtonCode as cs, ActionSvgEditComponent as ct, CoreButtonGroupService as cu, CoreButtonVnsComponent as cv, CoreCommonParamKitComponent as cw, CoreCompareDbPipelineComponent as cx, CoreCompositionState as cy, CoreCompositionService as cz, CorePageEditComponent as d, CoreShiftCardComponent as d$, EnumCoreSeekerColumnStaffProfile as d0, EnumCoreSeekerColumnContract as d1, EnumCoreSeekerColumnWorking as d2, EnumCoreSeekerColumnWage as d3, EnumCoreSeekerColumnPosition as d4, EnumCoreSeekerColumnPositionConcurrent as d5, EnumCoreSeekerColumnAutoForm as d6, SeekerService as d7, CoreGridBufferComponent as d8, CoreHeaderParamsComponent as d9, EnumExType as dA, CorePageListService as dB, CorePageListState as dC, CorePageListContentComponent as dD, EnumCoreViewItemType as dE, CorePageViewComponent as dF, CorePaginationComponent as dG, CorePaginationFullComponent as dH, CorePaginationFullService as dI, CoreFileFormatPickerComponent as dJ, CorePermissionService as dK, EnumPermissionObjectType as dL, CorePermissionComponent as dM, CorePermissionActionsComponent as dN, CorePositionConcurrentSeekerComponent as dO, CorePositionSeekerComponent as dP, CoreQrcodeComponent as dQ, EnumOparator as dR, CoreQueryBuilderComponent as dS, CoreReducerIconComponent as dT, CoreRotatingTextComponent as dU, CoreRouteAccumulatorComponent as dV, CoreRoutingHistoryComponent as dW, CoreSalaryPolicyPickerComponent as dX, CoreScrollComponent as dY, CoreScrollLazyComponent as dZ, CoreSeenByComponent as d_, CoreHelperComponent as da, CoreLineComponent as db, CoreListComponent as dc, CoreListLazyComponent as dd, CoreLoadingSurfaceComponent as de, CoreMccComponent as df, CoreMonthPickerComponent as dg, CoreNavigationTrackerComponent as dh, coreNavigationTrackerRoutes as di, CoreOauthCallbackComponent as dj, CoreOauthCallbackOffice365Component as dk, EnumCoreOrgTreeaAccessorMode as dl, EnumCoreOrgTreeaSearchMode as dm, CoreOrgTreeComponent as dn, CoreOrgTreeState as dp, CoreOrgTreeService as dq, CoreOrgUnitSeekerComponent as dr, CoreOrgchartflexComponent as ds, CoreOrgParamComponent as dt, EnumCorePageEditBootstrapClass as du, EnumCorePageEditFieldType as dv, CorePageEditService as dw, CorePageEditLiteComponent as dx, CorePageEditTabComponent as dy, CorePageListComponent as dz, BaseComponent as e, CoreShiftCellComponent as e0, CoreShiftCollectionComponent as e1, CoreShiftStickerComponent as e2, STICKER_COLOR_SCHEMA as e3, CoreStatusStickerComponent as e4, CoreSubFormGroupComponent as e5, CoreTabListComponent as e6, CoreTagsComponent as e7, CoreTopicPickerComponent as e8, EnumCoreArticleCategoryTreeaAccessorMode as e9, OtpInputComponent as eA, OtpInputService as eB, PageTitleComponent as eC, PaginationComponent as eD, FilterPipe as eE, normalizeHumanName as eF, PositionComponent as eG, PositionEditService as eH, CoreDatetimeService as eI, FileService as eJ, LongTaskService as eK, EnumRecursiveFields as eL, RecursiveService as eM, StringService as eN, UnicodeService as eO, StaffProfileComponent as eP, ThreedotsComponent as eQ, TooltipComponent as eR, UserActivityComponent as eS, WageComponent as eT, tooltip_directive as eU, dragReorder_directive as eV, CoreTopicTreeComponent as ea, CoreTreeComponent as eb, EnumCoreTreeGridEditMode as ec, CoreTreeGridComponent as ed, CoreWageSeekerComponent as ee, CoreWorkingSeekerComponent as ef, coreWorkflowRoutes as eg, CoreWorkflowBuilderComponent as eh, CoreWorkflowGroupEditComponent as ei, CoreYearPickerComponent as ej, CoreYearSelectorComponent as ek, EnumCoreD3ScaleType as el, CoreD3Service as em, CorePieComponent as en, CoreScatterPlotComponent as eo, EnumHrComparisonCode as ep, EnumICoreStatisticWidgetDataType as eq, CoreStatisticWidgetComponent as er, DecisionComponent as es, EvaluateDialogComponent as et, HuconcurrentlyComponent as eu, JobComponent as ev, LanguageChangerComponent as ew, DEFAULT_SVG as ex, ItemComponent as ey, NavigatorComponent as ez, CoreWorkflowListComponent as f, TooltipDirective as g, CanDeactivateGuard as h, AlertService as i, TableCellPipe as j, MapAvatarToServerPipe as k, alertOptions as l, CoreTerminalSpinnerComponent as m, CoreFormDesignService as n, EnumWorkflowStepType as o, DialogService as p, DomService as q, CoreDropdownComponent as r, CoreChecklistComponent as s, CoreDatePickerComponent as t, CoreFormControlSeekerComponent as u, CoreCurrencyInputComponent as v, EnumActorSourceType as w, CoreParamControlComponent as x, CoreRadioGroupComponent as y, ApplicationHelpService as z };
39617
- //# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-BrCaji39.mjs.map
39618
+ //# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-KQfMzGte.mjs.map