ngx-histaff-alpha 6.2.3 → 6.2.5

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 (44) hide show
  1. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-BnZPeh0K.mjs → ngx-histaff-alpha-ai-hint-for-table.component-B55R2Bdi.mjs} +2 -2
  2. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-BnZPeh0K.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-B55R2Bdi.mjs.map} +1 -1
  3. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-C6NzbGmO.mjs → ngx-histaff-alpha-core-form-design.component-qFKrBe3i.mjs} +5 -5
  4. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-C6NzbGmO.mjs.map → ngx-histaff-alpha-core-form-design.component-qFKrBe3i.mjs.map} +1 -1
  5. package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-Cr0aw86n.mjs → ngx-histaff-alpha-core-template-editor.component-BjEp0j7i.mjs} +2 -2
  6. package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-Cr0aw86n.mjs.map → ngx-histaff-alpha-core-template-editor.component-BjEp0j7i.mjs.map} +1 -1
  7. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs → ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs} +2 -2
  8. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs.map → ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs.map} +1 -1
  9. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CZ5c5f6Z.mjs → ngx-histaff-alpha-core-workflow-consume.component-BVj7Iy5S.mjs} +2 -2
  10. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CZ5c5f6Z.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-BVj7Iy5S.mjs.map} +1 -1
  11. package/fesm2022/{ngx-histaff-alpha-db-settings.component-Ii3Df_3S.mjs → ngx-histaff-alpha-db-settings.component-Df5c862y.mjs} +5 -5
  12. package/fesm2022/{ngx-histaff-alpha-db-settings.component-Ii3Df_3S.mjs.map → ngx-histaff-alpha-db-settings.component-Df5c862y.mjs.map} +1 -1
  13. package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-HgqlxW_9.mjs → ngx-histaff-alpha-design-wrapper.component-BWbrPB5S.mjs} +74 -17
  14. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-BWbrPB5S.mjs.map +1 -0
  15. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route--6JFIIrt.mjs → ngx-histaff-alpha-design-wrapper.route-B3fb-WD2.mjs} +5 -5
  16. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route--6JFIIrt.mjs.map → ngx-histaff-alpha-design-wrapper.route-B3fb-WD2.mjs.map} +1 -1
  17. package/fesm2022/{ngx-histaff-alpha-form-array-props.component-B6TZIY8V.mjs → ngx-histaff-alpha-form-array-props.component-DHNSakNb.mjs} +3 -3
  18. package/fesm2022/{ngx-histaff-alpha-form-array-props.component-B6TZIY8V.mjs.map → ngx-histaff-alpha-form-array-props.component-DHNSakNb.mjs.map} +1 -1
  19. package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-BTMElmws.mjs → ngx-histaff-alpha-hrm-schema.component-DyV1kRj8.mjs} +2 -2
  20. package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-BTMElmws.mjs.map → ngx-histaff-alpha-hrm-schema.component-DyV1kRj8.mjs.map} +1 -1
  21. package/fesm2022/{ngx-histaff-alpha-live-form.component-B-SFrVaw.mjs → ngx-histaff-alpha-live-form.component-icYEAT-H.mjs} +2 -2
  22. package/fesm2022/{ngx-histaff-alpha-live-form.component-B-SFrVaw.mjs.map → ngx-histaff-alpha-live-form.component-icYEAT-H.mjs.map} +1 -1
  23. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs → ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs} +16 -16
  24. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs.map → ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs.map} +1 -1
  25. package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DBqmcSw-.mjs → ngx-histaff-alpha-simple-chat.component-D0j0C7pB.mjs} +2 -2
  26. package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DBqmcSw-.mjs.map → ngx-histaff-alpha-simple-chat.component-D0j0C7pB.mjs.map} +1 -1
  27. package/fesm2022/{ngx-histaff-alpha-template-list.component-BcsxueMA.mjs → ngx-histaff-alpha-template-list.component-CxKoBW2h.mjs} +2 -2
  28. package/fesm2022/{ngx-histaff-alpha-template-list.component-BcsxueMA.mjs.map → ngx-histaff-alpha-template-list.component-CxKoBW2h.mjs.map} +1 -1
  29. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-DbYxffvm.mjs → ngx-histaff-alpha-tracker-studio.component-DOJCtbj9.mjs} +2 -2
  30. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-DbYxffvm.mjs.map → ngx-histaff-alpha-tracker-studio.component-DOJCtbj9.mjs.map} +1 -1
  31. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-CFNNGJoi.mjs → ngx-histaff-alpha-wf-form-assign.component-7ZN5maHF.mjs} +2 -2
  32. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-CFNNGJoi.mjs.map → ngx-histaff-alpha-wf-form-assign.component-7ZN5maHF.mjs.map} +1 -1
  33. package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DV_PaaCt.mjs → ngx-histaff-alpha-wf-global-config.component-blmGiLln.mjs} +2 -2
  34. package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DV_PaaCt.mjs.map → ngx-histaff-alpha-wf-global-config.component-blmGiLln.mjs.map} +1 -1
  35. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BN21Z0Dk.mjs → ngx-histaff-alpha-wf-instance-status.component-DZp1sMKb.mjs} +2 -2
  36. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BN21Z0Dk.mjs.map → ngx-histaff-alpha-wf-instance-status.component-DZp1sMKb.mjs.map} +1 -1
  37. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-fUrmlB-C.mjs → ngx-histaff-alpha-wf-instance-step-react.component-C40bjZF9.mjs} +3 -3
  38. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-fUrmlB-C.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-C40bjZF9.mjs.map} +1 -1
  39. package/fesm2022/ngx-histaff-alpha.mjs +1 -1
  40. package/lib/app/libraries/core-form-design/core-form-design.component.d.ts +1 -1
  41. package/lib/app/libraries/core-form-design/core-form-group-editor.component.d.ts +1 -1
  42. package/lib/app/libraries/core-workflow-builder/interfaces/IWfWorkflow.d.ts +2 -0
  43. package/package.json +2 -2
  44. package/fesm2022/ngx-histaff-alpha-design-wrapper.component-HgqlxW_9.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component } from '@angular/core';
3
3
  import { Validators } from '@angular/forms';
4
- import { c as BaseEditComponent, d as EnumFormBaseContolType, D as DialogService, A as AppService, e as CorePageEditComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs';
4
+ import { c as BaseEditComponent, d as EnumFormBaseContolType, D as DialogService, A as AppService, e as CorePageEditComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs';
5
5
  import { EnumTranslateKey } from 'alpha-global-constants';
6
6
 
7
7
  class CoreTemplateEditorComponent extends BaseEditComponent {
@@ -162,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
162
162
  }], ctorParameters: () => [{ type: DialogService }, { type: AppService }] });
163
163
 
164
164
  export { CoreTemplateEditorComponent };
