ngx-histaff-alpha 5.2.2 → 5.2.3

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 (50) hide show
  1. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DkGU3mLc.mjs → ngx-histaff-alpha-core-form-design.component-DUH4SkB7.mjs} +29 -11
  2. package/fesm2022/ngx-histaff-alpha-core-form-design.component-DUH4SkB7.mjs.map +1 -0
  3. package/fesm2022/ngx-histaff-alpha-core-workflow-consume.component-5bEZHFsi.mjs +64 -0
  4. package/fesm2022/ngx-histaff-alpha-core-workflow-consume.component-5bEZHFsi.mjs.map +1 -0
  5. package/fesm2022/ngx-histaff-alpha-live-form.component-Cl8EQ7M8.mjs +36 -0
  6. package/fesm2022/ngx-histaff-alpha-live-form.component-Cl8EQ7M8.mjs.map +1 -0
  7. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-DG1v69l1.mjs → ngx-histaff-alpha-ngx-histaff-alpha-B6dYCMll.mjs} +278 -94
  8. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-B6dYCMll.mjs.map +1 -0
  9. package/fesm2022/{ngx-histaff-alpha-wf-basic-info.component-GP8my3qI.mjs → ngx-histaff-alpha-wf-basic-info.component-BL7fXjKU.mjs} +2 -2
  10. package/fesm2022/{ngx-histaff-alpha-wf-basic-info.component-GP8my3qI.mjs.map → ngx-histaff-alpha-wf-basic-info.component-BL7fXjKU.mjs.map} +1 -1
  11. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BuqyHWhW.mjs → ngx-histaff-alpha-wf-form-assign.component-BzsIRon0.mjs} +2 -2
  12. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BuqyHWhW.mjs.map → ngx-histaff-alpha-wf-form-assign.component-BzsIRon0.mjs.map} +1 -1
  13. package/fesm2022/ngx-histaff-alpha-wf-process-design.component-CQxxRCqC.mjs +1439 -0
  14. package/fesm2022/ngx-histaff-alpha-wf-process-design.component-CQxxRCqC.mjs.map +1 -0
  15. package/fesm2022/ngx-histaff-alpha.mjs +1 -1
  16. package/lib/app/libraries/core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode.d.ts +2 -1
  17. package/lib/app/libraries/core-form/core-form/core-form.component.d.ts +2 -1
  18. package/lib/app/libraries/core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component.d.ts +3 -2
  19. package/lib/app/libraries/core-form-design/core-form-design.component.d.ts +2 -0
  20. package/lib/app/libraries/core-form-design/core-form-design.service.d.ts +2 -0
  21. package/lib/app/libraries/core-form-design/field-setting/mandatory-props/mandatory-props.component.d.ts +2 -0
  22. package/lib/app/libraries/core-form-design/form-metadata/form-metadata.component.d.ts +3 -1
  23. package/lib/app/libraries/core-form-design/live-form/live-form.component.d.ts +18 -0
  24. package/lib/app/libraries/core-header-params/enum-and-interfaces.d.ts +1 -1
  25. package/lib/app/libraries/core-radio-group/core-radio-group/core-radio-group.component.d.ts +8 -3
  26. package/lib/app/libraries/core-rule-tree/core-rule-tree.component.d.ts +1 -1
  27. package/lib/app/libraries/core-workflow-builder/constants/INITIAL_PROCESS_DEFINITION.d.ts +2 -0
  28. package/lib/app/libraries/core-workflow-builder/core-workflow-consume/core-workflow-consume.component.d.ts +9 -0
  29. package/lib/app/libraries/core-workflow-builder/core-workflow-list/core-workflow-list.component.d.ts +6 -4
  30. package/lib/app/libraries/core-workflow-builder/core-workflow.service.d.ts +13 -2
  31. package/lib/app/libraries/core-workflow-builder/enums/EnumActorSourceType.d.ts +10 -0
  32. package/lib/app/libraries/core-workflow-builder/interfaces/IActorAssignment.d.ts +7 -0
  33. package/lib/app/libraries/core-workflow-builder/interfaces/IStepConfig.d.ts +37 -4
  34. package/lib/app/libraries/core-workflow-builder/interfaces/IWfWorkflow.d.ts +3 -0
  35. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-node/wf-node.component.d.ts +3 -1
  36. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-process-design.component.d.ts +12 -3
  37. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-actor-selector/wf-actor-selector.component.d.ts +40 -0
  38. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-approver-config/wf-approver-config.component.d.ts +5 -0
  39. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-cc-config/wf-cc-config.component.d.ts +5 -0
  40. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-end-config/wf-end-config.component.d.ts +5 -0
  41. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-handler-config/wf-handler-config.component.d.ts +5 -0
  42. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-step-config-shell.component.d.ts +4 -5
  43. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-submit-config/wf-submit-config.component.d.ts +5 -0
  44. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-steps-preview/wf-steps-preview.component.d.ts +8 -0
  45. package/lib/app/libraries/core-workflow-builder/wf-process-design/wf-workflow-canvas.component.d.ts +32 -3
  46. package/package.json +1 -1
  47. package/fesm2022/ngx-histaff-alpha-core-form-design.component-DkGU3mLc.mjs.map +0 -1
  48. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-DG1v69l1.mjs.map +0 -1
  49. package/fesm2022/ngx-histaff-alpha-wf-process-design.component-D9Ba7Fkx.mjs +0 -1068
  50. package/fesm2022/ngx-histaff-alpha-wf-process-design.component-D9Ba7Fkx.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-histaff-alpha-wf-process-design.component-CQxxRCqC.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-insert-menu/wf-insert-menu.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-insert-menu/wf-insert-menu.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-bottom-v-insert/wf-bottom-v-insert.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-bottom-v-insert/wf-bottom-v-insert.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-control-value-only/core-control-value-only.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-control-value-only/core-control-value-only.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-rule-tree/core-rule-tree.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-rule-tree/core-rule-tree.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/enums/EnumActorSourceType.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-actor-selector/wf-actor-selector.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-actor-selector/wf-actor-selector.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-approver-config/wf-approver-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-approver-config/wf-approver-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-cc-config/wf-cc-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-cc-config/wf-cc-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-end-config/wf-end-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-end-config/wf-end-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-handler-config/wf-handler-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-handler-config/wf-handler-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-submit-config/wf-submit-config.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-submit-config/wf-submit-config.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-step-config-shell.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-step-config-shell/wf-step-config-shell.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/enums/EnumWorkflowBranch.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/bridge-line.service.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/bridge-line.directive.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-node/wf-node.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-node/wf-node.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-steps-preview/wf-steps-preview.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-steps-preview/wf-steps-preview.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-workflow-canvas.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-workflow-canvas.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-process-design.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-process-design/wf-process-design.component.html"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, inject, Input, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../../services/multi-language.service';\r\nimport { IWorkflowInsertPoint } from '../../interfaces/IWorkflowInsertPoint';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { DomService } from '../../../services/dom.service';\r\n\r\n@Component({\r\n selector: 'wf-insert-menu',\r\n imports: [],\r\n templateUrl: './wf-insert-menu.component.html',\r\n styleUrl: './wf-insert-menu.component.scss'\r\n})\r\nexport class WfInsertMenuComponent extends BaseComponent implements AfterViewInit {\r\n\r\n @Output() insert = new EventEmitter<{ type: EnumWorkflowStepType; index: number; branchId: string }>();\r\n\r\n @ViewChild('container') container!: ElementRef;\r\n\r\n coreWorkflowService = inject(CoreWorkflowService);\r\n elRef = inject(ElementRef);\r\n\r\n listenerFn!: () => void;\r\n\r\n enumType = EnumWorkflowStepType;\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private renderer: Renderer2,\r\n private domService: DomService\r\n ) {\r\n super(mls);\r\n }\r\n \r\n onInsert(type: EnumWorkflowStepType): void {\r\n this.insert.emit({\r\n type,\r\n index: this.coreWorkflowService.insertContext$.value!.index,\r\n branchId: this.coreWorkflowService.insertContext$.value!.branchId ?? 'root'\r\n });\r\n this.coreWorkflowService.insertContext$.next(null);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {\r\n\t\t\t\r\n e.stopPropagation();\r\n \r\n if (this.container && !!!this.container.nativeElement.contains(e.target)) {\r\n this.coreWorkflowService.insertContext$.next(null);\r\n }\r\n });\r\n\r\n const rect = this.coreWorkflowService.insertAnchorPoint$.value;\r\n const menuEl = this.elRef.nativeElement as HTMLElement;\r\n \r\n if (!rect) return;\r\n\r\n const menuHeight = menuEl.offsetHeight;\r\n const zIndex = this.domService.getMaxZIndex() + 1;\r\n\r\n menuEl.style.position = 'fixed';\r\n menuEl.style.left = `${rect.right + 8}px`;\r\n menuEl.style.top = `${rect.top}px`;\r\n menuEl.style.zIndex = `${zIndex}`;\r\n\r\n\r\n })\r\n }\r\n\r\n onCancelClicked(): void {\r\n this.coreWorkflowService.insertContext$.next(null);\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n if (this.listenerFn) this.listenerFn();\r\n }\r\n}\r\n","<div class=\"wf-insert-menu-container\" #container>\r\n\r\n <div class=\"menu-item\" (click)=\"onInsert(enumType.Approval)\">\r\n <div class=\"menu-item-icon-wrapper\">\r\n <div class=\"menu-item-icon\">🟧</div>\r\n </div>\r\n <div class=\"menu-item-text\">\r\n <div>Approver</div>\r\n </div>\r\n </div>\r\n <div class=\"menu-item\" (click)=\"onInsert(enumType.CC)\">\r\n <div class=\"menu-item-icon-wrapper\">\r\n <div class=\"menu-item-icon\">🟦</div>\r\n </div>\r\n <div class=\"menu-item-text\">\r\n <div>CC</div>\r\n </div>\r\n </div>\r\n <div class=\"menu-item\" (click)=\"onInsert(enumType.Handle)\">\r\n <div class=\"menu-item-icon-wrapper\">\r\n <div class=\"menu-item-icon\">🟪</div>\r\n </div>\r\n <div class=\"menu-item-text\">\r\n <div>Handler</div>\r\n </div>\r\n </div>\r\n <div class=\"menu-item\" (click)=\"onInsert(enumType.ConditionalBranch)\">\r\n <div class=\"menu-item-icon-wrapper\">\r\n <div class=\"menu-item-icon\">🌿</div>\r\n </div>\r\n <div class=\"menu-item-text\">\r\n <div>Conditional Branch</div>\r\n </div>\r\n </div>\r\n <div class=\"menu-item\" (click)=\"onCancelClicked()\">\r\n <div class=\"menu-item-icon-wrapper\">\r\n <div class=\"menu-item-icon\">❌</div>\r\n </div>\r\n <div class=\"menu-item-text\">\r\n <div>Cancel</div>\r\n </div>\r\n </div>\r\n</div>","import { AfterViewInit, Component, ElementRef, EventEmitter, inject, Input, OnChanges, Output, Renderer2, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { WfInsertMenuComponent } from '../wf-insert-menu/wf-insert-menu.component';\r\nimport { IWorkflowInsertPoint } from '../../interfaces/IWorkflowInsertPoint';\r\nimport { IInsertStepEvent } from '../../interfaces/IInsertStepEvent';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { IStep } from '../../interfaces/IStep';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wf-bottom-v-insert',\r\n imports: [\r\n AsyncPipe,\r\n WfInsertMenuComponent\r\n ],\r\n templateUrl: './wf-bottom-v-insert.component.html',\r\n styleUrls: ['../wf-workflow-canvas.component.scss']\r\n})\r\nexport class WfBottomVInsertComponent extends BaseComponent implements AfterViewInit {\r\n @Input({ required: true }) currentContext!: IWorkflowInsertPoint;\r\n @Input({ required: true }) currentStep!: IStep;\r\n\r\n @Output() insertStep = new EventEmitter<IInsertStepEvent>();\r\n\r\n @ViewChild('plusContainer') plusContainer!: ElementRef;\r\n\r\n shouldShowInsert = false;\r\n\r\n public coreWorkflowService = inject(CoreWorkflowService);\r\n el = inject(ElementRef);\r\n renderer = inject(Renderer2);\r\n\r\n private observer: MutationObserver | null = null;\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 this.subscriptions.push(\r\n this.coreWorkflowService.insertContext$\r\n .subscribe(ctx => {\r\n this.shouldShowInsert = !!ctx &&\r\n ctx.branchId === this.currentContext.branchId &&\r\n ctx.index === this.currentContext.index;\r\n })\r\n );\r\n\r\n }\r\n\r\n onShowInsert(e: MouseEvent): void {\r\n const insertContext = {\r\n branchId: this.currentContext.branchId,\r\n index: this.currentContext.index\r\n };\r\n\r\n const triggerEl = e.currentTarget as HTMLElement;\r\n const rect = triggerEl.getBoundingClientRect();\r\n \r\n this.coreWorkflowService.insertContext$.next(insertContext);\r\n this.coreWorkflowService.insertAnchorPoint$.next(rect);\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n });\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n this.observer?.disconnect();\r\n }\r\n\r\n}\r\n","<div class=\"wf-bottom-v-insert-container\" \r\n [class.shorter]=\"(!!currentStep.isPseudo && !!currentStep.isInFallbackBranch!) || !!currentStep.config\"\r\n [class.insert-context]=\"(coreWorkflowService.insertContext$ | async)?.branchId === currentContext.branchId && (coreWorkflowService.insertContext$ | async)?.index === currentContext.index\"\r\n>\r\n <div class=\"vertical-line\"></div>\r\n\r\n <div class=\"plus-container\" #plusContainer>\r\n <button class=\"plus-btn\" (click)=\"onShowInsert($event)\">+</button>\r\n </div>\r\n\r\n <div class=\"arrow-down-container\">\r\n <div class=\"arrow-down\"></div>\r\n </div>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { IFormBaseControl } from '../core-form/core-form/enum-interfaces';\r\nimport { CoreDropdownComponent } from '../core-dropdown/core-dropdown/core-dropdown.component';\r\nimport { CoreChecklistComponent } from '../core-checklist/core-checklist/core-checklist.component';\r\nimport { CoreDatePickerComponent } from '../core-date-picker/core-date-picker/core-date-picker.component';\r\nimport { CoreFormControlSeekerComponent } from '../core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component';\r\nimport { CoreCurrencyInputComponent } from '../core-currency-input/core-currency-input/core-currency-input.component';\r\n\r\n@Component({\r\n selector: 'core-control-value-only',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n ReactiveFormsModule,\r\n CoreDropdownComponent,\r\n CoreChecklistComponent,\r\n CoreDatePickerComponent,\r\n CoreFormControlSeekerComponent,\r\n CoreCurrencyInputComponent\r\n ],\r\n templateUrl: './core-control-value-only.component.html',\r\n styleUrl: './core-control-value-only.component.scss'\r\n})\r\nexport class CoreControlValueOnlyComponent {\r\n $control = input.required<IFormBaseControl>();\r\n $form = input.required<FormGroup>();\r\n $fieldName = input<string>();\r\n}\r\n","<div [formGroup]=\"$form()\">\r\n @switch ($control().controlType) {\r\n @case ('TEXTBOX') {\r\n <input class=\"form-control\" [formControlName]=\"$fieldName() || $control().field\" [type]=\"$control().type || 'text'\"\r\n [placeholder]=\"$control().placeholder || ''\" [readonly]=\"$control().readonly\" />\r\n }\r\n @case ('CURRENCY') {\r\n <core-currency-input [formControlName]=\"$fieldName() || $control().field\"\r\n [placeholder]=\"$control().placeholder || ''\">\r\n </core-currency-input>\r\n }\r\n @case ('DROPDOWN') {\r\n @if ($control().dropdownOptions$) {\r\n <core-dropdown [formControlName]=\"$fieldName() || $control().field\" [options$]=\"$control().dropdownOptions$!\">\r\n </core-dropdown>\r\n }\r\n }\r\n @case ('CHECKLIST') {\r\n @if ($control().checklistOptions$) {\r\n <core-checklist [formControlName]=\"$fieldName() || $control().field\" [options$]=\"$control().checklistOptions$!\">\r\n </core-checklist>\r\n }\r\n }\r\n @case ('DATEPICKER') {\r\n <core-date-picker [formControlName]=\"$fieldName() || $control().field\" [rangeLimit]=\"$control().rangeLimit!\"\r\n [popupAlign]=\"$control().popupAlign!\" [placeholder]=\"$control().placeholder || ''\"\r\n [readonly]=\"$control().readonly!\">\r\n </core-date-picker>\r\n }\r\n @case ('SEEKER') {\r\n <core-form-control-seeker [formControlName]=\"$fieldName() || $control().field\"\r\n [seekerSourceType]=\"$control().seekerSourceType!\" [shownFrom]=\"$control().shownFrom!\"\r\n [boundFrom]=\"$control().boundFrom!\" [objectList$]=\"$control().objectList$!\">\r\n </core-form-control-seeker>\r\n }\r\n @default {\r\n <input class=\"form-control\" [formControlName]=\"$fieldName() || $control().field\" type=\"text\"\r\n [placeholder]=\"$control().placeholder || ''\" [readonly]=\"$control().readonly\" />\r\n }\r\n }\r\n</div>","import { Component, input, output, signal, effect, WritableSignal, ChangeDetectionStrategy, ChangeDetectorRef, computed } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { FormArray, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CoreDropdownComponent } from '../core-dropdown/core-dropdown/core-dropdown.component';\r\nimport { TooltipDirective } from '../tooltip/tooltip.directive';\r\nimport { TranslatePipe } from '../../app-pipes/translate.pipe';\r\nimport { TableCellPipe } from '../../libraries/pipes/table-cell.pipe';\r\nimport { BaseComponent } from '../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../services/multi-language.service';\r\nimport { IFormBaseControl } from '../core-form/core-form/enum-interfaces';\r\nimport { CoreControlValueOnlyComponent } from '../core-control-value-only/core-control-value-only.component';\r\n\r\nexport enum EnumCoreRuleTreeOparator {\r\n EQUAL = 'EQUAL',\r\n GREATER_THAN = 'GREATER_THAN',\r\n LESS_THAN = 'LESS_THAN',\r\n GREATER_OR_EQUAL_THAN = 'GREATER_OR_EQUAL_THAN',\r\n LESS_OR_EQUAL_THAN = 'LESS_OR_EQUAL_THAN',\r\n STARTS_WITH = 'STARTS_WITH',\r\n ENDS_WITH = 'ENDS_WITH',\r\n CONTAINS = 'CONTAINS',\r\n IN = 'IN',\r\n NOT_EQUAL = 'NOT_EQUAL',\r\n NOT_STARTS_WITH = 'NOT_STARTS_WITH',\r\n NOT_ENDS_WITH = 'NOT_ENDS_WITH',\r\n NOT_CONTAINS = 'NOT_CONTAINS',\r\n NOT_IN = 'NOT_IN'\r\n}\r\n\r\n@Component({\r\n selector: 'core-rule-tree',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CoreControlValueOnlyComponent,\r\n NgTemplateOutlet,\r\n CoreDropdownComponent,\r\n TooltipDirective,\r\n TableCellPipe,\r\n TranslatePipe\r\n ],\r\n templateUrl: './core-rule-tree.component.html',\r\n styleUrls: ['./core-rule-tree.component.scss']\r\n})\r\nexport class CoreRuleTreeComponent extends BaseComponent {\r\n\r\n // Inputs\r\n $totalCols = input<IFormBaseControl[]>([]);\r\n $mainForm = input<FormGroup>(new FormGroup({\r\n logicalOperator: new FormControl('AND')\r\n }));\r\n $filterStringInput = input<string>();\r\n $expressionInput = input<string>();\r\n\r\n // Outputs\r\n $jsonEmitter = output<string>();\r\n $expressionEmitter = output<string>();\r\n\r\n // Internal signals\r\n $filterString = signal<string>('()');\r\n $filterFormJsonString: WritableSignal<string> = signal<string>('{}');\r\n\r\n private $formValue = signal<any>(null); // Manual form value signal\r\n\r\n $rawValue = computed(() => JSON.stringify(this.$mainForm().getRawValue(), null, 2))\r\n\r\n // Track collapsed groups manually\r\n private collapsedGroups = new WeakMap<FormGroup, boolean>();\r\n\r\n readonly operatorFriendlyMap: Record<EnumCoreRuleTreeOparator, string> = {\r\n [EnumCoreRuleTreeOparator.EQUAL]: 'Equals (=)',\r\n [EnumCoreRuleTreeOparator.NOT_EQUAL]: 'Does not equal (≠)',\r\n [EnumCoreRuleTreeOparator.STARTS_WITH]: 'Starts with (→)',\r\n [EnumCoreRuleTreeOparator.ENDS_WITH]: 'Ends with (←)',\r\n [EnumCoreRuleTreeOparator.CONTAINS]: 'Contains (∈)',\r\n [EnumCoreRuleTreeOparator.NOT_STARTS_WITH]: 'Does NOT start with (↛)',\r\n [EnumCoreRuleTreeOparator.NOT_ENDS_WITH]: 'Does NOT end with (↚)',\r\n [EnumCoreRuleTreeOparator.NOT_CONTAINS]: 'Does NOT contain (∉)',\r\n [EnumCoreRuleTreeOparator.GREATER_THAN]: 'Greater than (>)',\r\n [EnumCoreRuleTreeOparator.LESS_THAN]: 'Less than (<)',\r\n [EnumCoreRuleTreeOparator.GREATER_OR_EQUAL_THAN]: 'Greater or equal (≥)',\r\n [EnumCoreRuleTreeOparator.LESS_OR_EQUAL_THAN]: 'Less or equal (≤)',\r\n [EnumCoreRuleTreeOparator.IN]: 'In list (∈)',\r\n [EnumCoreRuleTreeOparator.NOT_IN]: 'Not in list (∉)',\r\n };\r\n\r\n\r\n readonly relationalOperator = Object.values(EnumCoreRuleTreeOparator);\r\n\r\n toggleCollapse(group: FormGroup): void {\r\n const current = this.collapsedGroups.get(group) || false;\r\n this.collapsedGroups.set(group, !current);\r\n }\r\n\r\n isCollapsed(group: FormGroup): boolean {\r\n return this.collapsedGroups.get(group) || false;\r\n }\r\n\r\n\r\n field(): FormGroup {\r\n return new FormGroup({\r\n name: new FormControl(null),\r\n value: new FormControl(null),\r\n relationalOperator: new FormControl('EQUAL')\r\n });\r\n }\r\n\r\n filter(): FormGroup {\r\n return new FormGroup({\r\n logicalOperator: new FormControl('AND'),\r\n filters: new FormArray([])\r\n });\r\n }\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n\r\n super(mls);\r\n\r\n effect((onCleanup) => {\r\n const form = this.$mainForm();\r\n if (!!form) {\r\n const sub = form.valueChanges.subscribe(value => {\r\n this.$formValue.set(value);\r\n //this.cdr.markForCheck();\r\n });\r\n onCleanup(() => sub.unsubscribe()); // Unsubscribe if form changes\r\n }\r\n });\r\n\r\n // ➡️ Separate reaction effect for serialization\r\n effect(() => {\r\n const formValue = this.$formValue();\r\n if (!formValue) return;\r\n\r\n const cleaned = this.cleanEmptyFilters(formValue); // 👈 apply cleaning here\r\n\r\n const expr = this.getFilterString(cleaned);\r\n const json = JSON.stringify(cleaned, null, 2);\r\n\r\n this.$filterString.set(expr);\r\n this.$filterFormJsonString.set(json.trim());\r\n\r\n this.$expressionEmitter.emit(expr);\r\n this.$jsonEmitter.emit(json);\r\n });\r\n\r\n // Initialize immediately based on initial form\r\n this.$formValue.set(this.$mainForm().getRawValue());\r\n }\r\n\r\n private cleanEmptyFilters(node: any): any {\r\n if (!node || typeof node !== 'object') return node;\r\n\r\n // If it's a group with filters\r\n if (Array.isArray(node.filters)) {\r\n node.filters = node.filters\r\n .map(f => this.cleanEmptyFilters(f))\r\n .filter(f => f !== null); // optional: skip nulls\r\n\r\n if (node.filters.length === 0) {\r\n delete node.filters; // ← Clean!\r\n }\r\n }\r\n\r\n return node;\r\n }\r\n\r\n\r\n\r\n getFilterString(filter: any): string {\r\n if (!filter || Object.keys(filter).length === 0) return '()';\r\n \r\n let str = '(';\r\n for (let i = 0; i < filter.filters?.length; i++) {\r\n if (i > 0) str += ` ${filter.logicalOperator} `;\r\n \r\n const f = filter.filters[i];\r\n \r\n if (f?.filters?.length) {\r\n str += this.getFilterString(f);\r\n } else {\r\n const rawVal = f.value;\r\n let formattedVal = rawVal;\r\n \r\n if (rawVal instanceof Date) {\r\n formattedVal = this.formatDateToYMD(rawVal);\r\n } else if (typeof rawVal === 'string' && /^\\d{4}-\\d{2}-\\d{2}T/.test(rawVal)) {\r\n // parse ISO string if needed\r\n try {\r\n formattedVal = this.formatDateToYMD(new Date(rawVal));\r\n } catch {}\r\n }\r\n \r\n str += `${f.name} ${f.relationalOperator} '${formattedVal}'`;\r\n }\r\n }\r\n return str + ')';\r\n } \r\n\r\n\r\n addGroup(groupForm: FormGroup): void {\r\n const filtersArray = groupForm.get('filters') as FormArray;\r\n if (filtersArray) {\r\n const newGroup = this.filter(); // 🛠 use your existing filter() factory method\r\n filtersArray.push(newGroup);\r\n }\r\n }\r\n\r\n removeGroup(groupForm: FormGroup, index: number): void {\r\n const filtersArray = groupForm.get('filters') as FormArray;\r\n if (filtersArray && filtersArray.length > index) {\r\n setTimeout(() => filtersArray.removeAt(index));\r\n }\r\n }\r\n\r\n addCondition(groupForm: FormGroup): void {\r\n const filtersArray = groupForm.get('filters') as FormArray;\r\n if (filtersArray) {\r\n const newCondition = this.field();\r\n filtersArray.push(newCondition);\r\n }\r\n }\r\n\r\n removeCondition(filterGroup: FormGroup, index: number): void {\r\n const filtersArray = filterGroup.get('filters') as FormArray;\r\n if (filtersArray && filtersArray.length > index) {\r\n setTimeout(() => filtersArray.removeAt(index));\r\n }\r\n }\r\n\r\n resolveControl(fieldName: string): IFormBaseControl | undefined {\r\n const cols = this.$totalCols();\r\n if (!cols || !fieldName) return undefined;\r\n const tryfind = cols.find(x => x.field === fieldName);\r\n if (!!tryfind) {\r\n }\r\n return tryfind;\r\n }\r\n\r\n safeStringify(obj: any): string {\r\n const seen = new WeakSet();\r\n\r\n return JSON.stringify(obj, (key, value) => {\r\n if (typeof value === 'object' && value !== null) {\r\n if (seen.has(value)) {\r\n return undefined; // ✋ Skip circular reference\r\n }\r\n seen.add(value);\r\n }\r\n\r\n return value;\r\n });\r\n }\r\n\r\n formatDateToYMD(date: Date): string {\r\n const yyyy = date.getFullYear();\r\n const mm = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based\r\n const dd = String(date.getDate()).padStart(2, '0');\r\n return `${yyyy}-${mm}-${dd}`;\r\n } \r\n\r\n}\r\n","<div class=\"core-rule-tree-container\">\r\n\r\n <form [formGroup]=\"$mainForm()\" (ngSubmit)=\"null\" class=\"core-rule-tree-form\">\r\n\r\n <!-- Top Controls -->\r\n <div class=\"top-bar\">\r\n <div class=\"expression-box\">\r\n Expression = {{ $filterString() || '()' }}\r\n </div>\r\n \r\n <!-- <div class=\"button-group\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\"\r\n (click)=\"addCondition($mainForm())\"\r\n [appTooltip]=\"'Add Condition'\">\r\n </button>\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-folder-plus\"\r\n (click)=\"addGroup($mainForm())\"\r\n [appTooltip]=\"'Add Group'\">\r\n </button>\r\n </div> -->\r\n </div>\r\n \r\n <!-- Query Builder -->\r\n <div class=\"query-builder\">\r\n <ng-template #queryTemplate let-filter=\"filter\" let-groupToRemove=\"groupToRemove\">\r\n \r\n <div class=\"group-card\">\r\n\r\n <div class=\"group-header\">\r\n\r\n <!-- Logical Operator -->\r\n <div class=\"logical-operator\">\r\n\r\n @if (filter === $mainForm()) {\r\n <div class=\"logical-operator-label\">\r\n AND\r\n </div>\r\n } @else {\r\n <select class=\"form-control pointer\" [formControl]=\"filter.get('logicalOperator')\">\r\n <option value=\"AND\">AND</option>\r\n <option value=\"OR\">OR</option>\r\n </select>\r\n }\r\n\r\n <!-- Collapse/Expand Button -->\r\n @if (!!filter.value.filters?.length) {\r\n <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\"\r\n (click)=\"toggleCollapse(filter)\"\r\n [appTooltip]=\"isCollapsed(filter) ? 'Expand Group' : 'Collapse Group'\">\r\n <i class=\"feather\" [class.feather-plus]=\"isCollapsed(filter)\" [class.feather-minus]=\"!isCollapsed(filter)\"></i>\r\n </button>\r\n }\r\n <div class=\"local-action-buttons\">\r\n <button type=\"button\" class=\"btn btn-xs btn-success feather-file-plus\"\r\n (click)=\"addCondition(filter)\"\r\n [appTooltip]=\"'Add Condition to this Group'\" [position]=\"'top'\">\r\n </button>\r\n <button type=\"button\" class=\"btn btn-xs btn-success feather-folder-plus\"\r\n (click)=\"addGroup(filter)\"\r\n [appTooltip]=\"'Add Subgroup to this Group'\" [position]=\"'top'\">\r\n </button>\r\n @if (!!groupToRemove) {\r\n <button type=\"button\" class=\"btn btn-xs btn-danger feather-trash\"\r\n (click)=\"removeGroup(groupToRemove.group, groupToRemove.index)\"\r\n [appTooltip]=\"'Remove Group'\" [position]=\"'top'\">\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"group-content\">\r\n \r\n <!-- Filter List (only shown when expanded) -->\r\n\r\n @if (!isCollapsed(filter)) {\r\n\r\n @if (!!filter.value.filters?.length) {\r\n <div class=\"filter-list\" formArrayName=\"filters\">\r\n @for (childFilter of filter.get('filters').controls; track $index; let idx = $index) {\r\n <div class=\"filter-row\" [formGroup]=\"childFilter\">\r\n \r\n @if (!childFilter.value.logicalOperator) {\r\n <div class=\"field-cell\">\r\n <select class=\"form-control\" formControlName=\"name\">\r\n @for (col of $totalCols(); track $index) {\r\n <option [value]=\"col.field\">\r\n {{ col.label || col.field }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n <div class=\"operator-cell\">\r\n <select class=\"form-control\" formControlName=\"relationalOperator\">\r\n @for (op of relationalOperator; track $index) {\r\n <option [value]=\"op\">\r\n {{ operatorFriendlyMap[op] || op }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n <div class=\"value-cell\">\r\n <!-- <input class=\"form-control\" formControlName=\"value\" /> -->\r\n <core-control-value-only\r\n [$control]=\"resolveControl(childFilter.value.name)!\"\r\n [$form]=\"childFilter\"\r\n [$fieldName]=\"'value'\"\r\n >\r\n </core-control-value-only>\r\n </div>\r\n <div class=\"action-cell\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\"\r\n (click)=\"removeCondition(filter, idx)\"\r\n [appTooltip]=\"'Remove Condition'\">\r\n </button>\r\n </div>\r\n } @else {\r\n <!-- Recursive nested groups -->\r\n <ng-container *ngTemplateOutlet=\"queryTemplate; context: { filter: childFilter, groupToRemove: { group: filter, index: idx } }\"></ng-container>\r\n }\r\n \r\n </div>\r\n }\r\n </div>\r\n }\r\n \r\n\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n \r\n </ng-template>\r\n \r\n <ng-container\r\n *ngTemplateOutlet=\"queryTemplate; context: { filter: $mainForm(), groupToRemove: null }\">\r\n </ng-container>\r\n \r\n </div>\r\n \r\n </form>\r\n \r\n <div class=\"dev-json-view\">\r\n <pre class=\"json-preview\">{{ $filterFormJsonString() | tableCell : 'TRIM' : lang }}</pre>\r\n </div>\r\n \r\n </div>\r\n","export enum EnumActorSourceType {\r\n Employee = 'Employee', // Direct EMPLOYEE_ID\r\n Manager = 'Manager', // LM of original requester (supports level: N)\r\n DepartmentSupervisor = 'DepartmentSupervisor', // Supervisor in requester's ORG (supports level: N)\r\n Position = 'Position', // Fixed HU_POSITION.ID → MASTER\r\n Requester = 'Requester', // Original workflow initiator\r\n StepRecipient = 'StepRecipient', // Actor of a referenced previous step\r\n UserGroup = 'UserGroup', // SYS_USER.GROUP_ID\r\n SelfSelection = 'SelfSelection' // Manually chosen at runtime\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, output, signal, WritableSignal } from '@angular/core';\r\nimport { BaseComponent } from '../../../../base-component/base/base.component';\r\nimport { EnumActorSourceType } from '../../../enums/EnumActorSourceType';\r\nimport { CoreRadioGroupComponent, ICoreRadioOption } from '../../../../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { TranslatePipe } from '../../../../../app-pipes/translate.pipe';\r\nimport { IActorAssignment } from '../../../interfaces/IActorAssignment';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ICoreDropdownOption } from '../../../../../interfaces/ICoreDropdownOption';\r\nimport { CoreParamControlComponent } from '../../../../core-param-control/core-param-control/core-param-control.component';\r\nimport { ICoreParamControl } from '../../../../core-header-params/enum-and-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../../../enum/EnumFormBaseContolType';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../../../../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { CoreWorkflowService } from '../../../core-workflow.service';\r\nimport { IStepConfig } from '../../../interfaces/IStepConfig';\r\nimport { TooltipDirective } from '../../../../tooltip/tooltip.directive';\r\n\r\n@Component({\r\n selector: 'wf-actor-selector',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CoreParamControlComponent,\r\n CoreRadioGroupComponent,\r\n TranslatePipe,\r\n TooltipDirective,\r\n ],\r\n templateUrl: './wf-actor-selector.component.html',\r\n styleUrl: './wf-actor-selector.component.scss'\r\n})\r\nexport class WfActorSelectorComponent extends BaseComponent {\r\n\r\n wfs = inject(CoreWorkflowService);\r\n\r\n $value = this.wfs.$selectedActorAssignment;\r\n $valueChange = output<IActorAssignment | null>();\r\n levelSpecificOptions$: BehaviorSubject<ICoreDropdownOption[]> = new BehaviorSubject<ICoreDropdownOption[]>([]);\r\n\r\n employeeObjectList$ = new BehaviorSubject<any[]>([]);\r\n positionObjectList$ = new BehaviorSubject<any[]>([]);\r\n\r\n onNgModelChange = (ngModel: string, value: any) => {\r\n switch(ngModel) {\r\n case 'level':\r\n this.onLevelChanged(value);\r\n break;\r\n case 'employeeIds':\r\n case 'positionIds':\r\n this.onStaticValueSelected(value)\r\n break; \r\n }\r\n }\r\n\r\n levelSpecificControl: ICoreParamControl = {\r\n controlType: EnumFormBaseContolType.DROPDOWN,\r\n name: 'level',\r\n dropdownOptions$: this.levelSpecificOptions$,\r\n ngModel: this.$value()?.level,\r\n flexSize: 12,\r\n label: '',\r\n ngModelChange: this.onNgModelChange,\r\n getByIdApi: '/api/HuEmployee/GetById'\r\n }\r\n\r\n employeeIdsControl: ICoreParamControl = {\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n multiMode: true,\r\n objectList$: this.employeeObjectList$,\r\n name: 'employeeIds',\r\n ngModel: this.$value()?.staticValueIds,\r\n flexSize: 12,\r\n label: '',\r\n ngModelChange: this.onNgModelChange,\r\n shownFrom: 'fullname',\r\n getByIdApi: '/api/HuEmployee/GetById'\r\n }\r\n \r\n positionIdsControl: ICoreParamControl = {\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.POSITION_SEEK,\r\n multiMode: true,\r\n objectList$: this.positionObjectList$,\r\n name: 'positionIds',\r\n ngModel: this.$value()?.staticValueIds,\r\n flexSize: 12,\r\n label: '',\r\n ngModelChange: this.onNgModelChange,\r\n shownFrom: 'name',\r\n getByIdApi: '/api/HuPosition/GetById'\r\n }\r\n\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n readonly AVAILABLE_SOURCES = Object.values(EnumActorSourceType);\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 const current = this.$value()?.source;\r\n if (\r\n current === EnumActorSourceType.Manager ||\r\n current === EnumActorSourceType.DepartmentSupervisor\r\n ) {\r\n this.updateLevelOptions(current);\r\n }\r\n }\r\n\r\n updateLevelOptions(source: EnumActorSourceType) {\r\n const prefix = source === EnumActorSourceType.Manager ? 'Direct manager' : 'Direct supervisor';\r\n const options = Array.from({ length: 10 }, (_, i) => ({\r\n value: i,\r\n text: i === 0 ? `${prefix}` : `${prefix} + ${i}`\r\n }));\r\n this.levelSpecificOptions$.next(options);\r\n }\r\n\r\n actorSourceOptions$ = new BehaviorSubject<ICoreRadioOption[]>(\r\n Object.values(EnumActorSourceType)\r\n .filter(val => ['Employee', 'Manager', 'DepartmentSupervisor', 'Position'].includes(val))\r\n .map(val => ({\r\n value: val,\r\n text: val\r\n }))\r\n );\r\n\r\n unsupportedYetactorSourceOptions$ = new BehaviorSubject<ICoreRadioOption[]>(\r\n Object.values(EnumActorSourceType)\r\n .filter(val => !['Employee', 'Manager', 'DepartmentSupervisor', 'Position'].includes(val))\r\n .map(val => ({\r\n value: val,\r\n text: val\r\n }))\r\n );\r\n\r\n $showEmployeeSeeker = computed(() =>\r\n this.$value()?.source === EnumActorSourceType.Employee\r\n );\r\n\r\n $showPositionSeeker = computed(() =>\r\n this.$value()?.source === EnumActorSourceType.Position\r\n );\r\n\r\n $showLevel = computed(() =>\r\n [EnumActorSourceType.Manager, EnumActorSourceType.DepartmentSupervisor].includes(this.$value()!.source)\r\n );\r\n\r\n $showStepKey = computed(() =>\r\n this.$value()?.source === EnumActorSourceType.StepRecipient\r\n );\r\n\r\n onSourceChanged(newSource: EnumActorSourceType): void {\r\n\r\n let newValue = this.$value();\r\n\r\n if (!newValue) return;\r\n // Optionally reset level\r\n if (\r\n newSource === EnumActorSourceType.Manager ||\r\n newSource === EnumActorSourceType.DepartmentSupervisor\r\n ) {\r\n newValue.level = undefined;\r\n delete newValue.staticValueIds;\r\n delete newValue.stepKey;\r\n } else {\r\n delete newValue.level\r\n }\r\n\r\n this.$value.set({ ...newValue});\r\n\r\n this.updateLevelOptions(newSource);\r\n this.$valueChange.emit({ source: newSource });\r\n\r\n this.updateCurrentStepConfigPatch({\r\n approvers: [{ source: newSource }],\r\n });\r\n\r\n this.cdr.markForCheck();\r\n\r\n }\r\n\r\n onStaticValueSelected(value: number[]): void {\r\n if (!this.$value()) return;\r\n const next = { ...this.$value()!, staticValueIds: value };\r\n this.$valueChange.emit(next);\r\n\r\n const prev = this.$value();\r\n this.updateCurrentStepConfigPatch({\r\n approvers: [{ ...prev, staticValueIds: value }]\r\n });\r\n }\r\n\r\n onLevelChanged(level: number): void {\r\n if (!this.$value()) return;\r\n const next = { ...this.$value()!, level };\r\n this.$valueChange.emit(next);\r\n const prev = this.$value();\r\n this.updateCurrentStepConfigPatch({\r\n approvers: [{ ...prev, level }]\r\n });\r\n }\r\n\r\n onStepKeyChanged(key: string): void {\r\n if (!this.$value()) return;\r\n const next = { ...this.$value()!, stepKey: key };\r\n this.$valueChange.emit(next);\r\n }\r\n\r\n updateCurrentStepConfigPatch<T extends IStepConfig>(\r\n patch: Partial<T>\r\n ): void {\r\n const step = this.wfs.$currentStep();\r\n if (!step) return;\r\n \r\n const cloned = structuredClone(this.wfs.$currentSteps());\r\n const target = cloned.find(s => s.id === step.id);\r\n if (!target) return;\r\n \r\n target.config = {\r\n ...(target.config ?? {}),\r\n ...patch\r\n };\r\n \r\n this.wfs.$currentSteps.set(cloned);\r\n }\r\n \r\n}\r\n","<div class=\"wf-actor-selector-container\">\r\n <div class=\"soure-options\"\r\n [appTooltip]=\"'This version currently supports: Manager | Supervisor | Employee | Position'\"\r\n [showAnyway]=\"true\"\r\n [position]=\"'above'\" \r\n >\r\n <core-radio-group\r\n [options$]=\"actorSourceOptions$\"\r\n [vertical]=\"true\"\r\n [columnCount]=\"2\"\r\n [gapY]=\"8\"\r\n [(ngModel)]=\"$value()!.source\"\r\n (ngModelChange)=\"onSourceChanged($event)\">\r\n </core-radio-group>\r\n </div>\r\n\r\n <div class=\"soure-options form-control-disabled\"\r\n [appTooltip]=\"'Not supported yet in this version'\"\r\n [showAnyway]=\"true\"\r\n >\r\n <core-radio-group\r\n [options$]=\"unsupportedYetactorSourceOptions$\"\r\n [vertical]=\"true\"\r\n [columnCount]=\"2\"\r\n [gapY]=\"8\"\r\n [disabled]=\"true\"\r\n [(ngModel)]=\"$value()!.source\"\r\n (ngModelChange)=\"onSourceChanged($event)\">\r\n </core-radio-group>\r\n </div>\r\n \r\n <!-- Manager / DepartmentSupervisor -->\r\n @if (!!$value() && $showLevel()) {\r\n <div class=\"manager-level\">\r\n <label>\r\n {{ $value()!.source === 'Manager' ? 'Manager level' : 'Supervisor level' }}\r\n </label>\r\n <core-param-control\r\n [control]=\"levelSpecificControl\"\r\n ></core-param-control>\r\n </div>\r\n }\r\n \r\n <!-- Employee / Position / UserGroup (choose static entities) -->\r\n @if (!!$value() && $value()!.source === 'Employee' || $value()!.source === 'Position' || $value()!.source === 'UserGroup') {\r\n <div class=\"static-selector\">\r\n <label>Select {{ $value()!.source }}</label>\r\n <!-- Choose component based on source -->\r\n @switch ($value()!.source) {\r\n @case('Employee') {\r\n <core-param-control\r\n [control]=\"employeeIdsControl\"\r\n ></core-param-control>\r\n }\r\n @case('Position') {\r\n <core-param-control\r\n [control]=\"positionIdsControl\"\r\n ></core-param-control>\r\n }\r\n @case('UserGroup') {\r\n <div>Not supported yet in this version</div>\r\n }\r\n }\r\n </div>\r\n }\r\n \r\n @if (!!$value() && $value()!.source === 'StepRecipient') {\r\n <div>Not supported yet in this version</div>\r\n }\r\n \r\n</div>\r\n ","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\n\r\n@Component({\r\n selector: 'wf-approver-config',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n WfActorSelectorComponent\r\n ],\r\n templateUrl: './wf-approver-config.component.html',\r\n styleUrl: './wf-approver-config.component.scss'\r\n})\r\nexport class WfApproverConfigComponent {\r\n\r\n}\r\n","<wf-actor-selector></wf-actor-selector>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\n\r\n@Component({\r\n selector: 'wf-cc-config',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n WfActorSelectorComponent\r\n ],\r\n templateUrl: './wf-cc-config.component.html',\r\n styleUrl: './wf-cc-config.component.scss'\r\n})\r\nexport class WfCcConfigComponent {\r\n\r\n}\r\n","<wf-actor-selector></wf-actor-selector>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wf-end-config',\r\n imports: [],\r\n templateUrl: './wf-end-config.component.html',\r\n styleUrl: './wf-end-config.component.scss'\r\n})\r\nexport class WfEndConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-submit-config-container\">\r\n <div class=\"submit-config-box\">\r\n <span class=\"icon\"><i class=\"feather-mail\"></i></span>\r\n <span class=\"message\">\r\n In this version, an email will be sent the <strong>requester</strong> by default.\r\n </span>\r\n </div>\r\n <div class=\"submit-config-box\">Press ESC to hide</div>\r\n</div>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { WfActorSelectorComponent } from '../wf-actor-selector/wf-actor-selector.component';\r\n\r\n@Component({\r\n selector: 'wf-handler-config',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n WfActorSelectorComponent\r\n ],\r\n templateUrl: './wf-handler-config.component.html',\r\n styleUrl: './wf-handler-config.component.scss'\r\n})\r\nexport class WfHandlerConfigComponent {\r\n\r\n}\r\n","<wf-actor-selector></wf-actor-selector>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wf-submit-config',\r\n imports: [],\r\n templateUrl: './wf-submit-config.component.html',\r\n styleUrl: './wf-submit-config.component.scss'\r\n})\r\nexport class WfSubmitConfigComponent {\r\n\r\n}\r\n","<div class=\"wf-submit-config-container\">\r\n <div class=\"submit-config-box\">\r\n <span class=\"icon\"><i class=\"feather-check-square\"></i></span>\r\n <span class=\"message\">\r\n In this version, <strong>all members</strong> are allowed to submit.\r\n </span>\r\n </div>\r\n <div class=\"submit-config-box\">Press ESC to hide</div>\r\n</div>","import { AfterViewInit, ChangeDetectionStrategy, Component, viewChild, effect, ElementRef, computed, inject, Renderer2, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormControl, FormArray } from '@angular/forms';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { CoreRuleTreeComponent } from '../../../core-rule-tree/core-rule-tree.component';\r\nimport { DomService } from '../../../services/dom.service';\r\nimport { WfApproverConfigComponent } from './wf-approver-config/wf-approver-config.component';\r\nimport { WfCcConfigComponent } from './wf-cc-config/wf-cc-config.component';\r\nimport { WfEndConfigComponent } from './wf-end-config/wf-end-config.component';\r\nimport { WfHandlerConfigComponent } from './wf-handler-config/wf-handler-config.component';\r\nimport { WfSubmitConfigComponent } from './wf-submit-config/wf-submit-config.component';\r\n\r\n@Component({\r\n selector: 'wf-step-config-shell',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CoreRuleTreeComponent,\r\n WfApproverConfigComponent,\r\n WfCcConfigComponent,\r\n WfEndConfigComponent,\r\n WfHandlerConfigComponent,\r\n WfSubmitConfigComponent\r\n ],\r\n templateUrl: './wf-step-config-shell.component.html',\r\n styleUrls: ['./wf-step-config-shell.component.scss']\r\n})\r\nexport class WfStepConfigShellComponent {\r\n\r\n $container = viewChild<ElementRef>('container');\r\n\r\n // listenerFn!: () => void;\r\n renderer = inject(Renderer2);\r\n cdr = inject(ChangeDetectorRef);\r\n enumType = EnumWorkflowStepType;\r\n\r\n constructor(\r\n public coreWorkflowService: CoreWorkflowService,\r\n private domService: DomService,\r\n ) {\r\n effect(() => {\r\n const containerRef = this.$container();\r\n if (containerRef) {\r\n containerRef.nativeElement.style.zIndex = this.domService.getMaxZIndex() + 1;\r\n }\r\n });\r\n }\r\n\r\n $stepFormGroup = computed<FormGroup>(() => {\r\n const step = this.coreWorkflowService.$currentStep();\r\n if (!step) {\r\n return new FormGroup({\r\n logicalOperator: new FormControl('AND'),\r\n filters: new FormArray([])\r\n });\r\n }\r\n return this.buildFormGroupFromStep(step.config);\r\n });\r\n\r\n $isBranchCard = computed<boolean>(() => {\r\n const step = this.coreWorkflowService.$currentStep();\r\n console.log(step?.type)\r\n console.log(step?.type === EnumWorkflowStepType.BranchCard)\r\n\r\n return !!step && step.type === EnumWorkflowStepType.BranchCard;\r\n })\r\n\r\n $canRenderRuleTree = computed(() => {\r\n const form = this.$stepFormGroup();\r\n const cols = this.coreWorkflowService.$availableCols();\r\n const isBranchCard = this.$isBranchCard();\r\n \r\n if (!form || !cols || !isBranchCard) return false;\r\n if (cols.length === 0) return false;\r\n \r\n return form.valid;\r\n });\r\n\r\n buildFormGroupFromStep(config?: any): FormGroup {\r\n if (!config) {\r\n return new FormGroup({\r\n logicalOperator: new FormControl('AND'),\r\n filters: new FormArray([])\r\n });\r\n }\r\n\r\n return new FormGroup({\r\n logicalOperator: new FormControl(config.logicalOperator ?? 'AND'),\r\n filters: new FormArray([]) // You could map config.filters to prefilled controls\r\n });\r\n }\r\n\r\n close() {\r\n this.coreWorkflowService.$showStepConfig.set(false); // example method\r\n }\r\n\r\n save() {\r\n // handle save logic\r\n }\r\n\r\n}","<div class=\"wf-step-config-shell-container\" #container [class.shown]=\"coreWorkflowService.$showStepConfig()\">\r\n \r\n <div class=\"wf-step-config-header\">\r\n <div class=\"panel-title\">\r\n {{ coreWorkflowService.$currentStep()?.type || 'Step' }} Configuration\r\n </div>\r\n <div class=\"close-wrapper\" (click)=\"close()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n \r\n <div class=\"wf-step-config-content\">\r\n\r\n\r\n @switch (coreWorkflowService.$currentStep()?.type) {\r\n \r\n @case (enumType.BranchCard) {\r\n <core-rule-tree\r\n [$totalCols]=\"coreWorkflowService.$availableCols()\"\r\n [$mainForm]=\"$stepFormGroup()\" />\r\n }\r\n \r\n @case (enumType.Approval) {\r\n <wf-approver-config/>\r\n }\r\n \r\n @case (enumType.Handle) {\r\n <wf-handler-config/>\r\n }\r\n \r\n @case (enumType.CC) {\r\n <wf-cc-config/>\r\n }\r\n \r\n @case (enumType.Submit) {\r\n <wf-submit-config/>\r\n }\r\n \r\n @case (enumType.End) {\r\n <wf-end-config/>\r\n }\r\n \r\n @default {\r\n <div class=\"loading-placeholder\">\r\n Unsupported step type.\r\n </div>\r\n }\r\n \r\n }\r\n \r\n \r\n </div>\r\n \r\n</div>","export const ROOT_BRANCH_ID = 'root';","import { inject, Injectable } from '@angular/core';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BridgeLineService {\r\n\r\n coreWorkflowService = inject(CoreWorkflowService);\r\n\r\n colorRadius: number = 10;\r\n\r\n adjustBridgeLines(\r\n branchGroupEl: HTMLElement,\r\n topBridgeLineEl: HTMLElement,\r\n bottomBridgeLineEl: HTMLElement,\r\n branchColumnEls: HTMLElement[],\r\n ): void {\r\n const columns = Array.from(\r\n branchGroupEl.querySelectorAll(':scope > .branch-column')\r\n ) as HTMLElement[];\r\n\r\n if (columns.length < 2) return;\r\n\r\n // Helper: get the last .arrow-down inside a column\r\n // ':scope > .arrow-down' only works if .arrow-down is a direct child of col.\r\n // Safely queries only arrows inside wf-bottom-v-insert\r\n // Uses .pop() to grab the last one, if any (safe fallback if there's more than one).\r\n // Ensures type safety with instanceof HTMLElement.\r\n const getLastArrow = (col: HTMLElement): HTMLElement | null => {\r\n const arrow = Array.from(col.querySelectorAll('wf-bottom-v-insert .arrow-down')).pop() as HTMLElement;\r\n return arrow instanceof HTMLElement ? arrow : null;\r\n };\r\n\r\n const allArrows = columns\r\n .map(getLastArrow)\r\n .filter((el): el is HTMLElement => !!el);\r\n\r\n if (allArrows.length < 2) return;\r\n\r\n const r1 = allArrows[0].getBoundingClientRect();\r\n const r2 = allArrows[allArrows.length - 1].getBoundingClientRect();\r\n const containerRect = branchGroupEl.getBoundingClientRect();\r\n\r\n const left = r1.left + r1.width / 2 - containerRect.left;\r\n const right = r2.left + r2.width / 2 - containerRect.left;\r\n\r\n const maxArrowBottom = allArrows.reduce((max, el) => {\r\n const bottom = el.getBoundingClientRect().bottom;\r\n return Math.max(max, bottom);\r\n }, 0);\r\n\r\n const top = maxArrowBottom - containerRect.top - 1;\r\n\r\n // TOP bridge line\r\n topBridgeLineEl.style.top = `17.5px`;\r\n topBridgeLineEl.style.left = `${left}px`;\r\n topBridgeLineEl.style.width = `${right - left}px`;\r\n\r\n // BOTTOM bridge line\r\n bottomBridgeLineEl.style.top = `${top}px`;\r\n bottomBridgeLineEl.style.left = `${left}px`;\r\n bottomBridgeLineEl.style.width = `${right - left}px`;\r\n\r\n // Vertical lines\r\n branchColumnEls.forEach(col => {\r\n const lastArrow = getLastArrow(col);\r\n const vertical = col.querySelector(':scope > .vertical-bridge-line') as HTMLElement;\r\n\r\n if (!lastArrow || !vertical) return;\r\n\r\n const arrowRect = lastArrow.getBoundingClientRect();\r\n const colRect = col.getBoundingClientRect();\r\n\r\n const startY = arrowRect.bottom - colRect.top;\r\n const height = top - startY - this.coreWorkflowService.standardConnectorHeight - 17.5;\r\n\r\n vertical.style.top = `${startY}px`;\r\n vertical.style.left = `calc(50% - 1px)`;\r\n vertical.style.height = `${height}px`;\r\n vertical.style.display = height > 0 ? 'block' : 'none';\r\n //vertical.style.backgroundColor = `hsl(${this.colorRadius}, 100%, 50%)`;\r\n this.colorRadius += 10;\r\n });\r\n \r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { BridgeLineService } from './bridge-line.service';\r\nimport { take } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[bridgeLine]'\r\n})\r\nexport class BridgeLineDirective implements OnInit, OnDestroy {\r\n\r\n @Output() bridgeLinesAdjusted = new EventEmitter<void>();\r\n\r\n private resizeObserver!: ResizeObserver;\r\n private mutationObserver!: MutationObserver;\r\n\r\n constructor(\r\n private elRef: ElementRef<HTMLElement>,\r\n private bridgeLineService: BridgeLineService,\r\n private zone: NgZone\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.zone.runOutsideAngular(() => {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n requestAnimationFrame(() => this.adjustBridgeLines());\r\n });\r\n this.resizeObserver.observe(this.elRef.nativeElement);\r\n\r\n this.mutationObserver = new MutationObserver(() => {\r\n this.adjustBridgeLines();\r\n });\r\n \r\n this.mutationObserver.observe(this.elRef.nativeElement, {\r\n childList: true,\r\n subtree: true\r\n });\r\n\r\n });\r\n\r\n // First adjustment\r\n requestAnimationFrame(() => this.adjustBridgeLines());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n this.mutationObserver?.disconnect();\r\n }\r\n\r\n private adjustBridgeLines(): void {\r\n\r\n const branchGroupEl = this.elRef.nativeElement;\r\n\r\n const bridgeLines = branchGroupEl.querySelectorAll('.horizontal-bridge-line');\r\n const topBridgeLineEl = bridgeLines[0] as HTMLElement | null;\r\n const bottomBridgeLineEl = bridgeLines[1] as HTMLElement | null;\r\n\r\n const branchColumnEls = Array.from(branchGroupEl.querySelectorAll(':scope > .branch-column')) as HTMLElement[];\r\n\r\n if (!topBridgeLineEl || !bottomBridgeLineEl || !branchColumnEls) return;\r\n\r\n this.bridgeLineService.adjustBridgeLines(\r\n this.elRef.nativeElement,\r\n topBridgeLineEl,\r\n bottomBridgeLineEl,\r\n branchColumnEls,\r\n );\r\n this.bridgeLinesAdjusted.emit();\r\n }\r\n\r\n\r\n}","import { AfterViewInit, Component, ElementRef, inject, Input, QueryList, Renderer2, ViewChild, ViewChildren } from '@angular/core';\r\nimport { LowerCasePipe } from '@angular/common';\r\nimport { IStep } from '../../interfaces/IStep';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { WfBottomVInsertComponent } from '../wf-bottom-v-insert/wf-bottom-v-insert.component';\r\nimport { EnumWorkflowStepType } from '../../enums/EnumWorkflowStepType';\r\nimport { TooltipDirective } from '../../../tooltip/tooltip.directive';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IWorkflowBranch } from '../../interfaces/IWorkflowBranch';\r\nimport { BridgeLineService } from '../bridge-line.service';\r\nimport { BridgeLineDirective } from '../bridge-line.directive';\r\n\r\n@Component({\r\n selector: 'wf-node',\r\n imports: [\r\n FormsModule,\r\n BridgeLineDirective,\r\n LowerCasePipe,\r\n WfBottomVInsertComponent,\r\n TooltipDirective,\r\n ],\r\n templateUrl: './wf-node.component.html',\r\n styleUrls: [\r\n '../wf-workflow-canvas.component.scss',\r\n './wf-node.component.scss'\r\n ]\r\n})\r\nexport class WfNodeComponent extends BaseComponent implements AfterViewInit {\r\n @Input({ required: true }) branchId!: string;\r\n @Input({ required: true }) step!: IStep;\r\n @Input({ required: true }) index!: number;\r\n @Input({ required: true }) branchPriority!: number;\r\n @Input({ required: true }) stepGroup: IStep[] = []; // array that holds 'step'\r\n @Input() conditionalBranches!: IWorkflowBranch[];\r\n @Input() isRootLevelStepGroup: boolean = false;\r\n\r\n @Input() grandParentSteps: IStep[] | null = null; // The step array that owns the parent step of type ConditionalBranch\r\n @Input() isInFallbackBranch: boolean = false;\r\n\r\n @ViewChild('branchHeader') branchHeader!: ElementRef;\r\n @ViewChild('branchName') branchName!: ElementRef;\r\n @ViewChild('input') input!: ElementRef;\r\n\r\n @ViewChild('branchGroup') branchGroupRef!: ElementRef<HTMLElement>;\r\n @ViewChild('topBridgeLine') topBridgeLineRef!: ElementRef<HTMLElement>;\r\n @ViewChild('bottomBridgeLine') bottomBridgeLineRef!: ElementRef<HTMLElement>;\r\n //@ViewChild('bottomInsertArrow') bottomInsertArrowRef!: ElementRef<HTMLElement>;\r\n @ViewChildren('branchColumn') branchColumnRefs!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n listenerFn!: (() => void) | null;\r\n\r\n //private observer!: MutationObserver;\r\n\r\n enumType = EnumWorkflowStepType;\r\n\r\n public coreWorkflowService = inject(CoreWorkflowService);\r\n renderer = inject(Renderer2);\r\n bridgeLineService = inject(BridgeLineService);\r\n\r\n stepNameEditMode: boolean = false;\r\n\r\n onInputBlur(): void {\r\n this.stepNameEditMode = false;\r\n }\r\n\r\n onStepNameChanged(newName: string): void {\r\n if (this.isRootLevelStepGroup) {\r\n const cloned = structuredClone(this.coreWorkflowService.$currentSteps());\r\n const stepInCloned = cloned.find(s => s.id === this.step.id);\r\n if (stepInCloned) {\r\n stepInCloned.name = newName;\r\n this.coreWorkflowService.$currentSteps.set(cloned);\r\n }\r\n }\r\n }\r\n\r\n getBranchColumnElements(): HTMLElement[] {\r\n return this.branchColumnRefs?.map(ref => ref?.nativeElement);\r\n }\r\n\r\n private setupClickOutsideListener(): void {\r\n // Clean up any existing listener\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n this.listenerFn = null;\r\n }\r\n\r\n // Delay to ensure DOM has rendered\r\n setTimeout(() => {\r\n this.listenerFn = this.renderer.listen('document', 'click', (event: Event) => {\r\n const clickedInside = this.branchHeader?.nativeElement.contains(event.target);\r\n if (!clickedInside) {\r\n this.stepNameEditMode = false;\r\n this.removeClickOutsideListener(); // optional: remove after 1 toggle\r\n }\r\n });\r\n });\r\n }\r\n\r\n private removeClickOutsideListener(): void {\r\n if (this.listenerFn) {\r\n this.listenerFn();\r\n this.listenerFn = null;\r\n }\r\n }\r\n\r\n onLabelClicked(): void {\r\n this.coreWorkflowService.$showStepConfig.set(true);\r\n }\r\n\r\n switchToNameEditMode(): void {\r\n if (!!this.step.isPseudo && !!this.isInFallbackBranch) return;\r\n this.stepNameEditMode = true;\r\n setTimeout(() => this.input?.nativeElement.focus());\r\n this.setupClickOutsideListener();\r\n }\r\n\r\n\r\n adjustBridgeLines(): void {\r\n\r\n setTimeout(() => {\r\n\r\n if (!this.branchGroupRef || !this.topBridgeLineRef || !this.bottomBridgeLineRef) {\r\n console.warn('[DEBUG] Some ref was null');\r\n return;\r\n }\r\n\r\n console.log('[DEBUG] Triggering BridgeLineService');\r\n\r\n this.bridgeLineService.adjustBridgeLines(\r\n this.branchGroupRef.nativeElement,\r\n this.topBridgeLineRef.nativeElement,\r\n this.bottomBridgeLineRef.nativeElement,\r\n this.branchColumnRefs.map(ref => ref.nativeElement)\r\n );\r\n\r\n }, 50)\r\n\r\n }\r\n\r\n /*\r\n onDeleteBranch(branchId: string): void {\r\n\r\n if (!this.conditionalBranches) return;\r\n\r\n const index = this.conditionalBranches.findIndex(b => b.id === branchId);\r\n if (index === -1) return;\r\n\r\n // ❌ Remove the selected branch\r\n this.conditionalBranches.splice(index, 1);\r\n\r\n // ✅ Check if only fallback branch remains → delete the group step\r\n if (this.conditionalBranches.length === 1 && this.conditionalBranches[0].isFallback) {\r\n\r\n if (!this.grandParentSteps) return;\r\n\r\n const indexInGrandParentSteps = this.grandParentSteps.findIndex(x => x.branches?.some(y => y.id === this.conditionalBranches[0].id));\r\n if (indexInGrandParentSteps === -1) return;\r\n\r\n // 🧹 Remove the ConditionalBranch step (parent step)\r\n this.grandParentSteps.splice(indexInGrandParentSteps, 1);\r\n\r\n } else {\r\n\r\n this.coreWorkflowService.autoReassignPriorities(this.conditionalBranches);\r\n\r\n }\r\n }\r\n */\r\n\r\n /*\r\n If the fallback deletion triggers parent step removal → check isRootLevelStepGroup to update signal.\r\n Otherwise, it's safe to mutate grandParentSteps directly.\r\n autoReassignPriorities() keeps branch execution order consistent.\r\n */\r\n /*\r\n onDeleteBranch(branchId: string): void {\r\n if (!this.conditionalBranches) return;\r\n\r\n const index = this.conditionalBranches.findIndex(b => b.id === branchId);\r\n if (index === -1) return;\r\n\r\n // 🧹 Remove selected branch\r\n this.conditionalBranches.splice(index, 1);\r\n\r\n // ✅ Case: only fallback remains → delete the entire ConditionalBranch step\r\n const onlyFallbackLeft = this.conditionalBranches.length === 1 && this.conditionalBranches[0].isFallback;\r\n if (onlyFallbackLeft) {\r\n if (!this.grandParentSteps) return;\r\n\r\n const fallbackBranchId = this.conditionalBranches[0].id;\r\n const stepIndex = this.grandParentSteps.findIndex(step =>\r\n step.branches?.some(branch => branch.id === fallbackBranchId)\r\n );\r\n if (stepIndex === -1) return;\r\n\r\n if (this.isRootLevelStepGroup) {\r\n // ✅ Must clone and reassign signal\r\n const updated = [...this.grandParentSteps];\r\n updated.splice(stepIndex, 1);\r\n this.coreWorkflowService.$currentSteps.set(updated);\r\n } else {\r\n // ✅ In-place mutation is safe for non-root\r\n this.grandParentSteps.splice(stepIndex, 1);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 🔁 Otherwise: re-prioritize branches\r\n this.coreWorkflowService.autoReassignPriorities(this.conditionalBranches);\r\n }\r\n*/\r\n\r\nonDeleteBranch(branchId: string): void {\r\n if (!this.conditionalBranches) return;\r\n\r\n const index = this.conditionalBranches.findIndex(b => b.id === branchId);\r\n if (index === -1) return;\r\n\r\n // ⚠️ Remove selected branch (in-place is okay, but needs re-signal)\r\n this.conditionalBranches.splice(index, 1);\r\n\r\n const onlyFallbackLeft = this.conditionalBranches.length === 1 && this.conditionalBranches[0].isFallback;\r\n\r\n if (onlyFallbackLeft) {\r\n if (!this.grandParentSteps) return;\r\n\r\n const fallbackBranchId = this.conditionalBranches[0].id;\r\n\r\n const stepIndex = this.grandParentSteps.findIndex(step =>\r\n step.branches?.some(branch => branch.id === fallbackBranchId)\r\n );\r\n if (stepIndex === -1) return;\r\n\r\n if (this.isRootLevelStepGroup) {\r\n // ✅ Deep clone and reassign to trigger reactivity\r\n const updated = structuredClone(this.grandParentSteps);\r\n updated.splice(stepIndex, 1);\r\n this.coreWorkflowService.$currentSteps.set(updated);\r\n } else {\r\n // ✅ In-place mutation is fine for nested groups\r\n this.grandParentSteps.splice(stepIndex, 1);\r\n this.coreWorkflowService.$currentSteps.set(structuredClone(this.coreWorkflowService.$currentSteps()));\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 🧠 Still re-trigger signal to reflect nested change in UI\r\n this.coreWorkflowService.autoReassignPriorities(this.conditionalBranches);\r\n this.coreWorkflowService.$currentSteps.set(structuredClone(this.coreWorkflowService.$currentSteps()));\r\n}\r\n\r\n\r\n /*onDeleteStep(): void {\r\n \r\n if (!this.stepGroup) return;\r\n\r\n const index = this.stepGroup.findIndex(s => s.id === this.step.id);\r\n if (index === -1) return;\r\n \r\n // ❌ Remove the selected step\r\n this.stepGroup.splice(index, 1);\r\n\r\n }*/\r\n\r\n /*\r\n For root-level steps, we must reassign the signal so Angular reacts to it.\r\n For nested branch steps, direct mutation is acceptable because the signal still tracks the root array (which contains branches).\r\n */\r\n /*\r\n onDeleteStep(): void {\r\n if (!this.stepGroup) return;\r\n\r\n const index = this.stepGroup.findIndex(s => s.id === this.step.id);\r\n if (index === -1) return;\r\n\r\n if (this.isRootLevelStepGroup) {\r\n // ✅ Immutable update to signal\r\n const updated = [...this.stepGroup];\r\n updated.splice(index, 1);\r\n this.coreWorkflowService.$currentSteps.set(updated);\r\n } else {\r\n // ✅ Safe mutation inside branch\r\n this.stepGroup.splice(index, 1);\r\n }\r\n }\r\n */\r\n\r\n onDeleteStep(): void {\r\n if (!this.stepGroup) return;\r\n \r\n const index = this.stepGroup.findIndex(s => s.id === this.step.id);\r\n if (index === -1) return;\r\n \r\n if (this.isRootLevelStepGroup) {\r\n this.coreWorkflowService.updateStepsSignalAfterNestedChange(this.coreWorkflowService.$currentSteps, draft => {\r\n draft.splice(index, 1);\r\n });\r\n } else {\r\n this.stepGroup.splice(index, 1); // nested mutation still allowed (e.g., in branch)\r\n this.coreWorkflowService.updateStepsSignalAfterNestedChange(this.coreWorkflowService.$currentSteps, _ => {}); // triggers reactivity\r\n }\r\n }\r\n \r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n })\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 openConditionEditor(): void {\r\n this.coreWorkflowService.$currentStep.set(this.step);\r\n this.coreWorkflowService.$showStepConfig.set(true);\r\n }\r\n\r\n openNoneBranchRelatedEditor(): void {\r\n this.coreWorkflowService.$currentStep.set(this.step);\r\n this.coreWorkflowService.$showStepConfig.set(true);\r\n }\r\n}\r\n","@switch (step.type) {\r\n\r\n @case (enumType.ConditionalBranch) {\r\n <div class=\"wf-branch-group-container\">\r\n <div \r\n class=\"branch-group\" \r\n #branchGroup \r\n bridgeLine\r\n (bridgeLinesAdjusted)=\"adjustBridgeLines()\"\r\n >\r\n <!-- 🔹 Top Bridge Line -->\r\n <div class=\"horizontal-bridge-line\" #topBridgeLine></div>\r\n\r\n <div class=\"add-branch-inline\">\r\n <button class=\"add-branch-btn\" (click)=\"coreWorkflowService.addBranchToStep(step.id)\">\r\n + Add New Branch\r\n </button>\r\n </div>\r\n\r\n \r\n @for (branch of step.branches; track $index; let j = $index) {\r\n <div class=\"branch-column\" #branchColumn>\r\n <div class=\"branch-column-inner\">\r\n \r\n @for (bstep of branch.steps; track $index; let k = $index) {\r\n <wf-node\r\n [branchId]=\"branch.id\"\r\n [branchPriority]=\"branch.priority\"\r\n [step]=\"bstep\"\r\n [conditionalBranches]=\"step.branches || []\"\r\n [stepGroup]=\"branch.steps\"\r\n [grandParentSteps]=\"stepGroup\"\r\n [index]=\"k\"\r\n [isInFallbackBranch]=\"!!branch.isFallback\"\r\n ></wf-node>\r\n }\r\n \r\n </div>\r\n \r\n <div class=\"vertical-bridge-line\"></div>\r\n </div>\r\n }\r\n \r\n <!-- 🔹 Bottom Bridge Line -->\r\n <div class=\"horizontal-bridge-line\" #bottomBridgeLine></div>\r\n </div>\r\n </div>\r\n }\r\n \r\n @case (enumType.BranchCard) {\r\n <div class=\"wf-step-container wf-branch-card-container workflow-box\">\r\n <div class=\"step-wrapper branch-card-wrapper\" [class.fallback]=\"!!isInFallbackBranch\">\r\n <div class=\"arrow-down-container\">\r\n <div class=\"arrow-down\"></div>\r\n </div>\r\n \r\n <div class=\"step-header branch-header\" [class.edit-mode]=\"stepNameEditMode\" #branchHeader>\r\n @if (stepNameEditMode) {\r\n <div class=\"input-wrapper\">\r\n <input class=\"form-control\" \r\n (blur)=\"onInputBlur()\" \r\n [(ngModel)]=\"step.name\"\r\n (ngModelChange)=\"onStepNameChanged($event)\" \r\n #input>\r\n </div>\r\n } @else {\r\n <div class=\"step-name-wrapper branch-name-wrapper\">\r\n <div\r\n class=\"step-name branch-name\"\r\n [class.pointer]=\"!isInFallbackBranch\"\r\n (click)=\"switchToNameEditMode()\"\r\n #branchName>\r\n {{ step.name }}\r\n </div>\r\n \r\n @if (!!isInFallbackBranch) {\r\n <i class=\"ti-info-alt\"\r\n [appTooltip]=\"'This branch is created by default and will only be activated if none of the other branches can be executed.'\"\r\n [showAnyway]=\"true\" [position]=\"'above'\"></i>\r\n }\r\n </div>\r\n \r\n <div class=\"branch-priority\">Priority {{ branchPriority }}</div>\r\n <div class=\"step-delete branch-delete pointer\" (click)=\"onDeleteBranch(branchId)\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"step-set-config branch-set-condition\" [class.pointer]=\"!isInFallbackBranch\">\r\n @if (!!isInFallbackBranch) {\r\n <div class=\"branch-subtext fallback\"\r\n [appTooltip]=\"'If other branches are not met, the alternative branch will be executed'\"\r\n [showAnyway]=\"true\" [position]=\"'above'\">\r\n If other branches are not met, the alternative branch will be executed\r\n </div>\r\n } @else {\r\n <div class=\"step-subtext branch-subtext\" (click)=\"openConditionEditor()\">Set conditions</div>\r\n <div><i class=\"feather-chevron-right\"></i></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n \r\n @default() {\r\n <div class=\"wf-step-container workflow-box {{ step.type.toLowerCase() }}\">\r\n\r\n <div class=\"step-wrapper\">\r\n \r\n <div class=\"step-header\" [class.edit-mode]=\"stepNameEditMode\">\r\n @if (stepNameEditMode) {\r\n <div class=\"input-wrapper\">\r\n <input class=\"form-control\" \r\n (blur)=\"onInputBlur()\" \r\n [(ngModel)]=\"step.name\" \r\n (ngModelChange)=\"onStepNameChanged($event)\" \r\n #input>\r\n </div>\r\n } @else {\r\n <div class=\"step-name-wrapper\">\r\n <div\r\n class=\"step-name pointer\"\r\n (click)=\"switchToNameEditMode()\"\r\n #stepName>\r\n {{ step.name }}\r\n </div>\r\n </div>\r\n \r\n <div class=\"step-delete pointer\" (click)=\"onDeleteStep()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"step-set-config pointer\" (click)=\"openNoneBranchRelatedEditor()\">\r\n <div class=\"step-subtext pointer\" [class.configurated]=\"!!step.config\">{{ step.label }}</div>\r\n <div><i class=\"feather-chevron-right\"></i></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n}\r\n \r\n@if (step.type !== enumType.End) {\r\n <wf-bottom-v-insert\r\n [currentContext]=\"{ branchId: step.branchId, index: index + 1 }\"\r\n [currentStep]=\"step\"\r\n ></wf-bottom-v-insert>\r\n}\r\n ","import { ChangeDetectionStrategy, Component, computed, effect, inject, signal, WritableSignal } from '@angular/core';\r\nimport { CoreWorkflowService } from '../../core-workflow.service';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\n\r\n@Component({\r\n selector: 'wf-steps-preview',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [],\r\n templateUrl: './wf-steps-preview.component.html',\r\n styleUrl: './wf-steps-preview.component.scss'\r\n})\r\nexport class WfStepsPreviewComponent extends BaseComponent {\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n\r\n}\r\n","<div class=\"wf-steps-preview-container\">\r\n\r\n @if (wfs.$stepsJsonPreview()) {\r\n <div class=\"steps-tool\">\r\n <button type=\"button\" class=\"btn-save-steps btn btn-secondary\" (click)=\"wfs.saveCurrentSteps()\">Save</button>\r\n </div>\r\n <pre class=\"json-preview\">{{ wfs.$stepsJsonPreview() }}</pre>\r\n } @else {\r\n <div class=\"empty-preview\">No steps to preview</div>\r\n }\r\n\r\n</div>","import { AsyncPipe, LowerCasePipe, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, OnDestroy, signal, viewChild, WritableSignal } from '@angular/core';\r\nimport { IStep } from '../interfaces/IStep';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { EnumWorkflowStepType } from '../enums/EnumWorkflowStepType';\r\nimport { WfInsertMenuComponent } from './wf-insert-menu/wf-insert-menu.component';\r\nimport { WfBottomVInsertComponent } from './wf-bottom-v-insert/wf-bottom-v-insert.component';\r\nimport { WfStepConfigShellComponent } from './wf-step-config-shell/wf-step-config-shell.component';\r\nimport { IInsertStepEvent } from '../interfaces/IInsertStepEvent';\r\nimport { IWorkflowInsertPoint } from '../interfaces/IWorkflowInsertPoint';\r\nimport { ROOT_BRANCH_ID } from '../enums/EnumWorkflowBranch';\r\nimport { IWorkflowBranch } from '../interfaces/IWorkflowBranch';\r\nimport { WfNodeComponent } from './wf-node/wf-node.component';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { HotKeysDirective } from '../../../directives/hot-keys.directive';\r\nimport { ApplicationHelpService } from '../../../services/application-help.service';\r\nimport { distinctUntilChanged } from 'rxjs';\r\nimport { WfStepsPreviewComponent } from './wf-steps-preview/wf-steps-preview.component';\r\nimport { DomService } from '../../services/dom.service';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\n\r\n@Component({\r\n selector: 'wf-workflow-canvas',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n AsyncPipe,\r\n NgStyle,\r\n HotKeysDirective,\r\n TooltipDirective,\r\n NgTemplateOutlet,\r\n LowerCasePipe,\r\n WfInsertMenuComponent,\r\n WfBottomVInsertComponent,\r\n WfInsertMenuComponent,\r\n WfStepConfigShellComponent,\r\n WfNodeComponent,\r\n WfStepsPreviewComponent\r\n ],\r\n templateUrl: './wf-workflow-canvas.component.html',\r\n styleUrl: './wf-workflow-canvas.component.scss'\r\n})\r\nexport class WfWorkflowCanvasComponent extends BaseComponent implements AfterViewInit, OnDestroy {\r\n\r\n $width: WritableSignal<number> = signal(0);\r\n $height: WritableSignal<number> = signal(0);\r\n\r\n $container = viewChild<ElementRef>('container');\r\n $printArea = viewChild<ElementRef>('printArea');\r\n $zoomTools = viewChild<ElementRef>('zoomTools');\r\n $parent = viewChild<ElementRef>('parent');\r\n\r\n hotKeys: string[] = ['F3', 'Escape']\r\n\r\n enumType = EnumWorkflowStepType;\r\n ROOT_BRANCH_ID = ROOT_BRANCH_ID;\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n $steps = this.wfs.$currentSteps;\r\n applicationHelpService = inject(ApplicationHelpService);\r\n domService = inject(DomService);\r\n\r\n insertIndex: number | null = null;\r\n\r\n $previewZIndex: WritableSignal<number> = signal(this.domService.getMaxZIndex() + 1);\r\n\r\n $scale: WritableSignal<number> = signal(1);\r\n $scalePercent = computed(() => `${Math.round(this.$scale() * 100)}%`);\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n $mouseDown = signal(false);\r\n $isDragging = computed(() => this.$mouseDown())\r\n $startX: WritableSignal<any> = signal(undefined);\r\n $scrollLeft: WritableSignal<any> = signal(undefined);\r\n $startY: WritableSignal<any> = signal(undefined);\r\n $scrollTop: WritableSignal<any> = signal(undefined);\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n effect(() => {\r\n this.$container()?.nativeElement.style.setProperty('--standard-connector-height', this.wfs.standardConnectorHeight + 'px');\r\n })\r\n this.subscriptions.push(\r\n this.applicationHelpService.activeKey$\r\n .pipe(\r\n distinctUntilChanged()\r\n )\r\n .subscribe(x => {\r\n console.log(\"x\", x)\r\n switch (x) {\r\n case 'F3':\r\n this.wfs.$showCurrentStepsPreview.set(true);\r\n break;\r\n case 'Escape':\r\n this.wfs.$currentStep.set(null);\r\n this.wfs.$showCurrentStepsPreview.set(false);\r\n this.wfs.$showStepConfig.set(false)\r\n break;\r\n }\r\n })\r\n )\r\n }\r\n\r\n startDragging(e: any, flag: any) {\r\n this.$mouseDown.set(true);\r\n this.$startX.set(e.pageX - this.$parent()?.nativeElement.offsetLeft);\r\n this.$scrollLeft.set(this.$parent()?.nativeElement.scrollLeft);\r\n this.$startY.set(e.pageY - this.$parent()?.nativeElement.offsetTop);\r\n this.$scrollTop.set(this.$parent()?.nativeElement.scrollTop);\r\n }\r\n\r\n stopDragging(e: any, flag: any) {\r\n this.$mouseDown.set(false);\r\n }\r\n\r\n moveEvent(e: any) {\r\n e.preventDefault();\r\n if (!this.$mouseDown()) {\r\n return;\r\n }\r\n const x = e.pageX - this.$parent()?.nativeElement.offsetLeft;\r\n const scrollX = x - this.$startX();\r\n this.$parent()!.nativeElement.scrollLeft = this.$scrollLeft() - scrollX;\r\n const y = e.pageY - this.$parent()?.nativeElement.offsetTop;\r\n const scrollY = y - this.$startY();\r\n this.$parent()!.nativeElement.scrollTop = this.$scrollTop() - scrollY;\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n findBranchById(branchId: string, steps: IStep[] = this.wfs.$currentSteps()): IWorkflowBranch | undefined {\r\n for (const step of steps) {\r\n if (step.type === EnumWorkflowStepType.ConditionalBranch && step.branches) {\r\n // ✅ step.branches is now just an array\r\n const found = step.branches.find(b => b.id === branchId);\r\n if (found) return found;\r\n\r\n // 🔁 Recurse into steps of each branch\r\n for (const branch of step.branches) {\r\n const deep = this.findBranchById(branchId, branch.steps);\r\n if (deep) return deep;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n safeInsertStep(\r\n branchId: string | null,\r\n index: number,\r\n newStep: IStep\r\n ): void {\r\n if (branchId === null || branchId === ROOT_BRANCH_ID) {\r\n this.$steps.update(steps => {\r\n const copy = [...steps];\r\n copy.splice(index, 0, newStep);\r\n return copy;\r\n })\r\n return;\r\n }\r\n\r\n const branch = this.findBranchById(branchId);\r\n if (!branch) {\r\n console.warn(`❗ Cannot insert: Branch with ID \"${branchId}\" not found.`);\r\n return;\r\n }\r\n\r\n branch.steps.splice(index, 0, newStep);\r\n }\r\n\r\n insertStep(event: IInsertStepEvent) {\r\n const { type, index, branchId } = event;\r\n\r\n if (!branchId) {\r\n console.error(`insertStep error: without branchId`)\r\n return;\r\n };\r\n\r\n let newStep: IStep;\r\n\r\n switch (type) {\r\n case EnumWorkflowStepType.Approval:\r\n newStep = this.wfs.createStep(type, branchId, 'Set approver');\r\n break;\r\n case EnumWorkflowStepType.CC:\r\n newStep = this.wfs.createStep(type, branchId, 'Set cc recipients');\r\n break;\r\n case EnumWorkflowStepType.Handle:\r\n newStep = this.wfs.createStep(type, branchId, 'Set handler');\r\n break;\r\n case EnumWorkflowStepType.ConditionalBranch:\r\n newStep = this.wfs.createConditionalBranchStep(branchId);\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n this.safeInsertStep(branchId, index, newStep);\r\n\r\n this.wfs.insertContext$.next(null);\r\n }\r\n\r\n showInsertInBranch(context: IWorkflowInsertPoint): void {\r\n this.wfs.insertContext$.next(context);\r\n }\r\n\r\n insertIntoBranch(event: IInsertStepEvent): void {\r\n const { branchId, type, index } = event;\r\n\r\n if (!branchId) {\r\n console.error(`insertStep error: missing branchId`);\r\n return;\r\n }\r\n\r\n // 🔍 Find the branch that matches the given ID\r\n const branch = this.findBranchById(branchId);\r\n if (!branch) {\r\n console.warn(`Branch not found: ${branchId}`);\r\n return;\r\n }\r\n\r\n let newStep: IStep;\r\n\r\n switch (type) {\r\n case EnumWorkflowStepType.Approval:\r\n newStep = this.wfs.createStep(type, branchId, 'Set approver');\r\n break;\r\n case EnumWorkflowStepType.CC:\r\n newStep = this.wfs.createStep(type, branchId, 'Set cc recipients');\r\n break;\r\n case EnumWorkflowStepType.Handle:\r\n newStep = this.wfs.createStep(type, branchId, 'Set handler');\r\n break;\r\n case EnumWorkflowStepType.ConditionalBranch:\r\n newStep = this.wfs.createConditionalBranchStep(branchId);\r\n break;\r\n default:\r\n console.warn(`Unsupported step type: ${type}`);\r\n return;\r\n }\r\n\r\n // ✅ Insert into the correct step list\r\n branch.steps.splice(index, 0, newStep);\r\n\r\n // 🧹 Clear insert state\r\n this.wfs.insertContext$.next(null);\r\n }\r\n\r\n private findStepRecursive(steps: IStep[], targetId: string): IStep | null {\r\n for (const step of steps) {\r\n if (step.id === targetId) return step;\r\n\r\n // ✅ New model: step.branches is directly an array\r\n if (step.type === EnumWorkflowStepType.ConditionalBranch && step.branches) {\r\n for (const branch of step.branches) {\r\n const found = this.findStepRecursive(branch.steps, targetId);\r\n if (found) return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n addBranchToConditional(conditionalStepId: string) {\r\n const conditional = this.findStepRecursive(this.wfs.$currentSteps(), conditionalStepId);\r\n\r\n if (!conditional || conditional.type !== EnumWorkflowStepType.ConditionalBranch || !conditional.branches) return;\r\n\r\n const branches = conditional.branches;\r\n\r\n const newBranchId = crypto.randomUUID();\r\n const name = `Condition ${branches.length}`;\r\n\r\n const newBranch: IWorkflowBranch = {\r\n id: newBranchId,\r\n name,\r\n priority: branches.length + 1,\r\n steps: [\r\n {\r\n id: `pseudo-${newBranchId}`,\r\n name: `pseudo-${newBranchId}`,\r\n branchId: newBranchId,\r\n type: EnumWorkflowStepType.BranchCard,\r\n label: name,\r\n isPseudo: true\r\n },\r\n {\r\n id: crypto.randomUUID(),\r\n name: `default-approval-${branches.length + 1}`,\r\n branchId: newBranchId,\r\n type: EnumWorkflowStepType.Approval,\r\n label: `Approve ${branches.length + 1}`\r\n }\r\n ]\r\n };\r\n\r\n const fallbackIndex = branches.findIndex(b => b.isFallback);\r\n\r\n if (fallbackIndex !== -1) {\r\n branches.splice(fallbackIndex, 0, newBranch);\r\n } else {\r\n branches.push(newBranch);\r\n }\r\n\r\n this.wfs.autoReassignPriorities(branches);\r\n }\r\n\r\n deleteBranchGroup(stepId: string): void {\r\n const step = this.wfs.$currentSteps().find(s => s.id === stepId);\r\n\r\n if (step?.type === EnumWorkflowStepType.ConditionalBranch) {\r\n const index = this.wfs.$currentSteps().indexOf(step);\r\n if (index !== -1) {\r\n this.$steps.update(steps => {\r\n const copy = [...steps];\r\n copy.splice(index, 1);\r\n return copy;\r\n })\r\n }\r\n }\r\n }\r\n\r\n tempOnLabelClicked(): void {\r\n this.wfs.$showStepConfig.set(true);\r\n }\r\n\r\n onInsert(event: IInsertStepEvent): void {\r\n // Delegate to CoreWorkflowService or your working tree logic\r\n this.insertStep(event);\r\n this.clearInsertContext(); // clean up\r\n }\r\n\r\n clearInsertContext(): void {\r\n this.wfs.insertContext$.next(null);\r\n }\r\n\r\n showStepsJSON(): void {\r\n this.wfs.$showCurrentStepsPreview.set(true);\r\n }\r\n\r\n zoonIn(): void {\r\n this.$scale.set(this.$scale() * 1.1);\r\n this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\r\n }\r\n\r\n zoonOut(): void {\r\n this.$scale.set(this.$scale() / 1.1);\r\n this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\r\n }\r\n\r\n zoonFeat(): void {\r\n this.$scale.set(1);\r\n this.$container()!.nativeElement.style.setProperty('--print-area-scale', this.$scale())\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=\"wf-workflow-canvas-container\" #container [hotKeys]=\"hotKeys\"\r\n (mousedown)=\"startDragging($event, false)\"\r\n (mouseup)=\"stopDragging($event, false)\" \r\n (mouseleave)=\"stopDragging($event, false)\" \r\n (mousemove)=\"moveEvent($event)\"\r\n>\r\n\r\n <div class=\"canvas-top-tool\">\r\n <button type=\"button\" class=\"btn btn-secondary\"\r\n [appTooltip]=\"'Press F3 to show, Escape to hide'\"\r\n [showAnyway]=\"true\"\r\n (click)=\"showStepsJSON()\"\r\n >Show JSON</button>\r\n </div> \r\n\r\n <div class=\"zoom-tools\" #zoomTools>\r\n <div class=\"tools-wrapper\">\r\n <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonOut()\">\r\n <span class=\"universe-icon\"><i class=\"feather-zoom-out\"></i></span>\r\n </button>\r\n <button type=\"button\" class=\"zoom-label\">\r\n {{ $scalePercent() }}\r\n </button>\r\n <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonIn()\">\r\n <span class=\"universe-icon\"><i class=\"feather-zoom-in\"></i></span>\r\n </button>\r\n <button type=\"button\" class=\"zoom-btn\" (click)=\"zoonFeat()\">\r\n <span class=\"universe-icon\"><i class=\"feather-zap\"></i></span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"scroll-container\" #parent [ngStyle]=\"{ cursor: $mouseDown() ? 'all-scroll' : 'unset', width: $width() ? $width() + 'px' : '100%', height: $height() ? $height() + 'px' : 'unset'}\">\r\n\r\n <div class=\"canvas print-area\" #printArea [class.is-dragging]=\"$isDragging()\">\r\n\r\n @for (step of wfs.$currentSteps(); track $index; let i = $index) {\r\n <div class=\"step\">\r\n <wf-node\r\n [branchId]=\"'root'\"\r\n [branchPriority]=\"1\"\r\n [step]=\"step\"\r\n [stepGroup]=\"wfs.$currentSteps()\"\r\n [index]=\"i\"\r\n [isRootLevelStepGroup]=\"true\"\r\n ></wf-node>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n @if (!!(wfs.insertContext$ | async)) {\r\n <wf-insert-menu (insert)=\"insertStep($event)\"></wf-insert-menu>\r\n }\r\n\r\n <wf-step-config-shell></wf-step-config-shell>\r\n\r\n <div class=\"steps-preview\" [class.shown]=\"wfs.$showCurrentStepsPreview()\"\r\n [ngStyle]=\"{\r\n zIndex: $previewZIndex()\r\n }\"\r\n >\r\n <wf-steps-preview></wf-steps-preview>\r\n </div>\r\n \r\n\r\n</div>","import { AfterViewInit, ChangeDetectionStrategy, Component, inject } from '@angular/core';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { WfWorkflowCanvasComponent } from './wf-workflow-canvas.component'\r\nimport { EnumCoreButtonVNSCode } from '../../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';\r\nimport { ICoreButtonVNS } from '../../core-button-group-vns/core-button-group-vns/ICoreButtonVNS';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\r\nimport { INITIAL_PROCESS_DEFINITION } from '../constants/INITIAL_PROCESS_DEFINITION';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'wf-process-design',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n AsyncPipe,\r\n CorePageHeaderComponent,\r\n WfWorkflowCanvasComponent,\r\n FullscreenModalLoaderComponent\r\n ],\r\n templateUrl: './wf-process-design.component.html',\r\n styleUrl: './wf-process-design.component.scss'\r\n})\r\nexport class WfProcessDesignComponent extends BaseComponent implements AfterViewInit {\r\n\r\n wfs = inject(CoreWorkflowService);\r\n $loading = this.wfs.$loading;\r\n id!: string | null;\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private route: ActivatedRoute,\r\n ) {\r\n super(mls);\r\n const idDecrypted = this.route.snapshot.paramMap.get('id');\r\n if (!!idDecrypted) {\r\n this.id = atob(idDecrypted);\r\n } else {\r\n this.id = null;\r\n }\r\n }\r\n\r\n onCorePageHeaderButtonClicked(e: ICoreButtonVNS) {\r\n\r\n switch (e.code) {\r\n case EnumCoreButtonVNSCode.HEADER_RESET:\r\n this.wfs.$currentSteps.set(INITIAL_PROCESS_DEFINITION);\r\n break;\r\n case EnumCoreButtonVNSCode.HEADER_SAVE:\r\n const currentFlow = this.wfs.$currentFlow();\r\n \r\n if (!!currentFlow) {\r\n this.wfs.saveCurrentSteps();\r\n }\r\n break;\r\n }\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (!!this.id) {\r\n setTimeout(() => {\r\n this.wfs.getById(this.id!)\r\n })\r\n }\r\n }\r\n}\r\n","<div class=\"wf-process-design-container\">\r\n <core-page-header title=\"UI.COMPONENT_TITLE.WORKFLOW_LIST\" (buttonClick)=\"onCorePageHeaderButtonClicked($event)\"></core-page-header>\r\n @if (!!wfs.$currentFlow()) {\r\n <p>{{ wfs.$currentFlow()!.name + ' > Process Design' }}</p>\r\n <wf-workflow-canvas></wf-workflow-canvas>\r\n }\r\n\r\n @if ($loading()) {\r\n <app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n }\r\n</div>"],"names":["i1.MultiLanguageService","i2.DomService","i2","i1.CoreWorkflowService","i1.BridgeLineService"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { as as ActionService, cg as ActionSvgEditComponent, b_ as AlertComponent, A as AlertService, c2 as AnimatedTextComponent, c1 as AnimatedTextService, at as AppConfigService, av as AppInitializationService, y as AppService, au as ApplicationHelpService, bn as AtShiftPatternApplyComponent, bm as AtShiftPatternComponent, bo as AtShiftPatternEditComponent, bp as AtWorksignComponent, bq as AtWorksignService, aw as AuthService, f as BaseComponent, c3 as BaseDropdownComponent, B as BaseEditComponent, c6 as ButtonGroupComponent, c4 as ButtonGroupModule, c5 as ButtonGroupService, X as CORE_VNS_BUTTONS, ax as CacheService, ab as CanActivateFunctionUrlMapperGuard, ac as CanDeactivateGuard, az as CheckForUpdateService, aD as ClientService, aE as CommonHttpRequestService, aG as ConfigService, cp as ConfirmDialogStateComponent, cE as ControlBase, c9 as CoreAccordionComponent, ca as CoreAccordionService, cb as CoreActiveUserCountComponent, cd as CoreApiProgressComponent, r as CoreAttachmentComponent, c8 as CoreButtonComponent, ce as CoreButtonGroupComponent, ch as CoreButtonGroupService, e as CoreButtonGroupVnsComponent, ci as CoreButtonVnsComponent, h as CoreCheckboxComponent, p as CoreChecklistComponent, cj as CoreCommonParamKitComponent, ck as CoreCompareDbPipelineComponent, cn as CoreCompositionComponent, cm as CoreCompositionService, cl as CoreCompositionState, co as CoreConfirmDialogComponent, cv as CoreContractSeekerComponent, o as CoreControlComponent, cw as CoreControlNoGridBufferComponent, cx as CoreControlNoSeekerComponent, cG as CoreControlService, v as CoreCurrencyInputComponent, eb as CoreD3Service, s as CoreDatePickerComponent, ey as CoreDatetimeService, i as CoreDropdownComponent, cy as CoreEmployeeScheduleComponent, cz as CoreEmployeeSeekerComponent, dw as CoreFileFormatPickerComponent, cB as CoreFileUploaderComponent, cC as CoreFilterHubComponent, cD as CoreFilterHubService, d as CoreFormComponent, cM as CoreFormControlBaseComponent, q as CoreFormControlSeekerComponent, C as CoreFormDesignService, cL as CoreFormLiteComponent, cI as CoreFormService, cK as CoreFormTabComponent, cW as CoreGridBufferComponent, cX as CoreHeaderParamsComponent, cY as CoreHelperComponent, cZ as CoreIosSwitcherComponent, c_ as CoreLineComponent, c$ as CoreListComponent, d0 as CoreListLazyComponent, d1 as CoreLoadingSurfaceComponent, d2 as CoreMccComponent, d3 as CoreMonthPickerComponent, u as CoreMonthSelectorComponent, d4 as CoreNavigationTrackerComponent, d5 as CoreOauthCallbackComponent, d6 as CoreOauthCallbackOffice365Component, de as CoreOrgParamComponent, d9 as CoreOrgTreeComponent, db as CoreOrgTreeService, da as CoreOrgTreeState, dc as CoreOrgUnitSeekerComponent, dd as CoreOrgchartflexComponent, x as CorePageEditComponent, di as CorePageEditLiteComponent, dh as CorePageEditService, dj as CorePageEditTabComponent, c as CorePageHeaderComponent, dk as CorePageListComponent, dp as CorePageListContentComponent, dm as CorePageListService, dn as CorePageListState, dr as CorePageViewComponent, ds as CorePaginationComponent, dt as CorePaginationFullComponent, du as CorePaginationFullService, dv as CoreParamControlComponent, dA as CorePermissionActionsComponent, dz as CorePermissionComponent, dx as CorePermissionService, ec as CorePieComponent, dB as CorePositionConcurrentSeekerComponent, dC as CorePositionSeekerComponent, dD as CoreQrcodeComponent, dF as CoreQueryBuilderComponent, t as CoreRadioGroupComponent, dG as CoreReducerIconComponent, cq as CoreRootMenuItemPickerComponent, cr as CoreRootMenuItemPickerService, dH as CoreRotatingTextComponent, dI as CoreRouteAccumulatorComponent, dJ as CoreRoutingHistoryComponent, dK as CoreSalaryPolicyPickerComponent, ed as CoreScatterPlotComponent, dL as CoreScrollComponent, dM as CoreScrollLazyComponent, dN as CoreSeenByComponent, dO as CoreShiftCardComponent, dP as CoreShiftCellComponent, dQ as CoreShiftCollectionComponent, dR as CoreShiftStickerComponent, eg as CoreStatisticWidgetComponent, dT as CoreStatusStickerComponent, dU as CoreSubFormGroupComponent, dV as CoreTabListComponent, cu as CoreTableComponent, aH as CoreTableService, dW as CoreTabsComponent, dX as CoreTagsComponent, dY as CoreTopicPickerComponent, d_ as CoreTopicTreeComponent, d$ as CoreTreeComponent, e1 as CoreTreeGridComponent, e2 as CoreWageSeekerComponent, e5 as CoreWorkflowBuilderComponent, e7 as CoreWorkflowGroupEditComponent, e6 as CoreWorkflowListComponent, e3 as CoreWorkingSeekerComponent, e8 as CoreYearPickerComponent, e9 as CoreYearSelectorComponent, cH as CustomValidators, a0 as DATE_VALUE_ACCESSOR, em as DEFAULT_SVG, Z as DESKTOP_SCREEN_HEDER_HEIGHT, a1 as DateValueAccessor, eh as DecisionComponent, D as DialogService, N as DialogStateComponent, aI as DndService, G as DomService, ct as ECoreTableToolClass, cs as ECoreTableToolCode, b$ as EnumAlertType, aB as EnumBrowserType, c7 as EnumButtonCaptionCode, dZ as EnumCoreArticleCategoryTreeaAccessorMode, cf as EnumCoreButtonCode, b as EnumCoreButtonVNSCode, ea as EnumCoreD3ScaleType, cA as EnumCoreFileUploaderType, l as EnumCoreFormControlSeekerSourceType, d7 as EnumCoreOrgTreeaAccessorMode, d8 as EnumCoreOrgTreeaSearchMode, df as EnumCorePageEditBootstrapClass, dg as EnumCorePageEditFieldType, E as EnumCorePageEditMode, cU as EnumCoreSeekerColumnAutoForm, cP as EnumCoreSeekerColumnContract, cN as EnumCoreSeekerColumnJob, cS as EnumCoreSeekerColumnPosition, cT as EnumCoreSeekerColumnPositionConcurrent, cO as EnumCoreSeekerColumnStaffProfile, cR as EnumCoreSeekerColumnWage, cQ as EnumCoreSeekerColumnWorking, g as EnumCoreTablePipeType, e0 as EnumCoreTreeGridEditMode, dq as EnumCoreViewItemType, aA as EnumDeviceType, a4 as EnumDragType, a5 as EnumErrorType, dl as EnumExType, aq as EnumFilterOperator, a as EnumFormBaseContolType, k as EnumFormDesignMode, ee as EnumHrComparisonCode, ef as EnumICoreStatisticWidgetDataType, a6 as EnumIconClass, a2 as EnumImageResolverType, a_ as EnumNotificationDir, dE as EnumOparator, aC as EnumOsType, dy as EnumPermissionObjectType, a7 as EnumProfileInfoSector, eB as EnumRecursiveFields, a8 as EnumSignalRType, a9 as EnumSortDirection, b8 as EnumSsrsExpressExportFormat, b7 as EnumSsrsExpressFileExtension, aa as EnumStyleButtonClass, ay as EnumSwUpdateVersionUpdatesEventType, bk as EnumWorkScheduleViewMode, ei as EvaluateDialogComponent, bj as EvaluateDialogService, ez as FileService, aJ as FilterKitService, et as FilterPipe, O as FooterComponent, F as FullscreenModalLoaderComponent, br as FunctionComponent, bt as FunctionEditComponent, bU as FunctionEditService, bu as FunctionIgnoreComponent, bv as FunctionIgnoreEditComponent, bw as GroupFunctionComponent, bx as GroupFunctionEditComponent, aK as GrpcService, aL as HeaderService, aM as HistoryService, eI as HotKeysDirective, aN as HttpErrorHandler, aO as HubConnectionService, ej as HuconcurrentlyComponent, c0 as IAlertOptions, a3 as ImageErrorResolverDirective, by as InMemoryComponent, bs as IndividualScheduleApplyComponent, ad as InitializationCanActivateFn, ae as InitializationCanMatchFn, ag as InterceptorSkipHeader, aP as IpServiceService, en as ItemComponent, ek as JobComponent, aQ as JsonService, el as LanguageChangerComponent, bz as LanguageComponent, bA as LanguageEditComponent, aR as LayoutService, eA as LongTaskService, _ as MOBILE_SCREEN_HEDER_HEIGHT, H as MapAppdemoToServerPipePipe, I as MapAttachmentToServerPipe, J as MapAvatarToServerPipe, K as MapNewsfeedMediaToServerPipe, aS as MapService, bB as MenuComponent, bC as MenuEditComponent, aT as MenuService, aU as MessageService, aV as ModalService, M as MultiLanguageService, bD as MutationLogComponent, bE as MutationViewComponent, eo as NavigatorComponent, aW as NavigatorService, cc as NewlyCreatedTokenService, ev as NormalizeHumanNamePipe, a$ as NotificationActionType, ar as OnlineUsersComponent, aX as OrganizationService, ep as OtpInputComponent, eq as OtpInputService, bF as PaSalaryPolicyComponent, bG as PaSalaryPolicyEditComponent, er as PageTitleComponent, es as PaginationComponent, aY as PkceService, bH as PortalRouteComponent, bJ as PortalRouteEditComponent, ew as PositionComponent, ex as PositionEditService, aZ as PositionTransferService, b0 as PushNotificationService, b1 as RandomAvatarService, eC as RecursiveService, b2 as RequestCache, b3 as RequestCacheWithMap, b4 as ResponseService, R as RightchatComponent, b5 as RoutingService, dS as STICKER_COLOR_SCHEMA, bI as ScheduleOverviewComponent, cV as SeekerService, b6 as SocketService, b9 as SsrsExpressService, eF as StaffProfileComponent, bb as StatisticAuthService, ba as StatisticService, L as StringHtmlPipe, eD as StringService, S as SunnyRotatingComponent, bO as SysActionComponent, bP as SysActionEditComponent, bQ as SysFunctionActionComponent, bR as SysFunctionActionEditComponent, bS as SysFunctionActionMapperComponent, bT as SysFunctionUrlMapperComponent, bc as SysMenuService, bV as SysModuleComponent, bW as SysModuleEditComponent, bK as SysOtherListComponent, bL as SysOtherListEditComponent, bM as SysOtherListTypeComponent, bN as SysOtherListTypeEditComponent, bX as SysRouteAccessComponent, aF as TLA_CONFIG, m as TableCellPipe, cF as Textbox, eG as ThreedotsComponent, bd as TimeSheetService, eH as TooltipComponent, j as TooltipDirective, be as TopicPermissionService, bf as TopicTreeService, T as TranslatePipe, eE as UnicodeService, bg as UploadedFileService, U as UploadedFilenameCutoffPipe, bh as UrlService, eJ as UserActivityComponent, bi as UserActivityService, eK as WageComponent, W as WaittingScreenComponent, bl as WorkShiftDndService, P as alertOptions, ah as appTypeInterceptor, V as attachmentOptions, aj as authInterceptor, ai as baseUrlInterceptor, bZ as blob_to_base64_script, ao as cachingInterceptor, cJ as coreFormDesignRoutes, e4 as coreWorkflowRoutes, Y as defaultPaging, ak as graphInterceptor, af as httpInterceptorProviders, ap as langInterceptor, bY as liner_to_nested_array_script, Q as longAlertOptions, n as noneAutoClosedAlertOptions, eu as normalizeHumanName, am as responseInterceptor, $ as themeBlue, an as timeZoneInterceptor, al as tokenInterceptor } from './ngx-histaff-alpha-ngx-histaff-alpha-DG1v69l1.mjs';
1
+ export { ay as ActionService, cl as ActionSvgEditComponent, c3 as AlertComponent, A as AlertService, c7 as AnimatedTextComponent, c6 as AnimatedTextService, az as AppConfigService, aA as AppInitializationService, G as AppService, K as ApplicationHelpService, bs as AtShiftPatternApplyComponent, br as AtShiftPatternComponent, bt as AtShiftPatternEditComponent, bu as AtWorksignComponent, bv as AtWorksignService, aB as AuthService, f as BaseComponent, c8 as BaseDropdownComponent, B as BaseEditComponent, cb as ButtonGroupComponent, c9 as ButtonGroupModule, ca as ButtonGroupService, a1 as CORE_VNS_BUTTONS, aC as CacheService, ah as CanActivateFunctionUrlMapperGuard, ai as CanDeactivateGuard, aE as CheckForUpdateService, aI as ClientService, aJ as CommonHttpRequestService, aL as ConfigService, cu as ConfirmDialogStateComponent, cJ as ControlBase, ce as CoreAccordionComponent, cf as CoreAccordionService, cg as CoreActiveUserCountComponent, ci as CoreApiProgressComponent, r as CoreAttachmentComponent, cd as CoreButtonComponent, cj as CoreButtonGroupComponent, cm as CoreButtonGroupService, e as CoreButtonGroupVnsComponent, cn as CoreButtonVnsComponent, h as CoreCheckboxComponent, p as CoreChecklistComponent, co as CoreCommonParamKitComponent, cp as CoreCompareDbPipelineComponent, cs as CoreCompositionComponent, cr as CoreCompositionService, cq as CoreCompositionState, ct as CoreConfirmDialogComponent, cA as CoreContractSeekerComponent, o as CoreControlComponent, cB as CoreControlNoGridBufferComponent, cC as CoreControlNoSeekerComponent, cL as CoreControlService, v as CoreCurrencyInputComponent, ee as CoreD3Service, s as CoreDatePickerComponent, eB as CoreDatetimeService, i as CoreDropdownComponent, cD as CoreEmployeeScheduleComponent, cE as CoreEmployeeSeekerComponent, dA as CoreFileFormatPickerComponent, cG as CoreFileUploaderComponent, cH as CoreFilterHubComponent, cI as CoreFilterHubService, d as CoreFormComponent, cR as CoreFormControlBaseComponent, q as CoreFormControlSeekerComponent, C as CoreFormDesignService, cQ as CoreFormLiteComponent, cN as CoreFormService, cP as CoreFormTabComponent, c$ as CoreGridBufferComponent, d0 as CoreHeaderParamsComponent, d1 as CoreHelperComponent, d2 as CoreIosSwitcherComponent, d3 as CoreLineComponent, d4 as CoreListComponent, d5 as CoreListLazyComponent, d6 as CoreLoadingSurfaceComponent, d7 as CoreMccComponent, d8 as CoreMonthPickerComponent, u as CoreMonthSelectorComponent, d9 as CoreNavigationTrackerComponent, da as CoreOauthCallbackComponent, db as CoreOauthCallbackOffice365Component, dj as CoreOrgParamComponent, de as CoreOrgTreeComponent, dg as CoreOrgTreeService, df as CoreOrgTreeState, dh as CoreOrgUnitSeekerComponent, di as CoreOrgchartflexComponent, x as CorePageEditComponent, dn as CorePageEditLiteComponent, dm as CorePageEditService, dp as CorePageEditTabComponent, c as CorePageHeaderComponent, dq as CorePageListComponent, du as CorePageListContentComponent, ds as CorePageListService, dt as CorePageListState, dw as CorePageViewComponent, dx as CorePaginationComponent, dy as CorePaginationFullComponent, dz as CorePaginationFullService, J as CoreParamControlComponent, dE as CorePermissionActionsComponent, dD as CorePermissionComponent, dB as CorePermissionService, ef as CorePieComponent, dF as CorePositionConcurrentSeekerComponent, dG as CorePositionSeekerComponent, dH as CoreQrcodeComponent, dJ as CoreQueryBuilderComponent, t as CoreRadioGroupComponent, dK as CoreReducerIconComponent, cv as CoreRootMenuItemPickerComponent, cw as CoreRootMenuItemPickerService, dL as CoreRotatingTextComponent, dM as CoreRouteAccumulatorComponent, dN as CoreRoutingHistoryComponent, dO as CoreSalaryPolicyPickerComponent, eg as CoreScatterPlotComponent, dP as CoreScrollComponent, dQ as CoreScrollLazyComponent, dR as CoreSeenByComponent, dS as CoreShiftCardComponent, dT as CoreShiftCellComponent, dU as CoreShiftCollectionComponent, dV as CoreShiftStickerComponent, ej as CoreStatisticWidgetComponent, dX as CoreStatusStickerComponent, dY as CoreSubFormGroupComponent, dZ as CoreTabListComponent, cz as CoreTableComponent, aM as CoreTableService, d_ as CoreTabsComponent, d$ as CoreTagsComponent, e0 as CoreTopicPickerComponent, e2 as CoreTopicTreeComponent, e3 as CoreTreeComponent, e5 as CoreTreeGridComponent, e6 as CoreWageSeekerComponent, e9 as CoreWorkflowBuilderComponent, ea as CoreWorkflowGroupEditComponent, y as CoreWorkflowListComponent, e7 as CoreWorkingSeekerComponent, eb as CoreYearPickerComponent, ec as CoreYearSelectorComponent, cM as CustomValidators, a6 as DATE_VALUE_ACCESSOR, ep as DEFAULT_SVG, a3 as DESKTOP_SCREEN_HEDER_HEIGHT, a7 as DateValueAccessor, ek as DecisionComponent, D as DialogService, W as DialogStateComponent, aN as DndService, I as DomService, cy as ECoreTableToolClass, cx as ECoreTableToolCode, c4 as EnumAlertType, aG as EnumBrowserType, cc as EnumButtonCaptionCode, e1 as EnumCoreArticleCategoryTreeaAccessorMode, ck as EnumCoreButtonCode, b as EnumCoreButtonVNSCode, ed as EnumCoreD3ScaleType, cF as EnumCoreFileUploaderType, l as EnumCoreFormControlSeekerSourceType, dc as EnumCoreOrgTreeaAccessorMode, dd as EnumCoreOrgTreeaSearchMode, dk as EnumCorePageEditBootstrapClass, dl as EnumCorePageEditFieldType, E as EnumCorePageEditMode, cZ as EnumCoreSeekerColumnAutoForm, cU as EnumCoreSeekerColumnContract, cS as EnumCoreSeekerColumnJob, cX as EnumCoreSeekerColumnPosition, cY as EnumCoreSeekerColumnPositionConcurrent, cT as EnumCoreSeekerColumnStaffProfile, cW as EnumCoreSeekerColumnWage, cV as EnumCoreSeekerColumnWorking, g as EnumCoreTablePipeType, e4 as EnumCoreTreeGridEditMode, dv as EnumCoreViewItemType, aF as EnumDeviceType, aa as EnumDragType, ab as EnumErrorType, dr as EnumExType, aw as EnumFilterOperator, a as EnumFormBaseContolType, k as EnumFormDesignMode, eh as EnumHrComparisonCode, ei as EnumICoreStatisticWidgetDataType, ac as EnumIconClass, a8 as EnumImageResolverType, b3 as EnumNotificationDir, dI as EnumOparator, aH as EnumOsType, dC as EnumPermissionObjectType, ad as EnumProfileInfoSector, eE as EnumRecursiveFields, ae as EnumSignalRType, af as EnumSortDirection, bd as EnumSsrsExpressExportFormat, bc as EnumSsrsExpressFileExtension, ag as EnumStyleButtonClass, aD as EnumSwUpdateVersionUpdatesEventType, bp as EnumWorkScheduleViewMode, el as EvaluateDialogComponent, bo as EvaluateDialogService, eC as FileService, aO as FilterKitService, ew as FilterPipe, X as FooterComponent, F as FullscreenModalLoaderComponent, bw as FunctionComponent, by as FunctionEditComponent, bZ as FunctionEditService, bz as FunctionIgnoreComponent, bA as FunctionIgnoreEditComponent, bB as GroupFunctionComponent, bC as GroupFunctionEditComponent, aP as GrpcService, aQ as HeaderService, aR as HistoryService, L as HotKeysDirective, aS as HttpErrorHandler, aT as HubConnectionService, em as HuconcurrentlyComponent, c5 as IAlertOptions, a9 as ImageErrorResolverDirective, bD as InMemoryComponent, bx as IndividualScheduleApplyComponent, aj as InitializationCanActivateFn, ak as InitializationCanMatchFn, am as InterceptorSkipHeader, aU as IpServiceService, eq as ItemComponent, en as JobComponent, aV as JsonService, eo as LanguageChangerComponent, bE as LanguageComponent, bF as LanguageEditComponent, aW as LayoutService, eD as LongTaskService, a4 as MOBILE_SCREEN_HEDER_HEIGHT, O as MapAppdemoToServerPipePipe, P as MapAttachmentToServerPipe, Q as MapAvatarToServerPipe, R as MapNewsfeedMediaToServerPipe, aX as MapService, bG as MenuComponent, bH as MenuEditComponent, aY as MenuService, aZ as MessageService, a_ as ModalService, M as MultiLanguageService, bI as MutationLogComponent, bJ as MutationViewComponent, er as NavigatorComponent, a$ as NavigatorService, ch as NewlyCreatedTokenService, ey as NormalizeHumanNamePipe, b4 as NotificationActionType, ax as OnlineUsersComponent, b0 as OrganizationService, es as OtpInputComponent, et as OtpInputService, bK as PaSalaryPolicyComponent, bL as PaSalaryPolicyEditComponent, eu as PageTitleComponent, ev as PaginationComponent, b1 as PkceService, bM as PortalRouteComponent, bO as PortalRouteEditComponent, ez as PositionComponent, eA as PositionEditService, b2 as PositionTransferService, b5 as PushNotificationService, b6 as RandomAvatarService, eF as RecursiveService, b7 as RequestCache, b8 as RequestCacheWithMap, b9 as ResponseService, Y as RightchatComponent, ba as RoutingService, dW as STICKER_COLOR_SCHEMA, bN as ScheduleOverviewComponent, c_ as SeekerService, bb as SocketService, be as SsrsExpressService, eI as StaffProfileComponent, bg as StatisticAuthService, bf as StatisticService, U as StringHtmlPipe, eG as StringService, S as SunnyRotatingComponent, bT as SysActionComponent, bU as SysActionEditComponent, bV as SysFunctionActionComponent, bW as SysFunctionActionEditComponent, bX as SysFunctionActionMapperComponent, bY as SysFunctionUrlMapperComponent, bh as SysMenuService, b_ as SysModuleComponent, b$ as SysModuleEditComponent, bP as SysOtherListComponent, bQ as SysOtherListEditComponent, bR as SysOtherListTypeComponent, bS as SysOtherListTypeEditComponent, c0 as SysRouteAccessComponent, aK as TLA_CONFIG, m as TableCellPipe, cK as Textbox, eJ as ThreedotsComponent, bi as TimeSheetService, eK as TooltipComponent, j as TooltipDirective, bj as TopicPermissionService, bk as TopicTreeService, T as TranslatePipe, eH as UnicodeService, bl as UploadedFileService, V as UploadedFilenameCutoffPipe, bm as UrlService, eL as UserActivityComponent, bn as UserActivityService, eM as WageComponent, Z as WaittingScreenComponent, bq as WorkShiftDndService, _ as alertOptions, an as appTypeInterceptor, a0 as attachmentOptions, ap as authInterceptor, ao as baseUrlInterceptor, c2 as blob_to_base64_script, au as cachingInterceptor, cO as coreFormDesignRoutes, e8 as coreWorkflowRoutes, a2 as defaultPaging, aq as graphInterceptor, al as httpInterceptorProviders, av as langInterceptor, c1 as liner_to_nested_array_script, $ as longAlertOptions, n as noneAutoClosedAlertOptions, ex as normalizeHumanName, as as responseInterceptor, a5 as themeBlue, at as timeZoneInterceptor, ar as tokenInterceptor } from './ngx-histaff-alpha-ngx-histaff-alpha-B6dYCMll.mjs';
2
2
  //# sourceMappingURL=ngx-histaff-alpha.mjs.map
@@ -91,5 +91,6 @@ export declare enum EnumCoreButtonVNSCode {
91
91
  NONE_HEADER_REVERT = "NONE_HEADER_REVERT",
92
92
  NONE_HEADER_RECRUIT = "NONE_HEADER_RECRUIT",
93
93
  NONE_HEADER_APPROVE = "NONE_HEADER_APPROVE",
94
- NONE_HEADER_REJECT = "NONE_HEADER_REJECT"
94
+ NONE_HEADER_REJECT = "NONE_HEADER_REJECT",
95
+ NONE_HEADER_SEND = "NONE_HEADER_SEND"
95
96
  }
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { ICoreFormSection } from './enum-interfaces';
4
4
  import { CoreControlService } from '../core-control.service';
@@ -52,6 +52,7 @@ export declare class CoreFormComponent implements OnChanges, OnInit, AfterViewIn
52
52
  validatorOverview: any;
53
53
  isDevMode: boolean;
54
54
  isUpdateMode: boolean;
55
+ cdr: ChangeDetectorRef;
55
56
  constructor(coreControlService: CoreControlService, multiLanguageService: MultiLanguageService, alertService: AlertService, coreFormService: CoreFormService, appConfigService: AppConfigService);
56
57
  private updateSections;
57
58
  ngOnChanges(changes: SimpleChanges): void;
@@ -1,4 +1,4 @@
1
- import { AfterViewInit, ElementRef, OnDestroy, OnInit, Injector, TemplateRef, EventEmitter } from '@angular/core';
1
+ import { AfterViewInit, ElementRef, OnDestroy, OnInit, Injector, TemplateRef, EventEmitter, ChangeDetectorRef } from '@angular/core';
2
2
  import { BehaviorSubject, Subscription } from 'rxjs';
3
3
  import { CoreFormControlBaseComponent } from '../../core-form-control-base/core-form-control-base.component';
4
4
  import { EnumCoreFormControlSeekerSourceType } from '../EnumCoreFormControlSeekerSourceType';
@@ -54,7 +54,7 @@ export declare class CoreFormControlSeekerComponent extends CoreFormControlBaseC
54
54
  preDefinedOuterFilter$: BehaviorSubject<IFilterOperator[]>;
55
55
  click$: BehaviorSubject<any> | undefined;
56
56
  getByIdObject$: BehaviorSubject<any>;
57
- getByIdApi: api;
57
+ getByIdApi: api | string;
58
58
  paramMode: boolean;
59
59
  multiMode: boolean;
60
60
  objectList$: BehaviorSubject<any[]>;
@@ -107,6 +107,7 @@ export declare class CoreFormControlSeekerComponent extends CoreFormControlBaseC
107
107
  excludedColumnsAutoForm: EnumCoreSeekerColumnAutoForm[];
108
108
  sourceContainerHeight: number;
109
109
  childComponentHeight: number;
110
+ cdr: ChangeDetectorRef;
110
111
  constructor(alertService: AlertService, injector: Injector, mls: MultiLanguageService, coreTableComponent: CoreTableComponent, coreJobSeekerComponent: CoreJobSeekerComponent, coreEmployeeSeekerComponent: CoreEmployeeSeekerComponent, coreContractSeekerComponent: CoreContractSeekerComponent, coreWorkingSeekerComponent: CoreWorkingSeekerComponent, coreWageSeekerComponent: CoreWageSeekerComponent, corePositionSeekerComponent: CorePositionSeekerComponent, corePositionConcurrentSeekerComponent: CorePositionConcurrentSeekerComponent, coreFormSeekerComponent: CoreFormSeekerComponent, ras: RandomAvatarService, seekerService: SeekerService, layoutService: LayoutService, appService: AppService);
111
112
  private asignMultiModeColumns;
112
113
  ngOnInit(): void;
@@ -72,6 +72,8 @@ export declare class CoreFormDesignComponent extends BaseComponent {
72
72
  syncFormDesignWithSections(): void;
73
73
  isRequired(control: IFormBaseControl | undefined | null): boolean;
74
74
  filteredCells(row: IFormDesignRow | undefined): IFormDesignCell[];
75
+ onFormDesignCreated(e: any): void;
76
+ onLiveFormCreated(e: any): void;
75
77
  static ɵfac: i0.ɵɵFactoryDeclaration<CoreFormDesignComponent, never>;
76
78
  static ɵcmp: i0.ɵɵComponentDeclaration<CoreFormDesignComponent, "core-form-design", never, {}, {}, never, never, true, never>;
77
79
  }
@@ -10,6 +10,7 @@ import { EnumTranslateKey } from 'alpha-global-constants';
10
10
  import { EnumCorePageEditMode } from '../core-page-edit/EnumCorePageEditMode';
11
11
  import { IAfInstanceDTO } from './interfaces';
12
12
  import { EnumFormDesignMode } from './enums/EnumFormDesignMode';
13
+ import { EnumCoreButtonVNSCode } from '../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';
13
14
  import * as i0 from "@angular/core";
14
15
  export declare class CoreFormDesignService {
15
16
  $afInstance: WritableSignal<IAfInstance>;
@@ -21,6 +22,7 @@ export declare class CoreFormDesignService {
21
22
  $currentControl: WritableSignal<IFormBaseControl | null>;
22
23
  $submitText: WritableSignal<EnumTranslateKey>;
23
24
  editMode$: BehaviorSubject<EnumCorePageEditMode>;
25
+ $customFormButtonItems: WritableSignal<EnumCoreButtonVNSCode[] | undefined>;
24
26
  $draggingType: WritableSignal<'control' | 'section' | 'tab' | null>;
25
27
  $shouldPatchMetadataForm: WritableSignal<boolean>;
26
28
  $currentControlJson: import("@angular/core").Signal<string>;
@@ -1,6 +1,8 @@
1
1
  import { BasePropsComponent } from '../base-props/base-props.component';
2
+ import { CoreFormDesignService } from '../../core-form-design.service';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class MandatoryPropsComponent extends BasePropsComponent {
5
+ afs: CoreFormDesignService;
4
6
  $typedField: import("@angular/core").Signal<string>;
5
7
  setTypedField(val: string): void;
6
8
  static ɵfac: i0.ɵɵFactoryDeclaration<MandatoryPropsComponent, never>;
@@ -10,9 +10,11 @@ import { ICoreChecklistOption } from '../../core-checklist/core-checklist/core-c
10
10
  import { ICoreButtonVNS } from '../../core-button-group-vns/core-button-group-vns/ICoreButtonVNS';
11
11
  import { AlertService } from '../../alert/alert.service';
12
12
  import { DialogService } from '../../../services/dialog.service';
13
+ import { MultiLanguageService } from '../../../services/multi-language.service';
13
14
  import * as i0 from "@angular/core";
14
15
  export declare class FormMetadataComponent extends BaseEditComponent implements AfterViewInit {
15
16
  dialogService: DialogService;
17
+ private mls;
16
18
  coreFormDesignService: CoreFormDesignService;
17
19
  cdr: ChangeDetectorRef;
18
20
  alertService: AlertService;
@@ -23,7 +25,7 @@ export declare class FormMetadataComponent extends BaseEditComponent implements
23
25
  mode$: BehaviorSubject<EnumCorePageEditMode>;
24
26
  formStatus: FormControlStatus;
25
27
  customButtonChecklistOptions$: BehaviorSubject<ICoreChecklistOption[]>;
26
- constructor(dialogService: DialogService);
28
+ constructor(dialogService: DialogService, mls: MultiLanguageService);
27
29
  patchFormFromInstance(): void;
28
30
  $sections: WritableSignal<ICoreFormSection[]>;
29
31
  customButtons: EnumCoreButtonVNSCode[];
@@ -0,0 +1,18 @@
1
+ import { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { EnumCorePageEditMode } from '../../core-page-edit/EnumCorePageEditMode';
4
+ import { CoreFormDesignService } from '../core-form-design.service';
5
+ import { BaseComponent } from '../../base-component/base/base.component';
6
+ import * as i0 from "@angular/core";
7
+ export declare class LiveFormComponent extends BaseComponent {
8
+ $normalMode: import("@angular/core").InputSignal<boolean>;
9
+ $sections: import("@angular/core").InputSignal<ICoreFormSection[]>;
10
+ $onClose: import("@angular/core").OutputEmitterRef<void>;
11
+ coreFormDesignService: CoreFormDesignService;
12
+ crudMode$: BehaviorSubject<EnumCorePageEditMode>;
13
+ onLiveFormCreated(e: any): void;
14
+ onLiveSubmit(e: any): void;
15
+ onClose(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<LiveFormComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<LiveFormComponent, "live-form", never, { "$normalMode": { "alias": "$normalMode"; "required": true; "isSignal": true; }; "$sections": { "alias": "$sections"; "required": true; "isSignal": true; }; }, { "$onClose": "$onClose"; }, never, never, true, never>;
18
+ }
@@ -34,7 +34,7 @@ export interface ICoreParamControl {
34
34
  popupAlign?: string;
35
35
  rangeLimit?: ICoreDatePickerRange;
36
36
  getByIdObject$?: BehaviorSubject<any>;
37
- getByIdApi?: api;
37
+ getByIdApi?: api | string;
38
38
  disabled?: boolean;
39
39
  objectList$?: BehaviorSubject<any[]>;
40
40
  multiMode?: boolean;