ngx-histaff-alpha 5.3.0 → 5.3.1

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 (29) hide show
  1. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-QArhiqP6.mjs → ngx-histaff-alpha-core-form-design.component-DyCalMR1.mjs} +6 -6
  2. package/fesm2022/ngx-histaff-alpha-core-form-design.component-DyCalMR1.mjs.map +1 -0
  3. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CvzOZKly.mjs → ngx-histaff-alpha-core-workflow-consume.component-qi5s4VKR.mjs} +2 -2
  4. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CvzOZKly.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-qi5s4VKR.mjs.map} +1 -1
  5. package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-BfFVER_-.mjs → ngx-histaff-alpha-design-wrapper.component-CbfyWbSy.mjs} +64 -12
  6. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-CbfyWbSy.mjs.map +1 -0
  7. package/fesm2022/ngx-histaff-alpha-design-wrapper.route-CUz1QC1Y.mjs +19 -0
  8. package/fesm2022/ngx-histaff-alpha-design-wrapper.route-CUz1QC1Y.mjs.map +1 -0
  9. package/fesm2022/{ngx-histaff-alpha-live-form.component-CNvZ_qNc.mjs → ngx-histaff-alpha-live-form.component-BPJpx6R7.mjs} +40 -14
  10. package/fesm2022/ngx-histaff-alpha-live-form.component-BPJpx6R7.mjs.map +1 -0
  11. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-DpE8_5mQ.mjs → ngx-histaff-alpha-ngx-histaff-alpha-BPB_Re1R.mjs} +43 -17
  12. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-BPB_Re1R.mjs.map +1 -0
  13. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-C_4-qgbx.mjs → ngx-histaff-alpha-wf-form-assign.component-ZbV_MlCW.mjs} +2 -2
  14. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-C_4-qgbx.mjs.map → ngx-histaff-alpha-wf-form-assign.component-ZbV_MlCW.mjs.map} +1 -1
  15. package/fesm2022/ngx-histaff-alpha.mjs +1 -1
  16. package/lib/app/libraries/core-control/core-control/core-control.component.d.ts +3 -1
  17. package/lib/app/libraries/core-form-design/live-form/live-form.component.d.ts +4 -0
  18. package/lib/app/libraries/core-param-control/core-param-control/core-param-control.component.d.ts +3 -1
  19. package/lib/app/libraries/core-workflow-builder/core-workflow.service.d.ts +4 -4
  20. package/lib/app/libraries/core-workflow-builder/design-wrapper/design-wrapper.component.d.ts +5 -1
  21. package/lib/app/libraries/core-workflow-builder/wf-process-design/current-header/current-header.component.d.ts +7 -0
  22. package/lib/app/services/json.service.d.ts +4 -0
  23. package/package.json +1 -1
  24. package/fesm2022/ngx-histaff-alpha-core-form-design.component-QArhiqP6.mjs.map +0 -1
  25. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-BfFVER_-.mjs.map +0 -1
  26. package/fesm2022/ngx-histaff-alpha-design-wrapper.route-DqR6XgMY.mjs +0 -12
  27. package/fesm2022/ngx-histaff-alpha-design-wrapper.route-DqR6XgMY.mjs.map +0 -1
  28. package/fesm2022/ngx-histaff-alpha-live-form.component-CNvZ_qNc.mjs.map +0 -1
  29. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-DpE8_5mQ.mjs.map +0 -1
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ChangeDetectorRef, Component, signal, effect, HostListener, ChangeDetectionStrategy, Injectable, computed, ViewContainerRef, Input, EventEmitter, Output, Renderer2, input, viewChild, isDevMode } from '@angular/core';
3
3
  import { trigger, state, transition, style, animate, query, stagger } from '@angular/animations';
