ngx-histaff-alpha 5.9.7 → 5.9.9

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 (51) hide show
  1. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-98XdRVOo.mjs → ngx-histaff-alpha-ai-hint-for-table.component-DJou-dbD.mjs} +3 -3
  2. package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-98XdRVOo.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-DJou-dbD.mjs.map} +1 -1
  3. package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DdKhEOxl.mjs → ngx-histaff-alpha-core-form-design.component-XvkMxYKX.mjs} +8 -8
  4. package/fesm2022/ngx-histaff-alpha-core-form-design.component-XvkMxYKX.mjs.map +1 -0
  5. package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-g8yVJ890.mjs → ngx-histaff-alpha-core-sticker-collection.component-B8YmSEoB.mjs} +3 -3
  6. package/fesm2022/{ngx-histaff-alpha-core-sticker-collection.component-g8yVJ890.mjs.map → ngx-histaff-alpha-core-sticker-collection.component-B8YmSEoB.mjs.map} +1 -1
  7. package/fesm2022/ngx-histaff-alpha-core-template-editor.component-_BGMfd0v.mjs +165 -0
  8. package/fesm2022/ngx-histaff-alpha-core-template-editor.component-_BGMfd0v.mjs.map +1 -0
  9. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Bn5zSGbf.mjs → ngx-histaff-alpha-core-toast-loading.component-vDd15vTt.mjs} +2 -2
  10. package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Bn5zSGbf.mjs.map → ngx-histaff-alpha-core-toast-loading.component-vDd15vTt.mjs.map} +1 -1
  11. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-2abUPaGQ.mjs → ngx-histaff-alpha-core-workflow-consume.component-DOC0gxvF.mjs} +2 -2
  12. package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-2abUPaGQ.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-DOC0gxvF.mjs.map} +1 -1
  13. package/fesm2022/{ngx-histaff-alpha-db-settings.component-Bs5Y-dKb.mjs → ngx-histaff-alpha-db-settings.component-osYYD2VZ.mjs} +5 -5
  14. package/fesm2022/{ngx-histaff-alpha-db-settings.component-Bs5Y-dKb.mjs.map → ngx-histaff-alpha-db-settings.component-osYYD2VZ.mjs.map} +1 -1
  15. package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-BeNUR6gK.mjs → ngx-histaff-alpha-design-wrapper.component-Doqa5ktj.mjs} +5 -5
  16. package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-BeNUR6gK.mjs.map → ngx-histaff-alpha-design-wrapper.component-Doqa5ktj.mjs.map} +1 -1
  17. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-DpjX7k37.mjs → ngx-histaff-alpha-design-wrapper.route-FELy6p-G.mjs} +5 -5
  18. package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-DpjX7k37.mjs.map → ngx-histaff-alpha-design-wrapper.route-FELy6p-G.mjs.map} +1 -1
  19. package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BSa0awrW.mjs → ngx-histaff-alpha-form-array-props.component-CfQR3S5b.mjs} +3 -3
  20. package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BSa0awrW.mjs.map → ngx-histaff-alpha-form-array-props.component-CfQR3S5b.mjs.map} +1 -1
  21. package/fesm2022/{ngx-histaff-alpha-live-form.component-tNHO021s.mjs → ngx-histaff-alpha-live-form.component-CxHOd02D.mjs} +2 -2
  22. package/fesm2022/{ngx-histaff-alpha-live-form.component-tNHO021s.mjs.map → ngx-histaff-alpha-live-form.component-CxHOd02D.mjs.map} +1 -1
  23. package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-B4jY1IDY.mjs → ngx-histaff-alpha-ngx-histaff-alpha-CgCAObWj.mjs} +697 -42
  24. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-CgCAObWj.mjs.map +1 -0
  25. package/fesm2022/{ngx-histaff-alpha-simple-chat.component-4gnuNHNQ.mjs → ngx-histaff-alpha-simple-chat.component-CDCKBrkZ.mjs} +2 -2
  26. package/fesm2022/{ngx-histaff-alpha-simple-chat.component-4gnuNHNQ.mjs.map → ngx-histaff-alpha-simple-chat.component-CDCKBrkZ.mjs.map} +1 -1
  27. package/fesm2022/ngx-histaff-alpha-template-list.component-BFTwxU2H.mjs +96 -0
  28. package/fesm2022/ngx-histaff-alpha-template-list.component-BFTwxU2H.mjs.map +1 -0
  29. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BXMxPjuc.mjs → ngx-histaff-alpha-tracker-studio.component-DnkbQFFW.mjs} +2 -2
  30. package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BXMxPjuc.mjs.map → ngx-histaff-alpha-tracker-studio.component-DnkbQFFW.mjs.map} +1 -1
  31. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Q4uvQoJO.mjs → ngx-histaff-alpha-wf-form-assign.component-Do8vO6MV.mjs} +2 -2
  32. package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Q4uvQoJO.mjs.map → ngx-histaff-alpha-wf-form-assign.component-Do8vO6MV.mjs.map} +1 -1
  33. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-D9RhPDwJ.mjs → ngx-histaff-alpha-wf-instance-status.component-BqWwA5pQ.mjs} +2 -2
  34. package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-D9RhPDwJ.mjs.map → ngx-histaff-alpha-wf-instance-status.component-BqWwA5pQ.mjs.map} +1 -1
  35. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-BLXwhETi.mjs → ngx-histaff-alpha-wf-instance-step-react.component-3XR3zc8T.mjs} +3 -3
  36. package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-BLXwhETi.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-3XR3zc8T.mjs.map} +1 -1
  37. package/fesm2022/ngx-histaff-alpha.mjs +1 -1
  38. package/lib/app/enum/EnumFormBaseContolType.d.ts +2 -1
  39. package/lib/app/libraries/core-doc-gen/core-template-editor/core-template-editor.component.d.ts +24 -0
  40. package/lib/app/libraries/core-doc-gen/doc-gen.routes.d.ts +2 -0
  41. package/lib/app/libraries/core-doc-gen/template-list/template-list.component.d.ts +13 -0
  42. package/lib/app/libraries/core-docgen-toolbar/core-docgen-toolbar.component.d.ts +45 -0
  43. package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +5 -1
  44. package/lib/app/libraries/core-form-design/core-form-design.component.d.ts +1 -1
  45. package/lib/app/libraries/core-form-design/core-form-group-editor.component.d.ts +1 -1
  46. package/lib/app/libraries/core-liquid-wysiwyg/core-liquid-wysiwyg.component.d.ts +57 -0
  47. package/lib/app/libraries/core-workflow-builder/core-workflow-list/core-workflow-list.component.d.ts +1 -0
  48. package/package.json +1 -1
  49. package/public-api.d.ts +3 -0
  50. package/fesm2022/ngx-histaff-alpha-core-form-design.component-DdKhEOxl.mjs.map +0 -1
  51. package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-B4jY1IDY.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Injectable, Pipe, Directive, ViewChild, forwardRef, HostListener, inject, Input, isDevMode, Inject, signal, InjectionToken, computed, effect, EventEmitter, Output, ViewEncapsulation, ChangeDetectorRef, input, ChangeDetectionStrategy, ViewChildren, ViewContainerRef, viewChild, viewChildren, TemplateRef, NgModule, output, DestroyRef, ElementRef, Renderer2 } from '@angular/core';
2
+ import { Component, Injectable, Pipe, Directive, ViewChild, forwardRef, HostListener, inject, Input, isDevMode, Inject, signal, InjectionToken, computed, effect, EventEmitter, Output, ViewEncapsulation, ChangeDetectorRef, input, ChangeDetectionStrategy, ViewChildren, ViewContainerRef, viewChild, viewChildren, output, TemplateRef, NgModule, DestroyRef, ElementRef, Renderer2 } from '@angular/core';
3
3
  import * as i1 from '@angular/platform-browser';
4
4
  import { BehaviorSubject, Subject, filter, of, Observable, zip, catchError, tap as tap$1, throwError, take, switchMap, finalize as finalize$1, map as map$1, interval, concat, buffer, debounceTime, fromEvent, skip, distinctUntilChanged, Subscription, takeUntil } from 'rxjs';
5
5
  import { api, EnumTranslateKey } from 'alpha-global-constants';
@@ -1782,6 +1782,7 @@ var EnumFormBaseContolType;
1782
1782
  EnumFormBaseContolType["ORG_PARAM_DROPDOWN"] = "ORG_PARAM_DROPDOWN";
1783
1783
  EnumFormBaseContolType["REPORT_FORMAT"] = "REPORT_FORMAT";
1784
1784
  EnumFormBaseContolType["TOPICPICKER"] = "TOPICPICKER";
1785
+ EnumFormBaseContolType["LIQUID_WYSIWYG"] = "LIQUID_WYSIWYG";
1785
1786
  })(EnumFormBaseContolType || (EnumFormBaseContolType = {}));
1786
1787
 
1787
1788
  class HubConnectionService {
@@ -9815,7 +9816,7 @@ class CoreFormControlBaseComponent {
9815
9816
  {
9816
9817
  provide: NG_VALUE_ACCESSOR,
9817
9818
  multi: true,
9818
- useExisting: CoreFormControlBaseComponent
9819
+ useExisting: forwardRef(() => CoreFormControlBaseComponent),
9819
9820
  }
9820
9821
  ], ngImport: i0, template: "<p>core-form-control-base works!</p>\r\n", styles: [""] }); }
9821
9822
  }
@@ -9825,7 +9826,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
9825
9826
  {
9826
9827
  provide: NG_VALUE_ACCESSOR,
9827
9828
  multi: true,
9828
- useExisting: CoreFormControlBaseComponent
9829
+ useExisting: forwardRef(() => CoreFormControlBaseComponent),
9829
9830
  }
9830
9831
  ], standalone: false, template: "<p>core-form-control-base works!</p>\r\n" }]
9831
9832
  }], ctorParameters: () => [] });
@@ -10353,7 +10354,7 @@ class ItemComponent {
10353
10354
  this.subscriptions.map(x => x.unsubscribe());
10354
10355
  }
10355
10356
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ItemComponent, deps: [{ token: i1$2.Router }, { token: NavigatorService }, { token: MultiLanguageService }, { token: LayoutService }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
10356
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-path]=\"item.tree$Path\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"caption\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
10357
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: ItemComponent, isStandalone: true, selector: "app-item", inputs: { item: "item", level: "level" }, viewQueries: [{ propertyName: "me", first: true, predicate: ["me"], descendants: true }, { propertyName: "children", first: true, predicate: ["children"], descendants: true }, { propertyName: "link", first: true, predicate: ["link"], descendants: true }, { propertyName: "subArrow", first: true, predicate: ["subArrow"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-path]=\"item.tree$Path\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"caption\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\" [appTooltip]=\"!wideMode && level===1 ? caption : ''\" [position]=\"'right'\" [showAnyway]=\"!wideMode && level===1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"], dependencies: [{ kind: "component", type: ItemComponent, selector: "app-item", inputs: ["item", "level"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }], encapsulation: i0.ViewEncapsulation.None }); }
10357
10358
  }
10358
10359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ItemComponent, decorators: [{
10359
10360
  type: Component,
@@ -10362,7 +10363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
10362
10363
  RouterModule,
10363
10364
  TooltipDirective,
10364
10365
  StringHtmlPipe,
10365
- ], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-path]=\"item.tree$Path\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"caption\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"] }]
10366
+ ], encapsulation: ViewEncapsulation.None, template: "<li #me [id]=\"'main-menu-' + item.id\" class=\"parent\" [attr.data-path]=\"item.tree$Path\" [attr.data-level]=\"level\" [class.reduced]=\"leftbarReduced\"\r\n [class.active]=\"!wideMode && active\" [class.expanded]=\"item.tree$Expanded\"\r\n [class.highlighted]=\"item.tree$Highlighted\" [class.li-thin-mode]=\"!wideMode\" [class.menu-item]=\"!wideMode\"\r\n [appTooltip]=\"caption\" [position]=\"'right'\" [ngStyle]=\"{\r\n marginTop: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : '',\r\n marginBottom: (level===1 && !wideMode) ? navigatorService.iconGutterY + 'px' : ''\r\n }\">\r\n <div class=\"menu-item-wrapper\" [attr.data-level]=\"level\" (click)=\"onClick($event, item)\" [class.active]=\"active\"\r\n [class.module-thin-mode]=\"!wideMode && level===1\" [class.thin-branch]=\"!wideMode && level > 1\" [appTooltip]=\"!wideMode && level===1 ? caption : ''\" [position]=\"'right'\" [showAnyway]=\"!wideMode && level===1\">\r\n\r\n @if (wideMode) {\r\n @if (!!!leftbarReduced) {\r\n @if (!!hasChildren) {\r\n <span [innerHtml]=\"subMenuSvgIconRight | stringHtml\" class=\"sub-icon-right\"></span>\r\n }\r\n }\r\n }\r\n\r\n @if (!!item.iconSvg) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"item.iconSvg | stringHtml\"></span></i>\r\n } @else if (!!item.iconClass) {\r\n <!-- <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i> -->\r\n <i [attr.data-level]=\"level\" [class]=\"item.iconClass + ' module-icon'\"\r\n [appTooltip]=\"wideMode ? caption : undefined\" [ngStyle]=\"{\r\n left: wideMode ? '13px' : 'unset'\r\n }\"></i>\r\n } @else if (!item.parent) {\r\n <!-- <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n (click)=\"onModuleIconClick($event, item);false\" [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i> -->\r\n <i [attr.data-level]=\"level\" class=\"'module-icon'\" [appTooltip]=\"wideMode ? caption : undefined\"\r\n [ngStyle]=\"{\r\n position: 'absolute',\r\n left: wideMode ? '13px' : 'unset'\r\n }\"><span [innerHtml]=\"defaultSvg | stringHtml\"></span></i>\r\n }\r\n\r\n @if (!wideMode || (!leftbarReduced && hasChildren)) {\r\n <a #link [attr.data-level]=\"level\" class=\"has-submenu\" [appTooltip]=\"level > 1 ? caption : undefined\"\r\n [class.thin-mode]=\"!wideMode\">\r\n\r\n \r\n <!-- <ng-container (click)=\"subArrowClicked($event, item);false\">\r\n <span #subArrow *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\"\r\n [class]=\"'img-span plus level' + level\">\r\n <img [src]=\"item.pictureBase64 || item.pictureUri\" *ngIf=\"!!item.pictureBase64\">\r\n </span>\r\n <span #subArrow *ngIf=\"!!!item.pictureBase64 && !!!item.pictureUri\"\r\n [class]=\"'plus level' + level\"></span>\r\n </ng-container> -->\r\n\r\n <img *ngIf=\"(!!item.pictureBase64 || !!item.pictureUri)\" [src]=\"item.pictureBase64 || item.pictureUri\">\r\n\r\n {{ caption }}\r\n\r\n </a>\r\n } @else {\r\n <!-- <a [attr.data-level]=\"level\" [routerLink]=\"item.url\" (click)=\"onClick($event, item)\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a> -->\r\n <a [attr.data-level]=\"level\" [routerLink]=\"item.url\"\r\n [class.thin-mode]=\"!wideMode\" [appTooltip]=\"wideMode ? caption : undefined\">\r\n {{ caption }}\r\n </a>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!wideMode && !!hasChildren && !!item.tree$Children!.length && !!!leftbarReduced) {\r\n <ul #children class=\"d-none\" [class.ul-thin-mode]=\"!wideMode\" [ngStyle]=\"{\r\n padding: 0,\r\n }\" [class.submenu]=\"!wideMode\">\r\n <div>\r\n @for (child of item.tree$Children; track $index) {\r\n <app-item [item]=\"child\" [level]=\"level+1\" (clicked)=\"onClick($event, child)\"></app-item>\r\n }\r\n </div>\r\n </ul>\r\n }\r\n\r\n</li>", styles: [".navigator-container{--active-item-color: #DD5F2A;--active-item-background-color: white;--active-item-border-color: white;--line-height: 16px;--level-gap: 10px;--thin-mode-padding: 8px;--thin-mode-width: 66px;--wide-mode-width: 280px;--left-bar-current-width: 280px;--bg-color: #F1F1F1;--color: black;--hover-bg-color: #E1E3E5;--hover-color: black;--icon-border-radius: 0px;--icon-gutter-y: 8px;font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.navigator-container .d-none{display:none}.navigator-container svg{width:24px;height:24px}.navigator-container .module-thin-mode{display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;margin-bottom:5px!important;height:50px!important}.navigator-container .module-thin-mode svg{color:var(--color)}.navigator-container .module-thin-mode i{color:var(--color)!important}.navigator-container .li-thin-mode[data-level=\"1\"]{height:50px!important;margin-left:0!important;margin-right:0!important}.navigator-container .li-thin-mode .thin-branch{overflow:hidden}.navigator-container .li-thin-mode .thin-branch a{padding-left:15px;padding-right:15px;overflow:hidden;max-width:calc(100% - var(--size-layout-block-cell-spacing) * 2);text-overflow:ellipsis}.navigator-container .li-thin-mode .thin-branch:hover{background:#e1e3e5!important}.navigator-container .li-thin-mode:hover[data-level=\"1\"]>ul.ul-thin-mode{transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode:hover:not([data-level=\"1\"])>ul.ul-thin-mode{transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container .li-thin-mode.active .module-thin-mode{width:50px!important;transform:translate(var(--thin-mode-padding))}.navigator-container .li-thin-mode.active .module-thin-mode i{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active .module-thin-mode svg{color:var(--active-item-color)!important}.navigator-container .li-thin-mode.active>ul.ul-thin-mode{background-color:#fff;opacity:1;height:unset;overflow-y:auto;box-shadow:.4rem 0 2rem #0000002e}.navigator-container .li-thin-mode.active>ul.ul-thin-mode>div>app-item>li>div>a{display:block!important}.navigator-container .li-thin-mode.active[data-level=\"1\"]>ul.ul-thin-mode{display:block;transform:translate(calc(var(--thin-mode-width)))}.navigator-container .li-thin-mode.active:not([data-level=\"1\"])>ul.ul-thin-mode{display:block;transform:translate(calc(var(--wide-mode-width) - var(--size-layout-block-cell-spacing)))}.navigator-container ul.ul-thin-mode{display:none}.navigator-container .parent{color:var(--color);background-color:var(--bg-color);--children-height: 0px;box-sizing:border-box;width:100%;transition:width 1s ease-out}.navigator-container .parent ul{animation:fadeIn .25s linear}.navigator-container .parent i.module-icon{position:absolute;display:inline-block;font-size:var(--size-left-bar-icon-font-size)!important;width:var(--size-left-bar-icon-font-size)!important;height:var(--size-left-bar-icon-font-size)!important}.navigator-container .parent .menu-item-wrapper{position:relative!important;margin-left:0!important;padding-left:0;border:none!important;cursor:pointer}.navigator-container .parent .menu-item-wrapper .sub-icon-right{display:block;position:absolute;right:0;top:5px;transform:rotate(0);transition:transform .5s ease-out}.navigator-container .parent .menu-item-wrapper .rotate90{transform:rotate(90deg)}.navigator-container .parent .menu-item-wrapper[data-level=\"1\"].module-thin-mode:hover{background-color:var(--hover-bg-color);width:50px;transform:translate(8px);color:var(--hover-color)!important}.navigator-container .parent a.thin-mode{left:0!important;display:none;padding-left:15px;padding-right:15px;overflow:hidden;text-overflow:ellipsis}.navigator-container .parent a{color:inherit;position:absolute!important;margin-left:0!important;padding-left:0;border:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none;-webkit-user-select:none}.navigator-container .parent a:hover{color:var(--color)!important}.navigator-container .parent a[data-level=\"1\"]:not(.thin-mode){left:var(--size-header-logo-left);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"2\"]:not(.thin-mode){left:calc(var(--size-header-logo-left));max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2)}.navigator-container .parent a[data-level=\"3\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 1);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 1)}.navigator-container .parent a[data-level=\"4\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 2);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 2)}.navigator-container .parent a[data-level=\"5\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 3);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 3)}.navigator-container .parent a[data-level=\"6\"]:not(.thin-mode){left:calc(var(--size-header-logo-left) + var(--level-gap) * 4);max-width:calc(var(--left-bar-current-width) - var(--size-header-logo-left) - var(--size-scrollbar-width) - var(--size-layout-block-cell-spacing) * 2 - var(--level-gap) * 4)}.navigator-container .parent[data-level=\"1\"]{margin:10px 0}.navigator-container .parent[data-level=\"1\"] a{margin-left:0}.navigator-container .parent[data-level=\"2\"]:not(.ul-thin-mode) a{margin-left:10px}.navigator-container .parent[data-level=\"3\"]:not(.ul-thin-mode) a{margin-left:20px}.navigator-container .parent[data-level=\"4\"]:not(.ul-thin-mode) a{margin-left:30px}.navigator-container .parent[data-level=\"5\"]:not(.ul-thin-mode) a{margin-left:40px}.navigator-container .parent[data-level=\"6\"]:not(.ul-thin-mode) a{margin-left:50px}.navigator-container .parent .menu-item-wrapper{height:35px;display:flex;align-items:center;margin:0}.navigator-container .parent .menu-item-wrapper>i{display:inline-block;cursor:pointer}.navigator-container .parent .menu-item-wrapper:not(.module-thin-mode){margin-left:var(--thin-mode-padding)!important;margin-right:var(--thin-mode-padding)!important}.navigator-container .parent>ul:not(.ul-thin-mode){position:relative;overflow:hidden;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-x:hidden;display:none;margin-left:0!important;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent>ul.ul-thin-mode{overflow-y:auto}.navigator-container .parent.active[data-level=\"2\"]>.menu-item-wrapper>a{transition:.5s ease-out}.navigator-container .parent.highlighted>.menu-item-wrapper>a{color:var(--color-core-org-tree-highlighted)!important;font-weight:700!important}.navigator-container .parent.expanded>ul:not(.submenu){display:block;opacity:1;transition:opacity .5s ease-out}.navigator-container .parent:not(.li-thin-mode) a{margin-left:0}.navigator-container .parent.reduced .menu-item-wrapper{padding:0}.navigator-container .expanded:not(.li-thin-mode)>.menu-item-wrapper{background-color:var(--active-item-background-color);display:flex;justify-content:flex-start}.navigator-container .expanded>ul:not(.submenu){overflow:visible!important}.navigator-container .expanded.reduced>.menu-item-wrapper{justify-content:flex-start!important;border-top-left-radius:50px;border-bottom-left-radius:50px;width:37px}.navigator-container .parent.reduced>.menu-item-wrapper{justify-content:flex-start!important;width:37px}.navigator-container .parent.expanded.reduced>.menu-item-wrapper{background-color:#fff;left:10px!important}.navigator-container .parent.expanded.reduced>.menu-item-wrapper>i{left:9px!important;top:8px!important}.navigator-container .parent.reduced>.menu-item-wrapper{left:10px!important}.navigator-container .parent.reduced>.menu-item-wrapper>i{left:9px!important}.navigator-container li.parent:not(.li-thin-mode) .menu-item-wrapper:hover{background-color:var(--hover-bg-color);box-shadow:inset 10px 0 var(--hover-bg-color),inset -10px 0 var(--hover-bg-color)}\n"] }]
10366
10367
  }], ctorParameters: () => [{ type: i1$2.Router }, { type: NavigatorService }, { type: MultiLanguageService }, { type: LayoutService }, { type: MenuService }], propDecorators: { item: [{
10367
10368
  type: Input
10368
10369
  }], level: [{
@@ -11233,6 +11234,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
11233
11234
  type: Directive,
11234
11235
  args: [{
11235
11236
  selector: '[htmlTooltip]',
11237
+ host: {
11238
+ '(mouseenter)': 'onMouseEnter()',
11239
+ '(mouseleave)': 'onMouseLeave()',
11240
+ '(window:scroll)': 'onWindowEvent()',
11241
+ '(window:resize)': 'onWindowEvent()',
11242
+ }
11236
11243
  }]
11237
11244
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: DomService }], propDecorators: { htmlTooltip: [{
11238
11245
  type: Input
@@ -11244,18 +11251,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
11244
11251
  type: Input
11245
11252
  }], hold$: [{
11246
11253
  type: Input
11247
- }], onMouseEnter: [{
11248
- type: HostListener,
11249
- args: ['mouseenter']
11250
- }], onMouseLeave: [{
11251
- type: HostListener,
11252
- args: ['mouseleave']
11253
- }], onWindowEvent: [{
11254
- type: HostListener,
11255
- args: ['window:scroll']
11256
- }, {
11257
- type: HostListener,
11258
- args: ['window:resize']
11259
11254
  }] } });
11260
11255
 
11261
11256
  class CoreOrgBranchComponent extends BaseComponent {
@@ -21913,7 +21908,7 @@ class HotKeysDirective {
21913
21908
  this.applicationHelpService = applicationHelpService;
21914
21909
  }
21915
21910
  handleKeyboardEvent(event) {
21916
- if (this.hotKeys.includes(event.key)) {
21911
+ if ((this.hotKeys ?? []).includes(event.key)) {
21917
21912
  event.preventDefault();
21918
21913
  this.applicationHelpService.activeKey$.next(event.key);
21919
21914
  }
@@ -25051,6 +25046,647 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
25051
25046
  args: [{ required: true }]
25052
25047
  }] } });
25053
25048
 