165
- //# sourceMappingURL=ngx-histaff-alpha-core-template-editor.component-Cr0aw86n.mjs.map
165
+ //# sourceMappingURL=ngx-histaff-alpha-core-template-editor.component-BjEp0j7i.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-core-template-editor.component-Cr0aw86n.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-doc-gen/core-template-editor/core-template-editor.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-doc-gen/core-template-editor/core-template-editor.component.html"],"sourcesContent":["import { Component } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { EnumFormBaseContolType } from \"../../../enum/EnumFormBaseContolType\";\r\nimport { EnumTranslateKey } from \"alpha-global-constants\";\r\nimport { BaseEditComponent } from \"../../../libraries/base-edit/base-edit/base-edit.component\";\r\nimport { ICoreFormSection } from \"../../../libraries/core-form/core-form/enum-interfaces\";\r\nimport { ICorePageEditCRUD } from \"../../../libraries/core-page-edit/ICorePageEditCRUD\";\r\nimport { AppService } from \"../../../services/app.service\";\r\nimport { DialogService } from \"../../../services/dialog.service\";\r\nimport { CorePageEditComponent } from \"../../../libraries/core-page-edit/core-page-edit.component\";\r\n\r\n@Component({\r\n selector: 'core-template-editor',\r\n imports: [\r\n CorePageEditComponent,\r\n ],\r\n templateUrl: './core-template-editor.component.html',\r\n styleUrls: ['./core-template-editor.component.scss']\r\n})\r\nexport class CoreTemplateEditorComponent extends BaseEditComponent {\r\n loading: boolean = false;\r\n override entityTable = \"DG_TEMPLATE\";\r\n captionCode: string = 'UI_COMPONENT_TITLE_DG_TEMPLATE_EDIT';\r\n subsctiptions: Subscription[] = [];\r\n crud!: ICorePageEditCRUD;\r\n sections: ICoreFormSection[] =\r\n [\r\n {\r\n rows: [\r\n [\r\n {\r\n flexSize: 12,\r\n label: EnumTranslateKey.UI_ENTITY_FIELD_CAPTION_COMMON_ID,\r\n field: 'id',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n readonly: true,\r\n type: 'string',\r\n hidden: true\r\n }\r\n ],\r\n [\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_NAME',\r\n field: 'name',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_LOCALE',\r\n field: 'locale',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_ENGINE',\r\n field: 'engine',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n }\r\n ],\r\n [\r\n {\r\n flexSize: 12,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_CONTENT',\r\n field: 'content',\r\n value: '',\r\n controlType: EnumFormBaseContolType.LIQUID_WYSIWYG,\r\n type: 'string',\r\n liquidOptions: {\r\n fields: ['firstName','lastName','firstActor','dayDetails.0.date']\r\n },\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED,\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n ],\r\n [\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_VERSION',\r\n field: 'version',\r\n value: null,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'number',\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_IS_DEFAULT',\r\n field: 'isDefault',\r\n value: false,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n type: 'boolean',\r\n }\r\n ]\r\n ]\r\n },\r\n ];\r\n constructor(\r\n public override dialogService: DialogService,\r\n private appService: AppService,\r\n ) {\r\n\r\n super(dialogService);\r\n\r\n this.crud = {\r\n c: '/api/DocGen/Create',\r\n r: '/api/DocGen/GetByStringId',\r\n u: '/api/DocGen/Update',\r\n d: '/api/DocGen/Delete',\r\n };\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onFormCreated(e: FormGroup): void {\r\n this.form = e;\r\n }\r\n\r\n onFormReinit(e: string): void {\r\n this.formInitStringValue = e;\r\n }\r\n}","@if (!!sections.length) {\r\n<core-page-edit [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [hasIdOfStringType]=\"true\"\r\n [entityUniqueIndexs]=\"[['name', 'version']]\"\r\n [normalMode]=\"true\" [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n}"],"names":["i1.DialogService","i2.AppService"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-histaff-alpha-core-template-editor.component-BjEp0j7i.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-doc-gen/core-template-editor/core-template-editor.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-doc-gen/core-template-editor/core-template-editor.component.html"],"sourcesContent":["import { Component } from \"@angular/core\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { EnumFormBaseContolType } from \"../../../enum/EnumFormBaseContolType\";\r\nimport { EnumTranslateKey } from \"alpha-global-constants\";\r\nimport { BaseEditComponent } from \"../../../libraries/base-edit/base-edit/base-edit.component\";\r\nimport { ICoreFormSection } from \"../../../libraries/core-form/core-form/enum-interfaces\";\r\nimport { ICorePageEditCRUD } from \"../../../libraries/core-page-edit/ICorePageEditCRUD\";\r\nimport { AppService } from \"../../../services/app.service\";\r\nimport { DialogService } from \"../../../services/dialog.service\";\r\nimport { CorePageEditComponent } from \"../../../libraries/core-page-edit/core-page-edit.component\";\r\n\r\n@Component({\r\n selector: 'core-template-editor',\r\n imports: [\r\n CorePageEditComponent,\r\n ],\r\n templateUrl: './core-template-editor.component.html',\r\n styleUrls: ['./core-template-editor.component.scss']\r\n})\r\nexport class CoreTemplateEditorComponent extends BaseEditComponent {\r\n loading: boolean = false;\r\n override entityTable = \"DG_TEMPLATE\";\r\n captionCode: string = 'UI_COMPONENT_TITLE_DG_TEMPLATE_EDIT';\r\n subsctiptions: Subscription[] = [];\r\n crud!: ICorePageEditCRUD;\r\n sections: ICoreFormSection[] =\r\n [\r\n {\r\n rows: [\r\n [\r\n {\r\n flexSize: 12,\r\n label: EnumTranslateKey.UI_ENTITY_FIELD_CAPTION_COMMON_ID,\r\n field: 'id',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n readonly: true,\r\n type: 'string',\r\n hidden: true\r\n }\r\n ],\r\n [\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_NAME',\r\n field: 'name',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_LOCALE',\r\n field: 'locale',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_ENGINE',\r\n field: 'engine',\r\n value: '',\r\n controlType: EnumFormBaseContolType.TEXTBOX,\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(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n }\r\n ],\r\n [\r\n {\r\n flexSize: 12,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_CONTENT',\r\n field: 'content',\r\n value: '',\r\n controlType: EnumFormBaseContolType.LIQUID_WYSIWYG,\r\n type: 'string',\r\n liquidOptions: {\r\n fields: ['firstName','lastName','firstActor','dayDetails.0.date']\r\n },\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED,\r\n },\r\n {\r\n name: 'minLength',\r\n validator: Validators.minLength(1),\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_MIN_LENGTH,\r\n },\r\n ]\r\n },\r\n ],\r\n [\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_VERSION',\r\n field: 'version',\r\n value: null,\r\n controlType: EnumFormBaseContolType.TEXTBOX,\r\n type: 'number',\r\n },\r\n {\r\n flexSize: 4,\r\n label: 'UI_ENTITY_FIELD_CAPTION_DG_TEMPLATE_IS_DEFAULT',\r\n field: 'isDefault',\r\n value: false,\r\n controlType: EnumFormBaseContolType.CHECKBOX,\r\n type: 'boolean',\r\n }\r\n ]\r\n ]\r\n },\r\n ];\r\n constructor(\r\n public override dialogService: DialogService,\r\n private appService: AppService,\r\n ) {\r\n\r\n super(dialogService);\r\n\r\n this.crud = {\r\n c: '/api/DocGen/Create',\r\n r: '/api/DocGen/GetByStringId',\r\n u: '/api/DocGen/Update',\r\n d: '/api/DocGen/Delete',\r\n };\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onFormCreated(e: FormGroup): void {\r\n this.form = e;\r\n }\r\n\r\n onFormReinit(e: string): void {\r\n this.formInitStringValue = e;\r\n }\r\n}","@if (!!sections.length) {\r\n<core-page-edit [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [hasIdOfStringType]=\"true\"\r\n [entityUniqueIndexs]=\"[['name', 'version']]\"\r\n [normalMode]=\"true\" [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n}"],"names":["i1.DialogService","i2.AppService"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { NgStyle } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { signal, inject, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { x as DomService } from './ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs';
4
+ import { x as DomService } from './ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs';
5
5
  import { trigger, transition, query, style, stagger, animate } from '@angular/animations';
6
6
 
7
7
  class CoreToastLoadingComponent {
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
55
55
  }] });
56
56
 
57
57
  export { CoreToastLoadingComponent as C };
58
- //# sourceMappingURL=ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs.map
58
+ //# sourceMappingURL=ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs","sources":["../../../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"],"sourcesContent":["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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs","sources":["../../../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"],"sourcesContent":["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"],"names":[],"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 { n as CoreWorkflowListComponent, f as CorePageHeaderComponent, o as TooltipDirective, p as DragReorderDirective, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs';
3
+ import { n as CoreWorkflowListComponent, f as CorePageHeaderComponent, o as TooltipDirective, p as DragReorderDirective, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs';
4
4
  import { RouterOutlet } from '@angular/router';
5
5
  import { buffer, debounceTime, filter, distinctUntilChanged, switchMap, catchError, of } from 'rxjs';
6
6
 
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
59
59
  }] });
60
60
 
61
61
  export { CoreWorkflowConsumeComponent };