4
- import { u as CoreFormDesignService, C as CoreWorkflowService, B as BaseEditComponent, A as AlertService, v as EnumCorePageEditMode, E as EnumFormBaseContolType, w as EnumCoreButtonVNSCode, x as noneAutoClosedAlertOptions, h as DialogService, M as MultiLanguageService, d as CorePageHeaderComponent, y as CoreFormComponent, z as CoreButtonGroupVnsComponent, g as TranslatePipe, f as BaseComponent, G as EnumCoreTablePipeType, I as CoreCheckboxComponent, l as CoreDropdownComponent, T as TooltipDirective, k as DomService, J as EnumFormDesignMode, t as ApplicationHelpService, a as EnumCoreFormControlSeekerSourceType, K as TableCellPipe, H as HotKeysDirective, L as CoreControlComponent, m as CoreChecklistComponent, o as CoreFormControlSeekerComponent, O as CoreAttachmentComponent, n as CoreDatePickerComponent, s as CoreRadioGroupComponent, P as CoreMonthSelectorComponent, p as CoreCurrencyInputComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DpE8_5mQ.mjs';
4
+ import { v as CoreFormDesignService, C as CoreWorkflowService, B as BaseEditComponent, A as AlertService, w as EnumCorePageEditMode, E as EnumFormBaseContolType, x as EnumCoreButtonVNSCode, y as noneAutoClosedAlertOptions, i as DialogService, M as MultiLanguageService, d as CorePageHeaderComponent, z as CoreFormComponent, G as CoreButtonGroupVnsComponent, h as TranslatePipe, f as BaseComponent, I as EnumCoreTablePipeType, K as CoreCheckboxComponent, m as CoreDropdownComponent, T as TooltipDirective, l as DomService, L as EnumFormDesignMode, u as ApplicationHelpService, a as EnumCoreFormControlSeekerSourceType, O as TableCellPipe, H as HotKeysDirective, P as CoreControlComponent, n as CoreChecklistComponent, p as CoreFormControlSeekerComponent, Q as CoreAttachmentComponent, o as CoreDatePickerComponent, t as CoreRadioGroupComponent, R as CoreMonthSelectorComponent, q as CoreCurrencyInputComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-BPB_Re1R.mjs';
5
5
  import * as i1 from '@angular/forms';
6
6
  import { Validators, FormsModule, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
7
7
  import { NgStyle, NgTemplateOutlet } from '@angular/common';
8
8
  import { BehaviorSubject, catchError, of, filter, distinctUntilChanged, tap, switchMap } from 'rxjs';
9
9
  import { EnumTranslateKey } from 'alpha-global-constants';
10
10
  import { Router, ActivatedRoute } from '@angular/router';
11
- import { LiveFormComponent } from './ngx-histaff-alpha-live-form.component-CNvZ_qNc.mjs';
11
+ import { LiveFormComponent } from './ngx-histaff-alpha-live-form.component-BPJpx6R7.mjs';
12
12
 
13
13
  const slideFromTopFadeIn = trigger('slideFromTopFadeIn', [
14
14
  state('in', style({ opacity: 1, transform: 'translateY(0)' })),
@@ -41,11 +41,11 @@ class SaveLiveJsonComponent {
41
41
  ngAfterViewInit() {
42
42
  setTimeout(() => this.cdr.markForCheck());
43
43
  setTimeout(() => {
44
- this.wfs.initialFormDesignJson = this.fds.$saveLiveJson();
45
- }, 1000);
44
+ this.wfs.$initialFormDesignJson.set(this.fds.$saveLiveJson());
45
+ });
46
46
  }
47
47
  ngOnDestroy() {
48
- this.wfs.initialFormDesignJson = '';
48
+ this.wfs.$initialFormDesignJson.set('{}');
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: SaveLiveJsonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
51
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: SaveLiveJsonComponent, isStandalone: true, selector: "save-live-json", ngImport: i0, template: "<pre class=\"json-preview\">{{ fds.$saveLiveJson() }}</pre>", styles: [".json-preview{background-color:#fff;color:#333;padding:1rem 1.5rem;border-radius:10px;box-shadow:0 2px 6px #00000014;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;overflow-x:auto;line-height:1.5;width:390px;height:calc(100vh - 125px);margin:0}\n"] }); }
@@ -1983,4 +1983,4 @@ var coreFormDesign_component = /*#__PURE__*/Object.freeze({
1983
1983
  });
1984
1984
 
1985
1985
  export { CoreToastLoadingComponent as C, CoreFormDesignComponent as a, coreFormDesign_component as c };
1986
- //# sourceMappingURL=ngx-histaff-alpha-core-form-design.component-QArhiqP6.mjs.map
1986
+ //# sourceMappingURL=ngx-histaff-alpha-core-form-design.component-DyCalMR1.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-histaff-alpha-core-form-design.component-DyCalMR1.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/animations/slide-animations.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/save-live-json/save-live-json.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/save-live-json/save-live-json.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/form-metadata/form-metadata.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/form-metadata/form-metadata.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/attachment-props/attachment-field-helper.service.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/base-props/base-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/mandatory-props/mandatory-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/mandatory-props/mandatory-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/optional-props/optional-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/optional-props/optional-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/props-host/props-host.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/attachment-props/attachment-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/attachment-props/attachment-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/checklist-props/checklist-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/checklist-props/checklist-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/datepicker-props/datepicker-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/datepicker-props/datepicker-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/dropdown-props/dropdown-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/dropdown-props/dropdown-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/grid-buffer-props/grid-buffer-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/grid-buffer-props/grid-buffer-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/list-props/list-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/list-props/list-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/mcc-props/mcc-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/mcc-props/mcc-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/number-props/number-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/number-props/number-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/radio-group-props/radio-group-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/radio-group-props/radio-group-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/seeker-props/seeker-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/seeker-props/seeker-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/textarea-props/textarea-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/textarea-props/textarea-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/uploader-props/uploader-props.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/type-specific/uploader-props/uploader-props.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/validator-editor/validator-editor.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/validator-editor/validator-editor.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/field-setting.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/field-setting/field-setting.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/enums/EnumLeftPanelMode.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-toast-loading/core-toast-loading.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-toast-loading/core-toast-loading.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/core-form-design.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-form-design/core-form-design.component.html"],"sourcesContent":["import { trigger, transition, style, animate, state } from '@angular/animations';\r\n\r\nexport const slideFromTopFadeIn = trigger('slideFromTopFadeIn', [\r\n state('in', style({ opacity: 1, transform: 'translateY(0)' })),\r\n state('out', style({ opacity: 0, transform: 'translateY(-50vh)' })),\r\n transition('out => in', [\r\n animate('200ms ease-out')\r\n ]),\r\n transition('in => out', [\r\n animate('150ms ease-in')\r\n ])\r\n]);","import { AfterViewInit, ChangeDetectorRef, Component, inject, OnDestroy } from '@angular/core';\r\nimport { CoreFormDesignService } from '../core-form-design.service';\r\nimport { CoreWorkflowService } from '../../core-workflow-builder/core-workflow.service';\r\n\r\n@Component({\r\n selector: 'save-live-json',\r\n imports: [],\r\n templateUrl: './save-live-json.component.html',\r\n styleUrl: './save-live-json.component.scss'\r\n})\r\nexport class SaveLiveJsonComponent implements AfterViewInit, OnDestroy {\r\n public fds = inject(CoreFormDesignService);\r\n cdr = inject(ChangeDetectorRef);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n\r\n\r\n copyToClipboard() {\r\n navigator.clipboard.writeText(this.fds.$saveLiveJson());\r\n }\r\n \r\n download() {\r\n const blob = new Blob([this.fds.$saveLiveJson()], { type: 'application/json' });\r\n const url = URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = `${this.fds.$afInstance().name || 'form'}.json`;\r\n link.click();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.cdr.markForCheck());\r\n setTimeout(() => {\r\n this.wfs.$initialFormDesignJson.set(this.fds.$saveLiveJson());\r\n })\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.wfs.$initialFormDesignJson.set('{}');\r\n }\r\n}\r\n","<pre class=\"json-preview\">{{ fds.$saveLiveJson() }}</pre>","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, effect, HostListener, inject, OnInit, signal, WritableSignal } from '@angular/core';\r\nimport { CoreFormDesignService } from '../core-form-design.service';\r\nimport { CoreFormComponent } from '../../core-form/core-form/core-form.component';\r\nimport { ICoreFormSection } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { FormControlStatus, FormGroup, Validators } from '@angular/forms';\r\nimport { BaseEditComponent } from '../../base-edit/base-edit/base-edit.component';\r\nimport { BehaviorSubject, catchError, Observable, of } from 'rxjs';\r\nimport { EnumCorePageEditMode } from '../../core-page-edit/EnumCorePageEditMode';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { EnumCoreButtonVNSCode } from '../../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';\r\nimport { CoreButtonGroupVnsComponent } from '../../core-button-group-vns/core-button-group-vns/core-button-group-vns.component';\r\nimport { SaveLiveJsonComponent } from '../save-live-json/save-live-json.component';\r\nimport { ICoreChecklistOption } from '../../core-checklist/core-checklist/core-checklist.component';\r\nimport { ICoreButtonVNS } from '../../core-button-group-vns/core-button-group-vns/ICoreButtonVNS';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { noneAutoClosedAlertOptions } from '../../../constants/alertOptions';\r\nimport { DialogService } from '../../../services/dialog.service';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { CoreWorkflowService } from '../../core-workflow-builder/core-workflow.service';\r\nimport { Router } from '@angular/router';\r\n\r\nconst URL_PATTERN: string = '^(https?:\\\\/\\\\/[^\\\\s]+|\\\\/api(\\\\/[-\\\\w._]+)+)$';\r\n\r\n@Component({\r\n selector: 'form-metadata',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n TranslatePipe,\r\n CorePageHeaderComponent,\r\n CoreFormComponent,\r\n SaveLiveJsonComponent,\r\n CoreButtonGroupVnsComponent\r\n ],\r\n templateUrl: './form-metadata.component.html',\r\n styleUrl: './form-metadata.component.scss'\r\n})\r\nexport class FormMetadataComponent extends BaseEditComponent implements AfterViewInit {\r\n\r\n coreFormDesignService = inject(CoreFormDesignService);\r\n wfs = inject(CoreWorkflowService);\r\n cdr = inject(ChangeDetectorRef);\r\n alertService = inject(AlertService);\r\n router = inject(Router);\r\n\r\n\r\n $loading: WritableSignal<boolean> = signal(false);\r\n\r\n checkError$ = new BehaviorSubject<boolean>(false);\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onEscape() {\r\n this.coreFormDesignService.$showFormMetadata.set(false);\r\n }\r\n\r\n @HostListener('window:click', ['$event'])\r\n onWindowClick(_: MouseEvent) {\r\n /*\r\n Trigger\tWhat Happens\r\n 🖱️ First Click:\tOpens checklist overlay, but Angular hasn’t re-checked the DOM yet → markForCheck() is called, but view not updated yet\r\n🖱️ Second Click:\tNow DOM is updated, click is registered inside the actual rendered checklist, interaction works\r\n */\r\n //This lets Angular finish updating the DOM before running change detection.\r\n setTimeout(() => this.cdr.markForCheck());\r\n }\r\n\r\n mode$ = new BehaviorSubject<EnumCorePageEditMode>(EnumCorePageEditMode.UPDATE)\r\n\r\n formStatus!: FormControlStatus;\r\n\r\n customButtonChecklistOptions$ = new BehaviorSubject<ICoreChecklistOption[]>([]);\r\n\r\n $sections = signal<ICoreFormSection[]>(\r\n\r\n [\r\n {\r\n caption: 'Primary properties',\r\n rows: [\r\n [\r\n {\r\n field: 'id',\r\n flexSize: 0,\r\n hidden: true,\r\n value: null,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'ID'\r\n },\r\n {\r\n field: 'name',\r\n flexSize: 4,\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'Form Name',\r\n type: 'string',\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(5),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n }\r\n ]\r\n },\r\n {\r\n field: 'captionCode',\r\n flexSize: 4,\r\n value: '',\r\n hint: 'Helps to display form caption in multi languages',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'Caption Code',\r\n type: 'string',\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(10),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n }\r\n ]\r\n },\r\n {\r\n field: 'entityTable',\r\n flexSize: 4,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n value: '',\r\n hint: \"The primary table name related to the form\",\r\n label: 'Entity Table Name',\r\n type: 'string'\r\n },\r\n ],\r\n [\r\n {\r\n field: 'submitApi',\r\n flexSize: 4,\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'Submit API URL',\r\n hint: 'This is an API endpoint with [HttpPost] verb',\r\n type: 'string',\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(10),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n },\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n {\r\n field: 'postSubmitRoute',\r\n flexSize: 4,\r\n value: '',\r\n hint: 'After success submition, the App will redirect to this route (full URL)',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'Post Submit Route',\r\n type: 'string',\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n {\r\n field: 'postCancelRoute',\r\n flexSize: 4,\r\n value: '',\r\n hint: 'After cancelation, the App will redirect to this route (full URL)',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n label: 'Post Cancel Route',\r\n type: 'string',\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n }\r\n ],\r\n [\r\n {\r\n field: 'normalMode',\r\n flexSize: 4,\r\n value: false,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n hint: 'If normal mode is set to false, the form will be displayed as a modal popup',\r\n label: 'Normal Display Mode',\r\n type: 'boolean'\r\n },\r\n {\r\n field: 'autoGetByIdOff',\r\n flexSize: 4,\r\n value: false,\r\n hint: \"If checked, the form won't call the GetById API ayt its startup\",\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n label: 'Disable Auto Get By ID',\r\n type: 'checkbox'\r\n },\r\n {\r\n field: 'hasIdOfStringType',\r\n flexSize: 4,\r\n value: false,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n label: 'ID is String?',\r\n type: 'checkbox'\r\n }\r\n \r\n ],\r\n ]\r\n },\r\n {\r\n caption: 'CRUD',\r\n rows: [\r\n [\r\n {\r\n field: 'crudCreate',\r\n value: '',\r\n label: 'Create Endpoint',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n flexSize: 4,\r\n type: 'string',\r\n hint: 'POST endpoint for creating new records',\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n {\r\n field: 'crudRead',\r\n label: 'Read (GetById) Endpoint',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n flexSize: 4,\r\n type: 'string',\r\n hint: 'GET endpoint to retrieve by ID',\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(5),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n },\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n {\r\n field: 'crudUpdate',\r\n label: 'Update Endpoint',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n flexSize: 4,\r\n type: 'string',\r\n hint: 'POST endpoint for updates',\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(5),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH\r\n },\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n ],\r\n [\r\n {\r\n field: 'crudReadChildren',\r\n value: '',\r\n label: 'Read Children Endpoint',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n flexSize: 4,\r\n type: 'string',\r\n hint: 'Optional endpoint to fetch related child records',\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n {\r\n field: 'crudDelete',\r\n value: '',\r\n label: 'Delete Endpoint',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n flexSize: 4,\r\n type: 'string',\r\n hint: 'Optional DELETE endpoint',\r\n validators: [\r\n {\r\n name: 'pattern',\r\n validator: Validators.pattern(URL_PATTERN),\r\n errorMessage: 'UI_FORM_CONTROL_ERROR_PATTERN'\r\n }\r\n ]\r\n },\r\n ]\r\n ]\r\n },\r\n {\r\n caption: 'Buttons & Actions',\r\n rows: [\r\n [\r\n {\r\n field: 'customFormButtonItems',\r\n flexSize: 8,\r\n controlType: EnumFormBaseContolType.CHECKLIST,\r\n hint: \"If you want to replace the default [Cancel, Submit] buttons\",\r\n checklistOptions$: this.customButtonChecklistOptions$,\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n shownFrom: '_',\r\n value: null,\r\n label: 'Custom Buttons',\r\n type: 'string[]'\r\n },\r\n {\r\n field: 'width',\r\n flexSize: 4,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n hint: \"Width of the form\",\r\n value: null,\r\n label: 'Width',\r\n type: 'number'\r\n },\r\n /*\r\n // Simply ignored for now\r\n {\r\n field: 'entityUniqueIndexesJson',\r\n flexSize: 4,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 1,\r\n hint: \"It helps to detect duplicated values if needed\",\r\n value: '',\r\n label: 'Entity Unique Indexes (JSON)',\r\n type: 'string'\r\n }\r\n */\r\n ]\r\n ]\r\n }\r\n ]\r\n\r\n );\r\n\r\n $isInWorkflowDesign = signal<boolean>(false);\r\n\r\n constructor(\r\n public override dialogService: DialogService,\r\n private mls: MultiLanguageService\r\n ) {\r\n super(dialogService);\r\n effect(() => {\r\n if (this.coreFormDesignService.$shouldPatchMetadataForm()) {\r\n this.patchFormFromInstance();\r\n this.coreFormDesignService.$shouldPatchMetadataForm.set(false); // ✅ reset\r\n }\r\n });\r\n\r\n effect(() => {\r\n const isInWorkflowDesign = this.$isInWorkflowDesign();\r\n\r\n if (isInWorkflowDesign) {\r\n this.form.get('name')?.patchValue(this.wfs.$currentFlow()?.name);\r\n this.form.get('name')?.disable();\r\n this.form.get('entityTable')?.patchValue('WF_INSTANCE');\r\n this.form.get('entityTable')?.disable();\r\n\r\n this.$sections.update(sections => {\r\n sections[1].hidden = true;\r\n return sections\r\n })\r\n } else {\r\n }\r\n })\r\n\r\n }\r\n\r\n patchFormFromInstance(): void {\r\n const instance = this.coreFormDesignService.$afInstance();\r\n \r\n this.form.patchValue({\r\n name: instance.name,\r\n captionCode: instance.captionCode,\r\n entityTable: instance.entityTable ?? '',\r\n \r\n submitApi: instance.submitApi,\r\n postSubmitRoute: instance.postSubmitRoute ?? '',\r\n postCancelRoute: instance.postCancelRoute ?? '',\r\n \r\n normalMode: instance.normalMode ?? false,\r\n autoGetByIdOff: instance.autoGetByIdOff ?? false,\r\n hasIdOfStringType: instance.hasIdOfStringType ?? false,\r\n \r\n customFormButtonItems: instance.customFormButtonItems ?? [],\r\n \r\n crudCreate: instance.crud?.c ?? '',\r\n crudRead: instance.crud?.r ?? '',\r\n crudUpdate: instance.crud?.u ?? '',\r\n crudDelete: instance.crud?.d ?? '',\r\n crudReadChildren: instance.crud?.rChildren ?? '',\r\n \r\n entityUniqueIndexesJson: JSON.stringify(instance.entityUniqueIndexes ?? [])\r\n });\r\n }\r\n\r\n customButtons: EnumCoreButtonVNSCode[] = [\r\n EnumCoreButtonVNSCode.NONE_HEADER_SAVE,\r\n ]\r\n\r\n\r\n onButtonClick(e: ICoreButtonVNS): void {\r\n if (e.code === EnumCoreButtonVNSCode.NONE_HEADER_SAVE) {\r\n if (this.form.valid) {\r\n this.$loading.set(true);\r\n\r\n const apiObject: Observable<any> = this.coreFormDesignService.editMode$.value === EnumCorePageEditMode.CREATE ?\r\n this.coreFormDesignService.createFormInstance(this.coreFormDesignService.$afInstance()) :\r\n this.coreFormDesignService.updateFormInstance(this.coreFormDesignService.$afInstance())\r\n const apiObservable = apiObject.pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n\r\n this.alertService.error(msg, noneAutoClosedAlertOptions);\r\n return of(msg);\r\n })\r\n )\r\n\r\n apiObservable.subscribe(x => {\r\n\r\n this.$loading.set(false);\r\n\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.coreFormDesignService.$showFormMetadata.set(false);\r\n }\r\n\r\n })\r\n } else {\r\n this.checkError$.next(!this.checkError$.value);\r\n setTimeout(() => this.cdr.markForCheck())\r\n }\r\n }\r\n }\r\n\r\n onClose(): void {\r\n this.coreFormDesignService.$showFormMetadata.set(false);\r\n }\r\n\r\n onSave(e: any): void {\r\n\r\n }\r\n\r\n onFormCreated(event: { formName: string; formGroup: FormGroup }) {\r\n const form = event.formGroup;\r\n\r\n form.get('normalMode')?.valueChanges.subscribe(x => {\r\n this.coreFormDesignService.$liveFormNormalMode.set(!!x)\r\n })\r\n\r\n form.get('customFormButtonItems')?.valueChanges.subscribe(x => {\r\n if (Array.isArray(x)) {\r\n this.coreFormDesignService.$customFormButtonItems.set(x)\r\n } else {\r\n this.coreFormDesignService.$customFormButtonItems.set(undefined)\r\n }\r\n })\r\n\r\n form.valueChanges.subscribe(value => {\r\n\r\n const current = this.coreFormDesignService.$afInstance();\r\n \r\n const {\r\n crudCreate,\r\n crudRead,\r\n crudUpdate,\r\n crudDelete,\r\n crudReadChildren,\r\n // ES6 destructuring: Pull id out of the object and throw it away under the name _ignored — don’t include it in rest\r\n id: _ignored,\r\n ...rest\r\n } = value;\r\n \r\n const updatedCrud = {\r\n ...current.crud,\r\n ...(crudCreate !== undefined ? { c: crudCreate } : {}),\r\n ...(crudRead !== undefined ? { r: crudRead } : {}),\r\n ...(crudUpdate !== undefined ? { u: crudUpdate } : {}),\r\n ...(crudDelete !== undefined ? { d: crudDelete } : {}),\r\n ...(crudReadChildren !== undefined ? { rChildren: crudReadChildren } : {})\r\n };\r\n \r\n const next = {\r\n ...current,\r\n ...rest,\r\n crud: updatedCrud\r\n };\r\n \r\n this.coreFormDesignService.$afInstance.set(next);\r\n });\r\n\r\n form.statusChanges.subscribe(status => {\r\n // Optional: Save status if you want to show error summary, disable save button, etc.\r\n this.formStatus = status; // string: 'VALID' | 'INVALID' | 'PENDING' | 'DISABLED'\r\n });\r\n\r\n this.form = form;\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Defer to next tick to avoid ExpressionChangedAfterItHasBeenCheckedError\r\n\r\n this.$isInWorkflowDesign.set(this.router.url.includes('/workflow/process-design'));\r\n\r\n setTimeout(() => {\r\n\r\n const allButtons = Object.values(EnumCoreButtonVNSCode);\r\n\r\n const noneHeaderOptions: ICoreChecklistOption[] = allButtons\r\n .filter(value => value.startsWith('NONE_HEADER_') && value !== 'NONE_HEADER_IMPORT_OPTION')\r\n .map(value => ({\r\n value,\r\n text: this.mls.trans(value),\r\n checked: false\r\n }));\r\n\r\n this.customButtonChecklistOptions$.next(noneHeaderOptions);\r\n\r\n\r\n const sections = this.coreFormDesignService.$placeholderSections();\r\n\r\n // 🔥 DO NOT READ this.$afInstance()\r\n this.coreFormDesignService.$afInstance.update(instance => ({\r\n ...instance,\r\n formDesignSections: sections\r\n }));\r\n\r\n // Inform Angular to re-check since values arrived late\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n\r\n}\r\n","<div class=\"form-metadata-container\">\r\n\r\n <div class=\"metadata-body\">\r\n\r\n <div class=\"header-n-form\">\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"d-flex d-flex-start w-100 pr1rem\">\r\n <core-button-group-vns [showCaption]=\"true\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"customButtons\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"h15\"></div>\r\n \r\n\r\n <div class=\"header-wrapper\">\r\n <core-page-header [title]=\"'FORM OVERVIEW'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <div class=\"close-wrapper\" (click)=\"onClose()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"af-instance\">\r\n\r\n <div class=\"af-instance-left\">\r\n <core-form [inputSections]=\"$sections()\" [width]=\"800\" [mode$]=\"mode$\" [checkError$]=\"checkError$\"\r\n [hideButtons]=\"true\" (onFormCreated)=\"onFormCreated($event)\"></core-form>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"af-instance-right\">\r\n <save-live-json></save-live-json>\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces'; \r\nimport { EnumFormBaseContolType } from '../../../../../enum/EnumFormBaseContolType';\r\nimport { IFormDesignRow } from '../../../interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AttachmentFieldHelperService {\r\n\r\n static isAttachment(control: IFormBaseControl): boolean {\r\n return control.controlType === 'ATTACHMENT';\r\n }\r\n\r\n static autoGenerateAttachmentNames(baseName: string): {\r\n field: string;\r\n assignTo: string;\r\n } {\r\n return {\r\n field: baseName + 'Buffer',\r\n assignTo: baseName\r\n };\r\n }\r\n\r\n static buildHiddenAssignToField(baseFieldName: string): IFormBaseControl {\r\n return {\r\n field: baseFieldName,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'string',\r\n label: '',\r\n value: '',\r\n hidden: true,\r\n flexSize: 0\r\n };\r\n }\r\n\r\n static injectAssignToFieldIntoRow(row: IFormDesignRow, assignToField: IFormBaseControl): void {\r\n row.cells.push({ flexSize: assignToField.flexSize ?? 12, control: assignToField });\r\n }\r\n\r\n /**\r\n * Called when user edits the \"field\" of an ATTACHMENT control\r\n */\r\n static handleFieldNameChangeForAttachment(\r\n control: IFormBaseControl,\r\n form: IFormBaseControl[],\r\n typedFieldName: string\r\n ): void {\r\n const { field, assignTo } = this.autoGenerateAttachmentNames(typedFieldName);\r\n control.field = field;\r\n control.assignTo = assignTo;\r\n }\r\n\r\n /**\r\n * Called in drop handler when user drops a new ATTACHMENT\r\n */\r\n static setupAttachmentOnDrop(\r\n newControl: IFormBaseControl,\r\n form: IFormBaseControl[]\r\n ): void {\r\n if (this.isAttachment(newControl)) {\r\n const baseName = newControl.field.replace(/Buffer$/, '');\r\n const { field, assignTo } = this.autoGenerateAttachmentNames(baseName);\r\n newControl.field = field;\r\n newControl.assignTo = assignTo;\r\n }\r\n }\r\n\r\n}","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject } from '@angular/core';\r\nimport { CoreFormDesignService } from '../../core-form-design.service';\r\nimport { IFormBaseControl } from '../../../core-form/core-form/enum-interfaces';\r\nimport { BaseComponent } from '../../../base-component/base/base.component';\r\n\r\n@Component({\r\n selector: 'base-props',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: './base-props.component.html'\r\n})\r\nexport abstract class BasePropsComponent extends BaseComponent {\r\n coreFormDesignService = inject(CoreFormDesignService);\r\n $selectedCell = this.coreFormDesignService.$selectedCell;\r\n $formContext = this.coreFormDesignService.$formContext;\r\n form = this.coreFormDesignService.formDesign;\r\n patchControl = this.coreFormDesignService.patchControl.bind(this.coreFormDesignService);\r\n normalize = this.coreFormDesignService.normalize.bind(this.coreFormDesignService);\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n setControlProp = this.coreFormDesignService.setControlProp.bind(this.coreFormDesignService);\r\n\r\n $control = computed<IFormBaseControl>(() => {\r\n const cell = this.$selectedCell();\r\n if (!cell?.control) throw new Error('No control selected!');\r\n return this.normalize(cell.control);\r\n });\r\n\r\n}","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AttachmentFieldHelperService } from '../type-specific/attachment-props/attachment-field-helper.service';\r\nimport { BasePropsComponent } from '../base-props/base-props.component';\r\nimport { CoreFormDesignService } from '../../core-form-design.service';\r\n\r\n@Component({\r\n selector: 'mandatory-props',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FormsModule],\r\n templateUrl: './mandatory-props.component.html',\r\n styleUrls: ['../type-specific.scss']\r\n})\r\nexport class MandatoryPropsComponent extends BasePropsComponent {\r\n \r\n afs = inject(CoreFormDesignService)\r\n\r\n $typedField = computed(() => {\r\n const control = this.$control();\r\n return AttachmentFieldHelperService.isAttachment(control)\r\n ? control.assignTo || ''\r\n : control.field;\r\n });\r\n\r\n setTypedField(val: string): void {\r\n const control = this.$control();\r\n const context = this.$formContext();\r\n\r\n const toCamelCase = (input: string) => {\r\n return input\r\n .replace(/[^a-zA-Z0-9 ]/g, ' ') // remove special characters\r\n .replace(/([a-z])([A-Z])/g, '$1 $2') // split camelCase\r\n .replace(/\\s+/g, ' ') // collapse multiple spaces\r\n .trim()\r\n .split(' ')\r\n .map((word, index) =>\r\n index === 0\r\n ? word.toLowerCase()\r\n : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\r\n )\r\n .join('');\r\n }\r\n\r\n const corrected = toCamelCase(val);\r\n const current = AttachmentFieldHelperService.isAttachment(control)\r\n ? control.assignTo || ''\r\n : control.field;\r\n\r\n if (current === corrected) return;\r\n\r\n if (AttachmentFieldHelperService.isAttachment(control)) {\r\n AttachmentFieldHelperService.handleFieldNameChangeForAttachment(control, context, corrected);\r\n } else {\r\n control.field = corrected;\r\n }\r\n\r\n this.patchControl(control);\r\n }\r\n\r\n}\r\n","<div class=\"setting-group mandatory-group\">\r\n\r\n <div class=\"setting-row\">\r\n <label>Field</label>\r\n <input class=\"form-control\" type=\"text\" [ngModel]=\"$typedField()\" (ngModelChange)=\"setControlProp('field', $event)\" />\r\n </div>\r\n\r\n <!-- Label -->\r\n <div class=\"setting-row\">\r\n <label>Label</label>\r\n <input class=\"form-control\" type=\"text\" [ngModel]=\"$control()?.label\" (ngModelChange)=\"setControlProp('label', $event)\" />\r\n </div>\r\n\r\n <!-- Flex Size -->\r\n <div class=\"setting-row\">\r\n <label>Flex Size</label>\r\n <input class=\"form-control\" type=\"number\" [ngModel]=\"$control()?.flexSize\" (ngModelChange)=\"setControlProp('flexSize', $event)\" />\r\n </div>\r\n\r\n <!-- Default -->\r\n <div class=\"setting-row\">\r\n <label>Default</label>\r\n <input class=\"form-control\" type=\"text\" [ngModel]=\"$control()?.value\" (ngModelChange)=\"setControlProp('value', $event)\" />\r\n </div>\r\n\r\n</div>","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { EnumCoreTablePipeType } from '../../../core-table/EnumCoreTablePipeType';\r\nimport { ICoreDropdownOption } from '../../../../interfaces/ICoreDropdownOption';\r\nimport { BasePropsComponent } from '../base-props/base-props.component';\r\nimport { CoreCheckboxComponent } from '../../../core-checkbox/core-checkbox/core-checkbox.component';\r\nimport { CoreDropdownComponent } from '../../../core-dropdown/core-dropdown/core-dropdown.component';\r\n\r\n@Component({\r\n selector: 'optional-props',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CoreCheckboxComponent,\r\n CoreDropdownComponent\r\n ],\r\n templateUrl: './optional-props.component.html',\r\n styleUrls: ['../type-specific.scss']\r\n})\r\nexport class OptionalPropsComponent extends BasePropsComponent {\r\n\r\n pipeOptions = Object.values(EnumCoreTablePipeType);\r\n\r\n pipeOptions$ = new BehaviorSubject<ICoreDropdownOption[]>(\r\n Object.values(EnumCoreTablePipeType).map(x => ({ value: x, text: x }))\r\n )\r\n\r\n}","<div class=\"setting-group optional-group\">\r\n\r\n <!-- 🔘 Boolean flags -->\r\n <div class=\"setting-row optional-bool\">\r\n <label>Readonly</label>\r\n <core-checkbox ngModel ngDefaultControl [ngModel]=\"$control().readonly\" (ngModelChange)=\"setControlProp('readonly', $event)\" />\r\n </div>\r\n\r\n <div class=\"setting-row optional-bool\">\r\n <label>Hidden</label>\r\n <core-checkbox [ngModel]=\"$control().hidden\" (ngModelChange)=\"setControlProp('hidden', $event)\" />\r\n </div>\r\n\r\n <div class=\"setting-row optional-bool\">\r\n <label>Disabled</label>\r\n <core-checkbox [ngModel]=\"$control().disabled\" (ngModelChange)=\"setControlProp('disabled', $event)\" /> \r\n </div>\r\n\r\n <!-- 💡 Hint -->\r\n <div class=\"setting-row\">\r\n <label>Hint</label>\r\n <input class=\"form-control\" type=\"text\" [ngModel]=\"$control().hint\" (ngModelChange)=\"setControlProp('hint', $event)\" />\r\n </div>\r\n\r\n <div class=\"setting-row\">\r\n <label>Pipe</label>\r\n <div class=\"control-wrapper\">\r\n <core-dropdown [ngModel]=\"$control().pipe\" (ngModelChange)=\"setControlProp('pipe', $event)\"\r\n [paramMode]=\"true\"\r\n [options$]=\"pipeOptions$\"\r\n >\r\n </core-dropdown>\r\n </div>\r\n </div>\r\n\r\n</div>","import { ChangeDetectionStrategy, Component, ComponentRef, inject, Input, OnInit, Type, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'props-host',\r\n standalone: true,\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PropsHostComponent implements OnInit {\r\n @Input() loadComponent!: () => Promise<Type<any>>;\r\n\r\n private _props!: any;\r\n @Input()\r\n set props(value: any) {\r\n this._props = value;\r\n this.assignInputs();\r\n }\r\n\r\n private vcRef = inject(ViewContainerRef);\r\n private componentRef?: ComponentRef<any>;\r\n\r\n async ngOnInit() {\r\n if (this.loadComponent) {\r\n const componentType = await this.loadComponent();\r\n this.componentRef = this.vcRef.createComponent(componentType);\r\n this.assignInputs();\r\n }\r\n }\r\n\r\n private assignInputs(): void {\r\n if (this.componentRef && this._props) {\r\n Object.assign(this.componentRef.instance, this._props);\r\n this.componentRef.changeDetectorRef.markForCheck();\r\n }\r\n }\r\n}\r\n","import { Component, computed } from '@angular/core';\r\nimport { BasePropsComponent } from '../../base-props/base-props.component';\r\nimport { AttachmentFieldHelperService } from './attachment-field-helper.service';\r\n\r\n\r\n@Component({\r\n selector: 'attachment-props',\r\n imports: [],\r\n templateUrl: './attachment-props.component.html',\r\n styleUrls: ['../../type-specific.scss']\r\n})\r\nexport class AttachmentPropsComponent extends BasePropsComponent {\r\n\r\n $typedField = computed(() => {\r\n const control = this.$control();\r\n return AttachmentFieldHelperService.isAttachment(control)\r\n ? control.assignTo || ''\r\n : control.field;\r\n });\r\n\r\n setTypedField(val: string): void {\r\n const control = this.$control();\r\n const context = this.$formContext();\r\n\r\n if (AttachmentFieldHelperService.isAttachment(control)) {\r\n AttachmentFieldHelperService.handleFieldNameChangeForAttachment(control, context, val);\r\n } else {\r\n control.field = val;\r\n }\r\n\r\n this.patchControl(control);\r\n }\r\n\r\n}","<p>attachment-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'checklist-props',\r\n imports: [],\r\n templateUrl: './checklist-props.component.html',\r\n styleUrl: './checklist-props.component.scss'\r\n})\r\nexport class ChecklistPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>checklist-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'datepicker-props',\r\n imports: [],\r\n templateUrl: './datepicker-props.component.html',\r\n styleUrl: './datepicker-props.component.scss'\r\n})\r\nexport class DatepickerPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>datepicker-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'dropdown-props',\r\n imports: [],\r\n templateUrl: './dropdown-props.component.html',\r\n styleUrl: './dropdown-props.component.scss'\r\n})\r\nexport class DropdownPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>dropdown-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'grid-buffer-props',\r\n imports: [],\r\n templateUrl: './grid-buffer-props.component.html',\r\n styleUrl: './grid-buffer-props.component.scss'\r\n})\r\nexport class GridBufferPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>grid-buffer-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'list-props',\r\n imports: [],\r\n templateUrl: './list-props.component.html',\r\n styleUrl: './list-props.component.scss'\r\n})\r\nexport class ListPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>list-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'mcc-props',\r\n imports: [],\r\n templateUrl: './mcc-props.component.html',\r\n styleUrl: './mcc-props.component.scss'\r\n})\r\nexport class MccPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>mcc-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'number-props',\r\n imports: [],\r\n templateUrl: './number-props.component.html',\r\n styleUrl: './number-props.component.scss'\r\n})\r\nexport class NumberPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>number-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'radio-group-props',\r\n imports: [],\r\n templateUrl: './radio-group-props.component.html',\r\n styleUrl: './radio-group-props.component.scss'\r\n})\r\nexport class RadioGroupPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>radio-group-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'seeker-props',\r\n imports: [],\r\n templateUrl: './seeker-props.component.html',\r\n styleUrl: './seeker-props.component.scss'\r\n})\r\nexport class SeekerPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>seeker-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'textarea-props',\r\n imports: [],\r\n templateUrl: './textarea-props.component.html',\r\n styleUrl: './textarea-props.component.scss'\r\n})\r\nexport class TextareaPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>textarea-props works!</p>\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { IFormBaseControl } from '../../../../core-form/core-form/enum-interfaces';\r\n\r\n@Component({\r\n selector: 'uploader-props',\r\n imports: [],\r\n templateUrl: './uploader-props.component.html',\r\n styleUrl: './uploader-props.component.scss'\r\n})\r\nexport class UploaderPropsComponent {\r\n @Input() control!: IFormBaseControl;\r\n @Output() controlChange = new EventEmitter<IFormBaseControl>();\r\n\r\n update(): void {\r\n this.controlChange.emit(this.control);\r\n }\r\n}\r\n","<p>uploader-props works!</p>\r\n","import { ChangeDetectionStrategy, Component, computed, effect, signal } from '@angular/core';\r\nimport { BasePropsComponent } from '../base-props/base-props.component';\r\nimport { EnumSupportedRuntimeValidator } from '../../enums/EnumSupportedRuntimeValidator';\r\nimport { CoreCheckboxComponent } from '../../../core-checkbox/core-checkbox/core-checkbox.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslatePipe } from '../../../../app-pipes/translate.pipe';\r\nimport { TooltipDirective } from '../../../tooltip/tooltip.directive';\r\nimport { IValidator } from '../../../core-form/core-form/enum-interfaces';\r\nimport { MultiLanguageService } from '../../../../services/multi-language.service';\r\n\r\n@Component({\r\n selector: 'validator-editor',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n TranslatePipe,\r\n TooltipDirective,\r\n CoreCheckboxComponent\r\n ],\r\n templateUrl: './validator-editor.component.html',\r\n styleUrls: ['../type-specific.scss']\r\n})\r\nexport class ValidatorEditorComponent extends BasePropsComponent {\r\n\r\n // 🔹 Computed list based on controlType\r\n $availableValidators = computed(() =>\r\n this.coreFormDesignService.getSupportedValidators(this.$control())\r\n );\r\n\r\n // 🔹 Signal for selected validators with their values\r\n $selectedValidators = signal<Partial<Record<EnumSupportedRuntimeValidator, IValidator>>>({});\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n effect(() => {\r\n const c = this.$control(); // will re-run when selection changes\r\n this.syncFromControl();\r\n });\r\n }\r\n\r\n // ✅ Check if a validator is enabled\r\n isChecked(v: EnumSupportedRuntimeValidator): boolean {\r\n return this.$selectedValidators()[v] !== undefined;\r\n }\r\n\r\n private syncFromControl(): void {\r\n const control = this.$control();\r\n const validators = control.validators ?? [];\r\n \r\n const validatorMap: Partial<Record<EnumSupportedRuntimeValidator, IValidator>> = {};\r\n \r\n for (const v of validators) {\r\n validatorMap[v.name as EnumSupportedRuntimeValidator] = v;\r\n }\r\n \r\n this.$selectedValidators.set(validatorMap);\r\n }\r\n\r\n toggleValidator(v: EnumSupportedRuntimeValidator): void {\r\n const current = { ...this.$selectedValidators() };\r\n\r\n const requiresValue = ['minLength', 'maxLength', 'min', 'max', 'pattern'];\r\n const isAlreadyChecked = !!current[v];\r\n\r\n if (isAlreadyChecked) {\r\n delete current[v]; // ❌ Remove validator\r\n } else {\r\n const validator: IValidator = {\r\n name: v,\r\n errorMessage: this.coreFormDesignService.getErrorMessageFor(v),\r\n validator: this.coreFormDesignService.getValidatorFn(v, null), // stub until value is filled\r\n value: requiresValue.includes(v) ? '' : true\r\n };\r\n\r\n current[v] = validator;\r\n }\r\n\r\n this.$selectedValidators.set(current);\r\n\r\n // ✅ Skip update if validator requires value but it's still empty\r\n const shouldSkip =\r\n !isAlreadyChecked &&\r\n requiresValue.includes(v) &&\r\n current[v]?.value === '';\r\n\r\n if (shouldSkip) return;\r\n\r\n const validatorArray = this.coreFormDesignService.toIValidatorArray(current);\r\n this.setControlProp('validators', validatorArray);\r\n }\r\n\r\n updateValidatorValue(v: EnumSupportedRuntimeValidator, raw: any): void {\r\n const value = raw?.toString().trim();\r\n\r\n const updated = { ...this.$selectedValidators() };\r\n\r\n if (value === '') {\r\n // 👇 Remove the validator if it was cleared\r\n delete updated[v];\r\n } else {\r\n if (updated[v]) {\r\n updated[v].value = value;\r\n }\r\n }\r\n\r\n this.$selectedValidators.set(updated);\r\n\r\n // ✅ Only update the control if it's valid or fully removed\r\n const validatorArray = this.coreFormDesignService.toIValidatorArray(updated);\r\n this.setControlProp('validators', validatorArray);\r\n }\r\n\r\n isReadOnlyValidator(v: EnumSupportedRuntimeValidator): boolean {\r\n return this.$selectedValidators()[v]?.readOnly === true;\r\n }\r\n\r\n\r\n}","<div class=\"setting-group validator-group\">\r\n @for (v of $availableValidators(); track v) {\r\n <div class=\"setting-row\">\r\n\r\n <label>\r\n {{ v }}\r\n @if (isReadOnlyValidator(v)) {\r\n <i class=\"feather-lock tiny-lock\" title=\"Read-only system validator\"></i>\r\n }\r\n </label>\r\n\r\n <div class=\"control-wrapper\">\r\n <core-checkbox ngModel ngDefaultControl [ngModel]=\"isChecked(v)\" [disabled]=\"isReadOnlyValidator(v)\"\r\n [appTooltip]=\"isReadOnlyValidator(v) ? 'System validator' : ''\" (ngModelChange)=\"toggleValidator(v)\" />\r\n\r\n @if (isChecked(v) && ['minLength', 'maxLength', 'min', 'max'].includes(v)) {\r\n <input class=\"form-control validator-value\" [type]=\"'number'\"\r\n [value]=\"$selectedValidators()[v]?.value || ''\"\r\n (input)=\"updateValidatorValue(v, $any($event.target).value)\"\r\n [placeholder]=\"'Enter value' | translate: lang\" [disabled]=\"isReadOnlyValidator(v)\"\r\n [appTooltip]=\"isReadOnlyValidator(v) ? 'Default validator — cannot be modified' : ''\" />\r\n }\r\n\r\n @else if (isChecked(v) && v === 'pattern') {\r\n <input class=\"form-control validator-value\" type=\"text\" [value]=\"$selectedValidators()[v]?.value || ''\"\r\n (input)=\"updateValidatorValue(v, $any($event.target).value)\" [placeholder]=\"'Enter regex'\"\r\n [disabled]=\"isReadOnlyValidator(v)\"\r\n [appTooltip]=\"isReadOnlyValidator(v) ? 'Default validator — cannot be modified' : ''\" />\r\n }\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, Renderer2, Type } from '@angular/core';\r\nimport { IFormBaseControl } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MandatoryPropsComponent } from './mandatory-props/mandatory-props.component';\r\nimport { OptionalPropsComponent } from './optional-props/optional-props.component';\r\nimport { PropsHostComponent } from '../props-host/props-host.component';\r\nimport { AttachmentPropsComponent } from './type-specific/attachment-props/attachment-props.component';\r\nimport { ChecklistPropsComponent } from './type-specific/checklist-props/checklist-props.component';\r\nimport { DatepickerPropsComponent } from './type-specific/datepicker-props/datepicker-props.component';\r\nimport { DropdownPropsComponent } from './type-specific/dropdown-props/dropdown-props.component';\r\nimport { GridBufferPropsComponent } from './type-specific/grid-buffer-props/grid-buffer-props.component';\r\nimport { ListPropsComponent } from './type-specific/list-props/list-props.component';\r\nimport { MccPropsComponent } from './type-specific/mcc-props/mcc-props.component';\r\nimport { NumberPropsComponent } from './type-specific/number-props/number-props.component';\r\nimport { RadioGroupPropsComponent } from './type-specific/radio-group-props/radio-group-props.component';\r\nimport { SeekerPropsComponent } from './type-specific/seeker-props/seeker-props.component';\r\nimport { TextareaPropsComponent } from './type-specific/textarea-props/textarea-props.component';\r\nimport { UploaderPropsComponent } from './type-specific/uploader-props/uploader-props.component';\r\nimport { CoreFormDesignService } from '../core-form-design.service';\r\nimport { ValidatorEditorComponent } from './validator-editor/validator-editor.component';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\n\r\n@Component({\r\n selector: 'field-setting',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n MandatoryPropsComponent,\r\n OptionalPropsComponent,\r\n ValidatorEditorComponent,\r\n PropsHostComponent,\r\n AttachmentPropsComponent,\r\n ChecklistPropsComponent,\r\n DatepickerPropsComponent,\r\n DropdownPropsComponent,\r\n GridBufferPropsComponent,\r\n ListPropsComponent,\r\n MccPropsComponent,\r\n NumberPropsComponent,\r\n RadioGroupPropsComponent,\r\n SeekerPropsComponent,\r\n TextareaPropsComponent,\r\n UploaderPropsComponent\r\n ],\r\n templateUrl: './field-setting.component.html',\r\n styleUrl: './field-setting.component.scss'\r\n})\r\nexport class FieldSettingComponent extends BaseComponent implements AfterViewInit {\r\n\r\n public coreFormDesignService = inject(CoreFormDesignService)\r\n\r\n enumControlType = EnumFormBaseContolType;\r\n\r\n listenerFn!: () => void;\r\n renderer = inject(Renderer2);\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n // 🔹 Reactive normalized control (always derived from selected cell)\r\n readonly $control = computed<IFormBaseControl>(() => {\r\n const cell = this.coreFormDesignService.$selectedCell();\r\n if (!cell?.control) throw new Error('No control selected!');\r\n return this.coreFormDesignService.normalize(cell.control);\r\n });\r\n\r\n // 🔹 Context (flat control list)\r\n readonly $formContext = computed(() => this.coreFormDesignService.$formContext());\r\n\r\n // 🔹 Optional trigger for downstream side-effects (no longer emits)\r\n onControlParamsChange(): void {\r\n const updated = this.$control();\r\n this.coreFormDesignService.patchControl(updated);\r\n }\r\n\r\n componentLoaderMap: Record<string, () => Promise<Type<any>>> = {\r\n 'number-props': () => import('./type-specific/number-props/number-props.component').then(m => m.NumberPropsComponent),\r\n 'email-props': () => import('./type-specific/email-props/email-props.component').then(m => m.EmailPropsComponent),\r\n // etc...\r\n };\r\n\r\n getFriendlyControlLabel(control: IFormBaseControl | undefined): string {\r\n if (!control) return 'Control';\r\n \r\n // 🧠 Detailed mapping: \"controlType:type\" → Friendly Name\r\n const fullTypeMap: Record<string, string> = {\r\n 'TEXTBOX:string': 'String Box',\r\n 'TEXTBOX:number': 'Number Box',\r\n 'TEXTBOX:email': 'Email Field',\r\n \r\n 'DROPDOWN': 'Dropdown',\r\n 'CHECKLIST': 'Checklist',\r\n 'SEEKER': 'Seeker',\r\n 'DATEPICKER': 'Date Picker',\r\n 'TEXTAREA': 'Text Area',\r\n 'CHECKBOX': 'Checkbox'\r\n // Add more mappings as needed\r\n };\r\n \r\n const controlType = control.controlType?.toUpperCase() ?? '';\r\n const inputType = control.type?.toLowerCase();\r\n \r\n const fullKey = inputType ? `${controlType}:${inputType}` : controlType;\r\n \r\n return fullTypeMap[fullKey] ?? this.camelToTitle(control.controlType ?? 'Control');\r\n }\r\n\r\n camelToTitle(input: string): string {\r\n return input\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/^./, str => str.toUpperCase());\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {\r\n\r\n this.cdr.markForCheck();\r\n\r\n });\r\n\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n this.subscriptions.forEach(x => x?.unsubscribe());\r\n if (this.listenerFn) this.listenerFn();\r\n }\r\n \r\n}\r\n","<div class=\"field-setting-container\">\r\n\r\n @if (!!$control()) {\r\n\r\n <div class=\"panel-caption\">\r\n Editing: {{ $control()?.controlType }} - {{ $control()?.field || 'Unnamed' }}\r\n </div>\r\n\r\n <div class=\"group-title mandatory\">\r\n <div class=\"icon-wrapper\">\r\n <i class=\"feather-lock\"></i>\r\n </div>\r\n <div class=\"group-name\">Mandatory</div>\r\n </div>\r\n <mandatory-props></mandatory-props>\r\n\r\n <div class=\"setting-divider\"></div>\r\n\r\n <div class=\"group-title optional\">\r\n <div class=\"icon-wrapper\">\r\n <i class=\"feather-sliders\"></i>\r\n </div>\r\n <div class=\"group-name\">Optional</div>\r\n </div>\r\n <optional-props></optional-props>\r\n\r\n <div class=\"setting-divider\"></div>\r\n\r\n <div class=\"group-title validators\">\r\n <div class=\"icon-wrapper\">\r\n <i class=\"feather-check-square\"></i>\r\n </div>\r\n <div class=\"group-name\">Validators</div>\r\n </div>\r\n <validator-editor></validator-editor>\r\n\r\n @if (!($control().controlType === 'TEXTBOX' && ['string', 'text', 'email'].includes(($control().type || '').toLowerCase()))) {\r\n\r\n <div class=\"setting-divider\">\r\n {{ getFriendlyControlLabel($control()) }} Settings\r\n </div>\r\n \r\n <props-host [loadComponent]=\"componentLoaderMap[coreFormDesignService.$currentPropsComponent()]\"\r\n [props]=\"{ control: $control(), controlChange: onControlParamsChange.bind(this) }\">\r\n </props-host>\r\n }\r\n\r\n }\r\n\r\n</div>","export enum EnumLeftPanelMode {\r\n FieldCollection = \"FieldCollection\",\r\n SelectedFieldJson = \"SelectedFieldJson\"\r\n}","import { NgStyle } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\r\nimport { DomService } from '../services/dom.service';\r\n\r\nimport {\r\n trigger,\r\n transition,\r\n query,\r\n style,\r\n animate,\r\n stagger,\r\n animateChild\r\n} from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'core-toast-loading',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle\r\n ],\r\n templateUrl: './core-toast-loading.component.html',\r\n styleUrl: './core-toast-loading.component.scss',\r\n animations: [\r\n trigger('alertList', [\r\n transition('* => *', [\r\n query(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-10px)' }),\r\n stagger(100, [\r\n animate('250ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))\r\n ])\r\n ], { optional: true }),\r\n\r\n query(':leave', [\r\n stagger(100, [\r\n animate('200ms ease-in', style({ opacity: 0, transform: 'translateY(-10px)' }))\r\n ])\r\n ], { optional: true })\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class CoreToastLoadingComponent implements AfterViewInit {\r\n $zIndex = signal(1);\r\n domService = inject(DomService);\r\n\r\n ngAfterViewInit(): void {\r\n this.$zIndex.set(this.domService.getMaxZIndex() + 1);\r\n }\r\n\r\n}\r\n","<div class=\"core-toast-loading-container\" [ngStyle]=\"{ zIndex: $zIndex() }\">\r\nLoading...\r\n</div>\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, isDevMode, Renderer2, signal, viewChild, ViewChild, WritableSignal } from '@angular/core';\r\nimport { slideFromTopFadeIn } from '../animations/slide-animations';\r\nimport { CoreAttachmentComponent } from '../core-attachment/core-attachment/core-attachment.component';\r\nimport { CoreCheckboxComponent } from '../core-checkbox/core-checkbox/core-checkbox.component';\r\nimport { CoreChecklistComponent, ICoreChecklistOption } from '../core-checklist/core-checklist/core-checklist.component';\r\nimport { CoreCurrencyInputComponent } from '../core-currency-input/core-currency-input/core-currency-input.component';\r\nimport { CoreDatePickerComponent } from '../core-date-picker/core-date-picker/core-date-picker.component';\r\nimport { CoreDropdownComponent } from '../core-dropdown/core-dropdown/core-dropdown.component';\r\nimport { CoreFormControlSeekerComponent } from '../core-form-control-seeker/core-form-control-seeker/core-form-control-seeker.component';\r\nimport { CoreMonthSelectorComponent } from '../core-month-selector/core-month-selector/core-month-selector.component';\r\nimport { CoreRadioGroupComponent } from '../core-radio-group/core-radio-group/core-radio-group.component';\r\nimport { TooltipDirective } from '../tooltip/tooltip.directive';\r\nimport { HotKeysDirective } from '../../directives/hot-keys.directive';\r\nimport { BaseComponent } from '../base-component/base/base.component';\r\nimport { ICoreFormSection, IFormBaseControl, IValidator } from '../core-form/core-form/enum-interfaces';\r\nimport { CoreControlComponent } from '../core-control/core-control/core-control.component';\r\nimport { TranslatePipe } from '../../app-pipes/translate.pipe';\r\nimport { EnumFormBaseContolType } from '../../enum/EnumFormBaseContolType';\r\nimport { EnumCoreFormControlSeekerSourceType } from '../core-form-control-seeker/EnumCoreFormControlSeekerSourceType';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { BehaviorSubject, catchError, distinctUntilChanged, filter, of, switchMap, tap } from 'rxjs';\r\nimport { IFormDesignCell, IFormDesignRow } from './interfaces';\r\nimport { FormMetadataComponent } from './form-metadata/form-metadata.component';\r\nimport { ICoreDropdownOption } from '../../interfaces/ICoreDropdownOption';\r\nimport { CorePageHeaderComponent } from '../core-page-header/core-page-header/core-page-header.component';\r\nimport { ICoreButtonVNS } from '../core-button-group-vns/core-button-group-vns/ICoreButtonVNS';\r\nimport { EnumCoreButtonVNSCode } from '../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';\r\nimport { CoreFormComponent } from '../core-form/core-form/core-form.component';\r\nimport { FieldSettingComponent } from './field-setting/field-setting.component';\r\nimport { EnumFormDesignMode } from './enums/EnumFormDesignMode';\r\nimport { EnumLeftPanelMode } from './enums/EnumLeftPanelMode';\r\nimport { CoreFormDesignService } from './core-form-design.service';\r\nimport { AttachmentFieldHelperService } from './field-setting/type-specific/attachment-props/attachment-field-helper.service';\r\nimport { MultiLanguageService } from '../../services/multi-language.service';\r\nimport { TableCellPipe } from '../pipes/table-cell.pipe';\r\nimport { ActivatedRoute, Router, UrlSegment } from '@angular/router';\r\nimport { EnumCorePageEditMode } from '../core-page-edit/EnumCorePageEditMode';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { AlertService } from '../alert/alert.service';\r\nimport { noneAutoClosedAlertOptions } from '../../constants/alertOptions';\r\nimport { LiveFormComponent } from './live-form/live-form.component'\r\nimport { ApplicationHelpService } from '../../services/application-help.service';\r\nimport { CoreWorkflowService } from '../core-workflow-builder/core-workflow.service';\r\nimport { CoreToastLoadingComponent } from '../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n selector: 'core-form-design',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n NgStyle,\r\n NgTemplateOutlet,\r\n CoreToastLoadingComponent,\r\n CorePageHeaderComponent,\r\n FormMetadataComponent,\r\n ReactiveFormsModule,\r\n TranslatePipe,\r\n TableCellPipe,\r\n TooltipDirective,\r\n HotKeysDirective,\r\n CoreFormComponent,\r\n CoreControlComponent,\r\n CoreDropdownComponent,\r\n CoreChecklistComponent,\r\n CoreFormControlSeekerComponent,\r\n CoreCheckboxComponent,\r\n CoreAttachmentComponent,\r\n CoreDatePickerComponent,\r\n CoreRadioGroupComponent,\r\n CoreMonthSelectorComponent,\r\n TooltipDirective,\r\n CoreCurrencyInputComponent,\r\n FieldSettingComponent,\r\n LiveFormComponent,\r\n ],\r\n templateUrl: './core-form-design.component.html',\r\n styleUrls: [\r\n './core-form-design.component.scss',\r\n '../core-form/core-form/core-form.component.scss',\r\n '../core-button-group-vns/core-button-vns/core-button-vns.component.scss',\r\n ],\r\n animations: [slideFromTopFadeIn]\r\n})\r\nexport class CoreFormDesignComponent extends BaseComponent implements AfterViewInit {\r\n\r\n $idAsInput = input<boolean>()\r\n $id = input<string | undefined>();\r\n\r\n $settingPanel = viewChild<ElementRef>('settingPanel');\r\n\r\n enumType = EnumFormDesignMode;\r\n enumLeftPanelMode = EnumLeftPanelMode;\r\n $leftPanelMode = computed(() => {\r\n if (this.coreFormDesignService.$fieldSettingPanelOpen()) {\r\n return this.enumLeftPanelMode.SelectedFieldJson\r\n } else {\r\n return this.enumLeftPanelMode.FieldCollection\r\n }\r\n })\r\n\r\n previewMode$ = new BehaviorSubject<EnumCorePageEditMode>(EnumCorePageEditMode.CREATE);\r\n\r\n $loading: WritableSignal<boolean> = signal(false);\r\n\r\n public coreFormDesignService = inject(CoreFormDesignService);\r\n renderer = inject(Renderer2);\r\n cdr = inject(ChangeDetectorRef);\r\n router = inject(Router);\r\n route = inject(ActivatedRoute);\r\n alertService = inject(AlertService);\r\n applicationHelpService = inject(ApplicationHelpService);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n listenerFn!: () => void;\r\n\r\n formDesign = this.coreFormDesignService.formDesign;\r\n\r\n setControlProp = this.coreFormDesignService.setControlProp.bind(this.coreFormDesignService);\r\n\r\n isDragOverMap: Record<string, boolean> = {};\r\n\r\n idStream$ = new BehaviorSubject<any>(undefined);\r\n getByIdStream$ = this.idStream$.pipe(\r\n filter(id => !!id && id !== '0'),\r\n distinctUntilChanged(),\r\n tap(() => {\r\n this.$loading.set(true);\r\n this.coreFormDesignService.editMode$.next(EnumCorePageEditMode.UPDATE);\r\n this.coreFormDesignService.$submitText.set(EnumTranslateKey.UI_EDIT_FORM_BUTTON_SAVE);\r\n }),\r\n switchMap(id => {\r\n return this.coreFormDesignService.getById(id)\r\n .pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n )\r\n })\r\n );\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n\r\n this.coreFormDesignService.resetFormDesignState();\r\n effect(() => {\r\n const _ = this.coreFormDesignService.$placeholderSections();\r\n this.syncFormDesignWithSections();\r\n });\r\n\r\n effect(() => {\r\n this.idStream$.next(this.$id())\r\n })\r\n\r\n this.applicationHelpService.activeKey$.subscribe(x => {\r\n switch (x) {\r\n case 'F3':\r\n this.coreFormDesignService.$fieldSettingPanelOpen.set(true);\r\n break;\r\n case 'F4':\r\n this.coreFormDesignService.$showFormMetadata.set(true);\r\n break;\r\n case 'F6':\r\n this.coreFormDesignService.$mode.set(EnumFormDesignMode.Preview);\r\n break;\r\n case 'Escape':\r\n this.coreFormDesignService.$fieldSettingPanelOpen.set(false);\r\n this.coreFormDesignService.$mode.set(EnumFormDesignMode.Default);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n form: FormGroup = new FormGroup({\r\n stringBox: new FormControl(),\r\n email: new FormControl(),\r\n textarea: new FormControl(),\r\n number: new FormControl(),\r\n currency: new FormControl(),\r\n dropdown: new FormControl(),\r\n employeeSeeker: new FormControl(),\r\n checklist: new FormControl(),\r\n employeeSeekerMultiple: new FormControl(),\r\n datePicker: new FormControl(),\r\n monthSelector: new FormControl(),\r\n attachment: new FormControl(),\r\n attachmentBuffer: new FormControl(),\r\n checkbox: new FormControl(),\r\n })\r\n\r\n $sections = computed<ICoreFormSection[]>(() => {\r\n const hydrated = this.coreFormDesignService.rehydrateSections(\r\n this.coreFormDesignService.$placeholderSections()\r\n );\r\n let sections = this.coreFormDesignService.toCoreFormSections(hydrated);\r\n\r\n // ✅ Inject hidden \"id\" field into the first cell row of the first section\r\n sections = this.coreFormDesignService.injectSystemControls(sections, this.coreFormDesignService.$afInstance().hasIdOfStringType ?? false);\r\n\r\n return sections;\r\n\r\n });\r\n\r\n checkError$ = new BehaviorSubject<boolean>(false);\r\n\r\n controlCategories: { name: string, controls: IFormBaseControl[] }[] = [\r\n {\r\n name: 'Text',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'string',\r\n field: 'stringBox',\r\n label: '',\r\n value: '',\r\n placeholder: 'String box',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'email',\r\n field: 'email',\r\n label: '',\r\n value: '',\r\n placeholder: 'Email',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n type: 'string',\r\n field: 'textarea',\r\n label: '',\r\n value: '',\r\n textareaRows: 2,\r\n placeholder: 'Text area',\r\n headless: true,\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Numerical',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'number',\r\n field: 'number',\r\n label: '',\r\n value: 100,\r\n placeholder: 'Number',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.CURRENCY,\r\n type: 'number',\r\n field: 'currency',\r\n label: '',\r\n value: '',\r\n placeholder: 'Currency',\r\n headless: true,\r\n },\r\n ]\r\n },\r\n {\r\n name: 'Single selection',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.DROPDOWN,\r\n type: 'any',\r\n field: 'dropdown',\r\n label: '',\r\n value: '',\r\n dropdownOptions$: new BehaviorSubject<ICoreDropdownOption[]>([]),\r\n shownFrom: 'name',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n placeholder: 'Dropdown',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n type: 'any[]',\r\n field: 'employeeSeeker',\r\n label: '',\r\n value: ['Nguyễn A'],\r\n boundFrom: 'id',\r\n shownFrom: 'fullname',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n placeholder: 'Employee seeker',\r\n headless: true,\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Multiple Selection',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.CHECKLIST,\r\n type: 'any[]',\r\n field: 'checklist',\r\n label: '',\r\n value: [],\r\n checklistOptions$: new BehaviorSubject<ICoreChecklistOption[]>([]),\r\n shownFrom: 'name',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n placeholder: 'Check list',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.SEEKER,\r\n seekerSourceType: EnumCoreFormControlSeekerSourceType.EMPLOYEE_SEEK,\r\n multiMode: true,\r\n type: 'any[]',\r\n field: 'employeeSeekerMultiple',\r\n label: '',\r\n value: [],\r\n objectList$: new BehaviorSubject<any[]>([]),\r\n boundFrom: 'id',\r\n shownFrom: 'fullname',\r\n getByIdObject$: new BehaviorSubject<any>({}),\r\n multiModeTableHeight: 100,\r\n placeholder: 'Employee seeker (multi mode)',\r\n headless: true,\r\n }\r\n ]\r\n },\r\n {\r\n name: 'Date',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.DATEPICKER,\r\n type: 'date',\r\n field: 'datePicker',\r\n label: '',\r\n value: '',\r\n placeholder: 'Date picker',\r\n showPlaceholder: true,\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.MONTHSELECTOR,\r\n type: 'string',\r\n field: 'monthSelector',\r\n label: '',\r\n value: '',\r\n placeholder: 'Month selector',\r\n headless: true,\r\n },\r\n ]\r\n },\r\n {\r\n name: 'Other',\r\n controls: [\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.ATTACHMENT,\r\n type: 'string',\r\n field: 'attachment',\r\n label: '',\r\n value: '',\r\n assignTo: 'unknown',\r\n placeholder: 'Attachment',\r\n headless: true,\r\n },\r\n {\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n type: 'boolean',\r\n field: 'checkbox',\r\n label: '',\r\n value: '',\r\n placeholder: 'Checkbox',\r\n headless: true,\r\n },\r\n ]\r\n }\r\n ]\r\n\r\n onDragStart(event: DragEvent, control: IFormBaseControl) {\r\n this.coreFormDesignService.beginDragTemplate(control);\r\n }\r\n\r\n onDragOver(event: DragEvent) {\r\n event.preventDefault(); // necessary to allow drop\r\n }\r\n\r\n onDragEnter(placeholderId: string): void {\r\n //if (this.coreFormDesignService.$isDragging()) {\r\n this.isDragOverMap[placeholderId] = true;\r\n //}\r\n }\r\n\r\n onDragLeave(placeholderId: string): void {\r\n this.isDragOverMap[placeholderId] = false;\r\n }\r\n\r\n onDropIntoCell(event: DragEvent, sectionIndex: number, rowIndex: number, colIndex: number): void {\r\n event.preventDefault();\r\n const template = this.coreFormDesignService.$currentControlTemplate();\r\n if (!template) return;\r\n\r\n const normalized = this.coreFormDesignService.normalize({\r\n ...template,\r\n field: this.generateFieldNameFor(template),\r\n label: this.generateLabelNameFor(template),\r\n value: null\r\n });\r\n\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n const section = sections[sectionIndex];\r\n const row = section?.rows[rowIndex];\r\n if (!row || row.cells.length <= colIndex) return sections;\r\n\r\n const usedFlex = row.cells.reduce((sum, cell) => sum + (cell?.control?.flexSize ?? 0), 0);\r\n const remainingFlex = 12 - usedFlex;\r\n const flexSize = Math.max(1, remainingFlex);\r\n normalized.flexSize = flexSize;\r\n\r\n const previous = row.cells[colIndex]?.control;\r\n\r\n if (previous && previous.flexSize !== undefined) {\r\n /*\r\n AttachmentFieldHelperService.handleAttachmentOverwrite(\r\n previous as IFormBaseControl,\r\n this.coreFormDesignService.getAllControlsFromSections()\r\n );\r\n */\r\n }\r\n\r\n const previousField = row.cells[colIndex]?.control?.field ?? null;\r\n this.coreFormDesignService.replaceControl(previousField, normalized);\r\n\r\n // 🔹 INSERT FIRST\r\n row.cells[colIndex] = { ...row.cells[colIndex], control: normalized };\r\n this.coreFormDesignService.$selectedCell.set(row.cells[colIndex]);\r\n\r\n // 🔹 THEN CALL setup\r\n if (AttachmentFieldHelperService.isAttachment(normalized)) {\r\n const assignToField = AttachmentFieldHelperService.buildHiddenAssignToField(normalized.field);\r\n normalized.field = `${normalized.field}Buffer`\r\n normalized.assignTo = assignToField.field;\r\n AttachmentFieldHelperService.injectAssignToFieldIntoRow(row, assignToField);\r\n }\r\n\r\n\r\n setTimeout(() => {\r\n this.coreFormDesignService.setControlPropDirectly(\r\n 'validators',\r\n normalized.validators ?? [],\r\n normalized\r\n );\r\n });\r\n\r\n return sections;\r\n });\r\n\r\n this.triggerUpdateSections();\r\n this.isDragOverMap[sectionIndex + '_' + rowIndex + '_' + colIndex] = false;\r\n this.coreFormDesignService.endDrag();\r\n }\r\n\r\n generateFieldNameFor = this.coreFormDesignService.generateFieldNameFor.bind(this.coreFormDesignService);\r\n\r\n generateLabelNameFor = this.coreFormDesignService.generateLabelNameFor.bind(this.coreFormDesignService);\r\n\r\n getAllControlsFromSections = this.coreFormDesignService.getAllControlsFromSections.bind(this.coreFormDesignService);\r\n\r\n addSection(): void {\r\n this.coreFormDesignService.$placeholderSections.update(sections => [\r\n ...sections,\r\n {\r\n caption: `Section ${sections.length + 1}`,\r\n rows: [{ cells: [{ flexSize: 12 }] }]\r\n }\r\n ]);\r\n }\r\n\r\n deleteSection(sectionIndex: number): void {\r\n const sections = this.coreFormDesignService.$placeholderSections();\r\n const section = sections[sectionIndex];\r\n\r\n const hasControls = section?.rows?.some(row =>\r\n row?.cells?.some(cell => !!cell?.control)\r\n );\r\n\r\n if (hasControls) {\r\n const confirmed = confirm('This section contains controls. Are you sure you want to delete it?');\r\n if (!confirmed) return;\r\n }\r\n\r\n this.coreFormDesignService.$placeholderSections.update(prev =>\r\n prev.filter((_, idx) => idx !== sectionIndex)\r\n );\r\n }\r\n\r\n deleteRow(sectionIndex: number, rowIndex: number): void {\r\n\r\n const sections = this.coreFormDesignService.$placeholderSections();\r\n\r\n const section = sections[sectionIndex];\r\n const row = section?.rows?.[rowIndex];\r\n\r\n if (!row) return; // safety check\r\n\r\n const hasControls = row.cells?.some(cell => !!cell?.control);\r\n\r\n if (hasControls) {\r\n const confirmed = confirm('This row contains controls. Are you sure you want to delete it?');\r\n if (!confirmed) return; // user canceled\r\n }\r\n\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n return sections.map((section, sIdx) => {\r\n if (sIdx !== sectionIndex) return section;\r\n\r\n return {\r\n ...section,\r\n rows: (section.rows ?? []).filter((_, rIdx) => rIdx !== rowIndex)\r\n };\r\n });\r\n });\r\n }\r\n\r\n addRow(sectionIndex: number): void {\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n const section = sections[sectionIndex];\r\n if (section) {\r\n section.rows.push({ cells: [{ flexSize: 12 }] });\r\n }\r\n return sections;\r\n });\r\n }\r\n\r\n addColumn(row: IFormDesignRow | undefined): void {\r\n if (!row || row.cells.length >= 4) return;\r\n\r\n const usedFlex = row.cells.reduce((sum, c) => sum + (c.flexSize ?? 0), 0);\r\n\r\n // ✅ Case 1: Normal case – still space available\r\n if (usedFlex < 12) {\r\n const remaining = 12 - usedFlex;\r\n row.cells.push({ flexSize: Math.min(3, remaining) });\r\n return;\r\n }\r\n\r\n // 💥 Case 2: Full row — try to rebalance\r\n if (usedFlex === 12) {\r\n const count = row.cells.length;\r\n\r\n if (count === 1) {\r\n // 12 → 6 + 6\r\n row.cells[0].flexSize = 6;\r\n row.cells.push({ flexSize: 6 });\r\n return;\r\n }\r\n\r\n if (count === 2) {\r\n // 6 + 6 → 4 + 4 + 4\r\n row.cells.forEach(c => (c.flexSize = 4));\r\n row.cells.push({ flexSize: 4 });\r\n return;\r\n }\r\n\r\n if (count === 3) {\r\n // 4 + 4 + 4 → 3 + 3 + 3 + 3\r\n row.cells.forEach(c => (c.flexSize = 3));\r\n row.cells.push({ flexSize: 3 });\r\n return;\r\n }\r\n\r\n // ❌ Already 4 cells, each 3 — can’t split further\r\n return;\r\n }\r\n\r\n // 🔧 Optional fallback logic for unknown edge cases\r\n const maxIndex = row.cells.reduce((maxI, c, i, arr) =>\r\n (c.flexSize ?? 0) > (arr[maxI]?.flexSize ?? 0) ? i : maxI, 0\r\n );\r\n\r\n const maxCell = row.cells[maxIndex];\r\n if ((maxCell?.flexSize ?? 0) <= 3) return; // nothing to shrink\r\n\r\n maxCell.flexSize -= 3;\r\n row.cells.push({ flexSize: 3 });\r\n }\r\n\r\n onCorePageHeaderButtonClicked(e: ICoreButtonVNS): void {\r\n if (e.code === EnumCoreButtonVNSCode.HEADER_SWITCH_VIEW) {\r\n if (this.coreFormDesignService.$mode() === EnumFormDesignMode.Default) {\r\n const sections = this.coreFormDesignService.toCoreFormSections(this.coreFormDesignService.$placeholderSections());\r\n this.coreFormDesignService.$liveFormSections.set(sections);\r\n }\r\n setTimeout(() => this.coreFormDesignService.$mode.set(this.coreFormDesignService.$mode() === EnumFormDesignMode.Preview ? EnumFormDesignMode.Default : EnumFormDesignMode.Preview))\r\n } else if (e.code === EnumCoreButtonVNSCode.HEADER_SAVE) {\r\n\r\n }\r\n }\r\n\r\n closePreview() {\r\n this.coreFormDesignService.$mode.set(EnumFormDesignMode.Default)\r\n }\r\n\r\n onPreviewSubmit(e: any): void {\r\n alert(JSON.stringify(e, null, 2))\r\n }\r\n\r\n onCellClicked(sectionIndex: number, rowIndex: number, colIndex: number): void {\r\n const row = this.coreFormDesignService.$placeholderSections()[sectionIndex].rows[rowIndex];\r\n\r\n if (!!row) {\r\n // Toggle selection\r\n if (!!row.cells && row.cells.length > colIndex) {\r\n row.cells[colIndex].selected = !row.cells[colIndex].selected;\r\n }\r\n\r\n\r\n // Only allow max 2 selections\r\n const selected = row.cells.filter(c => c?.selected);\r\n if (selected.length > 2) {\r\n row.cells.forEach(c => c && (c.selected = false));\r\n row[colIndex].selected = true;\r\n }\r\n }\r\n\r\n }\r\n\r\n canMergeCells(sectionIndex: number, rowIndex: number): boolean {\r\n const row = this.coreFormDesignService.$placeholderSections()[sectionIndex].rows[rowIndex];\r\n const selected = row?.cells.map((c, i) => ({ c, i })).filter(x => x.c?.selected);\r\n\r\n if (selected?.length !== 2) return false;\r\n\r\n const [a, b] = selected;\r\n\r\n if (a.c.control || b.c.control) return false;\r\n\r\n return Math.abs(a.i - b.i) === 1; // Must be neighbors\r\n }\r\n\r\n mergeCells(sectionIndex: number, rowIndex: number): void {\r\n const row = this.coreFormDesignService.$placeholderSections()[sectionIndex].rows[rowIndex];\r\n if (!row) return;\r\n\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n const selected = row.cells\r\n .map((c, i) => ({ c, i }))\r\n .filter(x => x.c?.selected);\r\n\r\n if (selected.length !== 2) return sections;\r\n\r\n const [a, b] = selected.sort((a, b) => a.i - b.i);\r\n\r\n const mergedFlex =\r\n (typeof a.c.flexSize === 'number' ? a.c.flexSize : 3) +\r\n (typeof b.c.flexSize === 'number' ? b.c.flexSize : 3);\r\n\r\n const mergedCell: IFormDesignCell = {\r\n //control: { ...a.c.control, flexSize: mergedFlex }, // keep control data\r\n flexSize: mergedFlex,\r\n selected: false\r\n };\r\n\r\n row.cells.splice(a.i, 2, mergedCell); // replace both cells with one\r\n\r\n return sections;\r\n });\r\n }\r\n\r\n getControl = this.coreFormDesignService.getControl.bind(this.coreFormDesignService);\r\n\r\n openSettingsForCell(cell: IFormDesignCell, sectionIndex: number, rowIndex: number, colIndex: number): void {\r\n this.coreFormDesignService.$sectionIndex.set(sectionIndex);\r\n this.coreFormDesignService.$rowIndex.set(rowIndex);\r\n this.coreFormDesignService.$colIndex.set(colIndex);\r\n\r\n this.coreFormDesignService.$selectedCell.set({ ...cell });\r\n }\r\n\r\n deleteField(row: IFormDesignRow | undefined, colIndex: number): void {\r\n if (!row || !row.cells[colIndex]) return;\r\n const cellToDelete = row.cells[colIndex];\r\n if (!cellToDelete.control) return;\r\n\r\n if (confirm('Are you sure to remove the field?')) {\r\n\r\n // 🧠 Check if it's selected\r\n const selectedCell = this.coreFormDesignService.$selectedCell();\r\n const shouldClearSelection = selectedCell === cellToDelete;\r\n let deletedControl: IFormBaseControl | null = null;\r\n\r\n // ✅ Update the reactive state\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n for (const section of sections) {\r\n for (const r of section.rows) {\r\n if (r === row) {\r\n const control = r.cells[colIndex].control;\r\n if (control && control.field && control.flexSize !== undefined) {\r\n deletedControl = control as IFormBaseControl; // ✅ Save before removing\r\n }\r\n r.cells[colIndex].control = undefined; // ❌ Clear after\r\n break;\r\n }\r\n }\r\n }\r\n return sections;\r\n });\r\n\r\n if (deletedControl) {\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n for (const section of sections) {\r\n for (const row of section.rows) {\r\n if (!!row) {\r\n row.cells = row.cells.filter(cell =>\r\n cell.control?.field !== deletedControl?.assignTo\r\n );\r\n }\r\n }\r\n }\r\n return sections;\r\n });\r\n }\r\n\r\n // ❌ Clear selection if needed\r\n if (shouldClearSelection) {\r\n this.coreFormDesignService.$selectedCell.set(null);\r\n }\r\n\r\n this.triggerUpdateSections();\r\n }\r\n }\r\n\r\n onCaptionEditEnd(index: number, event: any): void {\r\n const newCaption = (event.target as HTMLElement).innerText.trim();\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n sections[index].caption = newCaption;\r\n return sections;\r\n });\r\n }\r\n\r\n onFieldCaptionEditEnd(cell: IFormDesignCell, event: Event): void {\r\n const element = event.target as HTMLElement;\r\n const newLabel = element.innerText.trim();\r\n\r\n // Fallback if empty\r\n cell.control!.label = newLabel || 'Unnamed Field';\r\n\r\n this.triggerUpdateSections();\r\n }\r\n\r\n insertSection(): void {\r\n }\r\n\r\n insertRow(sectionIndex: number, rowIndex: number): void {\r\n\r\n const sections = this.coreFormDesignService.$placeholderSections();\r\n const section = sections[sectionIndex];\r\n if (!section) return;\r\n\r\n const newRow: IFormDesignRow = {\r\n cells: [\r\n { flexSize: 12 },\r\n ]\r\n };\r\n\r\n section.rows.splice(rowIndex + 1, 0, newRow);\r\n\r\n this.coreFormDesignService.$placeholderSections.set([...sections]);\r\n\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {\r\n const target = e.target as HTMLElement;\r\n\r\n if (!this.$settingPanel()?.nativeElement.contains(target) &&\r\n !target.closest('.feather-settings') && !target.closest('.json-preview')) {\r\n this.coreFormDesignService.$fieldSettingPanelOpen.set(false);\r\n this.coreFormDesignService.$selectedCell.set(null);\r\n this.coreFormDesignService.$currentControlTemplate.set(null);\r\n this.coreFormDesignService.$currentControl.set(null);\r\n }\r\n\r\n this.cdr.markForCheck();\r\n\r\n });\r\n\r\n setTimeout(() => {\r\n\r\n this.subscriptions.push(\r\n this.getByIdStream$.subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.coreFormDesignService.$afInstance.set(\r\n this.coreFormDesignService.mapFromAfInstanceDTO(x.body.innerBody)\r\n )\r\n this.coreFormDesignService.syncPlaceholderSectionsFromInstance();\r\n this.coreFormDesignService.$shouldPatchMetadataForm.set(true);\r\n }\r\n\r\n })\r\n );\r\n\r\n if (!this.$idAsInput()) {\r\n\r\n this.subscriptions.push(\r\n this.route.params.subscribe(x => {\r\n let id: string = '0';\r\n try {\r\n id = atob(x['id']);\r\n this.coreFormDesignService.$afInstance.update(instance => ({\r\n ...instance,\r\n id\r\n }))\r\n } catch (err: any) {\r\n if (isDevMode()) {\r\n this.alertService.error(err.toString(), noneAutoClosedAlertOptions);\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.idStream$.next(id);\r\n\r\n /*\r\n if (id !== '0') {\r\n this.coreFormDesignService.editMode$.next(EnumCorePageEditMode.UPDATE);\r\n this.coreFormDesignService.$submitText.set(EnumTranslateKey.UI_EDIT_FORM_BUTTON_SAVE);\r\n this.$loading.set(true);\r\n\r\n this.subscriptions.push(\r\n this.coreFormDesignService.getById(id)\r\n .pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n\r\n this.alertService.error(msg, noneAutoClosedAlertOptions);\r\n return of(err);\r\n })\r\n )\r\n .subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n this.coreFormDesignService.$afInstance.set(\r\n this.coreFormDesignService.mapFromAfInstanceDTO(x.body.innerBody)\r\n )\r\n this.coreFormDesignService.syncPlaceholderSectionsFromInstance();\r\n this.coreFormDesignService.$shouldPatchMetadataForm.set(true);\r\n }\r\n })\r\n )\r\n }\r\n */\r\n\r\n /*\r\n const workflowId = this.route.parent?.snapshot.paramMap.get('id');\r\n const hasProcessDesignSegment = this.router.url.includes('process-design');\r\n if (!!workflowId && !!hasProcessDesignSegment) {\r\n this.wfs.getById(workflowId);\r\n }\r\n */\r\n\r\n })\r\n )\r\n\r\n }\r\n\r\n\r\n // if (!!this.workflow) {\r\n // this.wfs.getById(this.workflow.id)\r\n // }\r\n\r\n })\r\n }\r\n\r\n onControlParamsChange(updated: IFormBaseControl): void {\r\n this.coreFormDesignService.$placeholderSections.update(sections => {\r\n const cell = this.coreFormDesignService.$selectedCell();\r\n if (!cell) return sections;\r\n\r\n // Patch the selected cell\r\n Object.assign(cell.control!, updated);\r\n return sections;\r\n });\r\n }\r\n\r\n get normalizedSelectedControl(): IFormBaseControl {\r\n const cell = this.coreFormDesignService.$selectedCell();\r\n\r\n if (!cell?.control) {\r\n throw new Error('No control is currently selected.');\r\n }\r\n\r\n return this.coreFormDesignService.normalize(cell.control);\r\n }\r\n\r\n triggerUpdateSections(): void {\r\n this.coreFormDesignService.$placeholderSections.set([...this.coreFormDesignService.$placeholderSections()]);\r\n }\r\n\r\n syncFormDesignWithSections(): void {\r\n const existingControls = Object.keys(this.formDesign.controls);\r\n const expectedControls: string[] = [];\r\n\r\n for (const section of this.coreFormDesignService.$placeholderSections()) {\r\n for (const row of section.rows) {\r\n for (const cell of row?.cells || []) {\r\n const control = cell?.control;\r\n if (control?.field) {\r\n expectedControls.push(control.field);\r\n\r\n if (!this.formDesign.contains(control.field)) {\r\n this.formDesign.addControl(\r\n control.field,\r\n new FormControl(control.value ?? null)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 🧹 Remove controls that no longer exist\r\n for (const field of existingControls) {\r\n if (!expectedControls.includes(field)) {\r\n this.formDesign.removeControl(field);\r\n }\r\n }\r\n }\r\n\r\n isRequired(control: IFormBaseControl | undefined | null): boolean {\r\n if (!control || !control.validators) return false;\r\n\r\n return control.validators.some((v: IValidator) => v.name === 'required' || v.name === 'requiredTrue');\r\n }\r\n\r\n filteredCells(row: IFormDesignRow | undefined): IFormDesignCell[] {\r\n if (!row) return [];\r\n return row.cells.filter(cell => (cell?.flexSize ?? 0) > 0);\r\n }\r\n\r\n onFormDesignCreated(e: any) {\r\n console.log(\"onFormDesignCreated\", e)\r\n }\r\n\r\n onLiveFormCreated(e: any) {\r\n console.log(\"onLiveFormCreated\", e)\r\n }\r\n\r\n showMetadata(): void {\r\n this.coreFormDesignService.$showFormMetadata.set(true);\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}\r\n","<div class=\"core-form-design-container fs-13\" [hotKeys]=\"['F3', 'F4', 'F6', 'Escape']\">\r\n\r\n <core-page-header title=\"UI.COMPONENT_TITLE.WORKFLOW_FORM_DESIGN\" (buttonClick)=\"onCorePageHeaderButtonClicked($event)\"></core-page-header>\r\n\r\n <ng-template #formMetadata>\r\n <form-metadata></form-metadata>\r\n </ng-template>\r\n\r\n <aside class=\"af-metadata-overlay\" [@slideFromTopFadeIn]=\"coreFormDesignService.$showFormMetadata() ? 'in' : 'out'\"\r\n [class.shown]=\"coreFormDesignService.$showFormMetadata()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"formMetadata\"></ng-container>\r\n </aside>\r\n\r\n <div class=\"field-setting-panel\" [class.open]=\"coreFormDesignService.$fieldSettingPanelOpen()\" #settingPanel>\r\n @if (!!(this.coreFormDesignService.$selectedCell())) {\r\n <field-setting></field-setting>\r\n }\r\n </div>\r\n\r\n <div class=\"form-design-left\">\r\n\r\n @switch ($leftPanelMode()) {\r\n @case (enumLeftPanelMode.FieldCollection) {\r\n @for (category of controlCategories; track $index) {\r\n <div class=\"category-name\">\r\n {{ category.name }}\r\n </div>\r\n <ul>\r\n @for (control of category.controls; track $index) {\r\n <li draggable=\"true\" (dragstart)=\"onDragStart($event, control)\" [class.full-width]=\"control.controlType === 'SEEKER' || control.controlType === 'ATTACHMENT'\">\r\n <core-control [control]=\"control\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </li>\r\n <div class=\"space\"></div>\r\n }\r\n </ul>\r\n }\r\n }\r\n @case (enumLeftPanelMode.SelectedFieldJson) {\r\n <pre class=\"json-preview\">{{ coreFormDesignService.$currentControlJson() | tableCell : 'TRIM' : lang }}</pre>\r\n }\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"form-design-right\">\r\n\r\n @if (coreFormDesignService.$mode() === enumType.Default) {\r\n <div class=\"form-wrapper\">\r\n <form [formGroup]=\"formDesign\" autocomplete=\"off\">\r\n <div class=\"form-cells\">\r\n\r\n <div class=\"form-tool-bar\">\r\n <button class=\"core-button-vns-container\" (click)=\"showMetadata()\" [appTooltip]=\"'You can use F4 key to show form Metadata'\">Show Metadata</button>\r\n <button class=\"core-button-vns-container\" (click)=\"addSection()\">+ Add Section</button>\r\n </div>\r\n \r\n @for (section of coreFormDesignService.$placeholderSections(); track $index; let sectionIndex = $index) {\r\n <div class=\"form-section-placeholder\">\r\n\r\n <div class=\"section-header\">\r\n\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n\r\n <label contenteditable=\"true\"\r\n (blur)=\"onCaptionEditEnd(sectionIndex, $event)\"\r\n (keydown.enter)=\"onCaptionEditEnd(sectionIndex, $event); $event.preventDefault()\"\r\n >{{ section.caption }}</label>\r\n\r\n <div class=\"section-tool pointer\" (click)=\"deleteSection(sectionIndex)\" [appTooltip]=\"'Delete section'\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n \r\n </div>\r\n \r\n @for (row of section.rows; track $index; let rowIndex = $index) {\r\n\r\n <div class=\"form-row-wrapper\">\r\n <div class=\"form-row\">\r\n @for (cell of filteredCells(row); track $index; let colIndex = $index) {\r\n <div class=\"form-cell drop-target\" \r\n [ngStyle]=\"{ flex: (cell.flexSize ?? 0) + ' 1 0%' }\"\r\n [attr.data-flex]=\"cell.flexSize ?? 0\"\r\n (drop)=\"onDropIntoCell($event, sectionIndex, rowIndex, colIndex)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragenter)=\"onDragEnter(sectionIndex + '_' + rowIndex + '_' + colIndex)\"\r\n (dragleave)=\"onDragLeave(sectionIndex + '_' + rowIndex + '_' + colIndex)\"\r\n [class.selected]=\"cell?.selected\"\r\n [class.dragging-over]=\"isDragOverMap[sectionIndex + '_' + rowIndex + '_' + colIndex]\"\r\n [class.has-control]=\"!!cell && !!cell.control && !!getControl(cell)\"\r\n (click)=\"onCellClicked(sectionIndex, rowIndex, colIndex)\"\r\n >\r\n\r\n\r\n @if (!isDragOverMap[sectionIndex + '_' + rowIndex + '_' + colIndex]) {\r\n\r\n @if (!!cell && !!cell.control && !!getControl(cell)) {\r\n <label contenteditable=\"true\"\r\n (blur)=\"onFieldCaptionEditEnd(cell, $event)\"\r\n (keydown.enter)=\"onFieldCaptionEditEnd(cell, $event); $event.preventDefault()\"\r\n [class.d-none]=\"!!getControl(cell)?.hidden\"\r\n [class.required]=\"!!cell && !!cell.control && !!getControl(cell) && isRequired(getControl(cell))\"\r\n >{{ cell.control.label || 'label' }}</label>\r\n <core-control \r\n [control]=\"getControl(cell)!\" \r\n [form]=\"formDesign\"\r\n [checkError$]=\"checkError$\" />\r\n \r\n <div class=\"field-toolbar\">\r\n <ul>\r\n <li>\r\n <div class=\"field-tool pointer\" (click)=\"openSettingsForCell(cell, sectionIndex, rowIndex, colIndex)\" [appTooltip]=\"'Show settings'\">\r\n <i class=\"feather-settings\"></i>\r\n </div>\r\n </li>\r\n <li>\r\n <div class=\"field-tool pointer\" (click)=\"deleteField(row, colIndex)\" [appTooltip]=\"'Remove field from cell'\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n \r\n } @else {\r\n <div class=\"placeholder\">Drop here</div>\r\n }\r\n\r\n @if (cell?.selected && canMergeCells(sectionIndex, rowIndex)) {\r\n <div class=\"merge-toolbar\">\r\n <button (click)=\"mergeCells(sectionIndex, rowIndex)\">🔗 Merge</button>\r\n </div>\r\n }\r\n \r\n }\r\n\r\n </div>\r\n }\r\n </div>\r\n <div class=\"row-tool-bar\">\r\n <div class=\"icon-wrapper\" (click)=\"deleteRow(sectionIndex, rowIndex)\" [appTooltip]=\"'Delete row'\"><i class=\"feather-x\"></i></div>\r\n <div class=\"icon-wrapper\" (click)=\"addRow(sectionIndex)\" [appTooltip]=\"'Add row'\"><i class=\"feather-arrow-down\"></i></div>\r\n <div class=\"icon-wrapper\" (click)=\"insertRow(sectionIndex, rowIndex)\" [appTooltip]=\"'Insert row'\"><i class=\"feather-corner-right-down\"></i></div>\r\n <div class=\"icon-wrapper\" (click)=\"addColumn(row)\" [appTooltip]=\"'Add column'\"><i class=\"feather-arrow-right\"></i></div>\r\n </div>\r\n </div>\r\n\r\n }\r\n </div>\r\n }\r\n \r\n \r\n </div>\r\n </form>\r\n </div>\r\n } @else if (!!$sections()) {\r\n\r\n\r\n @if (!!coreFormDesignService.$afInstance().normalMode) {\r\n <live-form [$designMode]=\"true\" />\r\n } @else {\r\n <live-form [$designMode]=\"true\" ($onClose)=\"closePreview()\"></live-form>\r\n }\r\n\r\n\r\n } @else {\r\n <h2>$sections() empty / null / undefined</h2>\r\n }\r\n\r\n\r\n \r\n </div>\r\n @if ($loading()) {\r\n <core-toast-loading></core-toast-loading>\r\n }\r\n \r\n</div>"],"names":["i1.DialogService","i2.MultiLanguageService","i1.MultiLanguageService","i2"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { c as CoreWorkflowListComponent, d as CorePageHeaderComponent, T as TooltipDirective, D as DragReorderDirective, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DpE8_5mQ.mjs';
3
+ import { c as CoreWorkflowListComponent, d as CorePageHeaderComponent, T as TooltipDirective, D as DragReorderDirective, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-BPB_Re1R.mjs';
4
4
  import { RouterOutlet } from '@angular/router';
5
5
  import { debounceTime, distinctUntilChanged, switchMap, catchError, of } from 'rxjs';
6
6
 
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
86
86
  }] });