25049
+ class CoreDocgenToolbarComponent {
25050
+ constructor() {
25051
+ // ===== Inputs (Angular 19) =====
25052
+ this.$fields = input([]);
25053
+ this.$disabled = input(false);
25054
+ this.$mode = input('design'); // 'design' | 'source'
25055
+ this.$canUndo = input(false);
25056
+ this.$canRedo = input(false);
25057
+ // ===== Outputs =====
25058
+ this.undo = output();
25059
+ this.redo = output();
25060
+ this.formatBlock = output(); // p, h1, h2, h3
25061
+ this.bold = output();
25062
+ this.italic = output();
25063
+ this.code = output();
25064
+ this.clear = output();
25065
+ this.link = output(); // parent opens link dialog
25066
+ this.imageUpload = output(); // parent triggers hidden <input type=file>
25067
+ this.imageFromUrl = output(); // parent opens URL dialog
25068
+ this.insertTable = output();
25069
+ this.listToggle = output();
25070
+ this.align = output();
25071
+ this.quote = output();
25072
+ this.hr = output();
25073
+ this.pageBreak = output();
25074
+ this.insertField = output();
25075
+ this.insertLoop = output();
25076
+ this.insertCondition = output();
25077
+ this.toggleMode = output();
25078
+ this.preview = output();
25079
+ // ===== Local UI state (signals) =====
25080
+ this.$openFormat = signal(false);
25081
+ this.$openImage = signal(false);
25082
+ this.$openTable = signal(false);
25083
+ // prevent opening menus when disabled
25084
+ this.canInteract = computed(() => !this.$disabled());
25085
+ }
25086
+ onToggleMode() {
25087
+ const next = this.$mode() === 'design' ? 'source' : 'design';
25088
+ this.toggleMode.emit(next);
25089
+ }
25090
+ onPickTable(r, c) {
25091
+ if (!this.canInteract())
25092
+ return;
25093
+ this.$openTable.set(false);
25094
+ this.insertTable.emit({ rows: r, cols: c });
25095
+ }
25096
+ // convenience
25097
+ onPickBlock(tag) {
25098
+ if (!this.canInteract())
25099
+ return;
25100
+ this.$openFormat.set(false);
25101
+ this.formatBlock.emit(tag);
25102
+ }
25103
+ onPickField(f) {
25104
+ if (!f || !this.canInteract())
25105
+ return;
25106
+ this.insertField.emit(f);
25107
+ }
25108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDocgenToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreDocgenToolbarComponent, isStandalone: true, selector: "core-docgen-toolbar", inputs: { $fields: { classPropertyName: "$fields", publicName: "$fields", isSignal: true, isRequired: false, transformFunction: null }, $disabled: { classPropertyName: "$disabled", publicName: "$disabled", isSignal: true, isRequired: false, transformFunction: null }, $mode: { classPropertyName: "$mode", publicName: "$mode", isSignal: true, isRequired: false, transformFunction: null }, $canUndo: { classPropertyName: "$canUndo", publicName: "$canUndo", isSignal: true, isRequired: false, transformFunction: null }, $canRedo: { classPropertyName: "$canRedo", publicName: "$canRedo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { undo: "undo", redo: "redo", formatBlock: "formatBlock", bold: "bold", italic: "italic", code: "code", clear: "clear", link: "link", imageUpload: "imageUpload", imageFromUrl: "imageFromUrl", insertTable: "insertTable", listToggle: "listToggle", align: "align", quote: "quote", hr: "hr", pageBreak: "pageBreak", insertField: "insertField", insertLoop: "insertLoop", insertCondition: "insertCondition", toggleMode: "toggleMode", preview: "preview" }, ngImport: i0, template: "<div class=\"core-docgen-toolbar-container\" role=\"toolbar\" aria-label=\"DocGen toolbar\">\r\n <!-- History -->\r\n <div role=\"group\" aria-label=\"History\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canUndo() || $disabled()\" title=\"Undo (Ctrl/Cmd+Z)\"\r\n (click)=\"undo.emit()\">\r\n \u21B6\r\n </button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canRedo() || $disabled()\" title=\"Redo (Shift+Ctrl/Cmd+Z)\"\r\n (click)=\"redo.emit()\">\r\n \u21B7\r\n </button>\r\n </div>\r\n\r\n <!-- Block format -->\r\n <div role=\"group\" aria-label=\"Block format\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openFormat()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block format\"\r\n (click)=\"$openFormat.set(!$openFormat())\">\r\n Paragraph \u25BE\r\n </button>\r\n <div class=\"menu\" *ngIf=\"$openFormat()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"onPickBlock('p')\">Paragraph</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h1')\">Heading 1</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h2')\">Heading 2</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h3')\">Heading 3</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline -->\r\n <div role=\"group\" aria-label=\"Inline\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bold (Ctrl/Cmd+B)\" (click)=\"bold.emit()\">B</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Italic (Ctrl/Cmd+I)\" (click)=\"italic.emit()\"><i>I</i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Code\" (click)=\"code.emit()\">&lt;/&gt;</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Clear formatting\" (click)=\"clear.emit()\">\u2A2F</button>\r\n </div>\r\n\r\n <!-- Link -->\r\n <div role=\"group\" aria-label=\"Link\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert link\" (click)=\"link.emit()\">\uD83D\uDD17</button>\r\n </div>\r\n\r\n <!-- Image (split) -->\r\n <div role=\"group\" aria-label=\"Image\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openImage()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Upload image\" (click)=\"imageUpload.emit()\">\uD83D\uDDBC</button>\r\n <button type=\"button\" class=\"btn caret\" [disabled]=\"$disabled()\" title=\"More image options\"\r\n (click)=\"$openImage.set(!$openImage())\">\u25BE</button>\r\n <div class=\"menu\" *ngIf=\"$openImage()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"imageUpload.emit()\">Upload from computer</button>\r\n <button type=\"button\" class=\"mi\" (click)=\"imageFromUrl.emit()\">Insert via URL</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Table grid -->\r\n <div role=\"group\" aria-label=\"Table\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openTable()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert table\" (click)=\"$openTable.set(!$openTable())\">\u25A6 \u25BE</button>\r\n <div class=\"menu table\" *ngIf=\"$openTable()\">\r\n <div class=\"grid\">\r\n @for (r of [1,2,3,4,5,6,7,8]; track r) {\r\n <div class=\"row\">\r\n @for (c of [1,2,3,4,5,6,7,8]; track c) {\r\n <button type=\"button\" class=\"cell\" title=\"{{r}}\u00D7{{c}}\" (click)=\"onPickTable(r,c)\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Lists & align -->\r\n <div role=\"group\" aria-label=\"Lists & alignment\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bulleted list\" (click)=\"listToggle.emit('ul')\">\u2022 List</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Numbered list\" (click)=\"listToggle.emit('ol')\">1. List</button>\r\n <span class=\"sep\" aria-hidden=\"true\"></span>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align left\" (click)=\"align.emit('left')\">\u27F8</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align center\" (click)=\"align.emit('center')\">\u21D4</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align right\" (click)=\"align.emit('right')\">\u27F9</button>\r\n </div>\r\n\r\n <!-- Structure -->\r\n <div role=\"group\" aria-label=\"Structure\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block quote\" (click)=\"quote.emit()\">\u275D \u275E</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Horizontal rule\" (click)=\"hr.emit()\">\u2014</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Page break\" (click)=\"pageBreak.emit()\">\u293F</button>\r\n </div>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n <!-- Liquid-specific -->\r\n <div role=\"group\" aria-label=\"Liquid\" class=\"grp\">\r\n <select #fld class=\"select\" [disabled]=\"$disabled()\" (change)=\"onPickField(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of $fields(); track f) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert loop\" (click)=\"insertLoop.emit()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert condition\" (click)=\"insertCondition.emit()\">+ Condition\u2026</button>\r\n </div>\r\n\r\n <!-- Mode & preview -->\r\n <div role=\"group\" aria-label=\"Mode\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onToggleMode()\">\r\n {{ $mode() === 'design' ? 'Design' : 'Source' }}\r\n </button>\r\n <button type=\"button\" class=\"btn ghost\" [disabled]=\"$disabled()\" title=\"Preview\" (click)=\"preview.emit()\">Preview</button>\r\n </div>\r\n</div>\r\n", styles: [".core-docgen-toolbar-container{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow-x:auto}.core-docgen-toolbar-container .grp{display:inline-flex;gap:6px;align-items:center}.core-docgen-toolbar-container .sep{width:1px;height:18px;background:#e5e7eb;margin:0 2px}.core-docgen-toolbar-container .spacer{flex:1}.core-docgen-toolbar-container .btn,.core-docgen-toolbar-container .select{font:500 13px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;border:1px solid #d1d5db;background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}.core-docgen-toolbar-container .btn[disabled],.core-docgen-toolbar-container .select[disabled]{opacity:.5;cursor:not-allowed}.core-docgen-toolbar-container .btn:hover:not([disabled]){border-color:#9ca3af}.core-docgen-toolbar-container .btn.ghost{background:#f9fafb}.core-docgen-toolbar-container .split{position:relative;display:inline-flex}.core-docgen-toolbar-container .split .btn.caret{width:28px;padding:0}.core-docgen-toolbar-container .menu{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 24px #00000014;padding:6px;z-index:20;min-width:180px}.core-docgen-toolbar-container .menu .mi{display:block;width:100%;text-align:left;border:0;background:transparent;padding:6px 8px;border-radius:6px;cursor:pointer}.core-docgen-toolbar-container .menu .mi:hover{background:#f3f4f6}.core-docgen-toolbar-container .menu .mi.h{font-weight:700}.core-docgen-toolbar-container .menu.table{padding:10px;min-width:unset}.core-docgen-toolbar-container .menu.table .grid{display:grid;grid-auto-rows:min-content;gap:4px}.core-docgen-toolbar-container .menu.table .row{display:grid;grid-template-columns:repeat(8,18px);gap:4px}.core-docgen-toolbar-container .menu.table .cell{width:18px;height:18px;border:1px solid #d1d5db;background:#fff;border-radius:4px}.core-docgen-toolbar-container .menu.table .cell:hover{background:#e0e7ff;border-color:#a5b4fc}.core-docgen-toolbar-container .select{padding-right:28px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25110
+ }
25111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDocgenToolbarComponent, decorators: [{
25112
+ type: Component,
25113
+ args: [{ selector: 'core-docgen-toolbar', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"core-docgen-toolbar-container\" role=\"toolbar\" aria-label=\"DocGen toolbar\">\r\n <!-- History -->\r\n <div role=\"group\" aria-label=\"History\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canUndo() || $disabled()\" title=\"Undo (Ctrl/Cmd+Z)\"\r\n (click)=\"undo.emit()\">\r\n \u21B6\r\n </button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"!$canRedo() || $disabled()\" title=\"Redo (Shift+Ctrl/Cmd+Z)\"\r\n (click)=\"redo.emit()\">\r\n \u21B7\r\n </button>\r\n </div>\r\n\r\n <!-- Block format -->\r\n <div role=\"group\" aria-label=\"Block format\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openFormat()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block format\"\r\n (click)=\"$openFormat.set(!$openFormat())\">\r\n Paragraph \u25BE\r\n </button>\r\n <div class=\"menu\" *ngIf=\"$openFormat()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"onPickBlock('p')\">Paragraph</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h1')\">Heading 1</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h2')\">Heading 2</button>\r\n <button type=\"button\" class=\"mi h\" (click)=\"onPickBlock('h3')\">Heading 3</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Inline -->\r\n <div role=\"group\" aria-label=\"Inline\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bold (Ctrl/Cmd+B)\" (click)=\"bold.emit()\">B</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Italic (Ctrl/Cmd+I)\" (click)=\"italic.emit()\"><i>I</i></button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Code\" (click)=\"code.emit()\">&lt;/&gt;</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Clear formatting\" (click)=\"clear.emit()\">\u2A2F</button>\r\n </div>\r\n\r\n <!-- Link -->\r\n <div role=\"group\" aria-label=\"Link\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert link\" (click)=\"link.emit()\">\uD83D\uDD17</button>\r\n </div>\r\n\r\n <!-- Image (split) -->\r\n <div role=\"group\" aria-label=\"Image\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openImage()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Upload image\" (click)=\"imageUpload.emit()\">\uD83D\uDDBC</button>\r\n <button type=\"button\" class=\"btn caret\" [disabled]=\"$disabled()\" title=\"More image options\"\r\n (click)=\"$openImage.set(!$openImage())\">\u25BE</button>\r\n <div class=\"menu\" *ngIf=\"$openImage()\">\r\n <button type=\"button\" class=\"mi\" (click)=\"imageUpload.emit()\">Upload from computer</button>\r\n <button type=\"button\" class=\"mi\" (click)=\"imageFromUrl.emit()\">Insert via URL</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Table grid -->\r\n <div role=\"group\" aria-label=\"Table\" class=\"grp\">\r\n <div class=\"split\" [class.open]=\"$openTable()\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert table\" (click)=\"$openTable.set(!$openTable())\">\u25A6 \u25BE</button>\r\n <div class=\"menu table\" *ngIf=\"$openTable()\">\r\n <div class=\"grid\">\r\n @for (r of [1,2,3,4,5,6,7,8]; track r) {\r\n <div class=\"row\">\r\n @for (c of [1,2,3,4,5,6,7,8]; track c) {\r\n <button type=\"button\" class=\"cell\" title=\"{{r}}\u00D7{{c}}\" (click)=\"onPickTable(r,c)\"></button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Lists & align -->\r\n <div role=\"group\" aria-label=\"Lists & alignment\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Bulleted list\" (click)=\"listToggle.emit('ul')\">\u2022 List</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Numbered list\" (click)=\"listToggle.emit('ol')\">1. List</button>\r\n <span class=\"sep\" aria-hidden=\"true\"></span>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align left\" (click)=\"align.emit('left')\">\u27F8</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align center\" (click)=\"align.emit('center')\">\u21D4</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Align right\" (click)=\"align.emit('right')\">\u27F9</button>\r\n </div>\r\n\r\n <!-- Structure -->\r\n <div role=\"group\" aria-label=\"Structure\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Block quote\" (click)=\"quote.emit()\">\u275D \u275E</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Horizontal rule\" (click)=\"hr.emit()\">\u2014</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Page break\" (click)=\"pageBreak.emit()\">\u293F</button>\r\n </div>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n <!-- Liquid-specific -->\r\n <div role=\"group\" aria-label=\"Liquid\" class=\"grp\">\r\n <select #fld class=\"select\" [disabled]=\"$disabled()\" (change)=\"onPickField(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of $fields(); track f) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert loop\" (click)=\"insertLoop.emit()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" title=\"Insert condition\" (click)=\"insertCondition.emit()\">+ Condition\u2026</button>\r\n </div>\r\n\r\n <!-- Mode & preview -->\r\n <div role=\"group\" aria-label=\"Mode\" class=\"grp\">\r\n <button type=\"button\" class=\"btn\" [disabled]=\"$disabled()\" (click)=\"onToggleMode()\">\r\n {{ $mode() === 'design' ? 'Design' : 'Source' }}\r\n </button>\r\n <button type=\"button\" class=\"btn ghost\" [disabled]=\"$disabled()\" title=\"Preview\" (click)=\"preview.emit()\">Preview</button>\r\n </div>\r\n</div>\r\n", styles: [".core-docgen-toolbar-container{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow-x:auto}.core-docgen-toolbar-container .grp{display:inline-flex;gap:6px;align-items:center}.core-docgen-toolbar-container .sep{width:1px;height:18px;background:#e5e7eb;margin:0 2px}.core-docgen-toolbar-container .spacer{flex:1}.core-docgen-toolbar-container .btn,.core-docgen-toolbar-container .select{font:500 13px/1 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;border:1px solid #d1d5db;background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer}.core-docgen-toolbar-container .btn[disabled],.core-docgen-toolbar-container .select[disabled]{opacity:.5;cursor:not-allowed}.core-docgen-toolbar-container .btn:hover:not([disabled]){border-color:#9ca3af}.core-docgen-toolbar-container .btn.ghost{background:#f9fafb}.core-docgen-toolbar-container .split{position:relative;display:inline-flex}.core-docgen-toolbar-container .split .btn.caret{width:28px;padding:0}.core-docgen-toolbar-container .menu{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 24px #00000014;padding:6px;z-index:20;min-width:180px}.core-docgen-toolbar-container .menu .mi{display:block;width:100%;text-align:left;border:0;background:transparent;padding:6px 8px;border-radius:6px;cursor:pointer}.core-docgen-toolbar-container .menu .mi:hover{background:#f3f4f6}.core-docgen-toolbar-container .menu .mi.h{font-weight:700}.core-docgen-toolbar-container .menu.table{padding:10px;min-width:unset}.core-docgen-toolbar-container .menu.table .grid{display:grid;grid-auto-rows:min-content;gap:4px}.core-docgen-toolbar-container .menu.table .row{display:grid;grid-template-columns:repeat(8,18px);gap:4px}.core-docgen-toolbar-container .menu.table .cell{width:18px;height:18px;border:1px solid #d1d5db;background:#fff;border-radius:4px}.core-docgen-toolbar-container .menu.table .cell:hover{background:#e0e7ff;border-color:#a5b4fc}.core-docgen-toolbar-container .select{padding-right:28px}\n"] }]
25114
+ }] });
25115
+
25116
+ ;
25117
+ class CoreLiquidWysiwygComponent extends CoreFormControlBaseComponent {
25118
+ // History (simple HTML snapshots with caret offsets)
25119
+ #history;
25120
+ #future;
25121
+ #historyTimer;
25122
+ // Hidden file input for image uploads
25123
+ #fileInput;
25124
+ // ===== Toolbar handlers =====
25125
+ onUndo() {
25126
+ if (!this.$canUndo())
25127
+ return;
25128
+ const host = this.$designRef().nativeElement;
25129
+ const caretNow = this.#saveCaretOffset(host);
25130
+ const current = { html: host.innerHTML, caret: caretNow };
25131
+ const prev = this.#history.pop();
25132
+ this.#future.unshift(current);
25133
+ host.innerHTML = prev.html;
25134
+ this.#restoreCaret(host, prev.caret);
25135
+ this.#afterHistoryChange();
25136
+ this.#syncValueFromDom(); // keep value consistent
25137
+ }
25138
+ onRedo() {
25139
+ if (!this.$canRedo())
25140
+ return;
25141
+ const host = this.$designRef().nativeElement;
25142
+ const caretNow = this.#saveCaretOffset(host);
25143
+ const current = { html: host.innerHTML, caret: caretNow };
25144
+ const next = this.#future.shift();
25145
+ this.#history.push(current);
25146
+ host.innerHTML = next.html;
25147
+ this.#restoreCaret(host, next.caret);
25148
+ this.#afterHistoryChange();
25149
+ this.#syncValueFromDom();
25150
+ }
25151
+ applyBlock(tag) {
25152
+ const block = this.#closestBlock();
25153
+ if (!block)
25154
+ return;
25155
+ const replacement = document.createElement(tag);
25156
+ replacement.innerHTML = block.innerHTML;
25157
+ const host = this.$designRef().nativeElement;
25158
+ const caret = this.#saveCaretOffset(host);
25159
+ block.replaceWith(replacement);
25160
+ this.#restoreCaret(host, caret);
25161
+ this.#pushHistorySoon();
25162
+ this.#syncValueFromDom();
25163
+ }
25164
+ wrapInline(tag) {
25165
+ const sel = getSelection();
25166
+ if (!sel || sel.rangeCount === 0 || sel.isCollapsed)
25167
+ return;
25168
+ const r = sel.getRangeAt(0);
25169
+ const el = document.createElement(tag);
25170
+ try {
25171
+ r.surroundContents(el);
25172
+ }
25173
+ catch {
25174
+ // fallback: wrap with extracted contents
25175
+ const frag = r.extractContents();
25176
+ el.appendChild(frag);
25177
+ r.insertNode(el);
25178
+ }
25179
+ const host = this.$designRef().nativeElement;
25180
+ const caret = this.#saveCaretOffset(host);
25181
+ this.#restoreCaret(host, caret);
25182
+ this.#pushHistorySoon();
25183
+ this.#syncValueFromDom();
25184
+ }
25185
+ clearFormatting() {
25186
+ const sel = getSelection();
25187
+ if (!sel || sel.rangeCount === 0)
25188
+ return;
25189
+ const r = sel.getRangeAt(0);
25190
+ const text = r.toString();
25191
+ r.deleteContents();
25192
+ r.insertNode(document.createTextNode(text));
25193
+ this.#pushHistorySoon();
25194
+ this.#syncValueFromDom();
25195
+ }
25196
+ openLinkDialog() {
25197
+ const url = prompt('Enter URL');
25198
+ if (!url)
25199
+ return;
25200
+ const sel = getSelection();
25201
+ if (!sel || sel.rangeCount === 0)
25202
+ return;
25203
+ const r = sel.getRangeAt(0);
25204
+ const a = document.createElement('a');
25205
+ a.href = url;
25206
+ a.target = '_blank';
25207
+ if (r.collapsed) {
25208
+ a.textContent = url;
25209
+ r.insertNode(a);
25210
+ }
25211
+ else {
25212
+ try {
25213
+ r.surroundContents(a);
25214
+ }
25215
+ catch {
25216
+ const frag = r.extractContents();
25217
+ a.appendChild(frag);
25218
+ r.insertNode(a);
25219
+ }
25220
+ }
25221
+ this.#pushHistorySoon();
25222
+ this.#syncValueFromDom();
25223
+ }
25224
+ triggerImageUpload() {
25225
+ if (!this.#fileInput) {
25226
+ const inp = document.createElement('input');
25227
+ inp.type = 'file';
25228
+ inp.accept = 'image/*';
25229
+ inp.style.display = 'none';
25230
+ inp.addEventListener('change', (e) => this.#insertImageFile(e));
25231
+ document.body.appendChild(inp);
25232
+ this.#fileInput = inp;
25233
+ }
25234
+ this.#fileInput.value = '';
25235
+ this.#fileInput.click();
25236
+ }
25237
+ openImageUrlDialog() {
25238
+ const url = prompt('Image URL');
25239
+ if (!url)
25240
+ return;
25241
+ const img = new Image();
25242
+ img.src = url;
25243
+ img.alt = '';
25244
+ img.style.maxWidth = '100%';
25245
+ this.#insertNode(img);
25246
+ this.#pushHistorySoon();
25247
+ this.#syncValueFromDom();
25248
+ }
25249
+ insertTable(ev) {
25250
+ const table = document.createElement('table');
25251
+ table.className = 'dg-table';
25252
+ const tbody = document.createElement('tbody');
25253
+ for (let r = 0; r < ev.rows; r++) {
25254
+ const tr = document.createElement('tr');
25255
+ for (let c = 0; c < ev.cols; c++) {
25256
+ const td = document.createElement('td');
25257
+ td.innerHTML = '<br>';
25258
+ tr.appendChild(td);
25259
+ }
25260
+ tbody.appendChild(tr);
25261
+ }
25262
+ table.appendChild(tbody);
25263
+ this.#insertNode(table);
25264
+ this.#pushHistorySoon();
25265
+ this.#syncValueFromDom();
25266
+ }
25267
+ #closestBlock() {
25268
+ const sel = getSelection();
25269
+ if (!sel || sel.rangeCount === 0)
25270
+ return null;
25271
+ let el = sel.getRangeAt(0).commonAncestorContainer;
25272
+ if (el.nodeType === 3)
25273
+ el = el.parentElement;
25274
+ return el.closest('p,h1,h2,h3,div,blockquote,li,td,th');
25275
+ }
25276
+ toggleList(kind) {
25277
+ const block = this.#closestBlock();
25278
+ if (!block)
25279
+ return;
25280
+ // If already inside same list, unwrap; otherwise wrap
25281
+ const existing = block.closest('ul,ol');
25282
+ if (existing && existing.tagName.toLowerCase() === kind) {
25283
+ // unwrap list item
25284
+ const li = block.closest('li');
25285
+ if (li) {
25286
+ const p = document.createElement('p');
25287
+ p.innerHTML = li.innerHTML;
25288
+ existing.replaceWith(p);
25289
+ }
25290
+ }
25291
+ else {
25292
+ const list = document.createElement(kind);
25293
+ const li = document.createElement('li');
25294
+ li.innerHTML = block.innerHTML;
25295
+ list.appendChild(li);
25296
+ block.replaceWith(list);
25297
+ }
25298
+ this.#pushHistorySoon();
25299
+ this.#syncValueFromDom();
25300
+ }
25301
+ setAlign(a) {
25302
+ const block = this.#closestBlock();
25303
+ if (!block)
25304
+ return;
25305
+ block.style.textAlign = a;
25306
+ this.#pushHistorySoon();
25307
+ this.#syncValueFromDom();
25308
+ }
25309
+ insertQuote() {
25310
+ const block = this.#closestBlock();
25311
+ if (!block)
25312
+ return;
25313
+ const q = document.createElement('blockquote');
25314
+ q.innerHTML = block.innerHTML;
25315
+ block.replaceWith(q);
25316
+ this.#pushHistorySoon();
25317
+ this.#syncValueFromDom();
25318
+ }
25319
+ insertHr() {
25320
+ const hr = document.createElement('hr');
25321
+ this.#insertNode(hr);
25322
+ this.#pushHistorySoon();
25323
+ this.#syncValueFromDom();
25324
+ }
25325
+ constructor() {
25326
+ super();
25327
+ // ✅ Angular 19 inputs
25328
+ this.$liquidOptions = input({ fields: [] });
25329
+ this.$height = input();
25330
+ this.$readonly = input(false);
25331
+ this.placeholder = '';
25332
+ // ✅ Angular 19 viewChild
25333
+ this.$designRef = viewChild.required('design');
25334
+ this.$sourceRef = viewChild('source');
25335
+ // ✅ internal state as signals (prefix `$`)
25336
+ this.$showSource = signal(false); // can also be toggled externally if you want
25337
+ this.$heightPx = computed(() => `${this.$height() ?? 220}px`);
25338
+ this.cdr = inject(ChangeDetectorRef);
25339
+ // History (simple HTML snapshots with caret offsets)
25340
+ this.#history = [];
25341
+ this.#future = [];
25342
+ this.$canUndo = signal(false);
25343
+ this.$canRedo = signal(false);
25344
+ // keep design surface in sync when external value is written
25345
+ effect(() => {
25346
+ // whenever parent writes a new value, reflect into DOM (design)
25347
+ const host = this.$designRef()?.nativeElement;
25348
+ if (host)
25349
+ host.innerHTML = (this.value ?? '');
25350
+ });
25351
+ }
25352
+ ngAfterViewInit() {
25353
+ setTimeout(() => this.cdr.markForCheck());
25354
+ }
25355
+ insertChip(token) {
25356
+ const chip = document.createElement('span');
25357
+ chip.className = 'dg-chip';
25358
+ chip.contentEditable = 'false';
25359
+ chip.dataset['token'] = token;
25360
+ chip.textContent = token; // <- only name
25361
+ chip.setAttribute('role', 'mark');
25362
+ chip.setAttribute('aria-label', `Variable: ${token}`);
25363
+ this.#insertNode(chip);
25364
+ this.markUnknownChips(this.$liquidOptions().fields ?? []);
25365
+ }
25366
+ markUnknownChips(allowed) {
25367
+ const host = this.$designRef()?.nativeElement;
25368
+ if (!host)
25369
+ return;
25370
+ host.querySelectorAll('.dg-chip').forEach(chip => {
25371
+ const key = chip.dataset['token'] ?? '';
25372
+ chip.classList.toggle('dg-chip--unknown', !allowed.includes(key));
25373
+ chip.setAttribute('aria-invalid', (!allowed.includes(key)).toString());
25374
+ });
25375
+ }
25376
+ onInsertLoop() {
25377
+ const { source, v } = { source: 'dayDetails', v: 'd' };
25378
+ const wrap = document.createElement('div');
25379
+ wrap.className = 'dg-loop';
25380
+ wrap.dataset['source'] = source;
25381
+ wrap.dataset['var'] = v;
25382
+ wrap.innerHTML = `
25383
+ <div class="dg-loop__label">Repeat: ${source} as ${v}</div>
25384
+ <div class="dg-loop__body" contenteditable="true"> {{ ${v} }} </div>`;
25385
+ this.#insertNode(wrap);
25386
+ this.#syncValueFromDom();
25387
+ }
25388
+ onInsertIf() {
25389
+ const expr = 'totalHours > 8';
25390
+ const wrap = document.createElement('div');
25391
+ wrap.className = 'dg-if';
25392
+ wrap.dataset['expr'] = expr;
25393
+ wrap.innerHTML = `
25394
+ <div class="dg-if__label">If: ${expr}</div>
25395
+ <div class="dg-if__then" contenteditable="true"></div>`;
25396
+ this.#insertNode(wrap);
25397
+ this.#syncValueFromDom();
25398
+ }
25399
+ onInsertPageBreak() {
25400
+ const br = document.createElement('div');
25401
+ br.className = 'dg-pagebreak';
25402
+ br.textContent = '— Page Break —';
25403
+ this.#insertNode(br);
25404
+ this.#syncValueFromDom();
25405
+ }
25406
+ previewNow() {
25407
+ // Placeholder: in FE you can render via liquidjs; or call BE /preview
25408
+ alert('Preview hook: send `this.value` to preview renderer.');
25409
+ }
25410
+ onToggleSource() {
25411
+ const next = !this.$showSource();
25412
+ this.$showSource.set(next);
25413
+ if (next) {
25414
+ // Design → Source
25415
+ this.#syncValueFromDom(); // serialize design → Liquid string (this.value)
25416
+ // lock design
25417
+ const host = this.$designRef()?.nativeElement;
25418
+ if (host)
25419
+ host.setAttribute('contenteditable', 'false');
25420
+ }
25421
+ else {
25422
+ // Source → Design
25423
+ const host = this.$designRef()?.nativeElement;
25424
+ if (host) {
25425
+ host.innerHTML = this.#inflateFromLiquid(this.value ?? '');
25426
+ this.#normalizeChips(host);
25427
+ host.setAttribute('contenteditable', (!this.disabled && !this.readonly && !this.$readonly()).toString());
25428
+ this.markUnknownChips(this.$liquidOptions().fields ?? []);
25429
+ }
25430
+ }
25431
+ this.cdr.markForCheck();
25432
+ }
25433
+ // ===== contenteditable hooks =====
25434
+ // DESIGN writes -> serializes DOM to Liquid and updates this.value
25435
+ onDesignInput() {
25436
+ // optional: auto-chip {{ token }} then restore caret
25437
+ const host = this.$designRef()?.nativeElement;
25438
+ if (!host)
25439
+ return;
25440
+ const caret = this.#saveCaretOffset(host);
25441
+ host.innerHTML = host.innerHTML.replace(/\{\{\s*([\w.[\]]+)\s*\}\}/g, (_m, g1) => `<span class="dg-chip" contenteditable="false" data-token="${g1}">${g1}</span>`);
25442
+ this.#restoreCaret(host, caret);
25443
+ this.#syncValueFromDom();
25444
+ }
25445
+ // SOURCE writes -> updates this.value only (don’t touch design now)
25446
+ onSourceInput(e) {
25447
+ const v = e.target.value ?? '';
25448
+ this.value = v;
25449
+ this.onChange(v); // let the form know
25450
+ }
25451
+ onDesignKeydown(e) {
25452
+ const blockKeys = ['{', '%', '}'];
25453
+ if (blockKeys.includes(e.key)) {
25454
+ e.preventDefault();
25455
+ // optionally flash a tooltip: "Use the Insert menu to add variables or loops"
25456
+ }
25457
+ }
25458
+ onDesignBlur() { this.markAsTouched(); }
25459
+ onDesignPaste(e) {
25460
+ e.preventDefault();
25461
+ const text = (e.clipboardData?.getData('text/plain') ?? '')
25462
+ .replace(/\r\n/g, '\n')
25463
+ .replace(/\n{3,}/g, '\n\n'); // collapse
25464
+ document.execCommand('insertText', false, text);
25465
+ }
25466
+ // ===== CVA overrides =====
25467
+ writeValue(v) {
25468
+ this.value = v ?? '';
25469
+ const host = this.$designRef()?.nativeElement;
25470
+ if (host)
25471
+ host.innerHTML = this.#inflateFromLiquid(this.value);
25472
+ }
25473
+ setDisabledState(disabled) {
25474
+ super.setDisabledState(disabled);
25475
+ const host = this.$designRef()?.nativeElement;
25476
+ if (host)
25477
+ host.contentEditable = (!disabled && !this.readonly && !this.$readonly()).toString();
25478
+ }
25479
+ // ===== internals =====
25480
+ #insertNode(node) {
25481
+ const host = this.$designRef()?.nativeElement;
25482
+ if (!host)
25483
+ return;
25484
+ const sel = getSelection();
25485
+ if (!sel || !sel.rangeCount) {
25486
+ host.append(node);
25487
+ return;
25488
+ }
25489
+ const range = sel.getRangeAt(0);
25490
+ range.deleteContents();
25491
+ range.insertNode(node);
25492
+ range.setStartAfter(node);
25493
+ range.collapse(true);
25494
+ sel.removeAllRanges();
25495
+ sel.addRange(range);
25496
+ }
25497
+ // Simple, safe-ish inflater. Extend as you add features.
25498
+ #inflateFromLiquid(liquid) {
25499
+ if (!liquid)
25500
+ return '';
25501
+ // 1) Variables → chips (name only; braces via CSS ::before/::after)
25502
+ let html = liquid.replace(/\{\{\s*([a-zA-Z0-9_.\[\]]+)\s*\}\}/g, (_m, name) => `<span class="dg-chip" contenteditable="false" data-token="${name}">${name}</span>`);
25503
+ // 2) Loops → blocks (single-level, non-greedy body)
25504
+ html = html.replace(/\{%\s*for\s+(\w+)\s+in\s+([\w.]+)\s*%\}([\s\S]*?)\{%\s*endfor\s*%\}/g, (_m, v, src, body) => `<div class="dg-loop" data-source="${src}" data-var="${v}">
25505
+ <div class="dg-loop__label">Repeat: ${src} as ${v}</div>
25506
+ <div class="dg-loop__body" contenteditable="true">${body}</div>
25507
+ </div>`);
25508
+ // 3) If → block
25509
+ html = html.replace(/\{%\s*if\s+(.+?)\s*%\}([\s\S]*?)\{%\s*endif\s*%\}/g, (_m, expr, thenBody) => `<div class="dg-if" data-expr="${expr}">
25510
+ <div class="dg-if__label">If: ${expr}</div>
25511
+ <div class="dg-if__then" contenteditable="true">${thenBody}</div>
25512
+ </div>`);
25513
+ return html;
25514
+ }
25515
+ // Optional: unify chip internals if you ever had mixed structures
25516
+ #normalizeChips(host) {
25517
+ host.querySelectorAll('.dg-chip').forEach(chip => {
25518
+ const name = chip.dataset['token'] ?? chip.textContent?.trim() ?? '';
25519
+ chip.textContent = name; // name only; braces via CSS
25520
+ });
25521
+ }
25522
+ #normalizeDesignDom(root) {
25523
+ // turn empty editor lines into a single <p><br></p>
25524
+ root.querySelectorAll('div').forEach(d => {
25525
+ // unwrap single-line divs to <p>
25526
+ if (d.childNodes.length === 1 && d.firstChild?.nodeName === 'BR') {
25527
+ const p = document.createElement('p');
25528
+ d.replaceWith(p);
25529
+ p.appendChild(document.createElement('br'));
25530
+ }
25531
+ });
25532
+ // optional: collapse consecutive <br> pairs, trim leading/trailing breaks
25533
+ }
25534
+ // Save current caret offset (relative to the root element's textContent)
25535
+ #saveCaretOffset(root) {
25536
+ const sel = getSelection();
25537
+ if (!sel || sel.rangeCount === 0)
25538
+ return 0;
25539
+ const range = sel.getRangeAt(0);
25540
+ const preRange = range.cloneRange();
25541
+ preRange.selectNodeContents(root);
25542
+ preRange.setEnd(range.endContainer, range.endOffset);
25543
+ return preRange.toString().length; // character count to caret
25544
+ }
25545
+ // Restore caret to a character offset within root
25546
+ #restoreCaret(root, offset) {
25547
+ // Clamp offset
25548
+ const target = Math.max(0, Math.min(offset, root.textContent?.length ?? 0));
25549
+ // Walk text nodes to find the position
25550
+ const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null);
25551
+ let remaining = target;
25552
+ let node = walker.nextNode();
25553
+ while (node) {
25554
+ const len = node.nodeValue?.length ?? 0;
25555
+ if (remaining <= len) {
25556
+ // Place caret here
25557
+ const range = document.createRange();
25558
+ range.setStart(node, remaining);
25559
+ range.collapse(true);
25560
+ const sel = getSelection();
25561
+ if (sel) {
25562
+ sel.removeAllRanges();
25563
+ sel.addRange(range);
25564
+ }
25565
+ return;
25566
+ }
25567
+ remaining -= len;
25568
+ node = walker.nextNode();
25569
+ }
25570
+ // Fallback: place at end if we didn't find an exact spot
25571
+ const range = document.createRange();
25572
+ range.selectNodeContents(root);
25573
+ range.collapse(false);
25574
+ const sel = getSelection();
25575
+ if (sel) {
25576
+ sel.removeAllRanges();
25577
+ sel.addRange(range);
25578
+ }
25579
+ }
25580
+ // ===== History helpers =====
25581
+ #pushHistorySoon() {
25582
+ clearTimeout(this.#historyTimer);
25583
+ this.#historyTimer = setTimeout(() => {
25584
+ const host = this.$designRef().nativeElement;
25585
+ this.#history.push({ html: host.innerHTML, caret: this.#saveCaretOffset(host) });
25586
+ // cap history
25587
+ if (this.#history.length > 100)
25588
+ this.#history.shift();
25589
+ // new action invalidates redo
25590
+ this.#future = [];
25591
+ this.#afterHistoryChange();
25592
+ }, 150);
25593
+ }
25594
+ #afterHistoryChange() {
25595
+ this.$canUndo.set(this.#history.length > 0);
25596
+ this.$canRedo.set(this.#future.length > 0);
25597
+ this.cdr.markForCheck();
25598
+ }
25599
+ // ===== Images =====
25600
+ #insertImageFile(e) {
25601
+ const file = e.target.files?.[0];
25602
+ if (!file)
25603
+ return;
25604
+ const url = URL.createObjectURL(file);
25605
+ const img = new Image();
25606
+ img.src = url;
25607
+ img.alt = file.name;
25608
+ img.style.maxWidth = '100%';
25609
+ this.#insertNode(img);
25610
+ this.#pushHistorySoon();
25611
+ this.#syncValueFromDom();
25612
+ }
25613
+ #syncValueFromDom() {
25614
+ const host = this.$designRef()?.nativeElement;
25615
+ if (!host)
25616
+ return;
25617
+ this.#normalizeDesignDom(host);
25618
+ const liquid = this.#serialize(host);
25619
+ this.value = liquid;
25620
+ this.onChange(liquid);
25621
+ }
25622
+ #serialize(root) {
25623
+ let out = '';
25624
+ const visit = (node) => {
25625
+ if (node.nodeType === Node.TEXT_NODE) {
25626
+ out += node.textContent ?? '';
25627
+ return;
25628
+ }
25629
+ const el = node;
25630
+ if (el.matches('.dg-chip')) {
25631
+ out += `{{ ${el.dataset['token']} }}`;
25632
+ return;
25633
+ }
25634
+ if (el.matches('.dg-loop')) {
25635
+ const src = el.dataset['source'] ?? 'items';
25636
+ const v = el.dataset['var'] ?? 'it';
25637
+ out += `{% for ${v} in ${src} %}`;
25638
+ el.querySelector('.dg-loop__body')?.childNodes.forEach(visit);
25639
+ out += `{% endfor %}`;
25640
+ return;
25641
+ }
25642
+ if (el.matches('.dg-if')) {
25643
+ const expr = el.dataset['expr'] ?? 'true';
25644
+ out += `{% if ${expr} %}`;
25645
+ el.querySelector('.dg-if__then')?.childNodes.forEach(visit);
25646
+ out += `{% endif %}`;
25647
+ return;
25648
+ }
25649
+ if (el.matches('.dg-pagebreak')) {
25650
+ out += `<div style="page-break-before: always;"></div>`;
25651
+ return;
25652
+ }
25653
+ const tag = el.tagName.toLowerCase();
25654
+ const attrs = ['class', 'style']
25655
+ .map(a => el.getAttribute(a) ? ` ${a}="${el.getAttribute(a)}"` : '')
25656
+ .join('');
25657
+ out += `<${tag}${attrs}>`;
25658
+ el.childNodes.forEach(visit);
25659
+ out += `</${tag}>`;
25660
+ };
25661
+ root.childNodes.forEach(visit);
25662
+ return out;
25663
+ }
25664
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLiquidWysiwygComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25665
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreLiquidWysiwygComponent, isStandalone: true, selector: "core-liquid-wysiwyg", inputs: { $liquidOptions: { classPropertyName: "$liquidOptions", publicName: "$liquidOptions", isSignal: true, isRequired: false, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "$height", isSignal: true, isRequired: false, transformFunction: null }, $readonly: { classPropertyName: "$readonly", publicName: "$readonly", isSignal: true, isRequired: false, transformFunction: null }, getByIdObject$: { classPropertyName: "getByIdObject$", publicName: "getByIdObject$", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null } }, providers: [
25666
+ {
25667
+ provide: NG_VALUE_ACCESSOR,
25668
+ multi: true,
25669
+ useExisting: forwardRef(() => CoreLiquidWysiwygComponent),
25670
+ }
25671
+ ], viewQueries: [{ propertyName: "$designRef", first: true, predicate: ["design"], descendants: true, isSignal: true }, { propertyName: "$sourceRef", first: true, predicate: ["source"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"core-liquid-wysiwyg-container\">\r\n\r\n <!-- <div class=\"dg-toolbar\" role=\"toolbar\" aria-label=\"DocGen tools\">\r\n <select #fld class=\"form-control dg-select\"\r\n (change)=\"insertChip(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of ($liquidOptions().fields ?? []); track $index) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertLoop()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertIf()\">+ Condition\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertPageBreak()\">Page Break</button>\r\n\r\n <span class=\"dg-spacer\"></span>\r\n\r\n <button type=\"button\" class=\"dg-btn ghost\" (click)=\"onToggleSource()\">\r\n {{ $showSource() ? 'Design' : 'Source' }}\r\n </button>\r\n </div> -->\r\n\r\n <core-docgen-toolbar\r\n [$fields]=\"$liquidOptions().fields!\"\r\n [$disabled]=\"disabled\"\r\n [$mode]=\"$showSource() ? 'source' : 'design'\"\r\n [$canUndo]=\"$canUndo()\"\r\n [$canRedo]=\"$canRedo()\"\r\n\r\n (undo)=\"onUndo()\"\r\n (redo)=\"onRedo()\"\r\n (formatBlock)=\"applyBlock($event)\"\r\n (bold)=\"wrapInline('strong')\"\r\n (italic)=\"wrapInline('em')\"\r\n (code)=\"wrapInline('code')\"\r\n (clear)=\"clearFormatting()\"\r\n\r\n (link)=\"openLinkDialog()\"\r\n (imageUpload)=\"triggerImageUpload()\"\r\n (imageFromUrl)=\"openImageUrlDialog()\"\r\n\r\n (insertTable)=\"insertTable($event)\"\r\n (listToggle)=\"toggleList($event)\"\r\n (align)=\"setAlign($event)\"\r\n (quote)=\"insertQuote()\"\r\n (hr)=\"insertHr()\"\r\n (pageBreak)=\"onInsertPageBreak()\"\r\n\r\n (insertField)=\"insertChip($event)\"\r\n (insertLoop)=\"onInsertLoop()\"\r\n (insertCondition)=\"onInsertIf()\"\r\n\r\n (toggleMode)=\"onToggleSource()\"\r\n (preview)=\"previewNow()\"\r\n />\r\n\r\n <!-- Design surface (active only when !$showSource()) -->\r\n <div #design\r\n class=\"dg-design\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [attr.contenteditable]=\"(!$showSource() && !disabled && !readonly && !$readonly()) ? 'true' : 'false'\"\r\n [class.dg-locked]=\"$showSource()\"\r\n [attr.aria-hidden]=\"$showSource()\"\r\n (input)=\"!$showSource() && onDesignInput()\"\r\n (blur)=\"!$showSource() && onDesignBlur()\"\r\n (paste)=\"!$showSource() && onDesignPaste($event)\"\r\n aria-label=\"Template editor\">\r\n </div>\r\n\r\n <!-- Source view (active only when $showSource()) -->\r\n @if ($showSource()) {\r\n <textarea #source\r\n class=\"dg-source\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [readOnly]=\"!$showSource() || disabled || readonly || $readonly()\"\r\n [value]=\"value\"\r\n (input)=\"onSourceInput($event)\"></textarea>\r\n }\r\n\r\n</div>", styles: [".core-liquid-wysiwyg-container .dg-toolbar{display:flex;gap:8px;align-items:center;padding:6px 0;overflow-x:auto}.core-liquid-wysiwyg-container .dg-select,.core-liquid-wysiwyg-container .dg-btn{border:1px solid #ccc;background:#fff;padding:6px 10px}.core-liquid-wysiwyg-container .dg-select{max-width:220px;min-width:0}.core-liquid-wysiwyg-container .dg-btn.ghost{background:#fff}.core-liquid-wysiwyg-container .dg-spacer{flex:1}.core-liquid-wysiwyg-container .dg-design{border:1px solid #ddd;padding:10px;background:#fff;white-space:pre-wrap;word-break:break-word}.core-liquid-wysiwyg-container .dg-source{width:100%;border:1px solid #ddd;padding:10px;background:#fff}.core-liquid-wysiwyg-container .dg-chip{display:inline-flex;align-items:center;white-space:nowrap;padding:2px 10px;border-radius:999px;border:1px solid #cfe0ff;background:#eef4ff;color:#0b3d91;font:600 12px/1.6 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0 2px;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default}.core-liquid-wysiwyg-container .dg-chip:before,.core-liquid-wysiwyg-container .dg-chip:after{opacity:.75;color:#6b7da6;font-weight:700;letter-spacing:.4px}.core-liquid-wysiwyg-container .dg-chip:before{content:\"{{\";margin-right:6px}.core-liquid-wysiwyg-container .dg-chip:after{content:\"}}\";margin-left:6px}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline:2px solid #2b6cb0;outline-offset:2px}.core-liquid-wysiwyg-container .dg-chip:hover{border-color:#a9c6ff}.core-liquid-wysiwyg-container .dg-chip[aria-disabled=true]{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}@media (prefers-color-scheme: dark){.core-liquid-wysiwyg-container .dg-chip{background:#20324f;border-color:#2b3e62;color:#cfe3ff}.core-liquid-wysiwyg-container .dg-chip__braces{color:#8ea8d8}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline-color:#7aa2ff}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#3a1f22;border-color:#5b2b31;color:#ffb4b9}}.core-liquid-wysiwyg-container .dg-chip:first-child{margin-left:0}.core-liquid-wysiwyg-container .dg-loop,.core-liquid-wysiwyg-container .dg-if{border:1px solid #cfd8dc;border-radius:8px;padding:6px;margin:8px 0;background:#f8fafc}.core-liquid-wysiwyg-container .dg-loop__label,.core-liquid-wysiwyg-container .dg-if__label{font:700 12px/1 system-ui;color:#37474f;margin-bottom:4px}.core-liquid-wysiwyg-container .dg-pagebreak{border:1px dashed #bbb;color:#777;text-align:center;padding:6px;margin:8px 0}\n"], dependencies: [{ kind: "component", type: CoreDocgenToolbarComponent, selector: "core-docgen-toolbar", inputs: ["$fields", "$disabled", "$mode", "$canUndo", "$canRedo"], outputs: ["undo", "redo", "formatBlock", "bold", "italic", "code", "clear", "link", "imageUpload", "imageFromUrl", "insertTable", "listToggle", "align", "quote", "hr", "pageBreak", "insertField", "insertLoop", "insertCondition", "toggleMode", "preview"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25672
+ }
25673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLiquidWysiwygComponent, decorators: [{
25674
+ type: Component,
25675
+ args: [{ selector: 'core-liquid-wysiwyg', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
25676
+ CoreDocgenToolbarComponent,
25677
+ ], encapsulation: ViewEncapsulation.None, providers: [
25678
+ {
25679
+ provide: NG_VALUE_ACCESSOR,
25680
+ multi: true,
25681
+ useExisting: forwardRef(() => CoreLiquidWysiwygComponent),
25682
+ }
25683
+ ], template: "<div class=\"core-liquid-wysiwyg-container\">\r\n\r\n <!-- <div class=\"dg-toolbar\" role=\"toolbar\" aria-label=\"DocGen tools\">\r\n <select #fld class=\"form-control dg-select\"\r\n (change)=\"insertChip(fld.value); fld.selectedIndex = 0\">\r\n <option value=\"\">Insert field\u2026</option>\r\n @for (f of ($liquidOptions().fields ?? []); track $index) {\r\n <option [value]=\"f\">{{'{{ ' + f + ' }}'}}</option>\r\n }\r\n </select>\r\n\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertLoop()\">+ Loop\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertIf()\">+ Condition\u2026</button>\r\n <button type=\"button\" class=\"dg-btn\" (click)=\"onInsertPageBreak()\">Page Break</button>\r\n\r\n <span class=\"dg-spacer\"></span>\r\n\r\n <button type=\"button\" class=\"dg-btn ghost\" (click)=\"onToggleSource()\">\r\n {{ $showSource() ? 'Design' : 'Source' }}\r\n </button>\r\n </div> -->\r\n\r\n <core-docgen-toolbar\r\n [$fields]=\"$liquidOptions().fields!\"\r\n [$disabled]=\"disabled\"\r\n [$mode]=\"$showSource() ? 'source' : 'design'\"\r\n [$canUndo]=\"$canUndo()\"\r\n [$canRedo]=\"$canRedo()\"\r\n\r\n (undo)=\"onUndo()\"\r\n (redo)=\"onRedo()\"\r\n (formatBlock)=\"applyBlock($event)\"\r\n (bold)=\"wrapInline('strong')\"\r\n (italic)=\"wrapInline('em')\"\r\n (code)=\"wrapInline('code')\"\r\n (clear)=\"clearFormatting()\"\r\n\r\n (link)=\"openLinkDialog()\"\r\n (imageUpload)=\"triggerImageUpload()\"\r\n (imageFromUrl)=\"openImageUrlDialog()\"\r\n\r\n (insertTable)=\"insertTable($event)\"\r\n (listToggle)=\"toggleList($event)\"\r\n (align)=\"setAlign($event)\"\r\n (quote)=\"insertQuote()\"\r\n (hr)=\"insertHr()\"\r\n (pageBreak)=\"onInsertPageBreak()\"\r\n\r\n (insertField)=\"insertChip($event)\"\r\n (insertLoop)=\"onInsertLoop()\"\r\n (insertCondition)=\"onInsertIf()\"\r\n\r\n (toggleMode)=\"onToggleSource()\"\r\n (preview)=\"previewNow()\"\r\n />\r\n\r\n <!-- Design surface (active only when !$showSource()) -->\r\n <div #design\r\n class=\"dg-design\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [attr.contenteditable]=\"(!$showSource() && !disabled && !readonly && !$readonly()) ? 'true' : 'false'\"\r\n [class.dg-locked]=\"$showSource()\"\r\n [attr.aria-hidden]=\"$showSource()\"\r\n (input)=\"!$showSource() && onDesignInput()\"\r\n (blur)=\"!$showSource() && onDesignBlur()\"\r\n (paste)=\"!$showSource() && onDesignPaste($event)\"\r\n aria-label=\"Template editor\">\r\n </div>\r\n\r\n <!-- Source view (active only when $showSource()) -->\r\n @if ($showSource()) {\r\n <textarea #source\r\n class=\"dg-source\"\r\n [style.minHeight]=\"$heightPx()\"\r\n [readOnly]=\"!$showSource() || disabled || readonly || $readonly()\"\r\n [value]=\"value\"\r\n (input)=\"onSourceInput($event)\"></textarea>\r\n }\r\n\r\n</div>", styles: [".core-liquid-wysiwyg-container .dg-toolbar{display:flex;gap:8px;align-items:center;padding:6px 0;overflow-x:auto}.core-liquid-wysiwyg-container .dg-select,.core-liquid-wysiwyg-container .dg-btn{border:1px solid #ccc;background:#fff;padding:6px 10px}.core-liquid-wysiwyg-container .dg-select{max-width:220px;min-width:0}.core-liquid-wysiwyg-container .dg-btn.ghost{background:#fff}.core-liquid-wysiwyg-container .dg-spacer{flex:1}.core-liquid-wysiwyg-container .dg-design{border:1px solid #ddd;padding:10px;background:#fff;white-space:pre-wrap;word-break:break-word}.core-liquid-wysiwyg-container .dg-source{width:100%;border:1px solid #ddd;padding:10px;background:#fff}.core-liquid-wysiwyg-container .dg-chip{display:inline-flex;align-items:center;white-space:nowrap;padding:2px 10px;border-radius:999px;border:1px solid #cfe0ff;background:#eef4ff;color:#0b3d91;font:600 12px/1.6 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;margin:0 2px;vertical-align:baseline;-webkit-user-select:none;user-select:none;cursor:default}.core-liquid-wysiwyg-container .dg-chip:before,.core-liquid-wysiwyg-container .dg-chip:after{opacity:.75;color:#6b7da6;font-weight:700;letter-spacing:.4px}.core-liquid-wysiwyg-container .dg-chip:before{content:\"{{\";margin-right:6px}.core-liquid-wysiwyg-container .dg-chip:after{content:\"}}\";margin-left:6px}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline:2px solid #2b6cb0;outline-offset:2px}.core-liquid-wysiwyg-container .dg-chip:hover{border-color:#a9c6ff}.core-liquid-wysiwyg-container .dg-chip[aria-disabled=true]{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#fff1f2;border-color:#fecdd3;color:#b91c1c}@media (prefers-color-scheme: dark){.core-liquid-wysiwyg-container .dg-chip{background:#20324f;border-color:#2b3e62;color:#cfe3ff}.core-liquid-wysiwyg-container .dg-chip__braces{color:#8ea8d8}.core-liquid-wysiwyg-container .dg-chip:focus-visible{outline-color:#7aa2ff}.core-liquid-wysiwyg-container .dg-chip--unknown{background:#3a1f22;border-color:#5b2b31;color:#ffb4b9}}.core-liquid-wysiwyg-container .dg-chip:first-child{margin-left:0}.core-liquid-wysiwyg-container .dg-loop,.core-liquid-wysiwyg-container .dg-if{border:1px solid #cfd8dc;border-radius:8px;padding:6px;margin:8px 0;background:#f8fafc}.core-liquid-wysiwyg-container .dg-loop__label,.core-liquid-wysiwyg-container .dg-if__label{font:700 12px/1 system-ui;color:#37474f;margin-bottom:4px}.core-liquid-wysiwyg-container .dg-pagebreak{border:1px dashed #bbb;color:#777;text-align:center;padding:6px;margin:8px 0}\n"] }]
25684
+ }], ctorParameters: () => [], propDecorators: { getByIdObject$: [{
25685
+ type: Input
25686
+ }], placeholder: [{
25687
+ type: Input
25688
+ }] } });
25689
+
25054
25690
  class CoreControlComponent extends BaseComponent {
25055
25691
  constructor(mls, alertService) {
25056
25692
  super(mls);
@@ -25188,7 +25824,7 @@ class CoreControlComponent extends BaseComponent {
25188
25824
  }
25189
25825
  }
25190
25826
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreControlComponent, deps: [{ token: MultiLanguageService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
25191
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreControlComponent, isStandalone: true, selector: "core-control", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, host: { listeners: { "window:click": "onWindowClick()" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-control-container\">\r\n\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n @if (!control.headless!) {\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.d-none]=\"!!control.hidden\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" \r\n [htmlTooltip]=\"control.htmlTooltip!\"\r\n [backgroundColor]=\"'white'\"\r\n [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n\r\n @if (!!control.hint! && control.controlType !== 'CHECKBOX') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [showAnyway]=\"true\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\" [class.d-none]=\"!!control.hidden\"></i>\r\n }\r\n }\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container>\r\n @switch (control.controlType) {\r\n @case (\"FORM_ARRAY\") {\r\n <core-form-array\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [checkError$]=\"checkError$\">\r\n </core-form-array>\r\n }\r\n @case (\"CALCULATED\") {\r\n <div class=\"calculated-view\" [htmlTooltip]=\"calculatedControlInfo\" [tooltipContext]=\"{control: control}\" [backgroundColor]=\"'#fff'\">\r\n <i class=\"feather-box\"></i><span>{{ control.field! }}</span>\r\n </div>\r\n }\r\n @case (\"TEXTBOX\") {\r\n\r\n <input *ngIf=\"control.type === 'date'\"\r\n [formControlName]=\"control.field\"\r\n type=\"date\"\r\n useValueAsDate\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'time'\"\r\n [formControlName]=\"control.field\"\r\n type=\"time\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'number'\"\r\n [formControlName]=\"control.field\"\r\n type=\"number\"\r\n step=\"{{ control.step || 1 }}\"\r\n class=\"form-control\"\r\n style=\"text-align: right;\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"['string', 'text', 'email', 'url', 'password'].includes(control.type || 'text')\"\r\n [formControlName]=\"control.field\"\r\n [type]=\"control.type\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n\r\n <!-- <input *ngIf=\"control.type==='calculated'\"\r\n [formControlName]=\"control.field\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"true\" /> -->\r\n\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-currency-input>\r\n }\r\n @case (\"TEXTAREA\") {\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\" [placeholder]=\"control.placeholder! || ''\"></textarea>\r\n }\r\n @case (\"CHECKBOX\") {\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\" [tooltip]=\"control.hint!\"></core-checkbox>\r\n }\r\n @case (\"IOS_SWITCHER\") {\r\n <div class=\"gap-for-ios-switcher\"></div>\r\n <core-ios-switcher [formControlName]=\"control.field\" />\r\n }\r\n @case (\"MCC\") {\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-mcc>\r\n }\r\n @case (\"DATEPICKER\") {\r\n <core-date-picker [formControlName]=\"control.field\" [showPlaceholder]=\"control.showPlaceholder!\" [rangeLimit]=\"control.rangeLimit!\" [popupAlign]=\"control.popupAlign!\" [placeholder]=\"control.placeholder! || ''\"></core-date-picker>\r\n }\r\n\r\n @case (\"DROPDOWN\") {\r\n @if (!!control.dropdownOptions$) {\r\n <core-dropdown \r\n [formControlName]=\"control.field\" \r\n [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" \r\n [shownFrom]=\"control.shownFrom!\" \r\n [placeholder]=\"control.placeholder! || ''\"\r\n\r\n [optionApiDriven]=\"control.optionApiDriven!\"\r\n [optionApi]=\"control.optionApi!\"\r\n [optionHttpVerb]=\"control.optionHttpVerb!\"\r\n [optionHttpPayload]=\"control.optionHttpPayload!\"\r\n [optionValueFrom]=\"control.optionValueFrom!\"\r\n [optionTextFrom]=\"control.optionTextFrom!\"\r\n ></core-dropdown>\r\n } @else {\r\n No dropdownOptions$ detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\" [placeholder]=\"control.placeholder! || ''\"></core-list>\r\n }\r\n @case (\"CHECKLIST\") {\r\n @if (!!control.checklistOptions$) {\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\" [placeholder]=\"control.placeholder! || ''\"></core-checklist>\r\n }\r\n }\r\n @case (\"FILEUPLOADER\") {\r\n @if (!!control.uploadFileType) {\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\" [placeholder]=\"control.placeholder! || ''\"></core-attachment>\r\n }\r\n @case (\"GRIDBUFFER\") {\r\n @if (!!control.gridBufferFormSections && !!control.gridBufferTableColumns) {\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [tableHeight]=\"control.tableHeight ?? 300\"\r\n [liteMode]=\"control.liteMode ?? false\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n }\r\n }\r\n @case (\"ORGTREECHECK\") {\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n }\r\n @case (\"MONTHSELECTOR\") {\r\n <core-month-selector [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-month-selector>\r\n }\r\n @case (\"SHIFTCELL\") {\r\n <core-shift-cell [formControlName]=\"control.field\"></core-shift-cell>\r\n }\r\n @case (\"SHIFTCOLLECTION\") {\r\n <core-shift-collection [relativeMode]=\"true\" [height]=\"control.height || 800\"></core-shift-collection>\r\n }\r\n @case(\"TOPICPICKER\") {\r\n <core-topic-picker [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"EMPLOYEE_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"CONTRACT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" \r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WORKING_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WAGE_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_CONCURRENT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"FORM_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"ORGANIZATION_UNIT_SEEK\") {\r\n <core-form-control-seeker\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-form-control-seeker>\r\n }\r\n }\r\n }\r\n }\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n<ng-template #calculatedControlInfo let-control=\"control\">\r\n <div class=\"calculated-tooltip-container\">\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Name:</span>\r\n <span class=\"value\">{{ control?.field || 'N/A' }}</span>\r\n </div> \r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Evaluation Mode:</span>\r\n <span class=\"value\">{{ control?.evaluationMode || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Return Type:</span>\r\n <span class=\"value\">{{ control?.returnType || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Depends On:</span>\r\n <span class=\"value\" *ngIf=\"control?.dependsOn?.length > 0; else noDepends\">\r\n <code *ngFor=\"let dep of control?.dependsOn; let last = last\">{{ dep }}<span *ngIf=\"!last\">, </span></code>\r\n </span>\r\n <ng-template #noDepends><em class=\"no-depends\">None</em></ng-template>\r\n </div>\r\n <div *ngIf=\"!!control?.isUnsafe\" class=\"warning\">\r\n \u26A0\uFE0F This script is marked as <strong>unsafe</strong> and will not be executed.\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Script:</span>\r\n <pre class=\"code-block\">{{ control?.script || 'No script provided.' }}</pre>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}.core-control-container input[type=number]{padding-right:12px;position:relative}.core-control-container input[type=number]::-webkit-inner-spin-button{position:absolute;right:.3em;margin-left:.5em}.core-control-container input[type=number]{-moz-appearance:textfield}.core-control-container i.feather-help-circle{color:#848484}.core-control-container .gap-for-ios-switcher{height:5px}.core-control-container .calculated-view{-webkit-user-select:none;user-select:none;cursor:pointer;height:35px;width:160px;background-color:#d8f3dc;color:#1b4332;border:1px solid #95d5b2;border-radius:50px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:flex-start;font-family:Segoe UI,sans-serif;letter-spacing:.5px;padding:8px}.core-control-container .calculated-view i{font-size:18px;width:18px;height:18px;margin-right:8px}.core-control-container .calculated-view span{width:calc(100% - 26px);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.calculated-tooltip-container{background-color:#fff;border:1px solid #ddd;padding:1rem;border-radius:6px;font-size:14px;color:#333;box-shadow:0 4px 10px #0000000d;max-width:360px}.calculated-tooltip-container .calculated-field-row{margin-bottom:.75rem}.calculated-tooltip-container .label{font-weight:500;color:#555!important;display:inline-block;min-width:140px}.calculated-tooltip-container .value{color:#222!important}.calculated-tooltip-container .warning{color:#b91c1c;background:#fef2f2;border:1px solid #fca5a5;padding:.5rem;border-radius:4px;margin-bottom:1rem;font-size:13px}.calculated-tooltip-container .code-block{background:#f8f9fa;border:1px solid #ddd;padding:.75rem;font-family:monospace;font-size:12px;white-space:pre-wrap;color:#111!important;border-radius:4px;overflow-x:auto}.calculated-tooltip-container .no-depends{color:#888;font-style:italic}.calculated-tooltip-container pre{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreFormArrayComponent, selector: "core-form-array", inputs: ["formArray", "config", "checkError$"] }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "clearDisable", "fitHeightWithItemCount", "itemHeight", "optionApiDriven", "optionApi", "optionHttpVerb", "optionHttpPayload", "optionValueFrom", "optionTextFrom"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "height", "options", "placeholder"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "preDefinedOuterFilter$", "click$", "getByIdObject$", "getByIdApi", "paramMode", "multiMode", "objectList$", "useTheseColumns", "hideOrgTree", "excludedColumns", "excludeExistingList", "placeholder", "sourceSpaceHeight", "indirectBinding", "bindGridIdTo", "multiModeExtendedColumns", "multiModeExtendedSections", "editBufferData$", "multiModeTableHeight", "multiModeRowHeight", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo", "seekerVerifyIgnore", "disabledDoubleClick"], outputs: ["onDoubleClick", "selectedDataChange", "fullValueRowChange"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }, { kind: "component", type: CoreAttachmentComponent, selector: "core-attachment", inputs: ["assignTo", "readonly", "valueToShow", "placeholder", "upFlag$", "downFlag$"] }, { kind: "component", type: CoreGridBufferComponent, selector: "core-grid-buffer", inputs: ["padding", "placeholder", "tableHeight", "liteMode", "formSections", "gridColumns"], outputs: ["onBufferFormCreated"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "popupAlign", "rangeLimit", "placeholder", "readonly", "disabled"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "searchMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$", "stateIsolated$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreRadioGroupComponent, selector: "core-radio-group", inputs: ["options$", "vertical", "columnCount", "gapY", "defaultValue"] }, { kind: "component", type: CoreMccComponent, selector: "core-mcc", inputs: ["height", "columns", "shownFrom", "apiDefinition", "getByIdApi", "outerParam$", "selectedRow$", "outerFilterOperators", "outerInOperators", "placeholder"] }, { kind: "component", type: CoreMonthSelectorComponent, selector: "core-month-selector", inputs: ["align", "placeholder"], outputs: ["onYearClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCurrencyInputComponent, selector: "core-currency-input", inputs: ["currencySign", "placeholder"], outputs: ["onLeftFocus"] }, { kind: "component", type: CoreShiftCellComponent, selector: "core-shift-cell", inputs: ["$readOnly", "$hideStarterPlusSign", "$hideStickersWhileDragover", "$backgroundColor"] }, { kind: "component", type: CoreShiftCollectionComponent, selector: "core-shift-collection", inputs: ["height", "relativeMode"] }, { kind: "component", type: CoreTopicPickerComponent, selector: "core-topic-picker", inputs: ["popupHeight", "getByIdApi"] }, { kind: "component", type: CoreIosSwitcherComponent, selector: "core-ios-switcher", inputs: ["bgColor", "showOnOffText", "width", "height", "readonly"] }, { kind: "directive", type: HtmlTooltipDirective, selector: "[htmlTooltip]", inputs: ["htmlTooltip", "tooltipContext", "maxWidthUnset", "backgroundColor", "hold$"] }] }); }
25827
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreControlComponent, isStandalone: true, selector: "core-control", inputs: { control: "control", form: "form", checkError$: "checkError$", rangeLimit: "rangeLimit" }, host: { listeners: { "window:click": "onWindowClick()" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-control-container\">\r\n\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n @if (!control.headless!) {\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.d-none]=\"!!control.hidden\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" \r\n [htmlTooltip]=\"control.htmlTooltip!\"\r\n [backgroundColor]=\"'white'\"\r\n [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n\r\n @if (!!control.hint! && control.controlType !== 'CHECKBOX') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [showAnyway]=\"true\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\" [class.d-none]=\"!!control.hidden\"></i>\r\n }\r\n }\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container>\r\n @switch (control.controlType) {\r\n @case (\"FORM_ARRAY\") {\r\n <core-form-array\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [checkError$]=\"checkError$\">\r\n </core-form-array>\r\n }\r\n @case (\"CALCULATED\") {\r\n <div class=\"calculated-view\" [htmlTooltip]=\"calculatedControlInfo\" [tooltipContext]=\"{control: control}\" [backgroundColor]=\"'#fff'\">\r\n <i class=\"feather-box\"></i><span>{{ control.field! }}</span>\r\n </div>\r\n }\r\n @case (\"TEXTBOX\") {\r\n\r\n <input *ngIf=\"control.type === 'date'\"\r\n [formControlName]=\"control.field\"\r\n type=\"date\"\r\n useValueAsDate\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'time'\"\r\n [formControlName]=\"control.field\"\r\n type=\"time\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'number'\"\r\n [formControlName]=\"control.field\"\r\n type=\"number\"\r\n step=\"{{ control.step || 1 }}\"\r\n class=\"form-control\"\r\n style=\"text-align: right;\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"['string', 'text', 'email', 'url', 'password'].includes(control.type || 'text')\"\r\n [formControlName]=\"control.field\"\r\n [type]=\"control.type\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n\r\n <!-- <input *ngIf=\"control.type==='calculated'\"\r\n [formControlName]=\"control.field\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"true\" /> -->\r\n\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-currency-input>\r\n }\r\n @case (\"TEXTAREA\") {\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\" [placeholder]=\"control.placeholder! || ''\"></textarea>\r\n }\r\n @case (\"CHECKBOX\") {\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\" [tooltip]=\"control.hint!\"></core-checkbox>\r\n }\r\n @case (\"IOS_SWITCHER\") {\r\n <div class=\"gap-for-ios-switcher\"></div>\r\n <core-ios-switcher [formControlName]=\"control.field\" />\r\n }\r\n @case (\"MCC\") {\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-mcc>\r\n }\r\n @case (\"DATEPICKER\") {\r\n <core-date-picker [formControlName]=\"control.field\" [showPlaceholder]=\"control.showPlaceholder!\" [rangeLimit]=\"control.rangeLimit!\" [popupAlign]=\"control.popupAlign!\" [placeholder]=\"control.placeholder! || ''\"></core-date-picker>\r\n }\r\n\r\n @case (\"DROPDOWN\") {\r\n @if (!!control.dropdownOptions$) {\r\n <core-dropdown \r\n [formControlName]=\"control.field\" \r\n [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" \r\n [shownFrom]=\"control.shownFrom!\" \r\n [placeholder]=\"control.placeholder! || ''\"\r\n\r\n [optionApiDriven]=\"control.optionApiDriven!\"\r\n [optionApi]=\"control.optionApi!\"\r\n [optionHttpVerb]=\"control.optionHttpVerb!\"\r\n [optionHttpPayload]=\"control.optionHttpPayload!\"\r\n [optionValueFrom]=\"control.optionValueFrom!\"\r\n [optionTextFrom]=\"control.optionTextFrom!\"\r\n ></core-dropdown>\r\n } @else {\r\n No dropdownOptions$ detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\" [placeholder]=\"control.placeholder! || ''\"></core-list>\r\n }\r\n @case (\"CHECKLIST\") {\r\n @if (!!control.checklistOptions$) {\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\" [placeholder]=\"control.placeholder! || ''\"></core-checklist>\r\n }\r\n }\r\n @case (\"FILEUPLOADER\") {\r\n @if (!!control.uploadFileType) {\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\" [placeholder]=\"control.placeholder! || ''\"></core-attachment>\r\n }\r\n @case (\"GRIDBUFFER\") {\r\n @if (!!control.gridBufferFormSections && !!control.gridBufferTableColumns) {\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [tableHeight]=\"control.tableHeight ?? 300\"\r\n [liteMode]=\"control.liteMode ?? false\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n }\r\n }\r\n @case (\"ORGTREECHECK\") {\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n }\r\n @case (\"MONTHSELECTOR\") {\r\n <core-month-selector [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-month-selector>\r\n }\r\n @case (\"SHIFTCELL\") {\r\n <core-shift-cell [formControlName]=\"control.field\"></core-shift-cell>\r\n }\r\n @case (\"SHIFTCOLLECTION\") {\r\n <core-shift-collection [relativeMode]=\"true\" [height]=\"control.height || 800\"></core-shift-collection>\r\n }\r\n @case(\"TOPICPICKER\") {\r\n <core-topic-picker [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"EMPLOYEE_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"CONTRACT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" \r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WORKING_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WAGE_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_CONCURRENT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"FORM_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"ORGANIZATION_UNIT_SEEK\") {\r\n <core-form-control-seeker\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-form-control-seeker>\r\n }\r\n }\r\n }\r\n @case (\"LIQUID_WYSIWYG\") {\r\n <core-liquid-wysiwyg\r\n [formControlName]=\"control.field\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [$liquidOptions]=\"control.liquidOptions!\"\r\n />\r\n }\r\n }\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n<ng-template #calculatedControlInfo let-control=\"control\">\r\n <div class=\"calculated-tooltip-container\">\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Name:</span>\r\n <span class=\"value\">{{ control?.field || 'N/A' }}</span>\r\n </div> \r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Evaluation Mode:</span>\r\n <span class=\"value\">{{ control?.evaluationMode || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Return Type:</span>\r\n <span class=\"value\">{{ control?.returnType || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Depends On:</span>\r\n <span class=\"value\" *ngIf=\"control?.dependsOn?.length > 0; else noDepends\">\r\n <code *ngFor=\"let dep of control?.dependsOn; let last = last\">{{ dep }}<span *ngIf=\"!last\">, </span></code>\r\n </span>\r\n <ng-template #noDepends><em class=\"no-depends\">None</em></ng-template>\r\n </div>\r\n <div *ngIf=\"!!control?.isUnsafe\" class=\"warning\">\r\n \u26A0\uFE0F This script is marked as <strong>unsafe</strong> and will not be executed.\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Script:</span>\r\n <pre class=\"code-block\">{{ control?.script || 'No script provided.' }}</pre>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}.core-control-container input[type=number]{padding-right:12px;position:relative}.core-control-container input[type=number]::-webkit-inner-spin-button{position:absolute;right:.3em;margin-left:.5em}.core-control-container input[type=number]{-moz-appearance:textfield}.core-control-container i.feather-help-circle{color:#848484}.core-control-container .gap-for-ios-switcher{height:5px}.core-control-container .calculated-view{-webkit-user-select:none;user-select:none;cursor:pointer;height:35px;width:160px;background-color:#d8f3dc;color:#1b4332;border:1px solid #95d5b2;border-radius:50px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:flex-start;font-family:Segoe UI,sans-serif;letter-spacing:.5px;padding:8px}.core-control-container .calculated-view i{font-size:18px;width:18px;height:18px;margin-right:8px}.core-control-container .calculated-view span{width:calc(100% - 26px);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.calculated-tooltip-container{background-color:#fff;border:1px solid #ddd;padding:1rem;border-radius:6px;font-size:14px;color:#333;box-shadow:0 4px 10px #0000000d;max-width:360px}.calculated-tooltip-container .calculated-field-row{margin-bottom:.75rem}.calculated-tooltip-container .label{font-weight:500;color:#555!important;display:inline-block;min-width:140px}.calculated-tooltip-container .value{color:#222!important}.calculated-tooltip-container .warning{color:#b91c1c;background:#fef2f2;border:1px solid #fca5a5;padding:.5rem;border-radius:4px;margin-bottom:1rem;font-size:13px}.calculated-tooltip-container .code-block{background:#f8f9fa;border:1px solid #ddd;padding:.75rem;font-family:monospace;font-size:12px;white-space:pre-wrap;color:#111!important;border-radius:4px;overflow-x:auto}.calculated-tooltip-container .no-depends{color:#888;font-style:italic}.calculated-tooltip-container pre{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreFormArrayComponent, selector: "core-form-array", inputs: ["formArray", "config", "checkError$"] }, { kind: "component", type: CoreDropdownComponent, selector: "core-dropdown", inputs: ["getByIdObject$", "paramMode", "shownFrom", "options$", "height", "placeholder", "loading", "warningDisable", "clearDisable", "fitHeightWithItemCount", "itemHeight", "optionApiDriven", "optionApi", "optionHttpVerb", "optionHttpPayload", "optionValueFrom", "optionTextFrom"] }, { kind: "component", type: CoreListComponent, selector: "core-list", inputs: ["title", "height", "options", "placeholder"] }, { kind: "component", type: CoreChecklistComponent, selector: "core-checklist", inputs: ["paramMode", "getByIdObject$", "shownFrom", "options$", "height", "placeholder", "loading", "readonly", "disabled"] }, { kind: "component", type: CoreFormControlSeekerComponent, selector: "core-form-control-seeker", inputs: ["title", "showPageHeader", "preDefinedOuterParam$", "preDefinedOuterFilter$", "click$", "getByIdObject$", "getByIdApi", "paramMode", "multiMode", "objectList$", "useTheseColumns", "hideOrgTree", "excludedColumns", "excludeExistingList", "placeholder", "sourceSpaceHeight", "indirectBinding", "bindGridIdTo", "multiModeExtendedColumns", "multiModeExtendedSections", "editBufferData$", "multiModeTableHeight", "multiModeRowHeight", "seekerSourceType", "boundFrom", "shownFrom", "alsoBindTo", "seekerVerifyIgnore", "disabledDoubleClick"], outputs: ["onDoubleClick", "selectedDataChange", "fullValueRowChange"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreFileUploaderComponent, selector: "core-file-uploader", inputs: ["uploadFileType", "fileDataControlName", "fileNameControlName", "fileTypeControlName", "avatarSize", "defaultAvatar", "hidePreview", "verticalMode"] }, { kind: "component", type: CoreAttachmentComponent, selector: "core-attachment", inputs: ["assignTo", "readonly", "valueToShow", "placeholder", "upFlag$", "downFlag$"] }, { kind: "component", type: CoreGridBufferComponent, selector: "core-grid-buffer", inputs: ["padding", "placeholder", "tableHeight", "liteMode", "formSections", "gridColumns"], outputs: ["onBufferFormCreated"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "popupAlign", "rangeLimit", "placeholder", "readonly", "disabled"] }, { kind: "component", type: CoreOrgTreeComponent, selector: "core-org-tree", inputs: ["lineColor", "fullWidthMode", "accessorMode", "searchMode", "fullRendering", "height", "disabledLoopExpand", "showCheckInheritance", "excludedIds$", "stateIsolated$"], outputs: ["itemDoubleClick", "itemClick"] }, { kind: "component", type: CoreRadioGroupComponent, selector: "core-radio-group", inputs: ["options$", "vertical", "columnCount", "gapY", "defaultValue"] }, { kind: "component", type: CoreMccComponent, selector: "core-mcc", inputs: ["height", "columns", "shownFrom", "apiDefinition", "getByIdApi", "outerParam$", "selectedRow$", "outerFilterOperators", "outerInOperators", "placeholder"] }, { kind: "component", type: CoreMonthSelectorComponent, selector: "core-month-selector", inputs: ["align", "placeholder"], outputs: ["onYearClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "component", type: CoreCurrencyInputComponent, selector: "core-currency-input", inputs: ["currencySign", "placeholder"], outputs: ["onLeftFocus"] }, { kind: "component", type: CoreShiftCellComponent, selector: "core-shift-cell", inputs: ["$readOnly", "$hideStarterPlusSign", "$hideStickersWhileDragover", "$backgroundColor"] }, { kind: "component", type: CoreShiftCollectionComponent, selector: "core-shift-collection", inputs: ["height", "relativeMode"] }, { kind: "component", type: CoreTopicPickerComponent, selector: "core-topic-picker", inputs: ["popupHeight", "getByIdApi"] }, { kind: "component", type: CoreIosSwitcherComponent, selector: "core-ios-switcher", inputs: ["bgColor", "showOnOffText", "width", "height", "readonly"] }, { kind: "component", type: CoreLiquidWysiwygComponent, selector: "core-liquid-wysiwyg", inputs: ["$liquidOptions", "$height", "$readonly", "getByIdObject$", "placeholder"] }, { kind: "directive", type: HtmlTooltipDirective, selector: "[htmlTooltip]", inputs: ["htmlTooltip", "tooltipContext", "maxWidthUnset", "backgroundColor", "hold$"] }] }); }
25192
25828
  }