62
- //# sourceMappingURL=ngx-histaff-alpha-core-workflow-consume.component-CZ5c5f6Z.mjs.map
62
+ //# sourceMappingURL=ngx-histaff-alpha-core-workflow-consume.component-BVj7Iy5S.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-core-workflow-consume.component-CZ5c5f6Z.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 { BehaviorSubject, buffer, catchError, debounceTime, distinctUntilChanged, filter, of, switchMap } from 'rxjs';\r\nimport { IWfWorkflow } from '../interfaces/IWfWorkflow';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\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 ]\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\r\n override ngAfterViewInit(): void {\r\n\r\n this.doublePointDown?.unsubscribe();\r\n\r\n requestAnimationFrame(() => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows', '');\r\n\r\n this.subscriptions.push(\r\n this.pointerdown$.pipe(\r\n buffer(this.pointerdown$.pipe(debounceTime(500))),\r\n filter(clicks => clicks.length >= 2)\r\n ).subscribe(() => {\r\n if (!!this.$activeWorkflow()) {\r\n this.sendRequest(this.$activeWorkflow()!)\r\n }\r\n })\r\n );\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 this.subscriptions.push(\r\n this.searchTearm$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n ).subscribe(searchTerm => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows', searchTerm);\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=\"Workflow Use\" [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 (input)=\"onSearchChange($event)\"\r\n >\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 pointer\">\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 pointer\" (pointerdown)=\"onPointerdown(flow, group)\">\r\n <div class=\"Workflow_code\">\r\n\r\n <span [appTooltip]=\"flow.description\" [position]=\"'above'\" [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-BVj7Iy5S.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 { BehaviorSubject, buffer, catchError, debounceTime, distinctUntilChanged, filter, of, switchMap } from 'rxjs';\r\nimport { IWfWorkflow } from '../interfaces/IWfWorkflow';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\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 ]\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\r\n override ngAfterViewInit(): void {\r\n\r\n this.doublePointDown?.unsubscribe();\r\n\r\n requestAnimationFrame(() => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows', '');\r\n\r\n this.subscriptions.push(\r\n this.pointerdown$.pipe(\r\n buffer(this.pointerdown$.pipe(debounceTime(500))),\r\n filter(clicks => clicks.length >= 2)\r\n ).subscribe(() => {\r\n if (!!this.$activeWorkflow()) {\r\n this.sendRequest(this.$activeWorkflow()!)\r\n }\r\n })\r\n );\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 this.subscriptions.push(\r\n this.searchTearm$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged(),\r\n ).subscribe(searchTerm => {\r\n this.coreWorkflowService.refresh('/api/WfWorkflowGroup/GetAllAvailableWithWorkflows', searchTerm);\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=\"Workflow Use\" [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 (input)=\"onSearchChange($event)\"\r\n >\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 pointer\">\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 pointer\" (pointerdown)=\"onPointerdown(flow, group)\">\r\n <div class=\"Workflow_code\">\r\n\r\n <span [appTooltip]=\"flow.description\" [position]=\"'above'\" [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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"}
@@ -2,9 +2,9 @@ import * as i0 from '@angular/core';
2
2
  import { inject, Injector, signal, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { FormsModule } from '@angular/forms';
5
- import { B as BaseComponent, h as CoreWorkflowService, l as DbService, f as CorePageHeaderComponent, T as TranslatePipe, m as AiHintForColumnComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs';
5
+ import { B as BaseComponent, h as CoreWorkflowService, l as DbService, f as CorePageHeaderComponent, T as TranslatePipe, m as AiHintForColumnComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs';
6
6
  import { Subject, BehaviorSubject, tap, debounceTime, distinctUntilChanged, switchMap, catchError, of, filter, finalize } from 'rxjs';
7
- import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs';
7
+ import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs';
8
8
 
9
9
  class DbSettingsComponent extends BaseComponent {
10
10
  constructor() {
@@ -153,9 +153,9 @@ class DbSettingsComponent extends BaseComponent {
153
153
  this.orderChanges$.next(reordered);
154
154
  }
155
155
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: DbSettingsComponent, isStandalone: true, selector: "db-settings", usesInheritance: true, ngImport: i0, template: "<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- \uD83D\uDD0D Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- \uD83D\uDCE6 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \uD83C\uDF00 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chi\u1EBFu C\u1EA5u tr\u00FAc D\u1EEF li\u1EC7u</h2>\r\n <p>\r\n B\u1EA3ng d\u01B0\u1EDBi \u0111\u00E2y hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 <strong>b\u1EA3ng d\u1EEF li\u1EC7u</strong> v\u00E0 c\u00E1c <strong>c\u1ED9t</strong> t\u01B0\u01A1ng \u1EE9ng trong h\u1EC7 th\u1ED1ng. \r\n B\u1EA1n c\u00F3 th\u1EC3 ch\u1ECDn c\u00E1c c\u1ED9t n\u00E0y \u0111\u1EC3 x\u00E2y d\u1EF1ng <em>\u0111i\u1EC1u ki\u1EC7n \u0111\u1ED9ng</em>, <em>tr\u00ECnh ph\u00E2n gi\u1EA3i ng\u01B0\u1EDDi duy\u1EC7t</em>, ho\u1EB7c <em>bi\u1EC3u th\u1EE9c t\u00EDnh to\u00E1n</em>.\r\n </p>\r\n <p>\r\n Giao di\u1EC7n n\u00E0y c\u0169ng h\u1ED7 tr\u1EE3 <strong>AI g\u1EE3i \u00FD th\u00F4ng minh</strong>, gi\u00FAp t\u1EF1 \u0111\u1ED9ng \u0111i\u1EC1n v\u00E0 ki\u1EC3m tra c\u00E1c bi\u1EC3u th\u1EE9c d\u1EF1a tr\u00EAn c\u1EA5u tr\u00FAc c\u01A1 s\u1EDF d\u1EEF li\u1EC7u th\u1EF1c t\u1EBF.\r\n </p>\r\n <p class=\"note\">M\u1EB9o: Di chu\u1ED9t v\u00E0o t\u00EAn c\u1ED9t \u0111\u1EC3 xem v\u00ED d\u1EE5 s\u1EED d\u1EE5ng trong lu\u1ED3ng ph\u00EA duy\u1EC7t.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>", styles: ["@charset \"UTF-8\";.container-fluid{padding:24px;background-color:#f9f9fb;max-width:1000px}.db-toolbar{padding:16px;background-color:#fff;border-radius:8px}.search-input{width:100%;max-width:300px;padding:8px 12px;border-radius:6px;border:1px solid #ccc;transition:border-color .3s ease}.search-input:focus{border-color:#007bff;outline:none;background-color:#fff}.page-size-select{width:80px;min-width:80px;border-radius:6px;padding:4px 6px}.sort-toggle-btn{padding:6px 16px;border-radius:6px;font-weight:500;transition:all .2s ease-in-out}.sort-toggle-btn:hover{background-color:#e8e8e8;border-color:#bbb}.group-list{margin-top:20px}.drag-item{margin-bottom:16px;cursor:grab}.table-wrapper{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 6px #0000000a;transition:box-shadow .2s ease,transform .2s ease;margin-bottom:15px}.table-wrapper.active{border-left:4px solid #4caf50}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.table-name{font-size:1.1rem;font-weight:600;color:#333}.table-name.has-hint{color:#2a9d8f;position:relative}.table-name.has-hint:after{content:\"\\1f4a1\";font-size:.9rem;margin-left:6px;vertical-align:middle;opacity:.8}.table-name.has-hint:hover:after{opacity:1}.item-columns{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd}.db-settings-description{background-color:#f9fafb;padding:1rem 1.5rem;border-radius:.5rem;margin-bottom:1.5rem;color:#374151}.db-settings-description h2{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#1f2937}.db-settings-description p{margin:.25rem 0;line-height:1.5}.db-settings-description .note{margin-top:.75rem;font-size:.875rem;color:#6b7280}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreToastLoadingComponent, selector: "core-toast-loading" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: AiHintForColumnComponent, selector: "ai-hint-for-column", inputs: ["$table", "$column", "$top", "$left"], outputs: ["$closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f6; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f7; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f5; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-BnZPeh0K.mjs').then(m => m.AiHintForTableComponent)]] }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: DbSettingsComponent, isStandalone: true, selector: "db-settings", usesInheritance: true, ngImport: i0, template: "<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- \uD83D\uDD0D Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- \uD83D\uDCE6 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \uD83C\uDF00 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chi\u1EBFu C\u1EA5u tr\u00FAc D\u1EEF li\u1EC7u</h2>\r\n <p>\r\n B\u1EA3ng d\u01B0\u1EDBi \u0111\u00E2y hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 <strong>b\u1EA3ng d\u1EEF li\u1EC7u</strong> v\u00E0 c\u00E1c <strong>c\u1ED9t</strong> t\u01B0\u01A1ng \u1EE9ng trong h\u1EC7 th\u1ED1ng. \r\n B\u1EA1n c\u00F3 th\u1EC3 ch\u1ECDn c\u00E1c c\u1ED9t n\u00E0y \u0111\u1EC3 x\u00E2y d\u1EF1ng <em>\u0111i\u1EC1u ki\u1EC7n \u0111\u1ED9ng</em>, <em>tr\u00ECnh ph\u00E2n gi\u1EA3i ng\u01B0\u1EDDi duy\u1EC7t</em>, ho\u1EB7c <em>bi\u1EC3u th\u1EE9c t\u00EDnh to\u00E1n</em>.\r\n </p>\r\n <p>\r\n Giao di\u1EC7n n\u00E0y c\u0169ng h\u1ED7 tr\u1EE3 <strong>AI g\u1EE3i \u00FD th\u00F4ng minh</strong>, gi\u00FAp t\u1EF1 \u0111\u1ED9ng \u0111i\u1EC1n v\u00E0 ki\u1EC3m tra c\u00E1c bi\u1EC3u th\u1EE9c d\u1EF1a tr\u00EAn c\u1EA5u tr\u00FAc c\u01A1 s\u1EDF d\u1EEF li\u1EC7u th\u1EF1c t\u1EBF.\r\n </p>\r\n <p class=\"note\">M\u1EB9o: Di chu\u1ED9t v\u00E0o t\u00EAn c\u1ED9t \u0111\u1EC3 xem v\u00ED d\u1EE5 s\u1EED d\u1EE5ng trong lu\u1ED3ng ph\u00EA duy\u1EC7t.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>", styles: ["@charset \"UTF-8\";.container-fluid{padding:24px;background-color:#f9f9fb;max-width:1000px}.db-toolbar{padding:16px;background-color:#fff;border-radius:8px}.search-input{width:100%;max-width:300px;padding:8px 12px;border-radius:6px;border:1px solid #ccc;transition:border-color .3s ease}.search-input:focus{border-color:#007bff;outline:none;background-color:#fff}.page-size-select{width:80px;min-width:80px;border-radius:6px;padding:4px 6px}.sort-toggle-btn{padding:6px 16px;border-radius:6px;font-weight:500;transition:all .2s ease-in-out}.sort-toggle-btn:hover{background-color:#e8e8e8;border-color:#bbb}.group-list{margin-top:20px}.drag-item{margin-bottom:16px;cursor:grab}.table-wrapper{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 6px #0000000a;transition:box-shadow .2s ease,transform .2s ease;margin-bottom:15px}.table-wrapper.active{border-left:4px solid #4caf50}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.table-name{font-size:1.1rem;font-weight:600;color:#333}.table-name.has-hint{color:#2a9d8f;position:relative}.table-name.has-hint:after{content:\"\\1f4a1\";font-size:.9rem;margin-left:6px;vertical-align:middle;opacity:.8}.table-name.has-hint:hover:after{opacity:1}.item-columns{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd}.db-settings-description{background-color:#f9fafb;padding:1rem 1.5rem;border-radius:.5rem;margin-bottom:1.5rem;color:#374151}.db-settings-description h2{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#1f2937}.db-settings-description p{margin:.25rem 0;line-height:1.5}.db-settings-description .note{margin-top:.75rem;font-size:.875rem;color:#6b7280}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreToastLoadingComponent, selector: "core-toast-loading" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: AiHintForColumnComponent, selector: "ai-hint-for-column", inputs: ["$table", "$column", "$top", "$left"], outputs: ["$closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f6; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f7; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f5; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-B55R2Bdi.mjs').then(m => m.AiHintForTableComponent)]] }); }
157
157
  }