87
87
 
88
88
  export { CoreWorkflowConsumeComponent };
89
- //# sourceMappingURL=ngx-histaff-alpha-core-workflow-consume.component-CvzOZKly.mjs.map
89
+ //# sourceMappingURL=ngx-histaff-alpha-core-workflow-consume.component-qi5s4VKR.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-core-workflow-consume.component-CvzOZKly.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/core-workflow-consume/core-workflow-consume.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/core-workflow-consume/core-workflow-consume.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { CoreWorkflowListComponent } from '../core-workflow-list/core-workflow-list.component'\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, switchMap } from 'rxjs';\r\nimport { IWfWorkflow } from '../interfaces/IWfWorkflow';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\r\nimport { IAfInstanceDTO } from '../../core-form-design/interfaces';\r\n\r\n@Component({\r\n selector: 'core-workflow-consume',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterOutlet,\r\n CorePageHeaderComponent,\r\n TooltipDirective,\r\n DragReorderDirective,\r\n FullscreenModalLoaderComponent\r\n ],\r\n templateUrl: './core-workflow-consume.component.html',\r\n styleUrls: [\r\n './core-workflow-consume.component.scss',\r\n '../core-workflow-list/core-workflow-list.component.scss'\r\n ]\r\n})\r\nexport class CoreWorkflowConsumeComponent extends CoreWorkflowListComponent {\r\n\r\n sendRequest(flow: IWfWorkflow): void {\r\n\r\n if (!!flow.afNormalMode) {\r\n // Fullscreen route\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', flow.id]\r\n );\r\n } else {\r\n // Modal outlet route\r\n this.router.navigate(\r\n [\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: [flow.id] } }\r\n ]\r\n );\r\n }\r\n\r\n /*\r\n if (flow.afInstanceId) {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.coreWorkflowService.loadAfInstance(flow.afInstanceId).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err)\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const afInstanceDTO: IAfInstanceDTO = x.body.innerBody;\r\n const hydrated = this.coreFormDesignService.mapFromAfInstanceDTO(afInstanceDTO);\r\n this.coreFormDesignService.$afInstance.set(hydrated)\r\n\r\n if (hydrated.normalMode) {\r\n // ✅ Fullscreen route\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', flow.id]\r\n );\r\n } else {\r\n // ✅ Modal outlet route\r\n this.router.navigate(\r\n [\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: [flow.id] } }\r\n ]\r\n );\r\n }\r\n\r\n }\r\n })\r\n )\r\n }\r\n */\r\n }\r\n\r\n override ngAfterViewInit(): void {\r\n requestAnimationFrame(() => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows');\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a.map(x => ({ id: x.id, orderNum: x.orderNum }))) ===\r\n JSON.stringify(b.map(x => ({ id: x.id, orderNum: x.orderNum })))\r\n ),\r\n switchMap(newOrder => this.coreWorkflowService.updateGroupOrder(newOrder)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n })\r\n }\r\n\r\n}\r\n","<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <div class=\"container-fluid\">\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n <div class=\"col-md-12 no-padding\">\r\n <div class=\"WorkflowList_operations d-flex d-flex-between\">\r\n <div class=\"WorkflowList_operationsLeft\">\r\n <input type=\"text\" placeholder=\"Search\" class=\"form-control\" [class.d-none]=\"$sortMode()\">\r\n </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"togglerSortMode()\">{{ $sortMode() ? 'Expand' : 'Sort'\r\n }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"group-list p-relative\">\r\n\r\n @for (group of coreWorkflowService.$allGroups(); track group.id) {\r\n\r\n @if ($sortMode()) {\r\n\r\n <div class=\"WorkflowGroup card sort-mode\"\r\n [attr.data-id]=\"group.id\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\"\r\n >\r\n \r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n \r\n <div class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n \r\n <div class=\"WorkflowGroup_itemEdit pointer\">\r\n <i class=\"feather-move\"></i>\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n\r\n } @else {\r\n\r\n <div class=\"WorkflowGroup card\">\r\n \r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n <div class=\"Workflows\">\r\n @for (flow of group.wfWorkflows; track $index) {\r\n <div class=\"Workflow\">\r\n <div class=\"Workflow_code\">\r\n\r\n <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [showAnyway]=\"true\">{{ flow.name\r\n }}</span>\r\n </div>\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"pointer\" (click)=\"sendRequest(flow)\"\r\n [appTooltip]=\"'Send request'\">\r\n <i class=\"feather-mail\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </div>\r\n\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <router-outlet name=\"workflowConsume\"></router-outlet>\r\n\r\n @if ($loading()) {\r\n <app-fullscreen-modal-loader/>\r\n }\r\n\r\n</div>"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-histaff-alpha-core-workflow-consume.component-qi5s4VKR.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/core-workflow-consume/core-workflow-consume.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/core-workflow-consume/core-workflow-consume.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { CoreWorkflowListComponent } from '../core-workflow-list/core-workflow-list.component'\r\nimport { RouterOutlet } from '@angular/router';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, switchMap } from 'rxjs';\r\nimport { IWfWorkflow } from '../interfaces/IWfWorkflow';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\r\nimport { IAfInstanceDTO } from '../../core-form-design/interfaces';\r\n\r\n@Component({\r\n selector: 'core-workflow-consume',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n RouterOutlet,\r\n CorePageHeaderComponent,\r\n TooltipDirective,\r\n DragReorderDirective,\r\n FullscreenModalLoaderComponent\r\n ],\r\n templateUrl: './core-workflow-consume.component.html',\r\n styleUrls: [\r\n './core-workflow-consume.component.scss',\r\n '../core-workflow-list/core-workflow-list.component.scss'\r\n ]\r\n})\r\nexport class CoreWorkflowConsumeComponent extends CoreWorkflowListComponent {\r\n\r\n sendRequest(flow: IWfWorkflow): void {\r\n\r\n if (!!flow.afNormalMode) {\r\n // Fullscreen route\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', flow.id]\r\n );\r\n } else {\r\n // Modal outlet route\r\n this.router.navigate(\r\n [\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: [flow.id] } }\r\n ]\r\n );\r\n }\r\n\r\n /*\r\n if (flow.afInstanceId) {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.coreWorkflowService.loadAfInstance(flow.afInstanceId).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err)\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const afInstanceDTO: IAfInstanceDTO = x.body.innerBody;\r\n const hydrated = this.coreFormDesignService.mapFromAfInstanceDTO(afInstanceDTO);\r\n this.coreFormDesignService.$afInstance.set(hydrated)\r\n\r\n if (hydrated.normalMode) {\r\n // ✅ Fullscreen route\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', flow.id]\r\n );\r\n } else {\r\n // ✅ Modal outlet route\r\n this.router.navigate(\r\n [\r\n '/root/workflow/workflow-consume',\r\n { outlets: { workflowConsume: [flow.id] } }\r\n ]\r\n );\r\n }\r\n\r\n }\r\n })\r\n )\r\n }\r\n */\r\n }\r\n\r\n override ngAfterViewInit(): void {\r\n requestAnimationFrame(() => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows');\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a.map(x => ({ id: x.id, orderNum: x.orderNum }))) ===\r\n JSON.stringify(b.map(x => ({ id: x.id, orderNum: x.orderNum })))\r\n ),\r\n switchMap(newOrder => this.coreWorkflowService.updateGroupOrder(newOrder)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n })\r\n }\r\n\r\n}\r\n","<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"\" [hideButtonGroup]=\"true\"></core-page-header>\r\n <div class=\"container-fluid\">\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n <div class=\"col-md-12 no-padding\">\r\n <div class=\"WorkflowList_operations d-flex d-flex-between\">\r\n <div class=\"WorkflowList_operationsLeft\">\r\n <input type=\"text\" placeholder=\"Search\" class=\"form-control\" [class.d-none]=\"$sortMode()\">\r\n </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"togglerSortMode()\">{{ $sortMode() ? 'Expand' : 'Sort'\r\n }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"group-list p-relative\">\r\n\r\n @for (group of coreWorkflowService.$allGroups(); track group.id) {\r\n\r\n @if ($sortMode()) {\r\n\r\n <div class=\"WorkflowGroup card sort-mode\"\r\n [attr.data-id]=\"group.id\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\"\r\n >\r\n \r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n \r\n <div class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n \r\n <div class=\"WorkflowGroup_itemEdit pointer\">\r\n <i class=\"feather-move\"></i>\r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n \r\n </div>\r\n\r\n } @else {\r\n\r\n <div class=\"WorkflowGroup card\">\r\n \r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n \r\n </div>\r\n \r\n \r\n <div class=\"Workflows\">\r\n @for (flow of group.wfWorkflows; track $index) {\r\n <div class=\"Workflow\">\r\n <div class=\"Workflow_code\">\r\n\r\n <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [showAnyway]=\"true\">{{ flow.name\r\n }}</span>\r\n </div>\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"pointer\" (click)=\"sendRequest(flow)\"\r\n [appTooltip]=\"'Send request'\">\r\n <i class=\"feather-mail\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n \r\n </div>\r\n\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <router-outlet name=\"workflowConsume\"></router-outlet>\r\n\r\n @if ($loading()) {\r\n <app-fullscreen-modal-loader/>\r\n }\r\n\r\n</div>"],"names":[],"mappings":";;;;;;AA2BM,MAAO,4BAA6B,SAAQ,yBAAyB,CAAA;AAEzE,IAAA,WAAW,CAAC,IAAiB,EAAA;AAE3B,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;;AAEvB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,CAAC,iCAAiC,EAAE,IAAI,CAAC,EAAE,CAAC,CAC7C;;aACI;;AAEL,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB;gBACE,iCAAiC;gBACjC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC1C,aAAA,CACF;;AAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCE;;IAGK,eAAe,GAAA;QACtB,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,mDAAmD,CAAC;AAErF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC;AACF,iBAAA,IAAI,CACH,YAAY,CAAC,GAAG,CAAC;AACjB,YAAA,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,KACxB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACjE,EACD,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAC1E,UAAU,CAAC,GAAG,IAAG;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC;gBAC/C,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC;AAClE,aAAC,CAAC;iBAEH,SAAS,CAAC,CAAC,IAAG;AACb,gBAAA,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG,EAAE;;;aAG7D,CAAC,CACL;AACH,SAAC,CAAC;;8GAjFO,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BzC,i4HA4FM,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,+6FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7EF,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,gBAAgB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,8BAA8B,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAQrB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAhBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAChB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,gBAAgB;wBAChB,oBAAoB;wBACpB;AACD,qBAAA,EAAA,QAAA,EAAA,i4HAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,+6FAAA,CAAA,EAAA;;;;;"}