25193
25829
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreControlComponent, decorators: [{
25194
25830
  type: Component,
@@ -25219,8 +25855,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
25219
25855
  CoreShiftCollectionComponent,
25220
25856
  CoreTopicPickerComponent,
25221
25857
  CoreIosSwitcherComponent,
25858
+ CoreLiquidWysiwygComponent,
25222
25859
  HtmlTooltipDirective
25223
- ], template: "<div class=\"core-control-container\">\r\n\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n @if (!control.headless!) {\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.d-none]=\"!!control.hidden\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" \r\n [htmlTooltip]=\"control.htmlTooltip!\"\r\n [backgroundColor]=\"'white'\"\r\n [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n\r\n @if (!!control.hint! && control.controlType !== 'CHECKBOX') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [showAnyway]=\"true\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\" [class.d-none]=\"!!control.hidden\"></i>\r\n }\r\n }\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container>\r\n @switch (control.controlType) {\r\n @case (\"FORM_ARRAY\") {\r\n <core-form-array\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [checkError$]=\"checkError$\">\r\n </core-form-array>\r\n }\r\n @case (\"CALCULATED\") {\r\n <div class=\"calculated-view\" [htmlTooltip]=\"calculatedControlInfo\" [tooltipContext]=\"{control: control}\" [backgroundColor]=\"'#fff'\">\r\n <i class=\"feather-box\"></i><span>{{ control.field! }}</span>\r\n </div>\r\n }\r\n @case (\"TEXTBOX\") {\r\n\r\n <input *ngIf=\"control.type === 'date'\"\r\n [formControlName]=\"control.field\"\r\n type=\"date\"\r\n useValueAsDate\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'time'\"\r\n [formControlName]=\"control.field\"\r\n type=\"time\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'number'\"\r\n [formControlName]=\"control.field\"\r\n type=\"number\"\r\n step=\"{{ control.step || 1 }}\"\r\n class=\"form-control\"\r\n style=\"text-align: right;\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"['string', 'text', 'email', 'url', 'password'].includes(control.type || 'text')\"\r\n [formControlName]=\"control.field\"\r\n [type]=\"control.type\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n\r\n <!-- <input *ngIf=\"control.type==='calculated'\"\r\n [formControlName]=\"control.field\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"true\" /> -->\r\n\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-currency-input>\r\n }\r\n @case (\"TEXTAREA\") {\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\" [placeholder]=\"control.placeholder! || ''\"></textarea>\r\n }\r\n @case (\"CHECKBOX\") {\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\" [tooltip]=\"control.hint!\"></core-checkbox>\r\n }\r\n @case (\"IOS_SWITCHER\") {\r\n <div class=\"gap-for-ios-switcher\"></div>\r\n <core-ios-switcher [formControlName]=\"control.field\" />\r\n }\r\n @case (\"MCC\") {\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-mcc>\r\n }\r\n @case (\"DATEPICKER\") {\r\n <core-date-picker [formControlName]=\"control.field\" [showPlaceholder]=\"control.showPlaceholder!\" [rangeLimit]=\"control.rangeLimit!\" [popupAlign]=\"control.popupAlign!\" [placeholder]=\"control.placeholder! || ''\"></core-date-picker>\r\n }\r\n\r\n @case (\"DROPDOWN\") {\r\n @if (!!control.dropdownOptions$) {\r\n <core-dropdown \r\n [formControlName]=\"control.field\" \r\n [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" \r\n [shownFrom]=\"control.shownFrom!\" \r\n [placeholder]=\"control.placeholder! || ''\"\r\n\r\n [optionApiDriven]=\"control.optionApiDriven!\"\r\n [optionApi]=\"control.optionApi!\"\r\n [optionHttpVerb]=\"control.optionHttpVerb!\"\r\n [optionHttpPayload]=\"control.optionHttpPayload!\"\r\n [optionValueFrom]=\"control.optionValueFrom!\"\r\n [optionTextFrom]=\"control.optionTextFrom!\"\r\n ></core-dropdown>\r\n } @else {\r\n No dropdownOptions$ detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\" [placeholder]=\"control.placeholder! || ''\"></core-list>\r\n }\r\n @case (\"CHECKLIST\") {\r\n @if (!!control.checklistOptions$) {\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\" [placeholder]=\"control.placeholder! || ''\"></core-checklist>\r\n }\r\n }\r\n @case (\"FILEUPLOADER\") {\r\n @if (!!control.uploadFileType) {\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\" [placeholder]=\"control.placeholder! || ''\"></core-attachment>\r\n }\r\n @case (\"GRIDBUFFER\") {\r\n @if (!!control.gridBufferFormSections && !!control.gridBufferTableColumns) {\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [tableHeight]=\"control.tableHeight ?? 300\"\r\n [liteMode]=\"control.liteMode ?? false\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n }\r\n }\r\n @case (\"ORGTREECHECK\") {\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n }\r\n @case (\"MONTHSELECTOR\") {\r\n <core-month-selector [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-month-selector>\r\n }\r\n @case (\"SHIFTCELL\") {\r\n <core-shift-cell [formControlName]=\"control.field\"></core-shift-cell>\r\n }\r\n @case (\"SHIFTCOLLECTION\") {\r\n <core-shift-collection [relativeMode]=\"true\" [height]=\"control.height || 800\"></core-shift-collection>\r\n }\r\n @case(\"TOPICPICKER\") {\r\n <core-topic-picker [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"EMPLOYEE_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"CONTRACT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" \r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WORKING_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WAGE_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_CONCURRENT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"FORM_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"ORGANIZATION_UNIT_SEEK\") {\r\n <core-form-control-seeker\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-form-control-seeker>\r\n }\r\n }\r\n }\r\n }\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n<ng-template #calculatedControlInfo let-control=\"control\">\r\n <div class=\"calculated-tooltip-container\">\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Name:</span>\r\n <span class=\"value\">{{ control?.field || 'N/A' }}</span>\r\n </div> \r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Evaluation Mode:</span>\r\n <span class=\"value\">{{ control?.evaluationMode || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Return Type:</span>\r\n <span class=\"value\">{{ control?.returnType || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Depends On:</span>\r\n <span class=\"value\" *ngIf=\"control?.dependsOn?.length > 0; else noDepends\">\r\n <code *ngFor=\"let dep of control?.dependsOn; let last = last\">{{ dep }}<span *ngIf=\"!last\">, </span></code>\r\n </span>\r\n <ng-template #noDepends><em class=\"no-depends\">None</em></ng-template>\r\n </div>\r\n <div *ngIf=\"!!control?.isUnsafe\" class=\"warning\">\r\n \u26A0\uFE0F This script is marked as <strong>unsafe</strong> and will not be executed.\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Script:</span>\r\n <pre class=\"code-block\">{{ control?.script || 'No script provided.' }}</pre>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}.core-control-container input[type=number]{padding-right:12px;position:relative}.core-control-container input[type=number]::-webkit-inner-spin-button{position:absolute;right:.3em;margin-left:.5em}.core-control-container input[type=number]{-moz-appearance:textfield}.core-control-container i.feather-help-circle{color:#848484}.core-control-container .gap-for-ios-switcher{height:5px}.core-control-container .calculated-view{-webkit-user-select:none;user-select:none;cursor:pointer;height:35px;width:160px;background-color:#d8f3dc;color:#1b4332;border:1px solid #95d5b2;border-radius:50px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:flex-start;font-family:Segoe UI,sans-serif;letter-spacing:.5px;padding:8px}.core-control-container .calculated-view i{font-size:18px;width:18px;height:18px;margin-right:8px}.core-control-container .calculated-view span{width:calc(100% - 26px);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.calculated-tooltip-container{background-color:#fff;border:1px solid #ddd;padding:1rem;border-radius:6px;font-size:14px;color:#333;box-shadow:0 4px 10px #0000000d;max-width:360px}.calculated-tooltip-container .calculated-field-row{margin-bottom:.75rem}.calculated-tooltip-container .label{font-weight:500;color:#555!important;display:inline-block;min-width:140px}.calculated-tooltip-container .value{color:#222!important}.calculated-tooltip-container .warning{color:#b91c1c;background:#fef2f2;border:1px solid #fca5a5;padding:.5rem;border-radius:4px;margin-bottom:1rem;font-size:13px}.calculated-tooltip-container .code-block{background:#f8f9fa;border:1px solid #ddd;padding:.75rem;font-family:monospace;font-size:12px;white-space:pre-wrap;color:#111!important;border-radius:4px;overflow-x:auto}.calculated-tooltip-container .no-depends{color:#888;font-style:italic}.calculated-tooltip-container pre{overflow:hidden}\n"] }]
25860
+ ], template: "<div class=\"core-control-container\">\r\n\r\n <div [formGroup]=\"form\" [class.hidden]=\"!!control.hidden\">\r\n\r\n @if (!control.headless!) {\r\n <label [class]=\"'control-label' + (required ? ' required' : '')\" [attr.for]=\"control.field\"\r\n [class.d-none]=\"!!control.hidden\"\r\n [class.avatar-label]=\"control.uploadFileType==='IMAGE_AVATAR'\" [appTooltip]=\"control.tooltip! | translate: lang\" \r\n [htmlTooltip]=\"control.htmlTooltip!\"\r\n [backgroundColor]=\"'white'\"\r\n [ngStyle]=\"{\r\n display: 'inline-block'\r\n }\">\r\n {{(control.controlType!=='CHECKBOX' && control.controlType!=='BUTTON') ? (control.label | translate: lang) : ''}}\r\n </label>\r\n\r\n @if (!!control.hint! && control.controlType !== 'CHECKBOX') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"control.hint!\" [showAnyway]=\"true\" [ngStyle]=\"{\r\n display: 'inline-block',\r\n marginLeft: '2px'\r\n }\" [class.d-none]=\"!!control.hidden\"></i>\r\n }\r\n }\r\n\r\n <!-- START: FORM-CONTROL SESSION-->\r\n\r\n <ng-container>\r\n @switch (control.controlType) {\r\n @case (\"FORM_ARRAY\") {\r\n <core-form-array\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [checkError$]=\"checkError$\">\r\n </core-form-array>\r\n }\r\n @case (\"CALCULATED\") {\r\n <div class=\"calculated-view\" [htmlTooltip]=\"calculatedControlInfo\" [tooltipContext]=\"{control: control}\" [backgroundColor]=\"'#fff'\">\r\n <i class=\"feather-box\"></i><span>{{ control.field! }}</span>\r\n </div>\r\n }\r\n @case (\"TEXTBOX\") {\r\n\r\n <input *ngIf=\"control.type === 'date'\"\r\n [formControlName]=\"control.field\"\r\n type=\"date\"\r\n useValueAsDate\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'time'\"\r\n [formControlName]=\"control.field\"\r\n type=\"time\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"control.type === 'number'\"\r\n [formControlName]=\"control.field\"\r\n type=\"number\"\r\n step=\"{{ control.step || 1 }}\"\r\n class=\"form-control\"\r\n style=\"text-align: right;\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n \r\n <input *ngIf=\"['string', 'text', 'email', 'url', 'password'].includes(control.type || 'text')\"\r\n [formControlName]=\"control.field\"\r\n [type]=\"control.type\"\r\n class=\"form-control\"\r\n [readonly]=\"control.readonly\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n\r\n <!-- <input *ngIf=\"control.type==='calculated'\"\r\n [formControlName]=\"control.field\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n [readonly]=\"true\"\r\n [placeholder]=\"control.placeholder || ''\"\r\n [value]=\"form.get(control.field)?.value | tableCell: control.pipe : lang\"\r\n [attr.pattern]=\"getPattern(control) || null\"\r\n [appTooltip]=\"form.get(control.field)?.value\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [class.form-control-disabled]=\"true\" /> -->\r\n\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-currency-input>\r\n }\r\n @case (\"TEXTAREA\") {\r\n <textarea [rows]=\"control.textareaRows?.toString() || '3'\" [ngStyle]=\"{ height: 'unset' }\"\r\n [formControlName]=\"control.field\" class=\"form-control\" [readonly]=\"control.readonly\" [placeholder]=\"control.placeholder! || ''\"></textarea>\r\n }\r\n @case (\"CHECKBOX\") {\r\n <core-checkbox [formControlName]=\"control.field\" [text]=\"control.label\"\r\n [inputValue]=\"control.value\" [tooltip]=\"control.hint!\"></core-checkbox>\r\n }\r\n @case (\"IOS_SWITCHER\") {\r\n <div class=\"gap-for-ios-switcher\"></div>\r\n <core-ios-switcher [formControlName]=\"control.field\" />\r\n }\r\n @case (\"MCC\") {\r\n <core-mcc [formControlName]=\"control.field\" [columns]=\"control.columns!\" [shownFrom]=\"control.shownFrom!\" \r\n [apiDefinition]=\"control.apiDefinition!\" [getByIdApi]=\"control.getByIdApi!\" [selectedRow$]=\"control.selectedRow$!\"\r\n [outerParam$]=\"control.outerParam$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-mcc>\r\n }\r\n @case (\"DATEPICKER\") {\r\n <core-date-picker [formControlName]=\"control.field\" [showPlaceholder]=\"control.showPlaceholder!\" [rangeLimit]=\"control.rangeLimit!\" [popupAlign]=\"control.popupAlign!\" [placeholder]=\"control.placeholder! || ''\"></core-date-picker>\r\n }\r\n\r\n @case (\"DROPDOWN\") {\r\n @if (!!control.dropdownOptions$) {\r\n <core-dropdown \r\n [formControlName]=\"control.field\" \r\n [options$]=\"control.dropdownOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" \r\n [shownFrom]=\"control.shownFrom!\" \r\n [placeholder]=\"control.placeholder! || ''\"\r\n\r\n [optionApiDriven]=\"control.optionApiDriven!\"\r\n [optionApi]=\"control.optionApi!\"\r\n [optionHttpVerb]=\"control.optionHttpVerb!\"\r\n [optionHttpPayload]=\"control.optionHttpPayload!\"\r\n [optionValueFrom]=\"control.optionValueFrom!\"\r\n [optionTextFrom]=\"control.optionTextFrom!\"\r\n ></core-dropdown>\r\n } @else {\r\n No dropdownOptions$ detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [formControlName]=\"control.field\" [options]=\"control.listOptions!\" [placeholder]=\"control.placeholder! || ''\"></core-list>\r\n }\r\n @case (\"CHECKLIST\") {\r\n @if (!!control.checklistOptions$) {\r\n <core-checklist [formControlName]=\"control.field\" [options$]=\"control.checklistOptions$!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\" [shownFrom]=\"control.shownFrom!\" [placeholder]=\"control.placeholder! || ''\"></core-checklist>\r\n }\r\n }\r\n @case (\"FILEUPLOADER\") {\r\n @if (!!control.uploadFileType) {\r\n <core-file-uploader [formControlName]=\"control.field\" [uploadFileType]=\"control.uploadFileType\"\r\n [fileDataControlName]=\"control.fileDataControlName!\"\r\n [fileNameControlName]=\"control.fileNameControlName!\"\r\n [fileTypeControlName]=\"control.fileTypeControlName!\"\r\n [verticalMode]=\"control.verticalMode!\"></core-file-uploader>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [formControlName]=\"control.field\" [assignTo]=\"control.assignTo!\"\r\n [valueToShow]=\"control.valueToShow!\" [placeholder]=\"control.placeholder! || ''\"></core-attachment>\r\n }\r\n @case (\"GRIDBUFFER\") {\r\n @if (!!control.gridBufferFormSections && !!control.gridBufferTableColumns) {\r\n <core-grid-buffer [formControlName]=\"control.field\" [formSections]=\"control.gridBufferFormSections\"\r\n [gridColumns]=\"control.gridBufferTableColumns\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [tableHeight]=\"control.tableHeight ?? 300\"\r\n [liteMode]=\"control.liteMode ?? false\"\r\n (onBufferFormCreated)=\"!!control.onBufferFormCreated ? control.onBufferFormCreated($event) : null\"></core-grid-buffer>\r\n }\r\n }\r\n @case (\"ORGTREECHECK\") {\r\n <core-org-tree [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [formControlName]=\"control.field\"\r\n [options$]=\"control.radioGroupOptions$!\"\r\n [vertical]=\"control.verticalMode!\"\r\n ></core-radio-group>\r\n }\r\n @case (\"MONTHSELECTOR\") {\r\n <core-month-selector [formControlName]=\"control.field\" [placeholder]=\"control.placeholder! || ''\"></core-month-selector>\r\n }\r\n @case (\"SHIFTCELL\") {\r\n <core-shift-cell [formControlName]=\"control.field\"></core-shift-cell>\r\n }\r\n @case (\"SHIFTCOLLECTION\") {\r\n <core-shift-collection [relativeMode]=\"true\" [height]=\"control.height || 800\"></core-shift-collection>\r\n }\r\n @case(\"TOPICPICKER\") {\r\n <core-topic-picker [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"EMPLOYEE_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [editBufferData$]=\"control.editBufferData$!\"\r\n [indirectBinding]=\"control.indirectBinding!\"\r\n [bindGridIdTo]=\"control.bindGridIdTo!\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"CONTRACT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" [boundFrom]=\"control.boundFrom!\"\r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\" \r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [shownFrom]=\"control.shownFrom!\"\r\n [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WORKING_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\" [formControlName]=\"control.field\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"WAGE_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [formControlName]=\"control.field\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_SEEK\") {\r\n <core-form-control-seeker \r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [objectList$]=\"control.objectList$!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [seekerVerifyIgnore]=\"control.seekerVerifyIgnore!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"POSITION_CONCURRENT_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"FORM_SEEK\") {\r\n <core-form-control-seeker\r\n [excludeExistingList]=\"control.excludeExistingList!\"\r\n [multiMode]=\"control.multiMode!\" [multiModeTableHeight]=\"control.multiModeTableHeight!\" [multiModeRowHeight]=\"control.multiModeRowHeight!\"\r\n [formControlName]=\"control.field\" [alsoBindTo]=\"control.alsoBindTo!\"\r\n [seekerSourceType]=\"control.seekerSourceType!\" \r\n [preDefinedOuterParam$]=\"control.preDefinedOuterParam$!\"\r\n [preDefinedOuterFilter$]=\"control.preDefinedOuterFilter$!\"\r\n [boundFrom]=\"control.boundFrom!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [multiModeExtendedColumns]=\"control.multiModeExtendedColumns!\"\r\n [multiModeExtendedSections]=\"control.multiModeExtendedSections!\"\r\n [multiModeTableHeight]=\"control.multiModeTableHeight!\"\r\n [click$]=\"control.click$\"\r\n [useTheseColumns]=\"control.useTheseColumns!\"\r\n [hideOrgTree]=\"control.hideOrgTree!\"\r\n [sourceSpaceHeight]=\"control.sourceSpaceHeight!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n (selectedDataChange)=\"selectedDataChange($event)\"\r\n (fullValueRowChange)=\"fullValueRowChange($event)\"\r\n ></core-form-control-seeker>\r\n }\r\n @case(\"ORGANIZATION_UNIT_SEEK\") {\r\n <core-form-control-seeker\r\n [formControlName]=\"control.field\" [seekerSourceType]=\"control.seekerSourceType!\"\r\n [boundFrom]=\"control.boundFrom!\" [alsoBindTo]=\"control.alsoBindTo!\" [shownFrom]=\"control.shownFrom!\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [click$]=\"control.click$\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n ></core-form-control-seeker>\r\n }\r\n }\r\n }\r\n @case (\"LIQUID_WYSIWYG\") {\r\n <core-liquid-wysiwyg\r\n [formControlName]=\"control.field\"\r\n [getByIdObject$]=\"control.getByIdObject$!\"\r\n [placeholder]=\"control.placeholder! || ''\"\r\n [$liquidOptions]=\"control.liquidOptions!\"\r\n />\r\n }\r\n }\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"control.controlType==='BUTTON'\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"oHandleClick($event)\">{{control.label| translate: lang}}</button>\r\n </ng-container>\r\n <!-- END: FORM-CONTROL SESSION-->\r\n\r\n <!-- START: ERROR SESSION-->\r\n <div *ngIf=\"!!errors!.length\">\r\n <div class=\"form-control-error\" *ngFor=\"let error of errors\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"!!!errors!.length && !!checkError$.value\">\r\n <div>\r\n {{ '&nbsp;' }}\r\n </div>\r\n </div>\r\n <!-- END: ERROR SESSION-->\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n<ng-template #calculatedControlInfo let-control=\"control\">\r\n <div class=\"calculated-tooltip-container\">\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Name:</span>\r\n <span class=\"value\">{{ control?.field || 'N/A' }}</span>\r\n </div> \r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Evaluation Mode:</span>\r\n <span class=\"value\">{{ control?.evaluationMode || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Return Type:</span>\r\n <span class=\"value\">{{ control?.returnType || 'N/A' }}</span>\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Depends On:</span>\r\n <span class=\"value\" *ngIf=\"control?.dependsOn?.length > 0; else noDepends\">\r\n <code *ngFor=\"let dep of control?.dependsOn; let last = last\">{{ dep }}<span *ngIf=\"!last\">, </span></code>\r\n </span>\r\n <ng-template #noDepends><em class=\"no-depends\">None</em></ng-template>\r\n </div>\r\n <div *ngIf=\"!!control?.isUnsafe\" class=\"warning\">\r\n \u26A0\uFE0F This script is marked as <strong>unsafe</strong> and will not be executed.\r\n </div>\r\n <div class=\"calculated-field-row\">\r\n <span class=\"label\">Script:</span>\r\n <pre class=\"code-block\">{{ control?.script || 'No script provided.' }}</pre>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".core-control-container{font-size:var(--typo-basic-font-size)!important}.core-control-container .control-label{color:#848484}.core-control-container>div.hidden{display:none}.core-control-container label{color:#464646}.core-control-container label.required:after{content:\"*\";color:#ff040b}.core-control-container label.avatar-label{width:var(--size-file-uploader);display:flex;align-items:center;justify-content:center}.core-control-container input[type=number]{padding-right:12px;position:relative}.core-control-container input[type=number]::-webkit-inner-spin-button{position:absolute;right:.3em;margin-left:.5em}.core-control-container input[type=number]{-moz-appearance:textfield}.core-control-container i.feather-help-circle{color:#848484}.core-control-container .gap-for-ios-switcher{height:5px}.core-control-container .calculated-view{-webkit-user-select:none;user-select:none;cursor:pointer;height:35px;width:160px;background-color:#d8f3dc;color:#1b4332;border:1px solid #95d5b2;border-radius:50px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:flex-start;font-family:Segoe UI,sans-serif;letter-spacing:.5px;padding:8px}.core-control-container .calculated-view i{font-size:18px;width:18px;height:18px;margin-right:8px}.core-control-container .calculated-view span{width:calc(100% - 26px);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.calculated-tooltip-container{background-color:#fff;border:1px solid #ddd;padding:1rem;border-radius:6px;font-size:14px;color:#333;box-shadow:0 4px 10px #0000000d;max-width:360px}.calculated-tooltip-container .calculated-field-row{margin-bottom:.75rem}.calculated-tooltip-container .label{font-weight:500;color:#555!important;display:inline-block;min-width:140px}.calculated-tooltip-container .value{color:#222!important}.calculated-tooltip-container .warning{color:#b91c1c;background:#fef2f2;border:1px solid #fca5a5;padding:.5rem;border-radius:4px;margin-bottom:1rem;font-size:13px}.calculated-tooltip-container .code-block{background:#f8f9fa;border:1px solid #ddd;padding:.75rem;font-family:monospace;font-size:12px;white-space:pre-wrap;color:#111!important;border-radius:4px;overflow-x:auto}.calculated-tooltip-container .no-depends{color:#888;font-style:italic}.calculated-tooltip-container pre{overflow:hidden}\n"] }]
25224
25861
  }], ctorParameters: () => [{ type: MultiLanguageService }, { type: AlertService }], propDecorators: { control: [{
25225
25862
  type: Input
25226
25863
  }], form: [{
@@ -25459,7 +26096,7 @@ class CoreFormComponent {
25459
26096
  this.buttonClick.emit(e);
25460
26097
  }
25461
26098
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreFormComponent, deps: [{ token: CoreControlService }, { token: MultiLanguageService }, { token: AlertService }, { token: CoreFormService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
25462
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreFormComponent, isStandalone: true, selector: "core-form", inputs: { formName: "formName", width: "width", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", disableCancelButton: "disableCancelButton", checkError$: "checkError$", hideButtons: "hideButtons", forceCreateNewForm: "forceCreateNewForm", secondBottomTemplateRef: "secondBottomTemplateRef", hideDevSector: "hideDevSector", hideCalculatedSection: "hideCalculatedSection", buttonGroupTemplateRef: "buttonGroupTemplateRef" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n<div class=\"core-form-container\" [ngStyle]=\"{\r\n width: !!width ? width + 'px' : 'auto'\r\n}\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n @if (!!leftInputSections) {\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\">\r\n\r\n @for (section of leftInputSections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n @for (section of sections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || (!!hideCalculatedSection && !!section.forCalculatedFields ) || !!section.hidden\" [ngStyle]=\"{\r\n maxWidth: !!section.maxWidth ? section.maxWidth + 'px' : 'none'\r\n }\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n @if (!section.forCalculatedFields) {\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n } @else {\r\n <div class=\"section-calc-wrapper\">\r\n <i class=\"feather-box\"></i>\r\n </div>\r\n }\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!bottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n <div class=\"bottom-template-wrapper\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!!secondBottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n\r\n <ng-container *ngTemplateOutlet=\"secondBottomTemplateRef\"></ng-container>\r\n \r\n </div> \r\n }\r\n\r\n </div>\r\n\r\n @if (!hideButtons) {\r\n <div class=\"h10\"></div>\r\n\r\n @if (!buttonGroupTemplateRef) {\r\n <div class=\"form-row\">\r\n <div class=\"d-flex d-flex-end w-100 pr18\">\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonGroupTemplateRef\"></ng-container>\r\n }\r\n }\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n <div class=\"form-row d-flex d-flex-center\">\r\n <div class=\"dev-button\" (click)=\"updatePayload()\">Show\r\n values</div>\r\n <div class=\"dev-button\" (click)=\"showFormInConsole()\">Form object</div>\r\n <div class=\"dev-button\" (click)=\"updateValidorOverview()\">Show\r\n validators</div>\r\n </div>\r\n }\r\n\r\n </form>\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n @if (!!payLoad) {\r\n <pre class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad | tableCell: 'TRIM' : lang}}\r\n </pre>\r\n }\r\n\r\n @if (!!validatorOverview) {\r\n <pre class=\"form-row payload-preview validator-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview | tableCell: 'TRIM' : lang}}\r\n </pre>\r\n }\r\n }\r\n\r\n</div>\r\n}", styles: [".core-form-container{overflow-x:visible}.core-form-container>form .section{margin-top:var(--size-layout-block-cell-spacing)}.core-form-container>form .section:not(:first-child){margin-top:calc(var(--size-layout-block-cell-spacing) * 2)}.core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img.calculated{background-image:url(/assets/images/sql-icon.svg);border-radius:0;background-color:transparent}.core-form-container>form .section .section-header-label .section-calc-wrapper{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background-color:#d3d3d3;border-radius:50%}.core-form-container>form .section .section-header-label .section-calc-wrapper i{width:24px;height:24px;font-size:24px;color:#1b4332}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer;border-radius:0}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .dev-button{cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;padding:8px;width:120px;border-radius:18px;box-shadow:.4rem 0 2rem #0000002e}.core-form-container .dev-button:not(:last-child){margin-right:15px}.core-form-container .dev-button:first-child{background-color:#dff6dd;border:1px #9fdc9d solid}.core-form-container .dev-button:last-child{background-color:#fff4ce;border:1px #ffda6a solid}.core-form-container .payload-preview{display:block;width:calc(100% - 48px);height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto;background-color:#dff6dd;padding:24px;margin:24px;text-indent:-58px;color:#333!important;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;line-height:1.5}.core-form-container .payload-preview.validator-preview{background-color:#fff4ce}.core-form-container .bottom-template-wrapper{padding-left:12px;padding-right:12px}.core-form-container .w-100{width:100%}.core-form-container .pr18{padding-right:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlComponent, selector: "core-control", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption", "lastChildEffectOff"], outputs: ["buttonClick"] }] }); }
26099
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreFormComponent, isStandalone: true, selector: "core-form", inputs: { formName: "formName", width: "width", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", disableCancelButton: "disableCancelButton", checkError$: "checkError$", hideButtons: "hideButtons", forceCreateNewForm: "forceCreateNewForm", secondBottomTemplateRef: "secondBottomTemplateRef", hideDevSector: "hideDevSector", hideCalculatedSection: "hideCalculatedSection", buttonGroupTemplateRef: "buttonGroupTemplateRef" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n<div class=\"core-form-container\" [ngStyle]=\"{\r\n width: !!width ? width + 'px' : 'auto'\r\n}\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n @if (!!leftInputSections) {\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\">\r\n\r\n @for (section of leftInputSections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n @for (section of sections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || (!!hideCalculatedSection && !!section.forCalculatedFields ) || !!section.hidden\" [ngStyle]=\"{\r\n maxWidth: !!section.maxWidth ? section.maxWidth + 'px' : 'none'\r\n }\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n @if (!section.forCalculatedFields) {\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n } @else {\r\n <div class=\"section-calc-wrapper\">\r\n <i class=\"feather-box\"></i>\r\n </div>\r\n }\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!bottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n <div class=\"bottom-template-wrapper\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!!secondBottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n\r\n <ng-container *ngTemplateOutlet=\"secondBottomTemplateRef\"></ng-container>\r\n \r\n </div> \r\n }\r\n\r\n </div>\r\n\r\n @if (!hideButtons) {\r\n <div class=\"h10\"></div>\r\n\r\n @if (!buttonGroupTemplateRef) {\r\n <div class=\"form-row\">\r\n <div class=\"d-flex d-flex-end w-100 pr18\">\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonGroupTemplateRef\"></ng-container>\r\n }\r\n }\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n <div class=\"form-row d-flex d-flex-center\">\r\n <div class=\"dev-button\" (click)=\"updatePayload()\">Show\r\n values</div>\r\n <div class=\"dev-button\" (click)=\"showFormInConsole()\">Form object</div>\r\n <div class=\"dev-button\" (click)=\"updateValidorOverview()\">Show\r\n validators</div>\r\n </div>\r\n }\r\n\r\n </form>\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n @if (!!payLoad) {\r\n <pre class=\"form-row payload-preview\"><strong>Current values</strong><br>{{payLoad | tableCell: 'TRIM' : lang}}</pre>\r\n }\r\n\r\n @if (!!validatorOverview) {\r\n <pre class=\"form-row payload-preview validator-preview\"><strong>Current errors</strong><br>{{validatorOverview | tableCell: 'TRIM' : lang}}</pre>\r\n }\r\n }\r\n\r\n</div>\r\n}", styles: [".core-form-container{overflow-x:visible}.core-form-container>form .section{margin-top:var(--size-layout-block-cell-spacing)}.core-form-container>form .section:not(:first-child){margin-top:calc(var(--size-layout-block-cell-spacing) * 2)}.core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img.calculated{background-image:url(/assets/images/sql-icon.svg);border-radius:0;background-color:transparent}.core-form-container>form .section .section-header-label .section-calc-wrapper{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background-color:#d3d3d3;border-radius:50%}.core-form-container>form .section .section-header-label .section-calc-wrapper i{width:24px;height:24px;font-size:24px;color:#1b4332}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer;border-radius:0}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .dev-button{cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;padding:8px;width:120px;border-radius:18px;box-shadow:.4rem 0 2rem #0000002e}.core-form-container .dev-button:not(:last-child){margin-right:15px}.core-form-container .dev-button:first-child{background-color:#dff6dd;border:1px #9fdc9d solid}.core-form-container .dev-button:last-child{background-color:#fff4ce;border:1px #ffda6a solid}.core-form-container .payload-preview{display:block;width:calc(100% - 48px);height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto;background-color:#dff6dd;padding:24px;margin:24px;text-indent:-58px;color:#333!important;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;line-height:1.5}.core-form-container .payload-preview.validator-preview{background-color:#fff4ce}.core-form-container .bottom-template-wrapper{padding-left:12px;padding-right:12px}.core-form-container .w-100{width:100%}.core-form-container .pr18{padding-right:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlComponent, selector: "core-control", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption", "lastChildEffectOff"], outputs: ["buttonClick"] }] }); }
25463
26100
  }