158
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, resolveDeferredDeps: () => [import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f6; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f7; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs').then(function (n) { return n.f5; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-BnZPeh0K.mjs').then(m => m.AiHintForTableComponent)], resolveMetadata: (CoreStickerCollectionComponent, DragReorderDirective, TooltipDirective, AiHintForTableComponent) => ({ decorators: [{
158
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, resolveDeferredDeps: () => [import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f6; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f7; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs').then(function (n) { return n.f5; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-B55R2Bdi.mjs').then(m => m.AiHintForTableComponent)], resolveMetadata: (CoreStickerCollectionComponent, DragReorderDirective, TooltipDirective, AiHintForTableComponent) => ({ decorators: [{
159
159
  type: Component,
160
160
  args: [{ selector: 'db-settings', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
161
161
  FormsModule,
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ng
171
171
  }], ctorParameters: null, propDecorators: null }) });
172
172
 
173
173
  export { DbSettingsComponent };
174
- //# sourceMappingURL=ngx-histaff-alpha-db-settings.component-Ii3Df_3S.mjs.map
174
+ //# sourceMappingURL=ngx-histaff-alpha-db-settings.component-Df5c862y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-histaff-alpha-db-settings.component-Ii3Df_3S.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.html"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, runInInjectionContext, Injector, inject, signal, WritableSignal, effect, computed } from '@angular/core';\r\nimport { CoreStickerCollectionComponent } from '../../core-sticker-collection/core-sticker-collection.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { IWorkflowSchemaTable } from '../interfaces/IWorkflowSchema'\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { BehaviorSubject, catchError, debounceTime, distinctUntilChanged, filter, finalize, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { DbService, IGetWorkflowSchemaRequest } from '../../../services/db.service';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { AiHintForTableComponent } from './ai-hint-for-table/ai-hint-for-table.component';\r\nimport { AiHintForColumnComponent } from './ai-hint-for-column/ai-hint-for-column.component';\r\nimport { CoreToastLoadingComponent } from '../../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n selector: 'db-settings',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CorePageHeaderComponent,\r\n CoreStickerCollectionComponent,\r\n CoreToastLoadingComponent,\r\n DragReorderDirective,\r\n TranslatePipe,\r\n TooltipDirective,\r\n AiHintForTableComponent,\r\n AiHintForColumnComponent,\r\n ],\r\n templateUrl: './db-settings.component.html',\r\n styleUrl: './db-settings.component.scss'\r\n})\r\nexport class DbSettingsComponent extends BaseComponent implements AfterViewInit {\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n dbs = inject(DbService);\r\n injector = inject(Injector);\r\n // $schema = this.wfs.$workflowDbSchema;\r\n $loading = signal(false);\r\n $sortMode = signal<boolean>(false);\r\n\r\n $activeHintEditor = signal<{\r\n table: IWorkflowSchemaTable;\r\n column: string;\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n\r\n orderChanges$ = new Subject<IWorkflowSchemaTable[]>();\r\n activeColumnsChanges$ = new Subject<{ table: string; activeColumns: string[] }>();\r\n\r\n $totalItems = signal(0);\r\n\r\n searchTerm: string = '';\r\n search$ = new BehaviorSubject<string>('');\r\n\r\n getListStream$ = new BehaviorSubject<IGetWorkflowSchemaRequest | null>(null);\r\n\r\n onFieldToggle(table: IWorkflowSchemaTable, e: string[]): void {\r\n this.updateTableStatus(table, !!e.length);\r\n this.activeColumnsChanges$.next({ table: table.table, activeColumns: e });\r\n }\r\n\r\n openHintEditor(table: IWorkflowSchemaTable, e: any): void {\r\n const { column } = e.item;\r\n this.$activeHintEditor.set({\r\n table,\r\n column,\r\n top: e.e.clientY,\r\n left: e.e.clientX,\r\n });\r\n }\r\n\r\n closeHintEditor(): void {\r\n this.$activeHintEditor.set(null);\r\n }\r\n\r\n onSearchChange(e: string): void {\r\n this.search$.next(e);\r\n }\r\n\r\n getActiveColumnNameArray(table: string): string[] {\r\n return this.wfs.$workflowDbSchema().filter(x => x.table === table)[0].columns.filter(x => !!x.isActive).map(x => x.column);\r\n }\r\n\r\n updateTableStatus(table: IWorkflowSchemaTable, isActive: boolean): void {\r\n\r\n if (table.isActive === isActive) return;\r\n\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n isActive,\r\n columns: t.columns.map(c => ({ ...c, isActive }))\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set([...updated]);\r\n\r\n\r\n }\r\n\r\n togglerSortMode(): void {\r\n this.$sortMode.set(!this.$sortMode())\r\n }\r\n\r\n updateColumnStatus(table: IWorkflowSchemaTable, selectedColumns: string[]): void {\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n columns: t.columns.map(c => ({\r\n ...c,\r\n isActive: selectedColumns.includes(c.column)\r\n })),\r\n isActive: selectedColumns.length > 0\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set(updated);\r\n }\r\n\r\n save(): void {\r\n const payload = this.wfs.$workflowDbSchema().map(table => ({\r\n table: table.table,\r\n isActive: table.isActive,\r\n columns: table.columns.map(c => ({\r\n column: c.column,\r\n isActive: c.isActive,\r\n hintForAi: c.hintForAi\r\n }))\r\n }));\r\n\r\n console.log('Saving schema payload:', payload);\r\n // Optional: Call API to save\r\n // this.http.post('/api/.../UpdateWorkflowSchema', payload).subscribe(...)\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.orderChanges$ changed\")\r\n }),\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.wfs.updateTableOrder(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 this.subscriptions.push(\r\n this.activeColumnsChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.activeColumnsChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a) === JSON.stringify(b)\r\n ),\r\n switchMap(newState => this.dbs.updateColumnStatus(newState.table, newState.activeColumns)),\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 this.subscriptions.push(\r\n this.search$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe(s => {\r\n this.getListStream$.next({\r\n ...this.getListStream$.value,\r\n searchTerm: s\r\n });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.getListStream$.pipe(\r\n filter(Boolean),\r\n distinctUntilChanged((prev, curr) =>\r\n JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n tap(() => this.$loading.set(true)),\r\n switchMap(request =>\r\n this.dbs.syncAndGetWorkflowSchemaMetadata(request).pipe(\r\n catchError(() => of({ ok: false, status: 500 })),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n )\r\n ).subscribe((res: any) => {\r\n if (res.ok && res.status === 200 && res.body?.statusCode === 200) {\r\n this.wfs.$workflowDbSchema.set(res.body.innerBody.items);\r\n this.$totalItems.set(res.body.innerBody.totalItems)\r\n }\r\n })\r\n );\r\n\r\n\r\n setTimeout(() => {\r\n // Some more code...\r\n })\r\n }\r\n\r\n onTableShowMoreClicked(table: string, e: any) {\r\n\r\n }\r\n\r\n onListReorderUpdate(orderSet: { id: string; orderNum: number }[]): void {\r\n // Normalize ID to numbers\r\n const orderMap = new Map<number, number>(\r\n orderSet.map(x => [Number(x.id), x.orderNum])\r\n );\r\n\r\n // Get current state\r\n const currentTables = this.wfs.$workflowDbSchema();\r\n\r\n // Rebuild reordered state\r\n const reordered = currentTables\r\n .map(table => ({\r\n ...table,\r\n orderNum: orderMap.get(table.id) ?? table.orderNum\r\n }))\r\n .sort((a, b) => (a.orderNum ?? 0) - (b.orderNum ?? 0));\r\n\r\n // Debug output\r\n console.log(\"🌀 Reordered Groups:\", reordered);\r\n\r\n // Commit to signal/store\r\n this.wfs.$workflowDbSchema.set(reordered);\r\n\r\n // Optional: Trigger backend sync\r\n this.orderChanges$.next(reordered);\r\n }\r\n\r\n}\r\n","<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- 🔍 Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- 📦 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- 🌀 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chiếu Cấu trúc Dữ liệu</h2>\r\n <p>\r\n Bảng dưới đây hiển thị tất cả <strong>bảng dữ liệu</strong> và các <strong>cột</strong> tương ứng trong hệ thống. \r\n Bạn có thể chọn các cột này để xây dựng <em>điều kiện động</em>, <em>trình phân giải người duyệt</em>, hoặc <em>biểu thức tính toán</em>.\r\n </p>\r\n <p>\r\n Giao diện này cũng hỗ trợ <strong>AI gợi ý thông minh</strong>, giúp tự động điền và kiểm tra các biểu thức dựa trên cấu trúc cơ sở dữ liệu thực tế.\r\n </p>\r\n <p class=\"note\">Mẹo: Di chuột vào tên cột để xem ví dụ sử dụng trong luồng phê duyệt.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-histaff-alpha-db-settings.component-Df5c862y.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.html"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, runInInjectionContext, Injector, inject, signal, WritableSignal, effect, computed } from '@angular/core';\r\nimport { CoreStickerCollectionComponent } from '../../core-sticker-collection/core-sticker-collection.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { IWorkflowSchemaTable } from '../interfaces/IWorkflowSchema'\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { BehaviorSubject, catchError, debounceTime, distinctUntilChanged, filter, finalize, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { DbService, IGetWorkflowSchemaRequest } from '../../../services/db.service';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { AiHintForTableComponent } from './ai-hint-for-table/ai-hint-for-table.component';\r\nimport { AiHintForColumnComponent } from './ai-hint-for-column/ai-hint-for-column.component';\r\nimport { CoreToastLoadingComponent } from '../../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n selector: 'db-settings',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CorePageHeaderComponent,\r\n CoreStickerCollectionComponent,\r\n CoreToastLoadingComponent,\r\n DragReorderDirective,\r\n TranslatePipe,\r\n TooltipDirective,\r\n AiHintForTableComponent,\r\n AiHintForColumnComponent,\r\n ],\r\n templateUrl: './db-settings.component.html',\r\n styleUrl: './db-settings.component.scss'\r\n})\r\nexport class DbSettingsComponent extends BaseComponent implements AfterViewInit {\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n dbs = inject(DbService);\r\n injector = inject(Injector);\r\n // $schema = this.wfs.$workflowDbSchema;\r\n $loading = signal(false);\r\n $sortMode = signal<boolean>(false);\r\n\r\n $activeHintEditor = signal<{\r\n table: IWorkflowSchemaTable;\r\n column: string;\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n\r\n orderChanges$ = new Subject<IWorkflowSchemaTable[]>();\r\n activeColumnsChanges$ = new Subject<{ table: string; activeColumns: string[] }>();\r\n\r\n $totalItems = signal(0);\r\n\r\n searchTerm: string = '';\r\n search$ = new BehaviorSubject<string>('');\r\n\r\n getListStream$ = new BehaviorSubject<IGetWorkflowSchemaRequest | null>(null);\r\n\r\n onFieldToggle(table: IWorkflowSchemaTable, e: string[]): void {\r\n this.updateTableStatus(table, !!e.length);\r\n this.activeColumnsChanges$.next({ table: table.table, activeColumns: e });\r\n }\r\n\r\n openHintEditor(table: IWorkflowSchemaTable, e: any): void {\r\n const { column } = e.item;\r\n this.$activeHintEditor.set({\r\n table,\r\n column,\r\n top: e.e.clientY,\r\n left: e.e.clientX,\r\n });\r\n }\r\n\r\n closeHintEditor(): void {\r\n this.$activeHintEditor.set(null);\r\n }\r\n\r\n onSearchChange(e: string): void {\r\n this.search$.next(e);\r\n }\r\n\r\n getActiveColumnNameArray(table: string): string[] {\r\n return this.wfs.$workflowDbSchema().filter(x => x.table === table)[0].columns.filter(x => !!x.isActive).map(x => x.column);\r\n }\r\n\r\n updateTableStatus(table: IWorkflowSchemaTable, isActive: boolean): void {\r\n\r\n if (table.isActive === isActive) return;\r\n\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n isActive,\r\n columns: t.columns.map(c => ({ ...c, isActive }))\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set([...updated]);\r\n\r\n\r\n }\r\n\r\n togglerSortMode(): void {\r\n this.$sortMode.set(!this.$sortMode())\r\n }\r\n\r\n updateColumnStatus(table: IWorkflowSchemaTable, selectedColumns: string[]): void {\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n columns: t.columns.map(c => ({\r\n ...c,\r\n isActive: selectedColumns.includes(c.column)\r\n })),\r\n isActive: selectedColumns.length > 0\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set(updated);\r\n }\r\n\r\n save(): void {\r\n const payload = this.wfs.$workflowDbSchema().map(table => ({\r\n table: table.table,\r\n isActive: table.isActive,\r\n columns: table.columns.map(c => ({\r\n column: c.column,\r\n isActive: c.isActive,\r\n hintForAi: c.hintForAi\r\n }))\r\n }));\r\n\r\n console.log('Saving schema payload:', payload);\r\n // Optional: Call API to save\r\n // this.http.post('/api/.../UpdateWorkflowSchema', payload).subscribe(...)\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.orderChanges$ changed\")\r\n }),\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.wfs.updateTableOrder(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 this.subscriptions.push(\r\n this.activeColumnsChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.activeColumnsChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a) === JSON.stringify(b)\r\n ),\r\n switchMap(newState => this.dbs.updateColumnStatus(newState.table, newState.activeColumns)),\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 this.subscriptions.push(\r\n this.search$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe(s => {\r\n this.getListStream$.next({\r\n ...this.getListStream$.value,\r\n searchTerm: s\r\n });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.getListStream$.pipe(\r\n filter(Boolean),\r\n distinctUntilChanged((prev, curr) =>\r\n JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n tap(() => this.$loading.set(true)),\r\n switchMap(request =>\r\n this.dbs.syncAndGetWorkflowSchemaMetadata(request).pipe(\r\n catchError(() => of({ ok: false, status: 500 })),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n )\r\n ).subscribe((res: any) => {\r\n if (res.ok && res.status === 200 && res.body?.statusCode === 200) {\r\n this.wfs.$workflowDbSchema.set(res.body.innerBody.items);\r\n this.$totalItems.set(res.body.innerBody.totalItems)\r\n }\r\n })\r\n );\r\n\r\n\r\n setTimeout(() => {\r\n // Some more code...\r\n })\r\n }\r\n\r\n onTableShowMoreClicked(table: string, e: any) {\r\n\r\n }\r\n\r\n onListReorderUpdate(orderSet: { id: string; orderNum: number }[]): void {\r\n // Normalize ID to numbers\r\n const orderMap = new Map<number, number>(\r\n orderSet.map(x => [Number(x.id), x.orderNum])\r\n );\r\n\r\n // Get current state\r\n const currentTables = this.wfs.$workflowDbSchema();\r\n\r\n // Rebuild reordered state\r\n const reordered = currentTables\r\n .map(table => ({\r\n ...table,\r\n orderNum: orderMap.get(table.id) ?? table.orderNum\r\n }))\r\n .sort((a, b) => (a.orderNum ?? 0) - (b.orderNum ?? 0));\r\n\r\n // Debug output\r\n console.log(\"🌀 Reordered Groups:\", reordered);\r\n\r\n // Commit to signal/store\r\n this.wfs.$workflowDbSchema.set(reordered);\r\n\r\n // Optional: Trigger backend sync\r\n this.orderChanges$.next(reordered);\r\n }\r\n\r\n}\r\n","<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- 🔍 Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- 📦 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- 🌀 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chiếu Cấu trúc Dữ liệu</h2>\r\n <p>\r\n Bảng dưới đây hiển thị tất cả <strong>bảng dữ liệu</strong> và các <strong>cột</strong> tương ứng trong hệ thống. \r\n Bạn có thể chọn các cột này để xây dựng <em>điều kiện động</em>, <em>trình phân giải người duyệt</em>, hoặc <em>biểu thức tính toán</em>.\r\n </p>\r\n <p>\r\n Giao diện này cũng hỗ trợ <strong>AI gợi ý thông minh</strong>, giúp tự động điền và kiểm tra các biểu thức dựa trên cấu trúc cơ sở dữ liệu thực tế.\r\n </p>\r\n <p class=\"note\">Mẹo: Di chuột vào tên cột để xem ví dụ sử dụng trong luồng phê duyệt.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ChangeDetectionStrategy, Component, Injector, runInInjectionContext, effect, Input, EventEmitter, ElementRef, ViewChild, Output, Renderer2, input, isDevMode, signal, computed, Injectable, output, viewChild, ChangeDetectorRef, Directive, Pipe, ViewChildren } from '@angular/core';
3
- import { B as BaseComponent, h as CoreWorkflowService, v as CoreFormDesignService, j as AlertService, w as EnumWorkflowStepType, t as alertOptions, d as EnumFormBaseContolType, M as MultiLanguageService, o as TooltipDirective, T as TranslatePipe, c as BaseEditComponent, D as DialogService, A as AppService, e as CorePageEditComponent, F as FullscreenModalLoaderComponent, x as DomService, y as CoreDropdownComponent, z as CoreChecklistComponent, G as CoreDatePickerComponent, H as CoreFormControlSeekerComponent, J as CoreCurrencyInputComponent, i as EnumCoreFormControlSeekerSourceType, K as EnumActorSourceType, L as CoreParamControlComponent, N as CoreRadioGroupComponent, O as GptService, P as ApplicationHelpService, Q as HotKeysDirective, R as EnumCorePageEditMode, U as CoreFormComponent, V as NavigatorService, W as JsonService } from './ngx-histaff-alpha-ngx-histaff-alpha-DqgsX4gw.mjs';
3
+ import { B as BaseComponent, h as CoreWorkflowService, v as CoreFormDesignService, j as AlertService, w as EnumWorkflowStepType, t as alertOptions, d as EnumFormBaseContolType, M as MultiLanguageService, o as TooltipDirective, T as TranslatePipe, c as BaseEditComponent, D as DialogService, A as AppService, e as CorePageEditComponent, F as FullscreenModalLoaderComponent, x as DomService, y as CoreDropdownComponent, z as CoreChecklistComponent, G as CoreDatePickerComponent, H as CoreFormControlSeekerComponent, J as CoreCurrencyInputComponent, i as EnumCoreFormControlSeekerSourceType, K as EnumActorSourceType, L as CoreParamControlComponent, N as CoreRadioGroupComponent, O as GptService, P as ApplicationHelpService, Q as HotKeysDirective, R as EnumCorePageEditMode, U as CoreFormComponent, V as NavigatorService, W as JsonService } from './ngx-histaff-alpha-ngx-histaff-alpha-C2ABjYNt.mjs';
4
4
  import * as i1$1 from '@angular/router';
5
5
  import { Router, ActivatedRoute, RouterOutlet } from '@angular/router';
6
6
  import { catchError, of, BehaviorSubject, distinctUntilChanged } from 'rxjs';
@@ -8,11 +8,11 @@ import { EnumTranslateKey } from 'alpha-global-constants';
8
8
  import { AsyncPipe, NgTemplateOutlet, LowerCasePipe, NgStyle } from '@angular/common';
9
9
  import * as i1 from '@angular/forms';
10
10
  import { Validators, ReactiveFormsModule, FormGroup, FormControl, FormArray, FormsModule } from '@angular/forms';
11
- import { C as CoreFormDesignComponent } from './ngx-histaff-alpha-core-form-design.component-C6NzbGmO.mjs';
11
+ import { C as CoreFormDesignComponent } from './ngx-histaff-alpha-core-form-design.component-qFKrBe3i.mjs';
12
12
  import { trigger, state, transition, style, animate } from '@angular/animations';
13
13
  import { HttpClient } from '@angular/common/http';
14
- import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-BpJK0aUG.mjs';
15
- import { R as RoutingPreviewPanelComponent } from './ngx-histaff-alpha-live-form.component-B-SFrVaw.mjs';
14
+ import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-73jRhz81.mjs';
15
+ import { R as RoutingPreviewPanelComponent } from './ngx-histaff-alpha-live-form.component-icYEAT-H.mjs';
16
16
 
17
17
  class CurrentHeaderComponent extends BaseComponent {
18
18
  constructor(mls) {
@@ -111,7 +111,9 @@ class CurrentHeaderComponent extends BaseComponent {
111
111
  if (flow) {
112
112
  flow.afInstanceDTO = afInstanceDTO;
113
113
  const templates = this.wfs.emailTemplatesForm.getRawValue();
114
- const { reactSubject, reactBody, fullyApproveSubject, fullyApproveBody, rejectSubject, rejectBody, cancelSubject, cancelBody, terminateSubject, terminateBody, revokeSubject, revokeBody, ccSubject, ccBody } = templates;
114
+ const { submitSubject, submitBody, reactSubject, reactBody, fullyApproveSubject, fullyApproveBody, rejectSubject, rejectBody, cancelSubject, cancelBody, terminateSubject, terminateBody, revokeSubject, revokeBody, ccSubject, ccBody } = templates;
115
+ flow.submitSubject = submitSubject;
116
+ flow.submitBody = submitBody;
115
117
  flow.reactSubject = reactSubject;
116
118
  flow.reactBody = reactBody;
117
119
  flow.fullyApproveSubject = fullyApproveSubject;
@@ -1778,15 +1780,33 @@ class WfNodeComponent extends BaseComponent {
1778
1780
  this.coreWorkflowService.$showStepConfig.set(true);
1779
1781
  }
1780
1782
  */
1783
+ /*
1784
+ openNoneBranchRelatedEditor(): void {
1785
+
1786
+ const steps = this.coreWorkflowService.$currentSteps();
1787
+ console.log("$currentSteps", steps);
1788
+ console.log('🧪 Raw step found:', JSON.stringify(steps.find(s => s.id === this.step.id), null, 2));
1789
+
1790
+
1791
+ const filter = this.coreWorkflowService.$currentSteps().filter(x => x.id === this.step.id);
1792
+ if (filter.length === 1) {
1793
+ const step = filter[0];
1794
+ this.coreWorkflowService.$currentStep.set(step);
1795
+ this.coreWorkflowService.$showStepConfig.set(true);
1796
+ }
1797
+ }
1798
+ */
1781
1799
  openNoneBranchRelatedEditor() {
1782
1800
  const steps = this.coreWorkflowService.$currentSteps();
1783
- console.log('🧪 Raw step found:', JSON.stringify(steps.find(s => s.id === this.step.id), null, 2));
1784
- const filter = this.coreWorkflowService.$currentSteps().filter(x => x.id === this.step.id);
1785
- if (filter.length === 1) {
1786
- const step = filter[0];
1787
- this.coreWorkflowService.$currentStep.set(step);
1801
+ const found = this.coreWorkflowService.findStepRecursive(steps, this.step.id);
1802
+ console.log("🧪 Step found:", found);
1803
+ if (found) {
1804
+ this.coreWorkflowService.$currentStep.set(found);
1788
1805
  this.coreWorkflowService.$showStepConfig.set(true);
1789
1806
  }
1807
+ else {
1808
+ console.warn(`Step with id=${this.step.id} not found in workflow tree`);
1809
+ }
1790
1810
  }
1791
1811
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: WfNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1792
1812
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: WfNodeComponent, isStandalone: true, selector: "wf-node", inputs: { branchId: "branchId", step: "step", index: "index", branchPriority: "branchPriority", stepGroup: "stepGroup", conditionalBranches: "conditionalBranches", isRootLevelStepGroup: "isRootLevelStepGroup", grandParentSteps: "grandParentSteps", isInFallbackBranch: "isInFallbackBranch" }, viewQueries: [{ propertyName: "branchHeader", first: true, predicate: ["branchHeader"], descendants: true }, { propertyName: "branchName", first: true, predicate: ["branchName"], descendants: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "branchGroupRef", first: true, predicate: ["branchGroup"], descendants: true }, { propertyName: "topBridgeLineRef", first: true, predicate: ["topBridgeLine"], descendants: true }, { propertyName: "bottomBridgeLineRef", first: true, predicate: ["bottomBridgeLine"], descendants: true }, { propertyName: "branchColumnRefs", predicate: ["branchColumn"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@switch (step.type) {\r\n\r\n @case (enumType.ConditionalBranch) {\r\n <div class=\"wf-branch-group-container\">\r\n <div \r\n class=\"branch-group\" \r\n #branchGroup \r\n bridgeLine\r\n (bridgeLinesAdjusted)=\"adjustBridgeLines()\"\r\n >\r\n <!-- \uD83D\uDD39 Top Bridge Line -->\r\n <div class=\"horizontal-bridge-line\" #topBridgeLine></div>\r\n\r\n <div class=\"add-branch-inline\" [appTooltip]=\"'All conditional branches are checked from Left to Right in a strict order'\" [showAnyway]=\"true\">\r\n <button class=\"add-branch-btn\" (click)=\"coreWorkflowService.addBranchToStep(step.id)\">\r\n \uFF0B Add New Branch\r\n </button>\r\n </div>\r\n\r\n \r\n @for (branch of step.branches; track $index; let j = $index) {\r\n <div class=\"branch-column\" #branchColumn>\r\n <div class=\"branch-column-inner\">\r\n \r\n @for (bstep of branch.steps; track $index; let k = $index) {\r\n <wf-node\r\n [branchId]=\"branch.id\"\r\n [branchPriority]=\"branch.priority\"\r\n [step]=\"bstep\"\r\n [conditionalBranches]=\"step.branches || []\"\r\n [stepGroup]=\"branch.steps\"\r\n [grandParentSteps]=\"stepGroup\"\r\n [index]=\"k\"\r\n [isInFallbackBranch]=\"!!branch.isFallback\"\r\n ></wf-node>\r\n }\r\n \r\n </div>\r\n \r\n <div class=\"vertical-bridge-line\"></div>\r\n </div>\r\n }\r\n \r\n <!-- \uD83D\uDD39 Bottom Bridge Line -->\r\n <div class=\"horizontal-bridge-line\" #bottomBridgeLine></div>\r\n </div>\r\n </div>\r\n }\r\n \r\n @case (enumType.BranchCard) {\r\n <div class=\"wf-step-container wf-branch-card-container workflow-box\">\r\n <div class=\"step-wrapper branch-card-wrapper\" [class.fallback]=\"!!isInFallbackBranch\">\r\n <div class=\"arrow-down-container\">\r\n <div class=\"arrow-down\"></div>\r\n </div>\r\n \r\n <div class=\"step-header branch-header\" [class.edit-mode]=\"stepNameEditMode\" #branchHeader>\r\n @if (stepNameEditMode) {\r\n <div class=\"input-wrapper\">\r\n <input class=\"form-control\" \r\n (blur)=\"onInputBlur()\" \r\n [(ngModel)]=\"step.name\"\r\n (ngModelChange)=\"onStepNameChanged($event)\" \r\n #input>\r\n </div>\r\n } @else {\r\n <div class=\"step-name-wrapper branch-name-wrapper\">\r\n <div\r\n class=\"step-name branch-name\"\r\n [class.pointer]=\"!isInFallbackBranch\"\r\n (click)=\"switchToNameEditMode()\"\r\n #branchName>\r\n {{ step.name }}\r\n </div>\r\n \r\n @if (!!isInFallbackBranch) {\r\n <i class=\"ti-info-alt\"\r\n [appTooltip]=\"'This branch is created by default and will only be activated if none of the other branches can be executed.'\"\r\n [showAnyway]=\"true\" [position]=\"'above'\"></i>\r\n }\r\n </div>\r\n \r\n <div class=\"branch-priority\">Priority {{ branchPriority }}</div>\r\n <div class=\"step-delete branch-delete pointer\" (click)=\"onDeleteBranch(branchId)\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"step-set-config branch-set-condition\" [class.pointer]=\"!isInFallbackBranch\">\r\n @if (!!isInFallbackBranch) {\r\n <div class=\"branch-subtext fallback\"\r\n [appTooltip]=\"'If other branches are not met, the alternative branch will be executed'\"\r\n [showAnyway]=\"true\" [position]=\"'above'\">\r\n If other branches are not met, the alternative branch will be executed\r\n </div>\r\n } @else {\r\n <div class=\"step-subtext branch-subtext\" (click)=\"openConditionEditor()\">Set conditions</div>\r\n <div><i class=\"feather-chevron-right\"></i></div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- The handler node applies to the situation where no approval is required, but a member needs to process something:\r\n\uD83D\uDCB0 Financial payment,\r\n\uD83D\uDCCE Stamping,\r\n\uD83D\uDDC2 Document filing, and so on. -->\r\n \r\n @default() {\r\n <div class=\"wf-step-container workflow-box {{ step.type.toLowerCase() }}\">\r\n\r\n <div class=\"step-wrapper\">\r\n \r\n <div class=\"step-header\" [class.edit-mode]=\"stepNameEditMode\">\r\n @if (stepNameEditMode) {\r\n <div class=\"input-wrapper\">\r\n <input class=\"form-control\" \r\n (blur)=\"onInputBlur()\" \r\n [(ngModel)]=\"step.name\" \r\n (ngModelChange)=\"onStepNameChanged($event)\" \r\n #input>\r\n </div>\r\n } @else {\r\n <div class=\"step-name-wrapper\">\r\n <div\r\n class=\"step-name pointer\"\r\n (click)=\"switchToNameEditMode()\"\r\n #stepName>\r\n {{ step.name }}\r\n </div>\r\n @if (step.type === enumType.Handle) {\r\n <i class=\"ti-info-alt pointer\"\r\n [appTooltip]=\"'The handler node applies to the situation where no approval is required, but a member needs to process something (Financial payment, Stamping, Document filing, and so on.)'\"\r\n [showAnyway]=\"true\" [position]=\"'above'\"></i>\r\n }\r\n </div>\r\n \r\n <div class=\"step-delete pointer\" (click)=\"onDeleteStep()\" [class.d-none]=\"step.type === enumType.Submit || step.type === enumType.End\">\r\n <i class=\"feather-x\" ></i>\r\n </div>\r\n }\r\n </div>\r\n \r\n <div class=\"step-set-config pointer\" (click)=\"openNoneBranchRelatedEditor()\">\r\n <div class=\"step-subtext pointer\" [class.configurated]=\"!!step.config\" [appTooltip]=\"step | wfNodeLabel\">{{ step | wfNodeLabel }}</div>\r\n <div><i class=\"feather-chevron-right\"></i></div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n}\r\n \r\n@if (step.type !== enumType.End) {\r\n <wf-bottom-v-insert\r\n [currentContext]=\"{ branchId: step.branchId, index: index + 1 }\"\r\n [currentStep]=\"step\"\r\n ></wf-bottom-v-insert>\r\n}\r\n ", styles: [".wf-workflow-canvas-container{--standard-connector-height: 90px;--print-area-scale: 1;padding-top:50px;padding-bottom:50px;background-color:#f2f3f5;position:relative;overflow:auto}.wf-workflow-canvas-container .zoom-tools{display:block;position:absolute;left:15px;z-index:1}.wf-workflow-canvas-container .zoom-tools .tools-wrapper{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;background-color:#f9fafb;box-shadow:0 1px 3px #0000001a}.wf-workflow-canvas-container .zoom-tools .tools-wrapper>*{cursor:pointer}.wf-workflow-canvas-container .zoom-tools .tools-wrapper .zoom-btn{background:none;border:none;padding:6px;cursor:pointer;transition:background-color .2s}.wf-workflow-canvas-container .zoom-tools .tools-wrapper .zoom-btn:hover{background-color:#e5e7eb}.wf-workflow-canvas-container .zoom-tools .tools-wrapper .zoom-label{background:none;border:none;padding:6px 8px;cursor:default}.wf-workflow-canvas-container .zoom-tools .tools-wrapper .universe-icon{font-size:16px;display:inline-flex;align-items:center;justify-content:center}.wf-workflow-canvas-container .scroll-container{display:block;width:var(--width);height:var(--height);overflow-x:auto}.wf-workflow-canvas-container .canvas{display:flex;flex-direction:column;align-items:center;position:relative}.wf-workflow-canvas-container .canvas.is-dragging *{-webkit-user-select:none;user-select:none}.wf-workflow-canvas-container .print-area{transform:scale(var(--print-area-scale));transition:.2s linear}.wf-workflow-canvas-container .step{text-align:center;position:relative}.wf-workflow-canvas-container .canvas-top-tool{position:absolute;display:block;top:15px;left:15px;box-shadow:0 0 4px #0000000d}.wf-workflow-canvas-container .canvas-top-tool button{border-radius:0;height:30px;font-size:13px}.workflow-box{width:220px;min-height:85px;max-height:100px;padding:0 4px 4px;box-shadow:0 0 4px #0000000d}.workflow-box.submit,.workflow-box.end{background-color:#a9b4cd}.workflow-box.approval{background-color:#f80}.workflow-box.cc{background-color:#3370ff}.workflow-box.handle{background-color:#935af6}.connector{font-size:24px;color:#888}.plus-btn{font-size:18px;background:#fff;border:1px solid #ccc;border-radius:9999px;width:28px;height:28px;cursor:pointer}.insert-menu{background:#fff;border:1px solid #ddd;border-radius:6px;padding:8px;margin-top:6px;box-shadow:0 2px 8px #0000001a;display:flex;flex-direction:column;gap:6px;z-index:10}.insert-menu div{cursor:pointer;font-size:14px;padding:2px 6px}.insert-menu .cancel{color:red}.branch-column{position:relative}.branch-column .branch-column-inner{width:100%;display:flex;flex-direction:column;align-items:center}.wf-branch-group-container,.wf-branch-group-container .branch-group{position:relative}.wf-branch-group-container .branch-group .branch-column{display:table-cell;min-width:220px;vertical-align:top;padding:0 12px}.wf-branch-group-container .branch-group .branch-column .vertical-bridge-line{position:absolute;width:2px;background-color:#d9d9d9;z-index:2;pointer-events:none}.wf-branch-group-container .branch-group .horizontal-bridge-line{position:absolute;height:2px;background-color:#d9d9d9;pointer-events:none;z-index:1}.wf-branch-group-container:after{content:\"\";display:block;position:absolute;height:2px;width:calc(100% - 244px);left:122px;bottom:102px}.branch-title{font-weight:700;font-size:14px;margin-bottom:8px}.branch-group-header{display:flex;justify-content:center;margin:12px 0}.add-branch-btn{position:absolute;top:0;width:175px;left:calc(50% - 87.5px);z-index:2;background:#fff;color:#0f172a;border:1px solid #ccc;padding:4px 12px;border-radius:9999px;font-weight:500;cursor:pointer;box-shadow:0 2px 4px #0000000f;text-wrap:nowrap}.workflow-box.submit{background-color:#e0f7fa;border-left:4px solid #00bcd4}.workflow-box.end{background-color:#ede7f6;border-left:4px solid #673ab7}.box.special{font-style:italic;opacity:.9}.bottom-v-container{min-height:65px;width:220px}.wf-bottom-v-insert-container{position:relative;display:flex;flex-direction:column;align-items:center;height:var(--standard-connector-height);width:100%;margin:0}.wf-bottom-v-insert-container .vertical-line{position:absolute;top:0;height:100%;width:2px;background-color:#d9d9d9;z-index:0}.wf-bottom-v-insert-container .plus-container{display:block;position:absolute;border-radius:50%;top:calc(var(--standard-connector-height) / 2 - 16px)}.wf-bottom-v-insert-container .plus-btn{width:32px;height:32px;border-radius:50%;border:none;background:#fff;color:#3b82f6;font-size:20px;box-shadow:.4rem 0 2rem #0000002e;cursor:pointer;display:flex;align-items:center;justify-content:center}.wf-bottom-v-insert-container .plus-btn:hover{background:#f0f8ff;box-shadow:0 0 0 4px #3b82f633}.wf-bottom-v-insert-container.shorter{height:calc(var(--standard-connector-height) - 15px)}.wf-bottom-v-insert-container.shorter .plus-container{display:block;position:absolute;top:calc((var(--standard-connector-height) - 18px) / 2 - 16px)}.wf-bottom-v-insert-container.insert-context .plus-container{outline:#2eb795 solid 2px}.add-branch-inline{position:relative;height:35px;margin-bottom:calc(var(--standard-connector-height) - 17.5px)}.arrow-down-container{display:block;position:absolute;z-index:1;bottom:0}.arrow-down-container .arrow-down{margin-top:5px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid #d9d9d9}.branch-card-wrapper{position:relative}.branch-card-wrapper .arrow-down-container{top:-12px;left:calc(50% - 5px)}.wf-step-container .step-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:43px;font-size:12px;border-bottom:1px solid #f6f6f7}.wf-step-container .step-header .input-wrapper{padding-top:4px}.wf-step-container .step-header .step-name-wrapper{display:flex;align-items:center;justify-content:flex-start;padding-right:8px}.wf-step-container .step-header .step-name-wrapper .step-name{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:140px;padding-left:4px}.wf-step-container .step-header .step-name-wrapper i{margin-left:2px}.wf-step-container .step-header .step-delete{color:gray;display:none}.wf-step-container .step-header .step-delete i{font-size:24px}.wf-step-container .step-header:hover .step-name-wrapper:after{content:\"\\e95a\";font-family:feather}.wf-step-container .step-header:hover .branch-priority{display:none}.wf-step-container .step-header:hover .step-delete,.wf-step-container .step-header.edit-mode{display:block}.wf-step-container .step-set-config{display:flex;align-items:center;justify-content:space-between;min-height:38px;max-height:56px;padding:7px 4px;font-size:14px;background-color:#fff;color:gray}.wf-step-container .step-set-config .step-subtext{width:100%;text-align:left}.wf-step-container .step-set-config .step-subtext.configurated{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:pre-line;word-break:break-word;line-height:1.5em;max-height:3em;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.wf-step-container.wf-branch-card-container{background-color:#fff}.wf-step-container.wf-branch-card-container .branch-header{color:#2eb795;border-bottom:1px solid #f6f6f7}.wf-step-container.wf-branch-card-container .branch-header:before{content:\"\";display:block;position:absolute;height:var(--standard-connector-height);width:2px;background-color:#d9d9d9;left:50%;top:calc(var(--standard-connector-height) * -1)}.wf-step-container.wf-branch-card-container .branch-set-condition{display:flex;align-items:center;justify-content:space-between;min-height:38px;max-height:56px;color:#3e4759;padding:7px 4px;font-size:14px}.wf-step-container.wf-branch-card-container .branch-set-condition .branch-subtext{width:100%;text-align:left}.wf-step-container.wf-branch-card-container .branch-set-condition .branch-subtext.fallback{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:pre-line;word-break:break-word;line-height:1.5em;max-height:3em;overflow:hidden;cursor:default}.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-header,.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-set-condition{color:gray}.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-header .branch-priority{padding-right:4px}.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-header:hover .branch-priority{display:block}.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-header:hover .branch-delete{display:none}.wf-step-container.wf-branch-card-container .branch-card-wrapper.fallback .branch-header:hover .branch-name-wrapper:after{content:\"\"}.steps-preview{position:fixed;width:390px;height:100vh;background-color:#fff;top:0;left:-390px;overflow-y:auto;transition:left .2s ease-out}.steps-preview.shown{left:0}\n", ""], dependencies: [{ kind: "component", type: WfNodeComponent, selector: "wf-node", inputs: ["branchId", "step", "index", "branchPriority", "stepGroup", "conditionalBranches", "isRootLevelStepGroup", "grandParentSteps", "isInFallbackBranch"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: WfNodeLabelPipe, name: "wfNodeLabel" }, { kind: "directive", type: BridgeLineDirective, selector: "[bridgeLine]", outputs: ["bridgeLinesAdjusted"] }, { kind: "component", type: WfBottomVInsertComponent, selector: "wf-bottom-v-insert", inputs: ["currentContext", "currentStep"], outputs: ["insertStep"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
@@ -1956,6 +1976,37 @@ class WfWorkflowCanvasComponent extends BaseComponent {
1956
1976
  }
1957
1977
  return undefined;
1958
1978
  }
1979
+ // safeInsertStep(
1980
+ // branchId: string | null,
1981
+ // index: number,
1982
+ // newStep: IStep
1983
+ // ): void {
1984
+ // if (branchId === null || branchId === ROOT_BRANCH_ID) {
1985
+ // this.$steps.update(steps => {
1986
+ // const copy = [...steps];
1987
+ // copy.splice(index, 0, newStep);
1988
+ // return copy;
1989
+ // })
1990
+ // return;
1991
+ // }
1992
+ // const branch = this.findBranchById(branchId);
1993
+ // if (!branch) {
1994
+ // console.warn(`❗ Cannot insert: Branch with ID "${branchId}" not found.`);
1995
+ // return;
1996
+ // }
1997
+ // branch.steps.splice(index, 0, newStep);
1998
+ // // ✅ now update $steps based on branch changes
1999
+ // this.$steps.update(steps => {
2000
+ // const copy = structuredClone(steps); // deep clone of old tree
2001
+ // const targetBranch = this.findBranchById(branchId, copy);
2002
+ // if (!targetBranch) {
2003
+ // console.warn(`❗ Cannot insert: Branch with ID "${branchId}" not found.`);
2004
+ // return steps;
2005
+ // }
2006
+ // targetBranch.steps.splice(index, 0, newStep); // mutate clone only
2007
+ // return copy; // return fresh tree
2008
+ // });
2009
+ // }
1959
2010
  safeInsertStep(branchId, index, newStep) {
1960
2011
  if (branchId === null || branchId === ROOT_BRANCH_ID) {
1961
2012
  this.$steps.update(steps => {
@@ -1965,12 +2016,18 @@ class WfWorkflowCanvasComponent extends BaseComponent {
1965
2016
  });
1966
2017
  return;
1967
2018
  }
1968
- const branch = this.findBranchById(branchId);
1969
- if (!branch) {
1970
- console.warn(`❗ Cannot insert: Branch with ID "${branchId}" not found.`);
1971
- return;
1972
- }
1973
- branch.steps.splice(index, 0, newStep);
2019
+ this.$steps.update(steps => {
2020
+ const copy = structuredClone(steps);
2021
+ const targetBranch = this.findBranchById(branchId, copy);
2022
+ if (!targetBranch) {
2023
+ console.warn(`❗ Cannot insert: Branch with ID "${branchId}" not found.`);
2024
+ return steps;
2025
+ }
2026
+ const safeIndex = Math.min(Math.max(index, 0), targetBranch.steps.length);
2027
+ const stepToInsert = structuredClone(newStep);
2028
+ targetBranch.steps.splice(safeIndex, 0, stepToInsert);
2029
+ return copy;
2030
+ });
1974
2031
  }
1975
2032
  insertStep(event) {
1976
2033
  const { type, index, branchId } = event;
@@ -2408,4 +2465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
2408
2465
  }], ctorParameters: () => [] });
2409
2466
 
2410
2467
  export { DesignWrapperComponent };
2411
- //# sourceMappingURL=ngx-histaff-alpha-design-wrapper.component-HgqlxW_9.mjs.map
2468
+ //# sourceMappingURL=ngx-histaff-alpha-design-wrapper.component-BWbrPB5S.mjs.map