25464
26101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreFormComponent, decorators: [{
25465
26102
  type: Component,
@@ -25472,7 +26109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
25472
26109
  TranslatePipe,
25473
26110
  TableCellPipe,
25474
26111
  CoreButtonGroupVnsComponent
25475
- ], template: "@if (!!form) {\r\n<div class=\"core-form-container\" [ngStyle]=\"{\r\n width: !!width ? width + 'px' : 'auto'\r\n}\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n @if (!!leftInputSections) {\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\">\r\n\r\n @for (section of leftInputSections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n @for (section of sections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || (!!hideCalculatedSection && !!section.forCalculatedFields ) || !!section.hidden\" [ngStyle]=\"{\r\n maxWidth: !!section.maxWidth ? section.maxWidth + 'px' : 'none'\r\n }\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n @if (!section.forCalculatedFields) {\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n } @else {\r\n <div class=\"section-calc-wrapper\">\r\n <i class=\"feather-box\"></i>\r\n </div>\r\n }\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!bottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n <div class=\"bottom-template-wrapper\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!!secondBottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n\r\n <ng-container *ngTemplateOutlet=\"secondBottomTemplateRef\"></ng-container>\r\n \r\n </div> \r\n }\r\n\r\n </div>\r\n\r\n @if (!hideButtons) {\r\n <div class=\"h10\"></div>\r\n\r\n @if (!buttonGroupTemplateRef) {\r\n <div class=\"form-row\">\r\n <div class=\"d-flex d-flex-end w-100 pr18\">\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonGroupTemplateRef\"></ng-container>\r\n }\r\n }\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n <div class=\"form-row d-flex d-flex-center\">\r\n <div class=\"dev-button\" (click)=\"updatePayload()\">Show\r\n values</div>\r\n <div class=\"dev-button\" (click)=\"showFormInConsole()\">Form object</div>\r\n <div class=\"dev-button\" (click)=\"updateValidorOverview()\">Show\r\n validators</div>\r\n </div>\r\n }\r\n\r\n </form>\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n @if (!!payLoad) {\r\n <pre class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad | tableCell: 'TRIM' : lang}}\r\n </pre>\r\n }\r\n\r\n @if (!!validatorOverview) {\r\n <pre class=\"form-row payload-preview validator-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview | tableCell: 'TRIM' : lang}}\r\n </pre>\r\n }\r\n }\r\n\r\n</div>\r\n}", styles: [".core-form-container{overflow-x:visible}.core-form-container>form .section{margin-top:var(--size-layout-block-cell-spacing)}.core-form-container>form .section:not(:first-child){margin-top:calc(var(--size-layout-block-cell-spacing) * 2)}.core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img.calculated{background-image:url(/assets/images/sql-icon.svg);border-radius:0;background-color:transparent}.core-form-container>form .section .section-header-label .section-calc-wrapper{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background-color:#d3d3d3;border-radius:50%}.core-form-container>form .section .section-header-label .section-calc-wrapper i{width:24px;height:24px;font-size:24px;color:#1b4332}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer;border-radius:0}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .dev-button{cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;padding:8px;width:120px;border-radius:18px;box-shadow:.4rem 0 2rem #0000002e}.core-form-container .dev-button:not(:last-child){margin-right:15px}.core-form-container .dev-button:first-child{background-color:#dff6dd;border:1px #9fdc9d solid}.core-form-container .dev-button:last-child{background-color:#fff4ce;border:1px #ffda6a solid}.core-form-container .payload-preview{display:block;width:calc(100% - 48px);height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto;background-color:#dff6dd;padding:24px;margin:24px;text-indent:-58px;color:#333!important;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;line-height:1.5}.core-form-container .payload-preview.validator-preview{background-color:#fff4ce}.core-form-container .bottom-template-wrapper{padding-left:12px;padding-right:12px}.core-form-container .w-100{width:100%}.core-form-container .pr18{padding-right:18px}\n"] }]
26112
+ ], template: "@if (!!form) {\r\n<div class=\"core-form-container\" [ngStyle]=\"{\r\n width: !!width ? width + 'px' : 'auto'\r\n}\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n @if (!!leftInputSections) {\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\">\r\n\r\n @for (section of leftInputSections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n @for (section of sections; track $index) {\r\n <div class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || (!!hideCalculatedSection && !!section.forCalculatedFields ) || !!section.hidden\" [ngStyle]=\"{\r\n maxWidth: !!section.maxWidth ? section.maxWidth + 'px' : 'none'\r\n }\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\r\n @if (!section.forCalculatedFields) {\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n } @else {\r\n <div class=\"section-calc-wrapper\">\r\n <i class=\"feather-box\"></i>\r\n </div>\r\n }\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n }\r\n\r\n @for (row of section.rows; track $index) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track $index) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n @if (!!bottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n <div class=\"bottom-template-wrapper\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!!secondBottomTemplateRef) {\r\n <div class=\"col-md-12\">\r\n\r\n <ng-container *ngTemplateOutlet=\"secondBottomTemplateRef\"></ng-container>\r\n \r\n </div> \r\n }\r\n\r\n </div>\r\n\r\n @if (!hideButtons) {\r\n <div class=\"h10\"></div>\r\n\r\n @if (!buttonGroupTemplateRef) {\r\n <div class=\"form-row\">\r\n <div class=\"d-flex d-flex-end w-100 pr18\">\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"buttonGroupTemplateRef\"></ng-container>\r\n }\r\n }\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n <div class=\"form-row d-flex d-flex-center\">\r\n <div class=\"dev-button\" (click)=\"updatePayload()\">Show\r\n values</div>\r\n <div class=\"dev-button\" (click)=\"showFormInConsole()\">Form object</div>\r\n <div class=\"dev-button\" (click)=\"updateValidorOverview()\">Show\r\n validators</div>\r\n </div>\r\n }\r\n\r\n </form>\r\n\r\n @if (!hideDevSector && isDevMode) {\r\n @if (!!payLoad) {\r\n <pre class=\"form-row payload-preview\"><strong>Current values</strong><br>{{payLoad | tableCell: 'TRIM' : lang}}</pre>\r\n }\r\n\r\n @if (!!validatorOverview) {\r\n <pre class=\"form-row payload-preview validator-preview\"><strong>Current errors</strong><br>{{validatorOverview | tableCell: 'TRIM' : lang}}</pre>\r\n }\r\n }\r\n\r\n</div>\r\n}", styles: [".core-form-container{overflow-x:visible}.core-form-container>form .section{margin-top:var(--size-layout-block-cell-spacing)}.core-form-container>form .section:not(:first-child){margin-top:calc(var(--size-layout-block-cell-spacing) * 2)}.core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img.calculated{background-image:url(/assets/images/sql-icon.svg);border-radius:0;background-color:transparent}.core-form-container>form .section .section-header-label .section-calc-wrapper{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background-color:#d3d3d3;border-radius:50%}.core-form-container>form .section .section-header-label .section-calc-wrapper i{width:24px;height:24px;font-size:24px;color:#1b4332}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer;border-radius:0}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .dev-button{cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;padding:8px;width:120px;border-radius:18px;box-shadow:.4rem 0 2rem #0000002e}.core-form-container .dev-button:not(:last-child){margin-right:15px}.core-form-container .dev-button:first-child{background-color:#dff6dd;border:1px #9fdc9d solid}.core-form-container .dev-button:last-child{background-color:#fff4ce;border:1px #ffda6a solid}.core-form-container .payload-preview{display:block;width:calc(100% - 48px);height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto;background-color:#dff6dd;padding:24px;margin:24px;text-indent:-58px;color:#333!important;font-family:Fira Code,monospace;font-size:.85rem;word-break:keep-all;line-height:1.5}.core-form-container .payload-preview.validator-preview{background-color:#fff4ce}.core-form-container .bottom-template-wrapper{padding-left:12px;padding-right:12px}.core-form-container .w-100{width:100%}.core-form-container .pr18{padding-right:18px}\n"] }]
25476
26113
  }], ctorParameters: () => [{ type: CoreControlService }, { type: MultiLanguageService }, { type: AlertService }, { type: CoreFormService }, { type: AppConfigService }], propDecorators: { formName: [{
25477
26114
  type: Input
25478
26115
  }], width: [{
@@ -26016,7 +26653,7 @@ class CorePageEditComponent {
26016
26653
  this.onInitialValueStringReady.emit(JSON.stringify(this.form.getRawValue()));
26017
26654
  }
26018
26655
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CorePageEditComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: CorePageEditService }, { token: CommonHttpRequestService }, { token: AnimatedTextService }, { token: MultiLanguageService }, { token: CoreFormService }, { token: CorePageListService }, { token: HubConnectionService }, { token: AuthService }, { token: AlertService }, { token: UrlService }, { token: RoutingService }, { token: ResponseService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
26019
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CorePageEditComponent, isStandalone: true, selector: "core-page-edit", inputs: { stayAfterSubmit: "stayAfterSubmit", width: "width", entityTable: "entityTable", hasIdOfStringType: "hasIdOfStringType", captionCode: "captionCode", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", sections: "sections", normalMode: "normalMode", bottomTemplateRef: "bottomTemplateRef", autoGetByIdOff: "autoGetByIdOff", autoSubmitLogicOff: "autoSubmitLogicOff", autoCancelLogicOff: "autoCancelLogicOff", customFormButtonItems: "customFormButtonItems", mixedMode: "mixedMode", checkError$: "checkError$", showSaveButton: "showSaveButton", disableSaveButton: "disableSaveButton", disableCancelButton: "disableCancelButton", forceListRefreshOnCreateOrUpdate: "forceListRefreshOnCreateOrUpdate", crud: "crud", entityUniqueIndexs: "entityUniqueIndexs", idAsInput: "idAsInput", id: "id", hideButtons: "hideButtons" }, outputs: { submitLogic: "submitLogic", onFormCreated: "onFormCreated", onSubmitSuccess: "onSubmitSuccess", onButtonClick: "onButtonClick", cancelLogic: "cancelLogic", onInitialValueStringReady: "onInitialValueStringReady" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "containerBigger", first: true, predicate: ["containerBigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [width]=\"width\" [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\"\r\n [hideButtons]=\"hideButtons\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [hideButtons]=\"hideButtons\"\r\n [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50vw;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width)}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff}.captionText{margin-left:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "width", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "disableCancelButton", "checkError$", "hideButtons", "forceCreateNewForm", "secondBottomTemplateRef", "hideDevSector", "hideCalculatedSection", "buttonGroupTemplateRef"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }] }); }
26656
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CorePageEditComponent, isStandalone: true, selector: "core-page-edit", inputs: { stayAfterSubmit: "stayAfterSubmit", width: "width", entityTable: "entityTable", hasIdOfStringType: "hasIdOfStringType", captionCode: "captionCode", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", sections: "sections", normalMode: "normalMode", bottomTemplateRef: "bottomTemplateRef", autoGetByIdOff: "autoGetByIdOff", autoSubmitLogicOff: "autoSubmitLogicOff", autoCancelLogicOff: "autoCancelLogicOff", customFormButtonItems: "customFormButtonItems", mixedMode: "mixedMode", checkError$: "checkError$", showSaveButton: "showSaveButton", disableSaveButton: "disableSaveButton", disableCancelButton: "disableCancelButton", forceListRefreshOnCreateOrUpdate: "forceListRefreshOnCreateOrUpdate", crud: "crud", entityUniqueIndexs: "entityUniqueIndexs", idAsInput: "idAsInput", id: "id", hideButtons: "hideButtons" }, outputs: { submitLogic: "submitLogic", onFormCreated: "onFormCreated", onSubmitSuccess: "onSubmitSuccess", onButtonClick: "onButtonClick", cancelLogic: "cancelLogic", onInitialValueStringReady: "onInitialValueStringReady" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "containerBigger", first: true, predicate: ["containerBigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [width]=\"width\" [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\"\r\n [hideButtons]=\"hideButtons\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [hideButtons]=\"hideButtons\"\r\n [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50vw;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width)}.core-page-edit-container core-form{display:flex;justify-content:center}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff}.captionText{margin-left:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: CoreFormComponent, selector: "core-form", inputs: ["formName", "width", "submitText", "leftInputSections", "leftInputSectionsFlexSize", "inputSections", "mode$", "bottomTemplateRef", "customFormButtonItems", "showCaptionButton", "disableSaveButton", "disableCancelButton", "checkError$", "hideButtons", "forceCreateNewForm", "secondBottomTemplateRef", "hideDevSector", "hideCalculatedSection", "buttonGroupTemplateRef"], outputs: ["onFormCreated", "onFormRefCreated", "onSubmit", "onSave", "onCancal", "buttonClick"] }, { kind: "component", type: FullscreenModalLoaderComponent, selector: "app-fullscreen-modal-loader", inputs: ["content"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }] }); }
26020
26657
  }
26021
26658
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CorePageEditComponent, decorators: [{
26022
26659
  type: Component,
@@ -26028,7 +26665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
26028
26665
  TranslatePipe,
26029
26666
  FullscreenModalLoaderComponent,
26030
26667
  CorePageHeaderComponent
26031
- ], template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [width]=\"width\" [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\"\r\n [hideButtons]=\"hideButtons\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [hideButtons]=\"hideButtons\"\r\n [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50vw;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width)}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff}.captionText{margin-left:24px}\n"] }]
26668
+ ], template: "@if (!!normalMode) {\r\n<div #container class=\"core-page-edit-container\">\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n @if (!!sections.length) {\r\n <core-form [width]=\"width\" [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\"\r\n [customFormButtonItems]=\"customFormButtonItems\" [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\"\r\n [hideButtons]=\"hideButtons\"\r\n [checkError$]=\"checkError$\" (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\"\r\n (onSave)=\"onSave($event)\" (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n</div>\r\n} @else {\r\n<div class=\"modal-container\" [ngStyle]=\"{\r\n overflowY: 'scroll'\r\n }\">\r\n <div #containerBigger class=\"modal-content\">\r\n <div class=\"custom-header-popup\">\r\n <i class=\"feather-x\" (click)=\"onCancel()\"></i>\r\n <div [ngStyle]=\"{ margin: '0px 24px' }\">\r\n <core-page-header [title]=\"captionCode\" [hideButtonGroup]=\"true\"></core-page-header>\r\n </div>\r\n </div>\r\n <div #container class=\"core-page-edit-container not-normal-mode\" [ngStyle]=\"{\r\n overflow: 'visible'\r\n }\">\r\n @if (!!sections.length) {\r\n <core-form [formName]=\"'form'\" [submitText]=\"submitText\" [showCaptionButton]=\"showCaptionButton\"\r\n [leftInputSections]=\"leftInputSections\" [leftInputSectionsFlexSize]=\"leftInputSectionsFlexSize\"\r\n [inputSections]=\"sections\" [mode$]=\"mode$\" [bottomTemplateRef]=\"bottomTemplateRef\" [customFormButtonItems]=\"customFormButtonItems\"\r\n [hideButtons]=\"hideButtons\"\r\n [disableSaveButton]=\"disableSaveButton\" [disableCancelButton]=\"disableCancelButton\" [checkError$]=\"checkError$\"\r\n (onFormCreated)=\"onFormCreatedLocal($event)\" (onSubmit)=\"onSubmit()\" (onSave)=\"onSave($event)\"\r\n (buttonClick)=\"buttonClick($event)\" (onCancal)=\"onCancel()\"></core-form>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n@if (loading) {\r\n<app-fullscreen-modal-loader></app-fullscreen-modal-loader>\r\n}", styles: ["@charset \"UTF-8\";.core-page-edit-container{--width: 50vw;background-color:#fff;padding:0,var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing),var(--size-layout-block-cell-spacing);width:var(--width)}.core-page-edit-container core-form{display:flex;justify-content:center}@media (max-width: 992px){.core-page-edit-container{width:100%}}.core-page-edit-container>.custom-header-popup{display:flex}.core-page-edit-container>i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.core-page-edit-container>caption{display:block;width:100%;color:#464646;font-weight:400}.modal-content{--height: 100%;height:var(--height);border-radius:10px}.modal-content i{display:block;float:right;font-size:24px;cursor:pointer;margin:10px}.modal-content caption{display:block;width:100%;color:#000}.custom-header-popup{background:#fff}.captionText{margin-left:24px}\n"] }]
26032
26669
  }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: CorePageEditService }, { type: CommonHttpRequestService }, { type: AnimatedTextService }, { type: MultiLanguageService }, { type: CoreFormService }, { type: CorePageListService }, { type: HubConnectionService }, { type: AuthService }, { type: AlertService }, { type: UrlService }, { type: RoutingService }, { type: ResponseService }, { type: AppConfigService }], propDecorators: { stayAfterSubmit: [{
26033
26670
  type: Input
26034
26671
  }], width: [{
@@ -29186,7 +29823,6 @@ class GroupFunctionEditComponent extends BaseEditComponent {
29186
29823
  super(dialogService);
29187
29824
  this.dialogService = dialogService;
29188
29825
  this.appService = appService;
29189
- /* Properties to be passed into core-page-edit */
29190
29826
  this.loading = false;
29191
29827
  this.entityTable = "SYS_FUNCTION_GROUP";
29192
29828
  this.subsctiptions = [];
@@ -29273,13 +29909,13 @@ class GroupFunctionEditComponent extends BaseEditComponent {
29273
29909
  this.formInitStringValue = e;
29274
29910
  }
29275
29911
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: GroupFunctionEditComponent, deps: [{ token: DialogService }, { token: AppService }], target: i0.ɵɵFactoryTarget.Component }); }
29276
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: GroupFunctionEditComponent, isStandalone: true, selector: "sys-groupfunction-edit", usesInheritance: true, ngImport: i0, template: "<core-page-edit *ngIf=\"!!sections.length\" [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n<!-- <div class=\"app-main-content\">\r\n <div class=\"app-container\">\r\n <div class=\"app-toolbar\">\r\n <div class=\"card-center\">\r\n <div class=\"app-breadcrum\">\r\n <div class=\"brackcrum\">\r\n <i class=\"fa fa-sitemap\" aria-hidden=\"true\"></i>Danh m\u1EE5c <i\r\n class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>H\u1EC7 th\u1ED1ng\r\n <i class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>\r\n <span class=\"brackcrum-active\"\r\n href='/cms/system/groupfunction'>Nh\u00F3m ch\u1EE9c n\u0103ng</span>\r\n </div>\r\n </div>\r\n <div class=\"main-toolbar\">\r\n <button id=\"add\" class=\"btn-action\" (click)=\"clickToolbar(itemButton)\"\r\n *ngFor=\"let itemButton of toolbar\"\r\n [disabled]=\"itemButton.isDisable === true\">\r\n <p class=\"text-center\"><i\r\n class=\"fa {{itemButton.prefixIcon}} {{itemButton.iconColorClass}}\"></i>\r\n </p>\r\n <p class=\"text-center\">{{itemButton.text}}</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-center\">\r\n <form name=\"editForm\" [formGroup]=\"editForm\" novalidate>\r\n <div class=\"group-box\">\r\n <div class=\"card-head\">\r\n <div class=\"icon-info histaff-icon\"></div>\r\n <label class=\"title\">Th\u00F4ng tin </label>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\" for=\"code\">M\u00E3</label>\r\n <input class=\"form-control\" type=\"text\" id=\"code\" name=\"code\"\r\n formControlName=\"code\" [(ngModel)]=\"model.code\">\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('code')!.hasError('required') && !editForm.get('code')!.untouched\">\r\n Tr\u01B0\u1EDDng M\u00E3 b\u1EAFt bu\u1ED9c nh\u1EADp\r\n </span>\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('code')!.hasError('pattern') && !editForm.get('code')!.untouched\">\r\n M\u00E3 kh\u00F4ng \u0111\u01B0\u1EE3c ch\u1EE9a k\u00FD t\u1EF1 \u0111\u1EB7c bi\u1EC7t\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\" for=\"name\">T\u00EAn</label>\r\n <input class=\"form-control\" type=\"text\" id=\"name\" name=\"name\"\r\n formControlName=\"name\" [(ngModel)]=\"model.name\">\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('name')!.hasError('required') && !editForm.get('name')!.untouched\">\r\n Tr\u01B0\u1EDDng T\u00EAn b\u1EAFt bu\u1ED9c nh\u1EADp\r\n </span>\r\n <span class=\"input-error \"\r\n *ngIf=\"editForm.get('name')!.hasError('maxlength') && !editForm.get('name')!.untouched\">\r\n T\u00EAn kh\u00F4ng \u0111\u01B0\u1EE3c v\u01B0\u1EE3t qu\u00E1 300 k\u00FD t\u1EF1\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\">\u1EE8ng\r\n d\u1EE5ng</label>\r\n <ejs-dropdownlist id='status' [dataSource]='lstApplication'\r\n [fields]='fields' [showClearButton]=\"true\"\r\n [(ngModel)]=\"model.applicationId\"\r\n formControlName=\"applicationId\" [placeholder]=\"''\"\r\n [allowFiltering]='true'\r\n (filtering)='onFiltering($event,lstApplication )'>\r\n </ejs-dropdownlist>\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('applicationId')!.hasError('required') && !editForm.get('applicationId')!.untouched\">\r\n B\u1EAFt bu\u1ED9c ch\u1ECDn\r\n </span>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n<gohr-confirm-modal id=\"confirm-back-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\" (click)=\"confirmBack('ok')\">\u0110\u1ED3ng \u00FD</button>\r\n <button class=\"btn btn-default\" (click)=\"confirmBack('cancel')\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal>\r\n\r\n<gohr-confirm-modal id=\"confirm-delete-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\" (click)=\"confirmDelete('ok')\">\u0110\u1ED3ng\r\n \u00FD</button>\r\n <button class=\"btn btn-default\"\r\n (click)=\"confirmDelete('cancel')\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal>\r\n\r\n<gohr-confirm-modal id=\"confirm-direct-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\">\u0110\u1ED3ng\r\n \u00FD</button>\r\n <button class=\"btn btn-default\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal> -->\r\n", styles: [""], dependencies: [{ kind: "component", type: CorePageEditComponent, selector: "core-page-edit", inputs: ["stayAfterSubmit", "width", "entityTable", "hasIdOfStringType", "captionCode", "leftInputSections", "leftInputSectionsFlexSize", "sections", "normalMode", "bottomTemplateRef", "autoGetByIdOff", "autoSubmitLogicOff", "autoCancelLogicOff", "customFormButtonItems", "mixedMode", "checkError$", "showSaveButton", "disableSaveButton", "disableCancelButton", "forceListRefreshOnCreateOrUpdate", "crud", "entityUniqueIndexs", "idAsInput", "id", "hideButtons"], outputs: ["submitLogic", "onFormCreated", "onSubmitSuccess", "onButtonClick", "cancelLogic", "onInitialValueStringReady"] }] }); }
29912
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: GroupFunctionEditComponent, isStandalone: true, selector: "sys-groupfunction-edit", usesInheritance: true, ngImport: i0, template: "@if (!!sections.length) {\r\n<core-page-edit [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n}", styles: [""], dependencies: [{ kind: "component", type: CorePageEditComponent, selector: "core-page-edit", inputs: ["stayAfterSubmit", "width", "entityTable", "hasIdOfStringType", "captionCode", "leftInputSections", "leftInputSectionsFlexSize", "sections", "normalMode", "bottomTemplateRef", "autoGetByIdOff", "autoSubmitLogicOff", "autoCancelLogicOff", "customFormButtonItems", "mixedMode", "checkError$", "showSaveButton", "disableSaveButton", "disableCancelButton", "forceListRefreshOnCreateOrUpdate", "crud", "entityUniqueIndexs", "idAsInput", "id", "hideButtons"], outputs: ["submitLogic", "onFormCreated", "onSubmitSuccess", "onButtonClick", "cancelLogic", "onInitialValueStringReady"] }] }); }
29277
29913
  }
29278
29914
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: GroupFunctionEditComponent, decorators: [{
29279
29915
  type: Component,
29280
29916
  args: [{ selector: "sys-groupfunction-edit", imports: [
29281
29917
  CorePageEditComponent,
29282
- ], template: "<core-page-edit *ngIf=\"!!sections.length\" [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n<!-- <div class=\"app-main-content\">\r\n <div class=\"app-container\">\r\n <div class=\"app-toolbar\">\r\n <div class=\"card-center\">\r\n <div class=\"app-breadcrum\">\r\n <div class=\"brackcrum\">\r\n <i class=\"fa fa-sitemap\" aria-hidden=\"true\"></i>Danh m\u1EE5c <i\r\n class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>H\u1EC7 th\u1ED1ng\r\n <i class=\"fa fa-angle-double-right\" aria-hidden=\"true\"></i>\r\n <span class=\"brackcrum-active\"\r\n href='/cms/system/groupfunction'>Nh\u00F3m ch\u1EE9c n\u0103ng</span>\r\n </div>\r\n </div>\r\n <div class=\"main-toolbar\">\r\n <button id=\"add\" class=\"btn-action\" (click)=\"clickToolbar(itemButton)\"\r\n *ngFor=\"let itemButton of toolbar\"\r\n [disabled]=\"itemButton.isDisable === true\">\r\n <p class=\"text-center\"><i\r\n class=\"fa {{itemButton.prefixIcon}} {{itemButton.iconColorClass}}\"></i>\r\n </p>\r\n <p class=\"text-center\">{{itemButton.text}}</p>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"card-center\">\r\n <form name=\"editForm\" [formGroup]=\"editForm\" novalidate>\r\n <div class=\"group-box\">\r\n <div class=\"card-head\">\r\n <div class=\"icon-info histaff-icon\"></div>\r\n <label class=\"title\">Th\u00F4ng tin </label>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\" for=\"code\">M\u00E3</label>\r\n <input class=\"form-control\" type=\"text\" id=\"code\" name=\"code\"\r\n formControlName=\"code\" [(ngModel)]=\"model.code\">\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('code')!.hasError('required') && !editForm.get('code')!.untouched\">\r\n Tr\u01B0\u1EDDng M\u00E3 b\u1EAFt bu\u1ED9c nh\u1EADp\r\n </span>\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('code')!.hasError('pattern') && !editForm.get('code')!.untouched\">\r\n M\u00E3 kh\u00F4ng \u0111\u01B0\u1EE3c ch\u1EE9a k\u00FD t\u1EF1 \u0111\u1EB7c bi\u1EC7t\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\" for=\"name\">T\u00EAn</label>\r\n <input class=\"form-control\" type=\"text\" id=\"name\" name=\"name\"\r\n formControlName=\"name\" [(ngModel)]=\"model.name\">\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('name')!.hasError('required') && !editForm.get('name')!.untouched\">\r\n Tr\u01B0\u1EDDng T\u00EAn b\u1EAFt bu\u1ED9c nh\u1EADp\r\n </span>\r\n <span class=\"input-error \"\r\n *ngIf=\"editForm.get('name')!.hasError('maxlength') && !editForm.get('name')!.untouched\">\r\n T\u00EAn kh\u00F4ng \u0111\u01B0\u1EE3c v\u01B0\u1EE3t qu\u00E1 300 k\u00FD t\u1EF1\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-4\">\r\n <div class=\"form-group vertical\">\r\n <label class=\"e-float-text required\">\u1EE8ng\r\n d\u1EE5ng</label>\r\n <ejs-dropdownlist id='status' [dataSource]='lstApplication'\r\n [fields]='fields' [showClearButton]=\"true\"\r\n [(ngModel)]=\"model.applicationId\"\r\n formControlName=\"applicationId\" [placeholder]=\"''\"\r\n [allowFiltering]='true'\r\n (filtering)='onFiltering($event,lstApplication )'>\r\n </ejs-dropdownlist>\r\n <span class=\"input-error\"\r\n *ngIf=\"editForm.get('applicationId')!.hasError('required') && !editForm.get('applicationId')!.untouched\">\r\n B\u1EAFt bu\u1ED9c ch\u1ECDn\r\n </span>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n\r\n<gohr-confirm-modal id=\"confirm-back-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\" (click)=\"confirmBack('ok')\">\u0110\u1ED3ng \u00FD</button>\r\n <button class=\"btn btn-default\" (click)=\"confirmBack('cancel')\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal>\r\n\r\n<gohr-confirm-modal id=\"confirm-delete-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\" (click)=\"confirmDelete('ok')\">\u0110\u1ED3ng\r\n \u00FD</button>\r\n <button class=\"btn btn-default\"\r\n (click)=\"confirmDelete('cancel')\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal>\r\n\r\n<gohr-confirm-modal id=\"confirm-direct-modal\">\r\n <div class=\"row full-width gohr-modal-header\">\r\n Nh\u1EEFng thay \u0111\u1ED5i hi\u1EC7n t\u1EA1i s\u1EBD b\u1ECB m\u1EA5t. B\u1EA1n c\u00F3 th\u1EF1c s\u1EF1 mu\u1ED1n ti\u1EBFp t\u1EE5c?\r\n </div>\r\n <div class=\"row full-width gohr-modal-footer text-center\">\r\n <button class=\"btn btn-primary\">\u0110\u1ED3ng\r\n \u00FD</button>\r\n <button class=\"btn btn-default\">H\u1EE7y</button>\r\n </div>\r\n</gohr-confirm-modal> -->\r\n" }]
29918
+ ], template: "@if (!!sections.length) {\r\n<core-page-edit [width]=\"1000\" [captionCode]=\"captionCode\" [sections]=\"sections\" [crud]=\"crud\"\r\n [entityTable]=\"entityTable\" (onFormCreated)=\"onFormCreated($event)\"\r\n (onInitialValueStringReady)=\"onFormReinit($event)\"></core-page-edit>\r\n}" }]
29283
29919
  }], ctorParameters: () => [{ type: DialogService }, { type: AppService }] });
29284
29920
 
29285
29921
  class InMemoryComponent extends BaseComponent {
@@ -31450,7 +32086,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
31450
32086
  const simpleChatRoutes = [
31451
32087
  {
31452
32088
  path: '',
31453
- loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-4gnuNHNQ.mjs').then(m => m.SimpleChatComponent)
32089
+ loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-CDCKBrkZ.mjs').then(m => m.SimpleChatComponent)
31454
32090
  }
31455
32091
  ];
31456
32092
 
@@ -34778,6 +35414,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
34778
35414
  }]
34779
35415
  }], ctorParameters: () => [] });
34780
35416
 
35417
+ const coreDocGenRoutes = [
35418
+ {
35419
+ path: 'template-list',
35420
+ loadComponent: () => import('./ngx-histaff-alpha-template-list.component-BFTwxU2H.mjs').then(m => m.TemplateListComponent),
35421
+ },
35422
+ {
35423
+ path: ":id",
35424
+ loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-_BGMfd0v.mjs').then(m => m.CoreTemplateEditorComponent),
35425
+ canDeactivate: [CanDeactivateGuard]
35426
+ },
35427
+ {
35428
+ path: '',
35429
+ redirectTo: 'template-list',
35430
+ pathMatch: 'full'
35431
+ }
35432
+ ];
35433
+
34781
35434
  class CustomValidators {
34782
35435
  static core(errorKey, valid, errorMessage) {
34783
35436
  return (control) => {
@@ -34797,7 +35450,7 @@ const coreFormDesignRoutes = [
34797
35450
  },
34798
35451
  {
34799
35452
  path: ':id',
34800
- loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-DdKhEOxl.mjs').then(function (n) { return n.c; }).then(m => m.CoreFormDesignComponent)
35453
+ loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-XvkMxYKX.mjs').then(function (n) { return n.c; }).then(m => m.CoreFormDesignComponent)
34801
35454
  }
34802
35455
  ];
34803
35456
 
@@ -35691,7 +36344,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
35691
36344
  const coreNavigationTrackerRoutes = [
35692
36345
  {
35693
36346
  path: '',
35694
- loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-BXMxPjuc.mjs').then(m => m.TrackerStudioComponent)
36347
+ loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-DnkbQFFW.mjs').then(m => m.TrackerStudioComponent)
35695
36348
  }
35696
36349
  ];
35697
36350
 
@@ -38327,29 +38980,29 @@ const coreWorkflowRoutes = [
38327
38980
  {
38328
38981
  path: 'form-assign/:id',
38329
38982
  outlet: "formAssignAux",
38330
- loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-Q4uvQoJO.mjs').then(m => m.WfFormAssignComponent),
38983
+ loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-Do8vO6MV.mjs').then(m => m.WfFormAssignComponent),
38331
38984
  canDeactivate: [CanDeactivateGuard]
38332
38985
  }
38333
38986
  ]
38334
38987
  },
38335
38988
  {
38336
38989
  path: 'db-settings',
38337
- loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-Bs5Y-dKb.mjs').then(m => m.DbSettingsComponent)
38990
+ loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-osYYD2VZ.mjs').then(m => m.DbSettingsComponent)
38338
38991
  },
38339
38992
  {
38340
38993
  path: 'workflow-consume',
38341
- loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-2abUPaGQ.mjs').then(m => m.CoreWorkflowConsumeComponent),
38994
+ loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-DOC0gxvF.mjs').then(m => m.CoreWorkflowConsumeComponent),
38342
38995
  children: [
38343
38996
  {
38344
38997
  path: ':id',
38345
38998
  outlet: "workflowConsume",
38346
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-tNHO021s.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
38999
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CxHOd02D.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
38347
39000
  }
38348
39001
  ]
38349
39002
  },
38350
39003
  {
38351
39004
  path: 'workflow-consume/:id',
38352
- loadComponent: () => import('./ngx-histaff-alpha-live-form.component-tNHO021s.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
39005
+ loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CxHOd02D.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
38353
39006
  },
38354
39007
  {
38355
39008
  path: 'workflow-group-edit/:id',
@@ -38359,17 +39012,17 @@ const coreWorkflowRoutes = [
38359
39012
  },
38360
39013
  {
38361
39014
  path: 'design/:id',
38362
- loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-DpjX7k37.mjs').then(m => m.wfDesignWrapperRoutes),
39015
+ loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-FELy6p-G.mjs').then(m => m.wfDesignWrapperRoutes),
38363
39016
  },
38364
39017
  ]
38365
39018
  },
38366
39019
  {
38367
39020
  path: 'react/:id',
38368
- loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-BLXwhETi.mjs').then(m => m.WfInstanceStepReactComponent)
39021
+ loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-3XR3zc8T.mjs').then(m => m.WfInstanceStepReactComponent)
38369
39022
  },
38370
39023
  {
38371
39024
  path: 'status/:id',
38372
- loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-D9RhPDwJ.mjs').then(m => m.WfInstanceStatusComponent)
39025
+ loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-BqWwA5pQ.mjs').then(m => m.WfInstanceStatusComponent)
38373
39026
  }
38374
39027
  ];
38375
39028
 
@@ -38614,6 +39267,8 @@ class CoreWorkflowListComponent extends BaseComponent {
38614
39267
  }
38615
39268
  }
38616
39269
  }
39270
+ copyWorkflow(flow) {
39271
+ }
38617
39272
  deleteWorkflow(flow) {
38618
39273
  if (confirm(`Are you sure about deleting this flow "${flow.name}"`)) {
38619
39274
  this.$loading.set(true);
@@ -38713,7 +39368,7 @@ class CoreWorkflowListComponent extends BaseComponent {
38713
39368
  this.doublePointDown.unsubscribe();
38714
39369
  }
38715
39370
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreWorkflowListComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: CoreWorkflowService }, { token: CoreFormDesignService }, { token: AppService }, { token: AlertService }, { token: MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
38716
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreWorkflowListComponent, isStandalone: true, selector: "core-workflow-list", usesInheritance: true, ngImport: i0, template: "<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"Workflow List\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"container-fluid\">\r\n\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n <core-tabs [headers]=\"['Drafts', 'Published']\" (onHeaderClick)=\"onTabClick($event)\" />\r\n </div>\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\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 </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"dbSchemaSettings()\" [class.d-none]=\"$sortMode()\">Db\r\n Settings</button>\r\n <button class=\"btn btn-secondary\" (click)=\"createWorkflowGroup()\"\r\n [class.d-none]=\"$sortMode()\">Create Group</button>\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\" [attr.data-id]=\"group.id\" dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n\r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n\r\n <div class=\"WorkflowGroup_nameOperations for-dragging 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 class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n\r\n <div class=\"WorkflowGroup_itemEdit pointer\" [appTooltip]=\"'Edit'\" [showAnyway]=\"true\">\r\n <i class=\"feather-edit\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_itemEditI18n pointer\" [appTooltip]=\"'Multi-language integration'\" [showAnyway]=\"true\">\r\n <i class=\"feather-globe\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_deleteButton pointer\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\">\r\n <i class=\"feather-trash-2\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_creatWorkflowButton pointer\" [appTooltip]=\"'Create'\" [showAnyway]=\"true\">\r\n <i class=\"feather-plus\" (click)=\"createWorkflow(group.id)\"></i>\r\n </div>\r\n\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 <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [appTooltip]=\"flow.name\" [showAnyway]=\"true\">\r\n {{ flow.name }}\r\n </span>\r\n </div>\r\n @if (isDevMode) {\r\n <!-- <div class=\"workflow-id\">\r\n {{ flow.id }}\r\n </div> -->\r\n }\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"Workflow_processDesignLocker pointer\" (click)=\"toggleLock(flow, group)\">\r\n @if (flow.locked) {\r\n <i class=\"feather-lock\" [appTooltip]=\"'Lock'\" [showAnyway]=\"true\"></i>\r\n } @else {\r\n <i class=\"feather-unlock\" [appTooltip]=\"'Unlock'\" [showAnyway]=\"true\"></i>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"Workflow_processDesignEdit pointer\" (click)=\"designWorkflow(flow, group)\"\r\n [appTooltip]=\"'Process Design'\">\r\n <i class=\"feather-git-pull-request\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"deleteWorkflow(flow)\"\r\n [appTooltip]=\"'Delete'\">\r\n <i class=\"feather-trash\"></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=\"formAssignAux\"></router-outlet>\r\n\r\n</div>", styles: [".core-workflow-list-container .container-fluid{max-width:1000px}.core-workflow-list-container .row>*{padding:0}.core-workflow-list-container .row.sort-mode{--bs-gutter-y: 1rem}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft{width:50%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft input{width:100%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsRight button{margin-left:12px;border-radius:0}.core-workflow-list-container .WorkflowGroup{padding-left:0!important;padding-right:0!important;border-radius:0;margin-bottom:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header{height:50px;color:#fff;background-color:gray}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_headerTitle{padding-left:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div>i{font-size:18px;color:#fff}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations.for-dragging>div>i{color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow{display:flex;align-items:center;justify-content:space-between;height:50px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow:hover{background-color:#d3d3d3}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code{display:flex;align-items:center;justify-content:flex-start;padding-left:15px;height:35px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i{display:inline-block;color:gray;font-size:18px;margin-right:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i.af-form-assigned{color:#dd5f2a}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .workflow-id{width:300px;font-size:13px;display:flex;align-items:center;justify-content:flex-start;font-family:Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px;height:35px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight{display:flex;align-items:center;justify-content:flex-end;color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div>i{font-size:18px}.core-workflow-list-container .WorkflowGroup.sort-mode{height:50px;cursor:grab}.core-workflow-list-container .WorkflowGroup.sort-mode .WorkflowGroup_header{background-color:#fff;color:gray}.core-workflow-list-container .pointer-none{pointer-events:none}.core-workflow-list-container .p-relative{position:relative}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "directive", type: DragReorderDirective, selector: "[dragReorder]", inputs: ["item"], outputs: ["updateList"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CoreTerminalSpinnerComponent, selector: "core-terminal-spinner" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39371
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreWorkflowListComponent, isStandalone: true, selector: "core-workflow-list", usesInheritance: true, ngImport: i0, template: "<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"Workflow List\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"container-fluid\">\r\n\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n <core-tabs [headers]=\"['Drafts', 'Published']\" (onHeaderClick)=\"onTabClick($event)\" />\r\n </div>\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\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 </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"dbSchemaSettings()\" [class.d-none]=\"$sortMode()\">Db\r\n Settings</button>\r\n <button class=\"btn btn-secondary\" (click)=\"createWorkflowGroup()\"\r\n [class.d-none]=\"$sortMode()\">Create Group</button>\r\n <button class=\"btn btn-secondary\" (click)=\"togglerSortMode()\">{{ $sortMode() ? 'Expand' :\r\n '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\" [attr.data-id]=\"group.id\" dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n\r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n\r\n <div class=\"WorkflowGroup_nameOperations for-dragging 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 class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n\r\n <div class=\"WorkflowGroup_itemEdit pointer\" [appTooltip]=\"'Edit'\" [showAnyway]=\"true\">\r\n <i class=\"feather-edit\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_itemEditI18n pointer\" [appTooltip]=\"'Multi-language integration'\"\r\n [showAnyway]=\"true\">\r\n <i class=\"feather-globe\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_deleteButton pointer\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\">\r\n <i class=\"feather-trash-2\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_creatWorkflowButton pointer\" [appTooltip]=\"'Create'\"\r\n [showAnyway]=\"true\">\r\n <i class=\"feather-plus\" (click)=\"createWorkflow(group.id)\"></i>\r\n </div>\r\n\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 <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [appTooltip]=\"flow.name\"\r\n [showAnyway]=\"true\">\r\n {{ flow.name }}\r\n </span>\r\n </div>\r\n @if (isDevMode) {\r\n <!-- <div class=\"workflow-id\">\r\n {{ flow.id }}\r\n </div> -->\r\n }\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"Workflow_processDesignLocker pointer\" (click)=\"toggleLock(flow, group)\">\r\n @if (flow.locked) {\r\n <i class=\"feather-lock\" [appTooltip]=\"'Lock'\" [showAnyway]=\"true\"></i>\r\n } @else {\r\n <i class=\"feather-unlock\" [appTooltip]=\"'Unlock'\" [showAnyway]=\"true\"></i>\r\n }\r\n\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"copyWorkflow(flow)\">\r\n <i class=\"feather-copy\" [appTooltip]=\"'Copy'\" [showAnyway]=\"true\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignEdit pointer\" (click)=\"designWorkflow(flow, group)\">\r\n <i class=\"feather-git-pull-request\" [appTooltip]=\"'Process Design'\"\r\n [showAnyway]=\"true\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"deleteWorkflow(flow)\">\r\n <i class=\"feather-trash\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\"></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\r\n </div>\r\n\r\n </div>\r\n\r\n <router-outlet name=\"formAssignAux\"></router-outlet>\r\n\r\n</div>", styles: [".core-workflow-list-container .container-fluid{max-width:800px}.core-workflow-list-container .row>*{padding:0}.core-workflow-list-container .row.sort-mode{--bs-gutter-y: 1rem}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft{width:50%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft input{width:100%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsRight button{margin-left:12px;border-radius:0}.core-workflow-list-container .WorkflowGroup{padding-left:0!important;padding-right:0!important;border-radius:0;margin-bottom:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header{height:50px;color:#fff;background-color:#6c757d}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_headerTitle{padding-left:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div>i{font-size:18px;color:#fff}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations.for-dragging>div>i{color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow{display:flex;align-items:center;justify-content:space-between;height:50px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow:hover{background-color:#d3d3d3}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code{display:flex;align-items:center;justify-content:flex-start;padding-left:15px;height:35px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i{display:inline-block;color:gray;font-size:18px;margin-right:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i.af-form-assigned{color:#dd5f2a}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .workflow-id{width:300px;font-size:13px;display:flex;align-items:center;justify-content:flex-start;font-family:Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px;height:35px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight{display:flex;align-items:center;justify-content:flex-end;color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div>i{font-size:18px}.core-workflow-list-container .WorkflowGroup.sort-mode{height:50px;cursor:grab}.core-workflow-list-container .WorkflowGroup.sort-mode .WorkflowGroup_header{background-color:#fff;color:gray}.core-workflow-list-container .pointer-none{pointer-events:none}.core-workflow-list-container .p-relative{position:relative}\n"], dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["color", "backgroundColor", "appTooltip", "showAnyway", "position"] }, { kind: "directive", type: DragReorderDirective, selector: "[dragReorder]", inputs: ["item"], outputs: ["updateList"] }, { kind: "component", type: CoreTabsComponent, selector: "core-tabs", inputs: ["headers", "contents", "headerTools", "height", "headerLineHeight"], outputs: ["onHeaderClick", "onToolItemClick"] }, { kind: "component", type: CoreTerminalSpinnerComponent, selector: "core-terminal-spinner" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
38717
39372
  }
38718
39373
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreWorkflowListComponent, decorators: [{
38719
39374
  type: Component,
@@ -38724,7 +39379,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
38724
39379
  DragReorderDirective,
38725
39380
  CoreTabsComponent,
38726
39381
  CoreTerminalSpinnerComponent
38727
- ], template: "<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"Workflow List\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"container-fluid\">\r\n\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n <core-tabs [headers]=\"['Drafts', 'Published']\" (onHeaderClick)=\"onTabClick($event)\" />\r\n </div>\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\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 </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"dbSchemaSettings()\" [class.d-none]=\"$sortMode()\">Db\r\n Settings</button>\r\n <button class=\"btn btn-secondary\" (click)=\"createWorkflowGroup()\"\r\n [class.d-none]=\"$sortMode()\">Create Group</button>\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\" [attr.data-id]=\"group.id\" dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n\r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n\r\n <div class=\"WorkflowGroup_nameOperations for-dragging 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 class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n\r\n <div class=\"WorkflowGroup_itemEdit pointer\" [appTooltip]=\"'Edit'\" [showAnyway]=\"true\">\r\n <i class=\"feather-edit\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_itemEditI18n pointer\" [appTooltip]=\"'Multi-language integration'\" [showAnyway]=\"true\">\r\n <i class=\"feather-globe\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_deleteButton pointer\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\">\r\n <i class=\"feather-trash-2\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_creatWorkflowButton pointer\" [appTooltip]=\"'Create'\" [showAnyway]=\"true\">\r\n <i class=\"feather-plus\" (click)=\"createWorkflow(group.id)\"></i>\r\n </div>\r\n\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 <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [appTooltip]=\"flow.name\" [showAnyway]=\"true\">\r\n {{ flow.name }}\r\n </span>\r\n </div>\r\n @if (isDevMode) {\r\n <!-- <div class=\"workflow-id\">\r\n {{ flow.id }}\r\n </div> -->\r\n }\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"Workflow_processDesignLocker pointer\" (click)=\"toggleLock(flow, group)\">\r\n @if (flow.locked) {\r\n <i class=\"feather-lock\" [appTooltip]=\"'Lock'\" [showAnyway]=\"true\"></i>\r\n } @else {\r\n <i class=\"feather-unlock\" [appTooltip]=\"'Unlock'\" [showAnyway]=\"true\"></i>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"Workflow_processDesignEdit pointer\" (click)=\"designWorkflow(flow, group)\"\r\n [appTooltip]=\"'Process Design'\">\r\n <i class=\"feather-git-pull-request\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"deleteWorkflow(flow)\"\r\n [appTooltip]=\"'Delete'\">\r\n <i class=\"feather-trash\"></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=\"formAssignAux\"></router-outlet>\r\n\r\n</div>", styles: [".core-workflow-list-container .container-fluid{max-width:1000px}.core-workflow-list-container .row>*{padding:0}.core-workflow-list-container .row.sort-mode{--bs-gutter-y: 1rem}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft{width:50%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft input{width:100%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsRight button{margin-left:12px;border-radius:0}.core-workflow-list-container .WorkflowGroup{padding-left:0!important;padding-right:0!important;border-radius:0;margin-bottom:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header{height:50px;color:#fff;background-color:gray}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_headerTitle{padding-left:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div>i{font-size:18px;color:#fff}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations.for-dragging>div>i{color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow{display:flex;align-items:center;justify-content:space-between;height:50px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow:hover{background-color:#d3d3d3}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code{display:flex;align-items:center;justify-content:flex-start;padding-left:15px;height:35px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i{display:inline-block;color:gray;font-size:18px;margin-right:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i.af-form-assigned{color:#dd5f2a}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .workflow-id{width:300px;font-size:13px;display:flex;align-items:center;justify-content:flex-start;font-family:Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px;height:35px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight{display:flex;align-items:center;justify-content:flex-end;color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div>i{font-size:18px}.core-workflow-list-container .WorkflowGroup.sort-mode{height:50px;cursor:grab}.core-workflow-list-container .WorkflowGroup.sort-mode .WorkflowGroup_header{background-color:#fff;color:gray}.core-workflow-list-container .pointer-none{pointer-events:none}.core-workflow-list-container .p-relative{position:relative}\n"] }]
39382
+ ], template: "<div class=\"core-workflow-list-container\">\r\n\r\n <core-page-header title=\"Workflow List\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"container-fluid\">\r\n\r\n <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n <core-tabs [headers]=\"['Drafts', 'Published']\" (onHeaderClick)=\"onTabClick($event)\" />\r\n </div>\r\n\r\n <div class=\"col-md-12 no-padding\">\r\n @if ($loading()) {\r\n <core-terminal-spinner />\r\n }\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 </div>\r\n <div class=\"WorkflowList_operationsRight\">\r\n <button class=\"btn btn-secondary\" (click)=\"dbSchemaSettings()\" [class.d-none]=\"$sortMode()\">Db\r\n Settings</button>\r\n <button class=\"btn btn-secondary\" (click)=\"createWorkflowGroup()\"\r\n [class.d-none]=\"$sortMode()\">Create Group</button>\r\n <button class=\"btn btn-secondary\" (click)=\"togglerSortMode()\">{{ $sortMode() ? 'Expand' :\r\n '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\" [attr.data-id]=\"group.id\" dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n\r\n <div class=\"WorkflowGroup_header d-flex d-flex-between\">\r\n <div class=\"WorkflowGroup_headerTitle\">\r\n {{ group?.name }}\r\n </div>\r\n\r\n <div class=\"WorkflowGroup_nameOperations for-dragging 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 class=\"WorkflowGroup_nameOperations d-flex d-flex-end\">\r\n\r\n <div class=\"WorkflowGroup_itemEdit pointer\" [appTooltip]=\"'Edit'\" [showAnyway]=\"true\">\r\n <i class=\"feather-edit\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_itemEditI18n pointer\" [appTooltip]=\"'Multi-language integration'\"\r\n [showAnyway]=\"true\">\r\n <i class=\"feather-globe\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_deleteButton pointer\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\">\r\n <i class=\"feather-trash-2\"></i>\r\n </div>\r\n <div class=\"WorkflowGroup_creatWorkflowButton pointer\" [appTooltip]=\"'Create'\"\r\n [showAnyway]=\"true\">\r\n <i class=\"feather-plus\" (click)=\"createWorkflow(group.id)\"></i>\r\n </div>\r\n\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 <span [appTooltip]=\"flow.description\" [position]=\"'right'\" [appTooltip]=\"flow.name\"\r\n [showAnyway]=\"true\">\r\n {{ flow.name }}\r\n </span>\r\n </div>\r\n @if (isDevMode) {\r\n <!-- <div class=\"workflow-id\">\r\n {{ flow.id }}\r\n </div> -->\r\n }\r\n <div class=\"Workflow_operationsRight\">\r\n <div class=\"Workflow_processDesignLocker pointer\" (click)=\"toggleLock(flow, group)\">\r\n @if (flow.locked) {\r\n <i class=\"feather-lock\" [appTooltip]=\"'Lock'\" [showAnyway]=\"true\"></i>\r\n } @else {\r\n <i class=\"feather-unlock\" [appTooltip]=\"'Unlock'\" [showAnyway]=\"true\"></i>\r\n }\r\n\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"copyWorkflow(flow)\">\r\n <i class=\"feather-copy\" [appTooltip]=\"'Copy'\" [showAnyway]=\"true\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignEdit pointer\" (click)=\"designWorkflow(flow, group)\">\r\n <i class=\"feather-git-pull-request\" [appTooltip]=\"'Process Design'\"\r\n [showAnyway]=\"true\"></i>\r\n </div>\r\n <div class=\"Workflow_processDesignDelete pointer\" (click)=\"deleteWorkflow(flow)\">\r\n <i class=\"feather-trash\" [appTooltip]=\"'Delete'\" [showAnyway]=\"true\"></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\r\n </div>\r\n\r\n </div>\r\n\r\n <router-outlet name=\"formAssignAux\"></router-outlet>\r\n\r\n</div>", styles: [".core-workflow-list-container .container-fluid{max-width:800px}.core-workflow-list-container .row>*{padding:0}.core-workflow-list-container .row.sort-mode{--bs-gutter-y: 1rem}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft{width:50%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsLeft input{width:100%}.core-workflow-list-container .WorkflowList_operations .WorkflowList_operationsRight button{margin-left:12px;border-radius:0}.core-workflow-list-container .WorkflowGroup{padding-left:0!important;padding-right:0!important;border-radius:0;margin-bottom:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header{height:50px;color:#fff;background-color:#6c757d}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_headerTitle{padding-left:15px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations>div>i{font-size:18px;color:#fff}.core-workflow-list-container .WorkflowGroup .WorkflowGroup_header .WorkflowGroup_nameOperations.for-dragging>div>i{color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow{display:flex;align-items:center;justify-content:space-between;height:50px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow:hover{background-color:#d3d3d3}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code{display:flex;align-items:center;justify-content:flex-start;padding-left:15px;height:35px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i{display:inline-block;color:gray;font-size:18px;margin-right:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_code i.af-form-assigned{color:#dd5f2a}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .workflow-id{width:300px;font-size:13px;display:flex;align-items:center;justify-content:flex-start;font-family:Fira Code,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 5px;height:35px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight{display:flex;align-items:center;justify-content:flex-end;color:gray}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div{width:25px;height:25px;margin-left:8px}.core-workflow-list-container .WorkflowGroup .Workflows .Workflow .Workflow_operationsRight>div>i{font-size:18px}.core-workflow-list-container .WorkflowGroup.sort-mode{height:50px;cursor:grab}.core-workflow-list-container .WorkflowGroup.sort-mode .WorkflowGroup_header{background-color:#fff;color:gray}.core-workflow-list-container .pointer-none{pointer-events:none}.core-workflow-list-container .p-relative{position:relative}\n"] }]
38728
39383
  }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: CoreWorkflowService }, { type: CoreFormDesignService }, { type: AppService }, { type: AlertService }, { type: MultiLanguageService }] });
38729
39384
 
38730
39385
  var coreWorkflowList_component = /*#__PURE__*/Object.freeze({
@@ -40897,5 +41552,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
40897
41552
  * Generated bundle index. Do not edit.
40898
41553
  */
40899
41554
 
40900
- export { CoreControlComponent as $, AppService as A, BaseEditComponent as B, ChatService as C, DragReorderDirective as D, EnumFormBaseContolType as E, FullscreenModalLoaderComponent as F, GptService as G, ApplicationHelpService as H, ImageErrorResolverDirective as I, HotKeysDirective as J, CoreCheckboxComponent as K, JsonService as L, MultiLanguageService as M, NavigatorService as N, AppConfigService as O, EnumCorePageEditMode as P, EnumCoreButtonVNSCode as Q, READONLY_WORKFLOW_FIELDS as R, SocketService as S, TranslatePipe as T, noneAutoClosedAlertOptions as U, CoreFormComponent as V, CoreButtonGroupVnsComponent as W, EnumCoreTablePipeType as X, HtmlTooltipDirective as Y, CoreControlNoFormArrayComponent as Z, EnumFormDesignMode as _, CorePageHeaderComponent as a, DndService as a$, JsonSafePipe as a0, CoreAttachmentComponent as a1, CoreMonthSelectorComponent as a2, EnumImageResolverType as a3, NormalizeHumanNamePipe as a4, CoreIosSwitcherComponent as a5, CoreFormService as a6, SunnyRotatingComponent as a7, MapAppdemoToServerPipePipe as a8, MapAttachmentToServerPipe as a9, httpInterceptorProviders as aA, InterceptorSkipHeader as aB, appTypeInterceptor as aC, baseUrlInterceptor as aD, authInterceptor as aE, graphInterceptor as aF, tokenInterceptor as aG, responseInterceptor as aH, timeZoneInterceptor as aI, cachingInterceptor as aJ, langInterceptor as aK, EnumFilterOperator as aL, OnlineUsersComponent as aM, ActionService as aN, AppInitializationService as aO, AuthService as aP, CacheService as aQ, EnumSwUpdateVersionUpdatesEventType as aR, CheckForUpdateService as aS, EnumDeviceType as aT, EnumBrowserType as aU, EnumOsType as aV, ClientService as aW, CommonHttpRequestService as aX, TLA_CONFIG as aY, ConfigService as aZ, CoreTableService as a_, MapNewsfeedMediaToServerPipe as aa, StringHtmlPipe as ab, UploadedFilenameCutoffPipe as ac, DialogStateComponent as ad, FooterComponent as ae, RightchatComponent as af, WaittingScreenComponent as ag, longAlertOptions as ah, attachmentOptions as ai, CORE_VNS_BUTTONS as aj, defaultPaging as ak, DESKTOP_SCREEN_HEDER_HEIGHT as al, MOBILE_SCREEN_HEDER_HEIGHT as am, themeBlue as an, DATE_VALUE_ACCESSOR as ao, DateValueAccessor as ap, EnumDragType as aq, EnumErrorType as ar, EnumIconClass as as, EnumProfileInfoSector as at, EnumSignalRType as au, EnumSortDirection as av, EnumStyleButtonClass as aw, CanActivateFunctionUrlMapperGuard as ax, InitializationCanActivateFn as ay, InitializationCanMatchFn as az, CoreTabsComponent as b, SysOtherListComponent as b$, FilterKitService as b0, GrpcService as b1, HeaderService as b2, HistoryService as b3, HttpErrorHandler as b4, HubConnectionService as b5, IpServiceService as b6, LayoutService as b7, MapService as b8, MenuService as b9, EnumWorkScheduleViewMode as bA, WorkShiftDndService as bB, AtShiftPatternComponent as bC, AtShiftPatternApplyComponent as bD, AtShiftPatternEditComponent as bE, AtWorksignComponent as bF, AtWorksignService as bG, FunctionComponent as bH, IndividualScheduleApplyComponent as bI, FunctionEditComponent as bJ, FunctionIgnoreComponent as bK, FunctionIgnoreEditComponent as bL, GroupFunctionComponent as bM, GroupFunctionEditComponent as bN, InMemoryComponent as bO, LanguageComponent as bP, LanguageEditComponent as bQ, MenuComponent as bR, MenuEditComponent as bS, MutationLogComponent as bT, MutationViewComponent as bU, PaSalaryPolicyComponent as bV, PaSalaryPolicyEditComponent as bW, PortalRouteComponent as bX, ScheduleOverviewComponent as bY, simpleChatRoutes as bZ, PortalRouteEditComponent as b_, MessageService as ba, ModalService as bb, OrganizationService as bc, PkceService as bd, PositionTransferService as be, EnumNotificationDir as bf, NotificationActionType as bg, PushNotificationService as bh, RandomAvatarService as bi, RequestCache as bj, RequestCacheWithMap as bk, ResponseService as bl, RoutingService as bm, EnumSsrsExpressFileExtension as bn, EnumSsrsExpressExportFormat as bo, SsrsExpressService as bp, StatisticService as bq, StatisticAuthService as br, SysMenuService as bs, TimeSheetService as bt, TopicPermissionService as bu, TopicTreeService as bv, UploadedFileService as bw, UrlService as bx, UserActivityService as by, EvaluateDialogService as bz, CoreWorkflowService as c, coreFormDesignRoutes as c$, SysOtherListEditComponent as c0, SysOtherListTypeComponent as c1, SysOtherListTypeEditComponent as c2, SysActionComponent as c3, SysActionEditComponent as c4, SysFunctionActionComponent as c5, SysFunctionActionEditComponent as c6, SysFunctionActionMapperComponent as c7, SysFunctionUrlMapperComponent as c8, FunctionEditService as c9, CoreCommonParamKitComponent as cA, CoreCompareDbPipelineComponent as cB, CoreCompositionState as cC, CoreCompositionService as cD, CoreCompositionComponent as cE, CoreConfirmDialogComponent as cF, ConfirmDialogStateComponent as cG, CoreLazyMountComponent as cH, CoreRootMenuItemPickerComponent as cI, CoreRootMenuItemPickerService as cJ, ECoreTableToolCode as cK, ECoreTableToolClass as cL, CoreTableComponent as cM, CoreContractSeekerComponent as cN, CoreControlNoGridBufferComponent as cO, CoreControlNoSeekerComponent as cP, CoreEmployeeScheduleComponent as cQ, CoreEmployeeSeekerComponent as cR, EnumCoreFileUploaderType as cS, CoreFileUploaderComponent as cT, CoreFilterHubComponent as cU, CoreFilterHubService as cV, ControlBase as cW, Textbox as cX, CoreControlService as cY, CustomValidators as cZ, URL_PATTERN as c_, SysModuleComponent as ca, SysModuleEditComponent as cb, SysRouteAccessComponent as cc, liner_to_nested_array_script as cd, blob_to_base64_script as ce, AlertComponent as cf, EnumAlertType as cg, IAlertOptions as ch, AnimatedTextService as ci, AnimatedTextComponent as cj, BaseDropdownComponent as ck, ButtonGroupModule as cl, ButtonGroupService as cm, ButtonGroupComponent as cn, EnumButtonCaptionCode as co, CoreButtonComponent as cp, CoreAccordionComponent as cq, CoreAccordionService as cr, CoreActiveUserCountComponent as cs, NewlyCreatedTokenService as ct, CoreApiProgressComponent as cu, CoreButtonGroupComponent as cv, EnumCoreButtonCode as cw, ActionSvgEditComponent as cx, CoreButtonGroupService as cy, CoreButtonVnsComponent as cz, EnumCoreFormControlSeekerSourceType as d, CoreSalaryPolicyPickerComponent as d$, CoreFormTabComponent as d0, CoreFormLiteComponent as d1, CoreFormControlBaseComponent as d2, EnumCoreSeekerColumnJob as d3, EnumCoreSeekerColumnStaffProfile as d4, EnumCoreSeekerColumnContract as d5, EnumCoreSeekerColumnWorking as d6, EnumCoreSeekerColumnWage as d7, EnumCoreSeekerColumnPosition as d8, EnumCoreSeekerColumnPositionConcurrent as d9, CorePageEditService as dA, CorePageEditLiteComponent as dB, CorePageEditTabComponent as dC, CorePageListComponent as dD, EnumExType as dE, CorePageListService as dF, CorePageListState as dG, CorePageListContentComponent as dH, EnumCoreViewItemType as dI, CorePageViewComponent as dJ, CorePaginationComponent as dK, CorePaginationFullComponent as dL, CorePaginationFullService as dM, CoreFileFormatPickerComponent as dN, CorePermissionService as dO, EnumPermissionObjectType as dP, CorePermissionComponent as dQ, CorePermissionActionsComponent as dR, CorePositionConcurrentSeekerComponent as dS, CorePositionSeekerComponent as dT, CoreQrcodeComponent as dU, EnumOparator as dV, CoreQueryBuilderComponent as dW, CoreReducerIconComponent as dX, CoreRotatingTextComponent as dY, CoreRouteAccumulatorComponent as dZ, CoreRoutingHistoryComponent as d_, EnumCoreSeekerColumnAutoForm as da, SeekerService as db, CoreGridBufferComponent as dc, CoreHeaderParamsComponent as dd, CoreHelperComponent as de, CoreLineComponent as df, CoreListComponent as dg, CoreListLazyComponent as dh, CoreLoadingSurfaceComponent as di, CoreMccComponent as dj, CoreMonthPickerComponent as dk, CoreNavigationTrackerComponent as dl, coreNavigationTrackerRoutes as dm, CoreOauthCallbackComponent as dn, CoreOauthCallbackOffice365Component as dp, EnumCoreOrgTreeaAccessorMode as dq, EnumCoreOrgTreeaSearchMode as dr, CoreOrgTreeComponent as ds, CoreOrgTreeState as dt, CoreOrgTreeService as du, CoreOrgUnitSeekerComponent as dv, CoreOrgchartflexComponent as dw, CoreOrgParamComponent as dx, EnumCorePageEditBootstrapClass as dy, EnumCorePageEditFieldType as dz, CorePageEditComponent as e, CoreScrollComponent as e0, CoreScrollLazyComponent as e1, CoreSeenByComponent as e2, CoreShiftCardComponent as e3, CoreShiftCellComponent as e4, CoreShiftCollectionComponent as e5, CoreShiftStickerComponent as e6, STICKER_COLOR_SCHEMA as e7, CoreStatusStickerComponent as e8, CoreSubFormGroupComponent as e9, LanguageChangerComponent as eA, DEFAULT_SVG as eB, ItemComponent as eC, NavigatorComponent as eD, OtpInputComponent as eE, OtpInputService as eF, PageTitleComponent as eG, PaginationComponent as eH, FilterPipe as eI, normalizeHumanName as eJ, PositionComponent as eK, PositionEditService as eL, CoreDatetimeService as eM, FileService as eN, LongTaskService as eO, EnumRecursiveFields as eP, RecursiveService as eQ, StringService as eR, UnicodeService as eS, StaffProfileComponent as eT, ThreedotsComponent as eU, TooltipComponent as eV, UserActivityComponent as eW, WageComponent as eX, tooltip_directive as eY, dragReorder_directive as eZ, CoreTabListComponent as ea, CoreTagsComponent as eb, CoreTopicPickerComponent as ec, EnumCoreArticleCategoryTreeaAccessorMode as ed, CoreTopicTreeComponent as ee, CoreTreeComponent as ef, EnumCoreTreeGridEditMode as eg, CoreTreeGridComponent as eh, CoreWageSeekerComponent as ei, CoreWorkingSeekerComponent as ej, coreWorkflowRoutes as ek, CoreWorkflowBuilderComponent as el, CoreWorkflowGroupEditComponent as em, CoreYearPickerComponent as en, CoreYearSelectorComponent as eo, EnumCoreD3ScaleType as ep, CoreD3Service as eq, CorePieComponent as er, CoreScatterPlotComponent as es, EnumHrComparisonCode as et, EnumICoreStatisticWidgetDataType as eu, CoreStatisticWidgetComponent as ev, DecisionComponent as ew, EvaluateDialogComponent as ex, HuconcurrentlyComponent as ey, JobComponent as ez, BaseComponent as f, CoreWorkflowListComponent as g, TooltipDirective as h, CanDeactivateGuard as i, AlertService as j, TableCellPipe as k, MapAvatarToServerPipe as l, alertOptions as m, CoreTerminalSpinnerComponent as n, CoreFormDesignService as o, EnumWorkflowStepType as p, DialogService as q, DomService as r, CoreDropdownComponent as s, CoreChecklistComponent as t, CoreDatePickerComponent as u, CoreFormControlSeekerComponent as v, CoreCurrencyInputComponent as w, EnumActorSourceType as x, CoreParamControlComponent as y, CoreRadioGroupComponent as z };
40901
- //# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-B4jY1IDY.mjs.map
41555
+ export { EnumFormDesignMode as $, AppService as A, BaseComponent as B, ChatService as C, DialogService as D, EnumCoreTablePipeType as E, FullscreenModalLoaderComponent as F, EnumActorSourceType as G, CoreParamControlComponent as H, ImageErrorResolverDirective as I, CoreRadioGroupComponent as J, GptService as K, ApplicationHelpService as L, MultiLanguageService as M, HotKeysDirective as N, NavigatorService as O, JsonService as P, AppConfigService as Q, EnumCorePageEditMode as R, SocketService as S, TranslatePipe as T, EnumCoreButtonVNSCode as U, READONLY_WORKFLOW_FIELDS as V, noneAutoClosedAlertOptions as W, CoreFormComponent as X, CoreButtonGroupVnsComponent as Y, HtmlTooltipDirective as Z, CoreControlNoFormArrayComponent as _, CorePageListComponent as a, CoreTableService as a$, CoreControlComponent as a0, JsonSafePipe as a1, CoreAttachmentComponent as a2, CoreMonthSelectorComponent as a3, EnumImageResolverType as a4, NormalizeHumanNamePipe as a5, CoreIosSwitcherComponent as a6, CoreFormService as a7, SunnyRotatingComponent as a8, MapAppdemoToServerPipePipe as a9, InitializationCanMatchFn as aA, httpInterceptorProviders as aB, InterceptorSkipHeader as aC, appTypeInterceptor as aD, baseUrlInterceptor as aE, authInterceptor as aF, graphInterceptor as aG, tokenInterceptor as aH, responseInterceptor as aI, timeZoneInterceptor as aJ, cachingInterceptor as aK, langInterceptor as aL, EnumFilterOperator as aM, OnlineUsersComponent as aN, ActionService as aO, AppInitializationService as aP, AuthService as aQ, CacheService as aR, EnumSwUpdateVersionUpdatesEventType as aS, CheckForUpdateService as aT, EnumDeviceType as aU, EnumBrowserType as aV, EnumOsType as aW, ClientService as aX, CommonHttpRequestService as aY, TLA_CONFIG as aZ, ConfigService as a_, MapAttachmentToServerPipe as aa, MapNewsfeedMediaToServerPipe as ab, StringHtmlPipe as ac, UploadedFilenameCutoffPipe as ad, DialogStateComponent as ae, FooterComponent as af, RightchatComponent as ag, WaittingScreenComponent as ah, longAlertOptions as ai, attachmentOptions as aj, CORE_VNS_BUTTONS as ak, defaultPaging as al, DESKTOP_SCREEN_HEDER_HEIGHT as am, MOBILE_SCREEN_HEDER_HEIGHT as an, themeBlue as ao, DATE_VALUE_ACCESSOR as ap, DateValueAccessor as aq, EnumDragType as ar, EnumErrorType as as, EnumIconClass as at, EnumProfileInfoSector as au, EnumSignalRType as av, EnumSortDirection as aw, EnumStyleButtonClass as ax, CanActivateFunctionUrlMapperGuard as ay, InitializationCanActivateFn as az, CoreCheckboxComponent as b, PortalRouteEditComponent as b$, DndService as b0, FilterKitService as b1, GrpcService as b2, HeaderService as b3, HistoryService as b4, HttpErrorHandler as b5, HubConnectionService as b6, IpServiceService as b7, LayoutService as b8, MapService as b9, EvaluateDialogService as bA, EnumWorkScheduleViewMode as bB, WorkShiftDndService as bC, AtShiftPatternComponent as bD, AtShiftPatternApplyComponent as bE, AtShiftPatternEditComponent as bF, AtWorksignComponent as bG, AtWorksignService as bH, FunctionComponent as bI, IndividualScheduleApplyComponent as bJ, FunctionEditComponent as bK, FunctionIgnoreComponent as bL, FunctionIgnoreEditComponent as bM, GroupFunctionComponent as bN, GroupFunctionEditComponent as bO, InMemoryComponent as bP, LanguageComponent as bQ, LanguageEditComponent as bR, MenuComponent as bS, MenuEditComponent as bT, MutationLogComponent as bU, MutationViewComponent as bV, PaSalaryPolicyComponent as bW, PaSalaryPolicyEditComponent as bX, PortalRouteComponent as bY, ScheduleOverviewComponent as bZ, simpleChatRoutes as b_, MenuService as ba, MessageService as bb, ModalService as bc, OrganizationService as bd, PkceService as be, PositionTransferService as bf, EnumNotificationDir as bg, NotificationActionType as bh, PushNotificationService as bi, RandomAvatarService as bj, RequestCache as bk, RequestCacheWithMap as bl, ResponseService as bm, RoutingService as bn, EnumSsrsExpressFileExtension as bo, EnumSsrsExpressExportFormat as bp, SsrsExpressService as bq, StatisticService as br, StatisticAuthService as bs, SysMenuService as bt, TimeSheetService as bu, TopicPermissionService as bv, TopicTreeService as bw, UploadedFileService as bx, UrlService as by, UserActivityService as bz, BaseEditComponent as c, CoreControlService as c$, SysOtherListComponent as c0, SysOtherListEditComponent as c1, SysOtherListTypeComponent as c2, SysOtherListTypeEditComponent as c3, SysActionComponent as c4, SysActionEditComponent as c5, SysFunctionActionComponent as c6, SysFunctionActionEditComponent as c7, SysFunctionActionMapperComponent as c8, SysFunctionUrlMapperComponent as c9, CoreButtonVnsComponent as cA, CoreCommonParamKitComponent as cB, CoreCompareDbPipelineComponent as cC, CoreCompositionState as cD, CoreCompositionService as cE, CoreCompositionComponent as cF, CoreConfirmDialogComponent as cG, ConfirmDialogStateComponent as cH, CoreLazyMountComponent as cI, CoreRootMenuItemPickerComponent as cJ, CoreRootMenuItemPickerService as cK, ECoreTableToolCode as cL, ECoreTableToolClass as cM, CoreTableComponent as cN, CoreContractSeekerComponent as cO, CoreControlNoGridBufferComponent as cP, CoreControlNoSeekerComponent as cQ, coreDocGenRoutes as cR, CoreDocgenToolbarComponent as cS, CoreEmployeeScheduleComponent as cT, CoreEmployeeSeekerComponent as cU, EnumCoreFileUploaderType as cV, CoreFileUploaderComponent as cW, CoreFilterHubComponent as cX, CoreFilterHubService as cY, ControlBase as cZ, Textbox as c_, FunctionEditService as ca, SysModuleComponent as cb, SysModuleEditComponent as cc, SysRouteAccessComponent as cd, liner_to_nested_array_script as ce, blob_to_base64_script as cf, AlertComponent as cg, EnumAlertType as ch, IAlertOptions as ci, AnimatedTextService as cj, AnimatedTextComponent as ck, BaseDropdownComponent as cl, ButtonGroupModule as cm, ButtonGroupService as cn, ButtonGroupComponent as co, EnumButtonCaptionCode as cp, CoreButtonComponent as cq, CoreAccordionComponent as cr, CoreAccordionService as cs, CoreActiveUserCountComponent as ct, NewlyCreatedTokenService as cu, CoreApiProgressComponent as cv, CoreButtonGroupComponent as cw, EnumCoreButtonCode as cx, ActionSvgEditComponent as cy, CoreButtonGroupService as cz, EnumFormBaseContolType as d, CoreRotatingTextComponent as d$, CustomValidators as d0, URL_PATTERN as d1, coreFormDesignRoutes as d2, CoreFormTabComponent as d3, CoreFormLiteComponent as d4, CoreFormControlBaseComponent as d5, EnumCoreSeekerColumnJob as d6, EnumCoreSeekerColumnStaffProfile as d7, EnumCoreSeekerColumnContract as d8, EnumCoreSeekerColumnWorking as d9, CoreOrgchartflexComponent as dA, CoreOrgParamComponent as dB, EnumCorePageEditBootstrapClass as dC, EnumCorePageEditFieldType as dD, CorePageEditService as dE, CorePageEditLiteComponent as dF, CorePageEditTabComponent as dG, EnumExType as dH, CorePageListService as dI, CorePageListState as dJ, CorePageListContentComponent as dK, EnumCoreViewItemType as dL, CorePageViewComponent as dM, CorePaginationComponent as dN, CorePaginationFullComponent as dO, CorePaginationFullService as dP, CoreFileFormatPickerComponent as dQ, CorePermissionService as dR, EnumPermissionObjectType as dS, CorePermissionComponent as dT, CorePermissionActionsComponent as dU, CorePositionConcurrentSeekerComponent as dV, CorePositionSeekerComponent as dW, CoreQrcodeComponent as dX, EnumOparator as dY, CoreQueryBuilderComponent as dZ, CoreReducerIconComponent as d_, EnumCoreSeekerColumnWage as da, EnumCoreSeekerColumnPosition as db, EnumCoreSeekerColumnPositionConcurrent as dc, EnumCoreSeekerColumnAutoForm as dd, SeekerService as de, CoreGridBufferComponent as df, CoreHeaderParamsComponent as dg, CoreHelperComponent as dh, CoreLineComponent as di, CoreLiquidWysiwygComponent as dj, CoreListComponent as dk, CoreListLazyComponent as dl, CoreLoadingSurfaceComponent as dm, CoreMccComponent as dn, CoreMonthPickerComponent as dp, CoreNavigationTrackerComponent as dq, coreNavigationTrackerRoutes as dr, CoreOauthCallbackComponent as ds, CoreOauthCallbackOffice365Component as dt, EnumCoreOrgTreeaAccessorMode as du, EnumCoreOrgTreeaSearchMode as dv, CoreOrgTreeComponent as dw, CoreOrgTreeState as dx, CoreOrgTreeService as dy, CoreOrgUnitSeekerComponent as dz, CorePageEditComponent as e, tooltip_directive as e$, CoreRouteAccumulatorComponent as e0, CoreRoutingHistoryComponent as e1, CoreSalaryPolicyPickerComponent as e2, CoreScrollComponent as e3, CoreScrollLazyComponent as e4, CoreSeenByComponent as e5, CoreShiftCardComponent as e6, CoreShiftCellComponent as e7, CoreShiftCollectionComponent as e8, CoreShiftStickerComponent as e9, EvaluateDialogComponent as eA, HuconcurrentlyComponent as eB, JobComponent as eC, LanguageChangerComponent as eD, DEFAULT_SVG as eE, ItemComponent as eF, NavigatorComponent as eG, OtpInputComponent as eH, OtpInputService as eI, PageTitleComponent as eJ, PaginationComponent as eK, FilterPipe as eL, normalizeHumanName as eM, PositionComponent as eN, PositionEditService as eO, CoreDatetimeService as eP, FileService as eQ, LongTaskService as eR, EnumRecursiveFields as eS, RecursiveService as eT, StringService as eU, UnicodeService as eV, StaffProfileComponent as eW, ThreedotsComponent as eX, TooltipComponent as eY, UserActivityComponent as eZ, WageComponent as e_, STICKER_COLOR_SCHEMA as ea, CoreStatusStickerComponent as eb, CoreSubFormGroupComponent as ec, CoreTabListComponent as ed, CoreTagsComponent as ee, CoreTopicPickerComponent as ef, EnumCoreArticleCategoryTreeaAccessorMode as eg, CoreTopicTreeComponent as eh, CoreTreeComponent as ei, EnumCoreTreeGridEditMode as ej, CoreTreeGridComponent as ek, CoreWageSeekerComponent as el, CoreWorkingSeekerComponent as em, coreWorkflowRoutes as en, CoreWorkflowBuilderComponent as eo, CoreWorkflowGroupEditComponent as ep, CoreYearPickerComponent as eq, CoreYearSelectorComponent as er, EnumCoreD3ScaleType as es, CoreD3Service as et, CorePieComponent as eu, CoreScatterPlotComponent as ev, EnumHrComparisonCode as ew, EnumICoreStatisticWidgetDataType as ex, CoreStatisticWidgetComponent as ey, DecisionComponent as ez, CorePageHeaderComponent as f, dragReorder_directive as f0, CoreTabsComponent as g, CoreWorkflowService as h, EnumCoreFormControlSeekerSourceType as i, CoreWorkflowListComponent as j, TooltipDirective as k, DragReorderDirective as l, CanDeactivateGuard as m, AlertService as n, TableCellPipe as o, MapAvatarToServerPipe as p, alertOptions as q, CoreTerminalSpinnerComponent as r, CoreFormDesignService as s, EnumWorkflowStepType as t, DomService as u, CoreDropdownComponent as v, CoreChecklistComponent as w, CoreDatePickerComponent as x, CoreFormControlSeekerComponent as y, CoreCurrencyInputComponent as z };
41556
+ //# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-CgCAObWj.mjs.map