ngx-histaff-alpha 6.6.5 → 6.6.7
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.
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DWRkZ_y-.mjs → ngx-histaff-alpha-ai-hint-for-table.component-CN312QCn.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-DWRkZ_y-.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-CN312QCn.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BWdjH0_j.mjs → ngx-histaff-alpha-core-form-design.component-D6TrPmpG.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BWdjH0_j.mjs.map → ngx-histaff-alpha-core-form-design.component-D6TrPmpG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-0dbcfop9.mjs → ngx-histaff-alpha-core-sys-action.component-YqAEn6iz.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-0dbcfop9.mjs.map → ngx-histaff-alpha-core-sys-action.component-YqAEn6iz.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-DSkJCe1P.mjs → ngx-histaff-alpha-core-template-editor.component-CvJChUao.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-DSkJCe1P.mjs.map → ngx-histaff-alpha-core-template-editor.component-CvJChUao.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BAA0-x9x.mjs → ngx-histaff-alpha-core-toast-loading.component-DYxZA2xa.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-BAA0-x9x.mjs.map → ngx-histaff-alpha-core-toast-loading.component-DYxZA2xa.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CSO45aXX.mjs → ngx-histaff-alpha-core-workflow-consume.component-K-_atwQM.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-CSO45aXX.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-K-_atwQM.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BlPfMcNb.mjs → ngx-histaff-alpha-db-settings.component-D0JhoiHQ.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BlPfMcNb.mjs.map → ngx-histaff-alpha-db-settings.component-D0JhoiHQ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DjnCbdcf.mjs → ngx-histaff-alpha-design-wrapper.component-C7SJCccg.mjs} +131 -82
- package/fesm2022/ngx-histaff-alpha-design-wrapper.component-C7SJCccg.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-kxf1j0_8.mjs → ngx-histaff-alpha-design-wrapper.route-DVdapOzd.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-kxf1j0_8.mjs.map → ngx-histaff-alpha-design-wrapper.route-DVdapOzd.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-D56qeUNM.mjs → ngx-histaff-alpha-hrm-schema.component-BTzEGNfX.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-D56qeUNM.mjs.map → ngx-histaff-alpha-hrm-schema.component-BTzEGNfX.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-C-feoub0.mjs → ngx-histaff-alpha-live-form.component-CYB3NnkR.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-live-form.component-C-feoub0.mjs.map → ngx-histaff-alpha-live-form.component-CYB3NnkR.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-CQbwDcW4.mjs → ngx-histaff-alpha-ngx-histaff-alpha-BsbSArBq.mjs} +923 -327
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-BsbSArBq.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-D1k8Emdl.mjs → ngx-histaff-alpha-simple-chat.component-CWWWy9FV.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-D1k8Emdl.mjs.map → ngx-histaff-alpha-simple-chat.component-CWWWy9FV.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-CfzO29Lp.mjs → ngx-histaff-alpha-sys-smtp-client-edit.component-Cn1CYwCF.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-CfzO29Lp.mjs.map → ngx-histaff-alpha-sys-smtp-client-edit.component-Cn1CYwCF.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-Bbcn4r1k.mjs → ngx-histaff-alpha-sys-smtp-client.component-CtRfWRoX.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-Bbcn4r1k.mjs.map → ngx-histaff-alpha-sys-smtp-client.component-CtRfWRoX.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-z_4A9WFA.mjs → ngx-histaff-alpha-template-list.component-TYq8bPtG.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-z_4A9WFA.mjs.map → ngx-histaff-alpha-template-list.component-TYq8bPtG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BLW6Z-nb.mjs → ngx-histaff-alpha-tracker-studio.component-BEMXswAW.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BLW6Z-nb.mjs.map → ngx-histaff-alpha-tracker-studio.component-BEMXswAW.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Snsq54lS.mjs → ngx-histaff-alpha-wf-form-assign.component-Bck-IKZX.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-Snsq54lS.mjs.map → ngx-histaff-alpha-wf-form-assign.component-Bck-IKZX.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-uH0_6nrs.mjs → ngx-histaff-alpha-wf-global-config.component-DhTw3REl.mjs} +15 -5
- package/fesm2022/ngx-histaff-alpha-wf-global-config.component-DhTw3REl.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-C5m-H34L.mjs → ngx-histaff-alpha-wf-instance-status.component-D-KD7Veu.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-C5m-H34L.mjs.map → ngx-histaff-alpha-wf-instance-status.component-D-KD7Veu.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-DyhxYZTO.mjs → ngx-histaff-alpha-wf-instance-step-react.component-DE5sJiVw.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-DyhxYZTO.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-DE5sJiVw.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-3-5CrqQX.mjs → ngx-histaff-alpha-wf-lab.component-DoFDdaIu.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-3-5CrqQX.mjs.map → ngx-histaff-alpha-wf-lab.component-DoFDdaIu.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-dom-decision-editor/core-dom-decision-editor.component.d.ts +3 -1
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/action-code.enum.d.ts +1 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/intent-descriptor.model.d.ts +21 -2
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/intent-draft.model.d.ts +4 -2
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/omega-decision.d.ts +6 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/omega-intent.d.ts +7 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/others.d.ts +10 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/r-code.enum.d.ts +15 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/CREATE_O.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/CREATE_S.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/CREATE_TREE.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/DECLARE_SNAPSHOT.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/LINK_O_O.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/LINK_P_S_INTERNAL.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/LINK_S_O.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/LINK_S_S.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SET_O_ATTR.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SET_P_ATTR.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SET_S_ATTR.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SHORTEN_O_O.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SHORTEN_S_O.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/registries/SHORTEN_S_S.d.ts +2 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/intent-composer.component.d.ts +8 -4
- package/lib/app/libraries/core-form/core-form/enum-interfaces.d.ts +4 -0
- package/lib/app/libraries/core-form/core-form-array/core-form-array.component.d.ts +21 -2
- package/lib/app/libraries/core-form-design/core-form-design.component.d.ts +1 -1
- package/lib/app/libraries/core-form-design/core-form-group-editor.component.d.ts +1 -1
- package/lib/app/libraries/core-rule-set/core-rule-set.component.d.ts +7 -0
- package/lib/app/libraries/core-table/EnumCoreTablePipeType.d.ts +2 -1
- package/lib/app/libraries/core-timezone/core-timezone.component.d.ts +15 -0
- package/lib/app/libraries/core-tree-reference/core-tree-reference.component.d.ts +12 -0
- package/lib/app/libraries/core-tree-reference/core-tree-reference.node.d.ts +6 -0
- package/lib/app/libraries/core-tree-reference/moke.data.d.ts +2 -0
- package/lib/app/libraries/core-workflow-builder/core-workflow.service.d.ts +0 -11
- package/lib/app/libraries/core-workflow-builder/interfaces/IUiDelegation.d.ts +1 -0
- package/lib/app/libraries/core-workflow-builder/wf-delegation/wf-delegation.component.d.ts +5 -0
- package/lib/app/services/app-config.service.d.ts +1 -0
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
- package/fesm2022/ngx-histaff-alpha-design-wrapper.component-DjnCbdcf.mjs.map +0 -1
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-CQbwDcW4.mjs.map +0 -1
- package/fesm2022/ngx-histaff-alpha-wf-global-config.component-uH0_6nrs.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, Injector, EventEmitter, Output, ViewContainerRef, ApplicationRef, EnvironmentInjector, createComponent, ViewEncapsulation, ChangeDetectorRef, input, ChangeDetectionStrategy, output, ViewChildren, viewChild, viewChildren, TemplateRef, NgModule, DestroyRef,
|
|
2
|
+
import { Component, Injectable, Pipe, Directive, ViewChild, forwardRef, HostListener, inject, Input, isDevMode, Inject, signal, InjectionToken, computed, effect, Injector, EventEmitter, Output, ViewContainerRef, ApplicationRef, EnvironmentInjector, createComponent, ViewEncapsulation, ChangeDetectorRef, input, ChangeDetectionStrategy, output, ViewChildren, viewChild, viewChildren, ElementRef, TemplateRef, NgModule, DestroyRef, Renderer2 } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/platform-browser';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
5
|
import { of, BehaviorSubject, Subject, filter, Observable, catchError as catchError$1, distinctUntilChanged, zip, tap as tap$1, throwError, take, switchMap, finalize as finalize$1, map as map$1, interval, concat, buffer, debounceTime, combineLatestWith, fromEvent, skip, delay, Subscription, takeUntil, combineLatest } from 'rxjs';
|
|
@@ -3932,11 +3932,12 @@ class AppInitializationService {
|
|
|
3932
3932
|
if (window.opener && window.opener.globalPopupId) {
|
|
3933
3933
|
//alert(window.opener.globalPopupId);
|
|
3934
3934
|
}
|
|
3935
|
-
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, FEDERATION_COM_PARTY_ENABLED, IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION, IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER, USE_BUILTIN_OTP, USE_CAPTCHA, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, EVOLUTION_UseSysActionOrderNum, EVOLUTION_UseQueryOrgWithPositionsAndQuotas, UI_VERSION_OrgChart, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, WORKFLOW_ENABLE_DEBUG_MODE, }) => {
|
|
3935
|
+
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, DEFAULT_IANA_TIMEZONE_ID, FEDERATION_COM_PARTY_ENABLED, IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION, IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER, USE_BUILTIN_OTP, USE_CAPTCHA, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, EVOLUTION_UseSysActionOrderNum, EVOLUTION_UseQueryOrgWithPositionsAndQuotas, UI_VERSION_OrgChart, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, WORKFLOW_ENABLE_DEBUG_MODE, }) => {
|
|
3936
3936
|
this.appConfigService.APP_TYPE = APP_TYPE;
|
|
3937
3937
|
this.appConfigService.APP_UIID = APP_UIID;
|
|
3938
3938
|
this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
|
|
3939
3939
|
this.appConfigService.SHOW_LOGIN_NOTIFICATION = SHOW_LOGIN_NOTIFICATION;
|
|
3940
|
+
this.appConfigService.DEFAULT_IANA_TIMEZONE_ID = DEFAULT_IANA_TIMEZONE_ID;
|
|
3940
3941
|
this.appConfigService.FEDERATION_COM_PARTY_ENABLED = FEDERATION_COM_PARTY_ENABLED;
|
|
3941
3942
|
this.appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION = IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION;
|
|
3942
3943
|
this.appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER = IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER;
|
|
@@ -8848,17 +8849,6 @@ class CoreWorkflowService {
|
|
|
8848
8849
|
this.$showStepConfig = signal(false);
|
|
8849
8850
|
this.$stepUpdated = signal(0); // force trigger for watchers
|
|
8850
8851
|
this.standardConnectorHeight = 90;
|
|
8851
|
-
/**
|
|
8852
|
-
id: string;
|
|
8853
|
-
name: string;
|
|
8854
|
-
branchId: string;
|
|
8855
|
-
type: EnumWorkflowStepType;
|
|
8856
|
-
label: string;
|
|
8857
|
-
config?: IStepConfig;
|
|
8858
|
-
branches?: IWorkflowBranch[];
|
|
8859
|
-
isPseudo?: boolean;
|
|
8860
|
-
isInFallbackBranch?: boolean;
|
|
8861
|
-
*/
|
|
8862
8852
|
this.$currentSteps = signal([
|
|
8863
8853
|
{
|
|
8864
8854
|
id: crypto.randomUUID(),
|
|
@@ -9342,7 +9332,11 @@ class CoreWorkflowService {
|
|
|
9342
9332
|
const currentFlow = this.$currentFlow();
|
|
9343
9333
|
if (!!currentFlow) {
|
|
9344
9334
|
currentFlow.processDefinition = this.$stepsJsonPreview();
|
|
9335
|
+
currentFlow.delegationJson = this.$currentDelegationJson();
|
|
9336
|
+
currentFlow.uiDelegation = this.delegationForm.getRawValue();
|
|
9345
9337
|
}
|
|
9338
|
+
this.$currentFlow.set(currentFlow);
|
|
9339
|
+
console.log(this.$currentFlow());
|
|
9346
9340
|
return this.appService.post('/api/WfWorkflow/Publish', this.$currentFlow());
|
|
9347
9341
|
}
|
|
9348
9342
|
getById(id) {
|
|
@@ -11604,6 +11598,7 @@ var EnumCoreTablePipeType;
|
|
|
11604
11598
|
EnumCoreTablePipeType["NORMALIZE_HUMAN_NAME"] = "NORMALIZE_HUMAN_NAME";
|
|
11605
11599
|
EnumCoreTablePipeType["UPLOADED_FILENAME_CUT_OFF"] = "UPLOADED_FILENAME_CUT_OFF";
|
|
11606
11600
|
EnumCoreTablePipeType["TRIM"] = "TRIM";
|
|
11601
|
+
EnumCoreTablePipeType["UNDEFINED_TO_EMPTY_STRING"] = "UNDEFINED_TO_EMPTY_STRING";
|
|
11607
11602
|
})(EnumCoreTablePipeType || (EnumCoreTablePipeType = {}));
|
|
11608
11603
|
|
|
11609
11604
|
const normalizeHumanName = (value) => {
|
|
@@ -11680,6 +11675,7 @@ class TableCellPipe {
|
|
|
11680
11675
|
EnumCoreTablePipeType.DECIMAL_TO_FIX_5,
|
|
11681
11676
|
EnumCoreTablePipeType.UPLOADED_FILENAME_CUT_OFF,
|
|
11682
11677
|
EnumCoreTablePipeType.TRIM,
|
|
11678
|
+
EnumCoreTablePipeType.UNDEFINED_TO_EMPTY_STRING
|
|
11683
11679
|
];
|
|
11684
11680
|
if (!!!availableTypes.includes(pipe))
|
|
11685
11681
|
return value;
|
|
@@ -11857,6 +11853,13 @@ class TableCellPipe {
|
|
|
11857
11853
|
else {
|
|
11858
11854
|
return value;
|
|
11859
11855
|
}
|
|
11856
|
+
case EnumCoreTablePipeType.UNDEFINED_TO_EMPTY_STRING:
|
|
11857
|
+
if (value === undefined) {
|
|
11858
|
+
return '';
|
|
11859
|
+
}
|
|
11860
|
+
else {
|
|
11861
|
+
return value;
|
|
11862
|
+
}
|
|
11860
11863
|
default:
|
|
11861
11864
|
return value;
|
|
11862
11865
|
}
|
|
@@ -12192,6 +12195,7 @@ class CoreIosSwitcherComponent extends CoreFormControlBaseComponent {
|
|
|
12192
12195
|
this.width = 80;
|
|
12193
12196
|
this.height = 28;
|
|
12194
12197
|
this.readonly = false;
|
|
12198
|
+
this.value = false;
|
|
12195
12199
|
this.subscriptions = [];
|
|
12196
12200
|
this.truelyText = 'on';
|
|
12197
12201
|
this.falsyText = 'off';
|
|
@@ -23324,13 +23328,20 @@ class CoreFormControlSeekerComponent extends CoreFormControlBaseComponent {
|
|
|
23324
23328
|
/* END: CHECK INPUTS */
|
|
23325
23329
|
this.subscriptions.push(this.getByIdObject$?.subscribe(x => {
|
|
23326
23330
|
if (!!x) {
|
|
23327
|
-
if (
|
|
23331
|
+
if (!this.multiMode) {
|
|
23328
23332
|
this.valueToShow = x[this.shownFrom];
|
|
23329
23333
|
this.enrichment.register(this.form, this.fieldName, x[this.shownFrom]);
|
|
23334
|
+
if (!!this.alsoBindTo) {
|
|
23335
|
+
this.alsoBindTo.forEach(a => {
|
|
23336
|
+
this.form.patchValue({
|
|
23337
|
+
[a.bindTo]: x[a.takeFrom]
|
|
23338
|
+
});
|
|
23339
|
+
});
|
|
23340
|
+
}
|
|
23330
23341
|
}
|
|
23331
23342
|
}
|
|
23332
23343
|
else {
|
|
23333
|
-
if (
|
|
23344
|
+
if (!this.multiMode) {
|
|
23334
23345
|
this.valueToShow = "";
|
|
23335
23346
|
this.enrichment.register(this.form, this.fieldName, "");
|
|
23336
23347
|
}
|
|
@@ -26450,11 +26461,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
26450
26461
|
class CoreRuleSetComponent extends CoreFormControlBaseComponent {
|
|
26451
26462
|
constructor() {
|
|
26452
26463
|
super();
|
|
26464
|
+
this.$container = viewChild('container');
|
|
26453
26465
|
this.value = null;
|
|
26454
26466
|
this.$open = signal(false);
|
|
26455
26467
|
this.crts = inject(CoreRuleTreeService);
|
|
26468
|
+
this.el = inject((ElementRef));
|
|
26456
26469
|
this.ruleTreeForm = this.crts.createGroupForm();
|
|
26457
26470
|
this.wfs = inject(CoreWorkflowService);
|
|
26471
|
+
this.ds = inject(DomService);
|
|
26472
|
+
effect(() => {
|
|
26473
|
+
const container = this.$container()?.nativeElement;
|
|
26474
|
+
if (!container)
|
|
26475
|
+
return;
|
|
26476
|
+
container.style.setProperty('--popup-z-index', this.ds.getMaxZIndex() + 1);
|
|
26477
|
+
});
|
|
26458
26478
|
}
|
|
26459
26479
|
onToggleOpen() {
|
|
26460
26480
|
this.$open.update(x => !x);
|
|
@@ -26464,14 +26484,23 @@ class CoreRuleSetComponent extends CoreFormControlBaseComponent {
|
|
|
26464
26484
|
this.onChange(e);
|
|
26465
26485
|
this.markAsTouched();
|
|
26466
26486
|
}
|
|
26487
|
+
onDocumentClick(event) {
|
|
26488
|
+
const clickedInside = this.el.nativeElement.contains(event.target);
|
|
26489
|
+
if (!clickedInside) {
|
|
26490
|
+
this.onClickOutside();
|
|
26491
|
+
}
|
|
26492
|
+
}
|
|
26493
|
+
onClickOutside() {
|
|
26494
|
+
this.$open.set(false);
|
|
26495
|
+
}
|
|
26467
26496
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRuleSetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26468
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
26497
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.5", type: CoreRuleSetComponent, isStandalone: true, selector: "core-rule-set", host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [
|
|
26469
26498
|
{
|
|
26470
26499
|
provide: NG_VALUE_ACCESSOR,
|
|
26471
26500
|
multi: true,
|
|
26472
26501
|
useExisting: forwardRef(() => CoreRuleSetComponent)
|
|
26473
26502
|
}
|
|
26474
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-rule-set-container\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onToggleOpen()\">Rule set</button>\r\n <div class=\"rule-set-popup\" [class.open]=\"$open()\">\r\n <core-rule-tree \r\n [$totalCols]=\"wfs.$availableCols()\"\r\n [$mainForm]=\"ruleTreeForm\"\r\n ($jsonEmitter)=\"onRuleTreeJsonChange($event)\"\r\n />\r\n </div>\r\n</div>\r\n", styles: [".core-rule-set-container{position:relative}.core-rule-set-container .rule-set-popup{display:none;background-color:#fff;position:absolute;left:0;top:100%;width:360px;height:fit-content;box-shadow:.4rem 0 2rem #0000002e;padding:15px 15px 0}.core-rule-set-container .rule-set-popup.open{display:block}\n"], dependencies: [{ kind: "component", type: CoreRuleTreeComponent, selector: "core-rule-tree", inputs: ["$totalCols", "$mainForm", "$filterStringInput", "$expressionInput", "$form", "$field"], outputs: ["$jsonEmitter"] }] }); }
|
|
26503
|
+
], viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-rule-set-container\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onToggleOpen()\" [class.disabled]=\"disabled\">Rule set</button>\r\n <div class=\"rule-set-popup\" [class.open]=\"$open()\">\r\n <core-rule-tree \r\n [$totalCols]=\"wfs.$availableCols()\"\r\n [$mainForm]=\"ruleTreeForm\"\r\n ($jsonEmitter)=\"onRuleTreeJsonChange($event)\"\r\n />\r\n </div>\r\n</div>\r\n", styles: [".core-rule-set-container{--popup-z-index: 1;position:relative}.core-rule-set-container .form-control{line-height:unset}.core-rule-set-container .rule-set-popup{display:none;background-color:#fff;position:absolute;left:0;top:100%;width:360px;height:fit-content;box-shadow:.4rem 0 2rem #0000002e;padding:15px 15px 0;z-index:var(--popup-z-index)}.core-rule-set-container .rule-set-popup.open{display:block}\n"], dependencies: [{ kind: "component", type: CoreRuleTreeComponent, selector: "core-rule-tree", inputs: ["$totalCols", "$mainForm", "$filterStringInput", "$expressionInput", "$form", "$field"], outputs: ["$jsonEmitter"] }] }); }
|
|
26475
26504
|
}
|
|
26476
26505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRuleSetComponent, decorators: [{
|
|
26477
26506
|
type: Component,
|
|
@@ -26483,7 +26512,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
26483
26512
|
multi: true,
|
|
26484
26513
|
useExisting: forwardRef(() => CoreRuleSetComponent)
|
|
26485
26514
|
}
|
|
26486
|
-
],
|
|
26515
|
+
], host: {
|
|
26516
|
+
'(document:click)': 'onDocumentClick($event)'
|
|
26517
|
+
}, template: "<div #container class=\"core-rule-set-container\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onToggleOpen()\" [class.disabled]=\"disabled\">Rule set</button>\r\n <div class=\"rule-set-popup\" [class.open]=\"$open()\">\r\n <core-rule-tree \r\n [$totalCols]=\"wfs.$availableCols()\"\r\n [$mainForm]=\"ruleTreeForm\"\r\n ($jsonEmitter)=\"onRuleTreeJsonChange($event)\"\r\n />\r\n </div>\r\n</div>\r\n", styles: [".core-rule-set-container{--popup-z-index: 1;position:relative}.core-rule-set-container .form-control{line-height:unset}.core-rule-set-container .rule-set-popup{display:none;background-color:#fff;position:absolute;left:0;top:100%;width:360px;height:fit-content;box-shadow:.4rem 0 2rem #0000002e;padding:15px 15px 0;z-index:var(--popup-z-index)}.core-rule-set-container .rule-set-popup.open{display:block}\n"] }]
|
|
26487
26518
|
}], ctorParameters: () => [] });
|
|
26488
26519
|
|
|
26489
26520
|
class CoreControlNoFormArrayComponent extends BaseComponent {
|
|
@@ -26660,14 +26691,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
26660
26691
|
}] } });
|
|
26661
26692
|
|
|
26662
26693
|
class CoreFormArrayComponent extends CoreFormControlBaseComponent {
|
|
26694
|
+
// --- System field names (framework contract) ---
|
|
26695
|
+
static { this.SYSTEM_DELETE_FIELD = 'formArrayItemDeleted'; }
|
|
26663
26696
|
constructor() {
|
|
26664
26697
|
super();
|
|
26698
|
+
this.formArrayIdentityField = 'id';
|
|
26665
26699
|
this.addNewMode$ = new BehaviorSubject(false);
|
|
26666
26700
|
this.lang = signal('vi');
|
|
26667
26701
|
this.controlGroups = signal([]);
|
|
26668
26702
|
this.subscriptions = [];
|
|
26669
26703
|
//enrichment = inject(CoreFormEnrichmentService);
|
|
26670
26704
|
this.cfs = inject(CoreFormService);
|
|
26705
|
+
this.removeCache = new WeakMap();
|
|
26671
26706
|
const mls = inject(MultiLanguageService);
|
|
26672
26707
|
this.subscriptions.push(mls.lang$.subscribe(x => this.lang.set(x)));
|
|
26673
26708
|
// Optional: log whenever groups change
|
|
@@ -26706,26 +26741,91 @@ class CoreFormArrayComponent extends CoreFormControlBaseComponent {
|
|
|
26706
26741
|
updateControlGroups() {
|
|
26707
26742
|
this.controlGroups.set(this.formArray.controls);
|
|
26708
26743
|
}
|
|
26744
|
+
canRemove(group) {
|
|
26745
|
+
if (this.removeCache.has(group)) {
|
|
26746
|
+
return this.removeCache.get(group);
|
|
26747
|
+
}
|
|
26748
|
+
const result = this.evaluateCanRemove(group);
|
|
26749
|
+
this.removeCache.set(group, result);
|
|
26750
|
+
return result;
|
|
26751
|
+
}
|
|
26752
|
+
clearRemoveCache() {
|
|
26753
|
+
this.removeCache = new WeakMap();
|
|
26754
|
+
}
|
|
26755
|
+
evaluateCanRemove(group) {
|
|
26756
|
+
const rule = this.removeDisabledIf;
|
|
26757
|
+
if (!rule)
|
|
26758
|
+
return true;
|
|
26759
|
+
const control = group.get(rule.field);
|
|
26760
|
+
if (!control)
|
|
26761
|
+
return true;
|
|
26762
|
+
const controlValue = control.value;
|
|
26763
|
+
if ('notNull' in rule) {
|
|
26764
|
+
// disable remove nếu value NOT NULL
|
|
26765
|
+
return controlValue == null;
|
|
26766
|
+
}
|
|
26767
|
+
if ('equals' in rule) {
|
|
26768
|
+
// disable remove nếu value === equals
|
|
26769
|
+
return controlValue !== rule.equals;
|
|
26770
|
+
}
|
|
26771
|
+
if ('in' in rule) {
|
|
26772
|
+
// disable remove nếu value nằm trong list
|
|
26773
|
+
return !rule.in.includes(controlValue);
|
|
26774
|
+
}
|
|
26775
|
+
return true;
|
|
26776
|
+
}
|
|
26777
|
+
evaluateCanHideRemoveButton(group) {
|
|
26778
|
+
if (group.get("formArrayItemDeleted")?.value === true) {
|
|
26779
|
+
return true;
|
|
26780
|
+
}
|
|
26781
|
+
return false;
|
|
26782
|
+
}
|
|
26709
26783
|
addItem() {
|
|
26710
26784
|
const group = this.cfs.buildGroupFromConfig(this.config);
|
|
26711
26785
|
this.formArray.push(group);
|
|
26712
26786
|
this.updateControlGroups();
|
|
26713
26787
|
}
|
|
26714
|
-
removeItem(index) {
|
|
26715
|
-
this.
|
|
26788
|
+
removeItem(index, group) {
|
|
26789
|
+
if (!this.evaluateCanRemove(group)) {
|
|
26790
|
+
this.as.info(this.removeDisabledIfMessage ?? 'This row can not be removed', alertOptions);
|
|
26791
|
+
return;
|
|
26792
|
+
}
|
|
26793
|
+
//this.formArray.removeAt(index);
|
|
26794
|
+
//this.updateControlGroups();
|
|
26795
|
+
const identityField = this.formArrayIdentityField;
|
|
26796
|
+
const deleteField = CoreFormArrayComponent.SYSTEM_DELETE_FIELD;
|
|
26797
|
+
// 🔴 Dev-only invariant check
|
|
26798
|
+
if (!group.contains(deleteField)) {
|
|
26799
|
+
if (isDevMode()) {
|
|
26800
|
+
this.as.error(`[CoreFormArray] Missing system delete field '${deleteField}'.`, alertOptions);
|
|
26801
|
+
}
|
|
26802
|
+
}
|
|
26803
|
+
const identityValue = identityField
|
|
26804
|
+
? group.get(identityField)?.value
|
|
26805
|
+
: null;
|
|
26806
|
+
// 🟢 A. Transient item (no identity) → physical remove
|
|
26807
|
+
if (!identityValue) {
|
|
26808
|
+
this.formArray.removeAt(index);
|
|
26809
|
+
this.updateControlGroups();
|
|
26810
|
+
return;
|
|
26811
|
+
}
|
|
26812
|
+
// 🔵 B. Persisted item → soft delete (change-tracked)
|
|
26813
|
+
group.patchValue({ [deleteField]: true }, { emitEvent: true });
|
|
26814
|
+
// Optional: lock editing after delete intent
|
|
26815
|
+
group.disable({ emitEvent: false });
|
|
26716
26816
|
this.updateControlGroups();
|
|
26717
26817
|
}
|
|
26718
26818
|
ngOnDestroy() {
|
|
26719
26819
|
this.subscriptions.forEach(x => x?.unsubscribe());
|
|
26720
26820
|
}
|
|
26721
26821
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreFormArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26722
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreFormArrayComponent, isStandalone: true, selector: "core-form-array", inputs: { formArrayName: "formArrayName", parentFormGroup: "parentFormGroup", formArray: "formArray", config: "config", checkError$: "checkError$", addNewMode$: "addNewMode$", readonly: "readonly", disabled: "disabled" }, providers: [
|
|
26822
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreFormArrayComponent, isStandalone: true, selector: "core-form-array", inputs: { formArrayName: "formArrayName", parentFormGroup: "parentFormGroup", formArray: "formArray", config: "config", checkError$: "checkError$", formArrayIdentityField: "formArrayIdentityField", addNewMode$: "addNewMode$", readonly: "readonly", disabled: "disabled", removeDisabledIf: "removeDisabledIf", removeDisabledIfMessage: "removeDisabledIfMessage" }, providers: [
|
|
26723
26823
|
{
|
|
26724
26824
|
provide: NG_VALUE_ACCESSOR,
|
|
26725
26825
|
multi: true,
|
|
26726
26826
|
useExisting: forwardRef(() => CoreFormArrayComponent),
|
|
26727
26827
|
}
|
|
26728
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <!-- \u2705 Parent owns the formGroup context -->\r\n <div class=\"form-array-item\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</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.d-none]=\"col.flexSize === 0\">\r\n <!-- no [form] needed -->\r\n <core-control-no-form-array \r\n [control]=\"col\" \r\n [readonly]=\"!!disabled || !!col.readonly\"\r\n [disabled]=\"!!disabled || !!col.disabled\"\r\n [checkError$]=\"checkError$\">\r\n </core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }, { kind: "component", type: CoreControlNoFormArrayComponent, selector: "core-control-no-form-array", inputs: ["control", "checkError$", "rangeLimit", "readonly", "disabled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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"] }] }); }
|
|
26828
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <!-- \u2705 Parent owns the formGroup context -->\r\n <div class=\"form-array-item\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</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.d-none]=\"col.flexSize === 0\">\r\n <!-- no [form] needed -->\r\n <core-control-no-form-array \r\n [control]=\"col\" \r\n [readonly]=\"!!disabled || !!col.readonly\"\r\n [disabled]=\"!!disabled || !!col.disabled\"\r\n [checkError$]=\"checkError$\">\r\n </core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-toolbar\">\r\n @let canRemoveRow = canRemove(group);\r\n <!-- @if (evaluateCanHideRemoveButton(group)) { -->\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i, group)\"\r\n [class.used]=\"!canRemoveRow\"\r\n [appTooltip]=\"canRemoveRow ? 'Remove group' : removeDisabledIfMessage \" [showAnyway]=\"true\"></button>\r\n <!-- } -->\r\n </div>\r\n }\r\n </div>\r\n <hr />\r\n }\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start;margin-bottom:15px}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}.core-form-array-container .form-array-item .form-array-toolbar button.used{opacity:.5}\n"], dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }, { kind: "component", type: CoreControlNoFormArrayComponent, selector: "core-control-no-form-array", inputs: ["control", "checkError$", "rangeLimit", "readonly", "disabled"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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"] }] }); }
|
|
26729
26829
|
}
|
|
26730
26830
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreFormArrayComponent, decorators: [{
|
|
26731
26831
|
type: Component,
|
|
@@ -26741,7 +26841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
26741
26841
|
TooltipDirective,
|
|
26742
26842
|
CoreControlNoFormArrayComponent,
|
|
26743
26843
|
ReactiveFormsModule
|
|
26744
|
-
], template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <!-- \u2705 Parent owns the formGroup context -->\r\n <div class=\"form-array-item\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</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.d-none]=\"col.flexSize === 0\">\r\n <!-- no [form] needed -->\r\n <core-control-no-form-array \r\n [control]=\"col\" \r\n [readonly]=\"!!disabled || !!col.readonly\"\r\n [disabled]=\"!!disabled || !!col.disabled\"\r\n [checkError$]=\"checkError$\">\r\n </core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-toolbar\">\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i)\"\r\n [appTooltip]=\"'Remove group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}\n"] }]
|
|
26844
|
+
], template: "<div class=\"core-form-array-container\">\r\n\r\n\r\n @for (group of controlGroups(); track $index; let i = $index) {\r\n <!-- \u2705 Parent owns the formGroup context -->\r\n <div class=\"form-array-item\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-array-content\">\r\n @for (section of config; track $index) {\r\n @if (!section.hidden) {\r\n <div class=\"section\">\r\n <!-- @if (section.caption) {\r\n <div class=\"section-caption\">{{ section.caption }}</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.d-none]=\"col.flexSize === 0\">\r\n <!-- no [form] needed -->\r\n <core-control-no-form-array \r\n [control]=\"col\" \r\n [readonly]=\"!!disabled || !!col.readonly\"\r\n [disabled]=\"!!disabled || !!col.disabled\"\r\n [checkError$]=\"checkError$\">\r\n </core-control-no-form-array>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-toolbar\">\r\n @let canRemoveRow = canRemove(group);\r\n <!-- @if (evaluateCanHideRemoveButton(group)) { -->\r\n <button type=\"button\" class=\"btn btn-danger btn-sm feather-trash-2\" (click)=\"removeItem(i, group)\"\r\n [class.used]=\"!canRemoveRow\"\r\n [appTooltip]=\"canRemoveRow ? 'Remove group' : removeDisabledIfMessage \" [showAnyway]=\"true\"></button>\r\n <!-- } -->\r\n </div>\r\n }\r\n </div>\r\n <hr />\r\n }\r\n\r\n @if (!disabled && !readonly) {\r\n <div class=\"form-array-footer\">\r\n <button type=\"button\" class=\"btn btn-success btn-sm feather-file-plus\" (click)=\"addItem()\"\r\n [appTooltip]=\"'Add group'\" [showAnyway]=\"true\"></button>\r\n </div>\r\n }\r\n</div>", styles: [".core-form-array-container{padding:15px;border:1px solid #ced4da}.core-form-array-container .form-array-item{display:flex;align-items:flex-start;margin-bottom:15px}.core-form-array-container .form-array-item>*{display:inline-block!important}.core-form-array-container .form-array-item .form-array-content{width:calc(100% - 46px)}.core-form-array-container .form-array-item .form-array-toolbar{width:14px;padding-left:12px;transform:translateY(25px)}.core-form-array-container .form-array-item .form-array-toolbar button.used{opacity:.5}\n"] }]
|
|
26745
26845
|
}], ctorParameters: () => [], propDecorators: { formArrayName: [{
|
|
26746
26846
|
type: Input,
|
|
26747
26847
|
args: [{ required: true }]
|
|
@@ -26757,12 +26857,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
26757
26857
|
}], checkError$: [{
|
|
26758
26858
|
type: Input,
|
|
26759
26859
|
args: [{ required: true }]
|
|
26860
|
+
}], formArrayIdentityField: [{
|
|
26861
|
+
type: Input
|
|
26760
26862
|
}], addNewMode$: [{
|
|
26761
26863
|
type: Input
|
|
26762
26864
|
}], readonly: [{
|
|
26763
26865
|
type: Input
|
|
26764
26866
|
}], disabled: [{
|
|
26765
26867
|
type: Input
|
|
26868
|
+
}], removeDisabledIf: [{
|
|
26869
|
+
type: Input
|
|
26870
|
+
}], removeDisabledIfMessage: [{
|
|
26871
|
+
type: Input
|
|
26766
26872
|
}] } });
|
|
26767
26873
|
|
|
26768
26874
|
class CoreDocgenToolbarComponent {
|
|
@@ -27664,6 +27770,7 @@ var coreStickerCollection_component = /*#__PURE__*/Object.freeze({
|
|
|
27664
27770
|
|
|
27665
27771
|
var EnumActionCode;
|
|
27666
27772
|
(function (EnumActionCode) {
|
|
27773
|
+
EnumActionCode["CREATE_TREE"] = "CREATE_TREE";
|
|
27667
27774
|
EnumActionCode["CREATE_O"] = "CREATE_O";
|
|
27668
27775
|
EnumActionCode["CREATE_S"] = "CREATE_S";
|
|
27669
27776
|
EnumActionCode["LINK_O_O"] = "LINK_O_O";
|
|
@@ -27680,9 +27787,467 @@ var EnumActionCode;
|
|
|
27680
27787
|
EnumActionCode["DECLARE_SNAPSHOT"] = "DECLARE_SNAPSHOT";
|
|
27681
27788
|
})(EnumActionCode || (EnumActionCode = {}));
|
|
27682
27789
|
|
|
27790
|
+
const CREATE_TREE = {
|
|
27791
|
+
actionCode: EnumActionCode.CREATE_TREE,
|
|
27792
|
+
label: 'Tạo không gian tổ chức',
|
|
27793
|
+
description: 'Tạo một không gian tổ chức mới trong DOM.',
|
|
27794
|
+
category: 'Organization',
|
|
27795
|
+
quickEmoji: '🌳',
|
|
27796
|
+
inputs: [
|
|
27797
|
+
{
|
|
27798
|
+
key: 'TREE_NAME',
|
|
27799
|
+
label: 'Tên cây',
|
|
27800
|
+
kind: 'string',
|
|
27801
|
+
validators: {
|
|
27802
|
+
required: true,
|
|
27803
|
+
minLength: 3,
|
|
27804
|
+
maxLength: 255
|
|
27805
|
+
},
|
|
27806
|
+
row: 1
|
|
27807
|
+
},
|
|
27808
|
+
{
|
|
27809
|
+
key: 'IS_HR',
|
|
27810
|
+
label: 'Là không gian nhân sự chính thống (ngành ngang)',
|
|
27811
|
+
kind: 'boolean',
|
|
27812
|
+
defaultValue: true,
|
|
27813
|
+
validators: {
|
|
27814
|
+
required: true
|
|
27815
|
+
},
|
|
27816
|
+
row: 2
|
|
27817
|
+
},
|
|
27818
|
+
],
|
|
27819
|
+
};
|
|
27820
|
+
|
|
27821
|
+
const CREATE_O = {
|
|
27822
|
+
actionCode: EnumActionCode.CREATE_O,
|
|
27823
|
+
label: 'Tạo tổ chức',
|
|
27824
|
+
description: 'Tạo một tổ chức mới trong DOM.',
|
|
27825
|
+
category: 'Organization',
|
|
27826
|
+
quickEmoji: '🏗️',
|
|
27827
|
+
inputs: [
|
|
27828
|
+
{
|
|
27829
|
+
key: 'ID',
|
|
27830
|
+
label: 'ID',
|
|
27831
|
+
kind: 'string',
|
|
27832
|
+
defaultValue: crypto.randomUUID(),
|
|
27833
|
+
disabled: true
|
|
27834
|
+
},
|
|
27835
|
+
{
|
|
27836
|
+
key: 'ORIGINAL_NAME',
|
|
27837
|
+
label: 'Tên chính danh lịch sử của tổ chức',
|
|
27838
|
+
kind: 'string',
|
|
27839
|
+
validators: {
|
|
27840
|
+
required: true,
|
|
27841
|
+
minLength: 3,
|
|
27842
|
+
maxLength: 255
|
|
27843
|
+
}
|
|
27844
|
+
},
|
|
27845
|
+
{
|
|
27846
|
+
key: 'CODE',
|
|
27847
|
+
label: 'Mã hệ thống',
|
|
27848
|
+
kind: 'string',
|
|
27849
|
+
defaultValue: crypto.randomUUID(),
|
|
27850
|
+
validators: {
|
|
27851
|
+
required: true,
|
|
27852
|
+
minLength: 3,
|
|
27853
|
+
maxLength: 255
|
|
27854
|
+
},
|
|
27855
|
+
hidden: true
|
|
27856
|
+
},
|
|
27857
|
+
{
|
|
27858
|
+
key: 'SHORT_CODE',
|
|
27859
|
+
label: 'Mã giao diện (ghép sau tên gốc)',
|
|
27860
|
+
kind: 'string',
|
|
27861
|
+
validators: {
|
|
27862
|
+
required: true,
|
|
27863
|
+
minLength: 3,
|
|
27864
|
+
maxLength: 255
|
|
27865
|
+
},
|
|
27866
|
+
disabled: true
|
|
27867
|
+
},
|
|
27868
|
+
{
|
|
27869
|
+
key: 'TREE_ID',
|
|
27870
|
+
label: 'Cây tổ chức',
|
|
27871
|
+
kind: 'treeId',
|
|
27872
|
+
defaultValue: true,
|
|
27873
|
+
validators: {
|
|
27874
|
+
required: true
|
|
27875
|
+
}
|
|
27876
|
+
},
|
|
27877
|
+
{
|
|
27878
|
+
key: 'IS_ROOT',
|
|
27879
|
+
label: 'Là đơn vị gốc',
|
|
27880
|
+
kind: 'boolean',
|
|
27881
|
+
defaultValue: false,
|
|
27882
|
+
validators: {
|
|
27883
|
+
required: true
|
|
27884
|
+
}
|
|
27885
|
+
},
|
|
27886
|
+
{
|
|
27887
|
+
key: 'AVAILABLE_UTC',
|
|
27888
|
+
label: 'Khả dụng từ',
|
|
27889
|
+
kind: 'date',
|
|
27890
|
+
validators: {
|
|
27891
|
+
required: true
|
|
27892
|
+
}
|
|
27893
|
+
},
|
|
27894
|
+
{
|
|
27895
|
+
key: 'TIMEZONE_ID',
|
|
27896
|
+
label: 'Múi giờ',
|
|
27897
|
+
kind: 'timezoneId',
|
|
27898
|
+
defaultValue: 'Asia/Saigon',
|
|
27899
|
+
validators: {
|
|
27900
|
+
required: true
|
|
27901
|
+
},
|
|
27902
|
+
errorMessages: {
|
|
27903
|
+
required: 'Phải xác định múi giờ nghiệp vụ'
|
|
27904
|
+
},
|
|
27905
|
+
row: 2,
|
|
27906
|
+
flexSize: 4
|
|
27907
|
+
}
|
|
27908
|
+
],
|
|
27909
|
+
};
|
|
27910
|
+
|
|
27911
|
+
var EnumRCodeForward;
|
|
27912
|
+
(function (EnumRCodeForward) {
|
|
27913
|
+
EnumRCodeForward["O_IS_PART_OF_O"] = "O_IS_PART_OF_O";
|
|
27914
|
+
EnumRCodeForward["S_BELONGS_TO_O"] = "S_BELONGS_TO_O";
|
|
27915
|
+
EnumRCodeForward["P_OCCUPIES_S"] = "P_OCCUPIES_S";
|
|
27916
|
+
EnumRCodeForward["S_WORKS_UNDER_S"] = "S_WORKS_UNDER_S";
|
|
27917
|
+
EnumRCodeForward["S_REPORTS_TO_S"] = "S_REPORTS_TO_S";
|
|
27918
|
+
})(EnumRCodeForward || (EnumRCodeForward = {}));
|
|
27919
|
+
var EnumRCodeOneBackward;
|
|
27920
|
+
(function (EnumRCodeOneBackward) {
|
|
27921
|
+
EnumRCodeOneBackward["O_HAS_PART_O"] = "O_HAS_PART_O";
|
|
27922
|
+
EnumRCodeOneBackward["O_HAS_SEAT_S"] = "O_HAS_SEAT_S";
|
|
27923
|
+
EnumRCodeOneBackward["S_IS_OCCUPIED_BY_P"] = "S_IS_OCCUPIED_BY_P";
|
|
27924
|
+
EnumRCodeOneBackward["S_MANAGES_S"] = "S_MANAGES_S";
|
|
27925
|
+
EnumRCodeOneBackward["S_REPORTED_BY_S"] = "S_REPORTED_BY_S";
|
|
27926
|
+
})(EnumRCodeOneBackward || (EnumRCodeOneBackward = {}));
|
|
27927
|
+
const RCODE_FORWARD_VALUES = Object.values(EnumRCodeForward);
|
|
27928
|
+
|
|
27929
|
+
const LINK_O_O = {
|
|
27930
|
+
actionCode: EnumActionCode.LINK_O_O,
|
|
27931
|
+
label: 'Thiết lập quan hệ tổ chức',
|
|
27932
|
+
description: 'Thiết lập quan hệ hiệu lực giữa hai tổ chức.',
|
|
27933
|
+
category: 'Organization',
|
|
27934
|
+
quickEmoji: '🔗🏢',
|
|
27935
|
+
inputs: [
|
|
27936
|
+
{
|
|
27937
|
+
key: 'VF_UTC',
|
|
27938
|
+
label: 'Hiệu lực từ',
|
|
27939
|
+
kind: 'date',
|
|
27940
|
+
validators: { required: true },
|
|
27941
|
+
errorMessages: {
|
|
27942
|
+
required: 'Phải xác định thời điểm bắt đầu hiệu lực'
|
|
27943
|
+
},
|
|
27944
|
+
hint: 'Thời điểm được hiểu theo múi giờ nghiệp vụ bên dưới',
|
|
27945
|
+
row: 1,
|
|
27946
|
+
flexSize: 4
|
|
27947
|
+
},
|
|
27948
|
+
{
|
|
27949
|
+
key: 'A_ID', label: 'Tổ chức con', kind: 'orgGardenReference', validators: {
|
|
27950
|
+
required: true
|
|
27951
|
+
},
|
|
27952
|
+
row: 1,
|
|
27953
|
+
flexSize: 4
|
|
27954
|
+
},
|
|
27955
|
+
{
|
|
27956
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.O_IS_PART_OF_O, hidden: true
|
|
27957
|
+
},
|
|
27958
|
+
{
|
|
27959
|
+
key: 'B_ID', label: 'Tổ chức cha', kind: 'orgGardenReference', validators: {
|
|
27960
|
+
required: true
|
|
27961
|
+
},
|
|
27962
|
+
row: 1,
|
|
27963
|
+
flexSize: 4
|
|
27964
|
+
},
|
|
27965
|
+
{
|
|
27966
|
+
key: 'VT_UTC',
|
|
27967
|
+
label: 'Hiệu lực đến',
|
|
27968
|
+
kind: 'date',
|
|
27969
|
+
defaultValue: new Date(9999, 11, 31),
|
|
27970
|
+
row: 2,
|
|
27971
|
+
flexSize: 4
|
|
27972
|
+
},
|
|
27973
|
+
{
|
|
27974
|
+
key: 'TIMEZONE_ID',
|
|
27975
|
+
label: 'Múi giờ',
|
|
27976
|
+
kind: 'timezoneId',
|
|
27977
|
+
defaultValue: 'Asia/Saigon',
|
|
27978
|
+
validators: {
|
|
27979
|
+
required: true
|
|
27980
|
+
},
|
|
27981
|
+
errorMessages: {
|
|
27982
|
+
required: 'Phải xác định múi giờ nghiệp vụ'
|
|
27983
|
+
},
|
|
27984
|
+
row: 2,
|
|
27985
|
+
flexSize: 4
|
|
27986
|
+
}
|
|
27987
|
+
],
|
|
27988
|
+
};
|
|
27989
|
+
|
|
27990
|
+
const SHORTEN_O_O = {
|
|
27991
|
+
actionCode: EnumActionCode.SHORTEN_O_O,
|
|
27992
|
+
label: 'Rút ngắn hiệu lực quan hệ tổ chức',
|
|
27993
|
+
description: 'Rút ngắn hiệu lực quan hệ tổ chức.',
|
|
27994
|
+
category: 'Organization',
|
|
27995
|
+
quickEmoji: '✂️🏢',
|
|
27996
|
+
inputs: [
|
|
27997
|
+
{
|
|
27998
|
+
key: 'VF_UTC',
|
|
27999
|
+
label: 'Hiệu lực từ',
|
|
28000
|
+
kind: 'date',
|
|
28001
|
+
validators: { required: true },
|
|
28002
|
+
errorMessages: {
|
|
28003
|
+
required: 'Phải xác định thời điểm bắt đầu hiệu lực'
|
|
28004
|
+
}
|
|
28005
|
+
},
|
|
28006
|
+
{
|
|
28007
|
+
key: 'A_ID', label: 'Tổ chức con', kind: 'reference', validators: {
|
|
28008
|
+
required: true
|
|
28009
|
+
}
|
|
28010
|
+
},
|
|
28011
|
+
{
|
|
28012
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.O_IS_PART_OF_O, hidden: true
|
|
28013
|
+
},
|
|
28014
|
+
{
|
|
28015
|
+
key: 'B_ID', label: 'Tổ chức cha', kind: 'reference', validators: {
|
|
28016
|
+
required: true
|
|
28017
|
+
}
|
|
28018
|
+
},
|
|
28019
|
+
{
|
|
28020
|
+
key: 'VT_UTC',
|
|
28021
|
+
label: 'Hiệu lực đến',
|
|
28022
|
+
kind: 'date',
|
|
28023
|
+
defaultValue: new Date(9999, 11, 31)
|
|
28024
|
+
},
|
|
28025
|
+
{
|
|
28026
|
+
key: 'TIMEZONE_ID',
|
|
28027
|
+
label: 'Múi giờ',
|
|
28028
|
+
kind: 'timezoneId',
|
|
28029
|
+
defaultValue: 'Asia/Saigon',
|
|
28030
|
+
validators: {
|
|
28031
|
+
required: true
|
|
28032
|
+
},
|
|
28033
|
+
errorMessages: {
|
|
28034
|
+
required: 'Phải xác định múi giờ nghiệp vụ'
|
|
28035
|
+
}
|
|
28036
|
+
}
|
|
28037
|
+
],
|
|
28038
|
+
};
|
|
28039
|
+
|
|
28040
|
+
const CREATE_S = {
|
|
28041
|
+
actionCode: EnumActionCode.CREATE_S,
|
|
28042
|
+
label: 'Tạo ghế',
|
|
28043
|
+
description: 'Tạo một ghế (seat) mới trong tổ chức.',
|
|
28044
|
+
category: 'Seat',
|
|
28045
|
+
quickEmoji: '🪑',
|
|
28046
|
+
inputs: [
|
|
28047
|
+
{
|
|
28048
|
+
key: 'CODE', label: 'Mã ghế', kind: 'string', validators: {
|
|
28049
|
+
required: true
|
|
28050
|
+
}
|
|
28051
|
+
},
|
|
28052
|
+
],
|
|
28053
|
+
};
|
|
28054
|
+
|
|
28055
|
+
const LINK_S_O = {
|
|
28056
|
+
actionCode: EnumActionCode.LINK_S_O,
|
|
28057
|
+
label: 'Gắn ghế vào tổ chức',
|
|
28058
|
+
description: 'Gắn một ghế vào một tổ chức.',
|
|
28059
|
+
category: 'Seat',
|
|
28060
|
+
quickEmoji: '📎🪑🏢',
|
|
28061
|
+
inputs: [
|
|
28062
|
+
{
|
|
28063
|
+
key: 'A_ID', label: 'Ghế', kind: 'reference', validators: {
|
|
28064
|
+
required: true
|
|
28065
|
+
}
|
|
28066
|
+
},
|
|
28067
|
+
{
|
|
28068
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.S_BELONGS_TO_O, hidden: true
|
|
28069
|
+
},
|
|
28070
|
+
{
|
|
28071
|
+
key: 'B_ID', label: 'Tổ chức', kind: 'reference', validators: {
|
|
28072
|
+
required: true
|
|
28073
|
+
}
|
|
28074
|
+
},
|
|
28075
|
+
],
|
|
28076
|
+
};
|
|
28077
|
+
|
|
28078
|
+
const SHORTEN_S_O = {
|
|
28079
|
+
actionCode: EnumActionCode.SHORTEN_S_O,
|
|
28080
|
+
label: 'Rút ngắn hiệu lực ghế–tổ chức',
|
|
28081
|
+
description: 'Rút ngắn hiệu lực ghế–tổ chức.',
|
|
28082
|
+
category: 'Seat',
|
|
28083
|
+
quickEmoji: '✂️🪑🏢',
|
|
28084
|
+
inputs: [
|
|
28085
|
+
{
|
|
28086
|
+
key: 'A_ID', label: 'Ghế', kind: 'reference', validators: {
|
|
28087
|
+
required: true
|
|
28088
|
+
}
|
|
28089
|
+
},
|
|
28090
|
+
{
|
|
28091
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.S_BELONGS_TO_O, hidden: true
|
|
28092
|
+
},
|
|
28093
|
+
{
|
|
28094
|
+
key: 'B_ID', label: 'Tổ chức', kind: 'reference', validators: {
|
|
28095
|
+
required: true
|
|
28096
|
+
}
|
|
28097
|
+
},
|
|
28098
|
+
],
|
|
28099
|
+
};
|
|
28100
|
+
|
|
28101
|
+
const LINK_S_S = {
|
|
28102
|
+
actionCode: EnumActionCode.LINK_S_S,
|
|
28103
|
+
label: 'Mở hiệu lực tuyến quyền lực',
|
|
28104
|
+
description: 'Mở hiệu lực điều phối giữa hai ghế.',
|
|
28105
|
+
category: 'PowerLine',
|
|
28106
|
+
quickEmoji: '🧭🪑➡️🪑',
|
|
28107
|
+
inputs: [
|
|
28108
|
+
{
|
|
28109
|
+
key: 'A_ID', label: 'Ghế nguồn', kind: 'reference', validators: {
|
|
28110
|
+
required: true
|
|
28111
|
+
}
|
|
28112
|
+
},
|
|
28113
|
+
{
|
|
28114
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.S_WORKS_UNDER_S, hidden: true
|
|
28115
|
+
},
|
|
28116
|
+
{
|
|
28117
|
+
key: 'B_ID', label: 'Ghế đích', kind: 'reference', validators: {
|
|
28118
|
+
required: true
|
|
28119
|
+
}
|
|
28120
|
+
},
|
|
28121
|
+
],
|
|
28122
|
+
};
|
|
28123
|
+
|
|
28124
|
+
const SHORTEN_S_S = {
|
|
28125
|
+
actionCode: EnumActionCode.SHORTEN_S_S,
|
|
28126
|
+
label: 'Rút ngắn hiệu lực tuyến quyền lực',
|
|
28127
|
+
description: 'Rút ngắn hiệu lực tuyến quyền lực giữa hai ghế.',
|
|
28128
|
+
category: 'PowerLine',
|
|
28129
|
+
quickEmoji: '⛔🧭🪑➡️🪑',
|
|
28130
|
+
inputs: [
|
|
28131
|
+
{
|
|
28132
|
+
key: 'A_ID', label: 'Ghế nguồn', kind: 'reference', validators: {
|
|
28133
|
+
required: true
|
|
28134
|
+
}
|
|
28135
|
+
},
|
|
28136
|
+
{
|
|
28137
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.S_WORKS_UNDER_S, hidden: true
|
|
28138
|
+
},
|
|
28139
|
+
{
|
|
28140
|
+
key: 'B_ID', label: 'Ghế đích', kind: 'reference', validators: {
|
|
28141
|
+
required: true
|
|
28142
|
+
}
|
|
28143
|
+
}
|
|
28144
|
+
],
|
|
28145
|
+
};
|
|
28146
|
+
|
|
28147
|
+
const LINK_P_S_INTERNAL = {
|
|
28148
|
+
actionCode: EnumActionCode.LINK_P_S_INTERNAL,
|
|
28149
|
+
label: 'Gán người vào ghế (quyết định nội bộ)',
|
|
28150
|
+
description: 'OM chủ động gán người ngoài HR vào ghế trong ngành dọc.',
|
|
28151
|
+
category: 'Assignment',
|
|
28152
|
+
quickEmoji: '👤➡️🪑',
|
|
28153
|
+
inputs: [
|
|
28154
|
+
{
|
|
28155
|
+
key: 'A_ID', label: 'Người', kind: 'reference', validators: {
|
|
28156
|
+
required: true
|
|
28157
|
+
}
|
|
28158
|
+
},
|
|
28159
|
+
{
|
|
28160
|
+
key: 'R_CODE', label: 'Mã quan hệ', kind: 'rCode', defaultValue: EnumRCodeForward.P_OCCUPIES_S, hidden: true
|
|
28161
|
+
},
|
|
28162
|
+
{
|
|
28163
|
+
key: 'ROLE', label: 'Vai trò', kind: 'role'
|
|
28164
|
+
},
|
|
28165
|
+
{
|
|
28166
|
+
key: 'B_ID', label: 'Ghế', kind: 'reference', validators: {
|
|
28167
|
+
required: true
|
|
28168
|
+
}
|
|
28169
|
+
},
|
|
28170
|
+
],
|
|
28171
|
+
};
|
|
28172
|
+
|
|
28173
|
+
const SET_O_ATTR = {
|
|
28174
|
+
actionCode: EnumActionCode.SET_O_ATTR,
|
|
28175
|
+
label: 'Ghi thuộc tính tổ chức (có hiệu lực)',
|
|
28176
|
+
description: 'Ghi diễn giải / thuộc tính cho tổ chức (có hiệu lực).',
|
|
28177
|
+
category: 'Attribute',
|
|
28178
|
+
quickEmoji: '→ 📝🏢',
|
|
28179
|
+
inputs: [
|
|
28180
|
+
{
|
|
28181
|
+
key: 'ID', label: 'Tổ chức', kind: 'reference', validators: {
|
|
28182
|
+
required: true
|
|
28183
|
+
}
|
|
28184
|
+
},
|
|
28185
|
+
{
|
|
28186
|
+
key: 'ATTRIBUTE_NAME', label: 'Thuộc tính', kind: 'orgAttributeName', validators: {
|
|
28187
|
+
required: true
|
|
28188
|
+
}
|
|
28189
|
+
}
|
|
28190
|
+
],
|
|
28191
|
+
};
|
|
28192
|
+
|
|
28193
|
+
const SET_S_ATTR = {
|
|
28194
|
+
actionCode: EnumActionCode.SET_S_ATTR,
|
|
28195
|
+
label: 'Ghi thuộc tính ghế',
|
|
28196
|
+
description: 'Ghi diễn giải / thuộc tính cho ghế.',
|
|
28197
|
+
category: 'Attribute',
|
|
28198
|
+
quickEmoji: '→ 📝🪑',
|
|
28199
|
+
inputs: [
|
|
28200
|
+
{
|
|
28201
|
+
key: 'A_ID', label: 'Ghế', kind: 'reference', validators: {
|
|
28202
|
+
required: true
|
|
28203
|
+
}
|
|
28204
|
+
},
|
|
28205
|
+
{
|
|
28206
|
+
key: 'ATTRIBUTE_NAME', label: 'Thuộc tính', kind: 'seatAttributeName', validators: {
|
|
28207
|
+
required: true
|
|
28208
|
+
}
|
|
28209
|
+
}
|
|
28210
|
+
],
|
|
28211
|
+
};
|
|
28212
|
+
|
|
28213
|
+
const SET_P_ATTR = {
|
|
28214
|
+
actionCode: EnumActionCode.SET_P_ATTR,
|
|
28215
|
+
label: 'Ghi thuộc tính người ngoài HR',
|
|
28216
|
+
description: 'Ghi diễn giải / thuộc tính cho người ngoài HR.',
|
|
28217
|
+
category: 'Attribute',
|
|
28218
|
+
quickEmoji: '→ 📝👤',
|
|
28219
|
+
inputs: [
|
|
28220
|
+
{
|
|
28221
|
+
key: 'ID', label: 'Người', kind: 'reference', validators: {
|
|
28222
|
+
required: true
|
|
28223
|
+
}
|
|
28224
|
+
},
|
|
28225
|
+
{
|
|
28226
|
+
key: 'ATTRIBUTE_NAME', label: 'Thuộc tính', kind: 'personAttributeName', validators: {
|
|
28227
|
+
required: true
|
|
28228
|
+
}
|
|
28229
|
+
}
|
|
28230
|
+
],
|
|
28231
|
+
};
|
|
28232
|
+
|
|
28233
|
+
const DECLARE_SNAPSHOT = {
|
|
28234
|
+
actionCode: EnumActionCode.DECLARE_SNAPSHOT,
|
|
28235
|
+
label: 'Khai báo mốc tổ chức',
|
|
28236
|
+
description: 'Khai báo mốc tổ chức phục vụ audit / snapshot.',
|
|
28237
|
+
category: 'Snapshot',
|
|
28238
|
+
quickEmoji: '→ 🕰️',
|
|
28239
|
+
inputs: [
|
|
28240
|
+
{
|
|
28241
|
+
key: 'NOTE', label: 'Ghi chú mốc', kind: 'string', validators: {
|
|
28242
|
+
required: true
|
|
28243
|
+
}
|
|
28244
|
+
},
|
|
28245
|
+
],
|
|
28246
|
+
};
|
|
28247
|
+
|
|
27683
28248
|
const TEMPORAL_INTENT_INPUTS = [
|
|
27684
28249
|
{
|
|
27685
|
-
key: '
|
|
28250
|
+
key: 'VF_UTC',
|
|
27686
28251
|
label: 'Hiệu lực từ',
|
|
27687
28252
|
kind: 'date',
|
|
27688
28253
|
validators: { required: true },
|
|
@@ -27691,15 +28256,15 @@ const TEMPORAL_INTENT_INPUTS = [
|
|
|
27691
28256
|
}
|
|
27692
28257
|
},
|
|
27693
28258
|
{
|
|
27694
|
-
key: '
|
|
28259
|
+
key: 'VT_UTC',
|
|
27695
28260
|
label: 'Hiệu lực đến',
|
|
27696
28261
|
kind: 'date',
|
|
27697
28262
|
defaultValue: new Date(9999, 11, 31)
|
|
27698
28263
|
},
|
|
27699
28264
|
{
|
|
27700
|
-
key: '
|
|
28265
|
+
key: 'TIMEZONE_ID',
|
|
27701
28266
|
label: 'Múi giờ',
|
|
27702
|
-
kind: '
|
|
28267
|
+
kind: 'timezoneId',
|
|
27703
28268
|
defaultValue: 'Asia/Saigon',
|
|
27704
28269
|
validators: {
|
|
27705
28270
|
required: true
|
|
@@ -27713,292 +28278,250 @@ const INTENT_DESCRIPTOR_REGISTRY = [
|
|
|
27713
28278
|
/* =========================
|
|
27714
28279
|
* ORGANIZATION (O)
|
|
27715
28280
|
* ========================= */
|
|
27716
|
-
|
|
27717
|
-
|
|
27718
|
-
|
|
27719
|
-
|
|
27720
|
-
category: 'Organization',
|
|
27721
|
-
quickEmoji: '🏗️',
|
|
27722
|
-
inputs: [
|
|
27723
|
-
{
|
|
27724
|
-
key: 'ORIGINAL_NAME',
|
|
27725
|
-
label: 'Tên chính danh lịch sử của tổ chức',
|
|
27726
|
-
kind: 'string',
|
|
27727
|
-
validators: {
|
|
27728
|
-
required: true,
|
|
27729
|
-
minLength: 3,
|
|
27730
|
-
maxLength: 255
|
|
27731
|
-
}
|
|
27732
|
-
},
|
|
27733
|
-
{
|
|
27734
|
-
key: 'IS_ROOT',
|
|
27735
|
-
label: 'Là đơn vị gốc',
|
|
27736
|
-
kind: 'boolean',
|
|
27737
|
-
defaultValue: false,
|
|
27738
|
-
validators: {
|
|
27739
|
-
required: true
|
|
27740
|
-
}
|
|
27741
|
-
},
|
|
27742
|
-
{
|
|
27743
|
-
key: 'IS_HR',
|
|
27744
|
-
label: 'Là đơn vị nhân sự chính thống (ngành ngang)',
|
|
27745
|
-
kind: 'boolean',
|
|
27746
|
-
defaultValue: true,
|
|
27747
|
-
validators: {
|
|
27748
|
-
required: true
|
|
27749
|
-
}
|
|
27750
|
-
},
|
|
27751
|
-
],
|
|
27752
|
-
},
|
|
27753
|
-
{
|
|
27754
|
-
actionCode: EnumActionCode.LINK_O_O,
|
|
27755
|
-
label: 'Thiết lập quan hệ tổ chức',
|
|
27756
|
-
description: 'Thiết lập quan hệ hiệu lực giữa hai tổ chức.',
|
|
27757
|
-
category: 'Organization',
|
|
27758
|
-
quickEmoji: '🔗🏢',
|
|
27759
|
-
inputs: [
|
|
27760
|
-
{
|
|
27761
|
-
key: 'parent', label: 'Tổ chức cha', kind: 'reference', validators: {
|
|
27762
|
-
required: true
|
|
27763
|
-
}
|
|
27764
|
-
},
|
|
27765
|
-
{
|
|
27766
|
-
key: 'child', label: 'Tổ chức con', kind: 'reference', validators: {
|
|
27767
|
-
required: true
|
|
27768
|
-
}
|
|
27769
|
-
},
|
|
27770
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27771
|
-
],
|
|
27772
|
-
},
|
|
27773
|
-
{
|
|
27774
|
-
actionCode: EnumActionCode.SHORTEN_O_O,
|
|
27775
|
-
label: 'Rút ngắn hiệu lực quan hệ tổ chức',
|
|
27776
|
-
description: 'Rút ngắn hiệu lực quan hệ tổ chức.',
|
|
27777
|
-
category: 'Organization',
|
|
27778
|
-
quickEmoji: '✂️🏢',
|
|
27779
|
-
inputs: [
|
|
27780
|
-
{
|
|
27781
|
-
key: 'parent', label: 'Tổ chức cha', kind: 'reference', validators: {
|
|
27782
|
-
required: true
|
|
27783
|
-
}
|
|
27784
|
-
},
|
|
27785
|
-
{
|
|
27786
|
-
key: 'child', label: 'Tổ chức con', kind: 'reference', validators: {
|
|
27787
|
-
required: true
|
|
27788
|
-
}
|
|
27789
|
-
},
|
|
27790
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27791
|
-
],
|
|
27792
|
-
},
|
|
28281
|
+
CREATE_TREE,
|
|
28282
|
+
CREATE_O,
|
|
28283
|
+
LINK_O_O,
|
|
28284
|
+
SHORTEN_O_O,
|
|
27793
28285
|
/* =========================
|
|
27794
28286
|
* SEAT / POSITION (S)
|
|
27795
28287
|
* ========================= */
|
|
27796
|
-
|
|
27797
|
-
|
|
27798
|
-
|
|
27799
|
-
description: 'Tạo một ghế (seat) mới trong tổ chức.',
|
|
27800
|
-
category: 'Seat',
|
|
27801
|
-
quickEmoji: '🪑',
|
|
27802
|
-
inputs: [
|
|
27803
|
-
{
|
|
27804
|
-
key: 'title', label: 'Tên ghế / chức danh', kind: 'string', validators: {
|
|
27805
|
-
required: true
|
|
27806
|
-
}
|
|
27807
|
-
},
|
|
27808
|
-
],
|
|
27809
|
-
},
|
|
27810
|
-
{
|
|
27811
|
-
actionCode: EnumActionCode.LINK_S_O,
|
|
27812
|
-
label: 'Gắn ghế vào tổ chức',
|
|
27813
|
-
description: 'Gắn một ghế vào một tổ chức.',
|
|
27814
|
-
category: 'Seat',
|
|
27815
|
-
quickEmoji: '📎🪑🏢',
|
|
27816
|
-
inputs: [
|
|
27817
|
-
{
|
|
27818
|
-
key: 'seat', label: 'Ghế', kind: 'reference', validators: {
|
|
27819
|
-
required: true
|
|
27820
|
-
}
|
|
27821
|
-
},
|
|
27822
|
-
{
|
|
27823
|
-
key: 'org', label: 'Tổ chức', kind: 'reference', validators: {
|
|
27824
|
-
required: true
|
|
27825
|
-
}
|
|
27826
|
-
},
|
|
27827
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27828
|
-
],
|
|
27829
|
-
},
|
|
27830
|
-
{
|
|
27831
|
-
actionCode: EnumActionCode.SHORTEN_S_O,
|
|
27832
|
-
label: 'Rút ngắn hiệu lực ghế–tổ chức',
|
|
27833
|
-
description: 'Rút ngắn hiệu lực ghế–tổ chức.',
|
|
27834
|
-
category: 'Seat',
|
|
27835
|
-
quickEmoji: '✂️🪑🏢',
|
|
27836
|
-
inputs: [
|
|
27837
|
-
{
|
|
27838
|
-
key: 'seat', label: 'Ghế', kind: 'reference', validators: {
|
|
27839
|
-
required: true
|
|
27840
|
-
}
|
|
27841
|
-
},
|
|
27842
|
-
{
|
|
27843
|
-
key: 'org', label: 'Tổ chức', kind: 'reference', validators: {
|
|
27844
|
-
required: true
|
|
27845
|
-
}
|
|
27846
|
-
},
|
|
27847
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27848
|
-
],
|
|
27849
|
-
},
|
|
28288
|
+
CREATE_S,
|
|
28289
|
+
LINK_S_O,
|
|
28290
|
+
SHORTEN_S_O,
|
|
27850
28291
|
/* =========================
|
|
27851
28292
|
* POWER LINE (S ↔ S)
|
|
27852
28293
|
* ========================= */
|
|
27853
|
-
|
|
27854
|
-
|
|
27855
|
-
label: 'Mở hiệu lực tuyến quyền lực',
|
|
27856
|
-
description: 'Mở hiệu lực tuyến báo cáo / điều phối giữa hai ghế.',
|
|
27857
|
-
category: 'PowerLine',
|
|
27858
|
-
quickEmoji: '🧭🪑➡️🪑',
|
|
27859
|
-
inputs: [
|
|
27860
|
-
{
|
|
27861
|
-
key: 'fromSeat', label: 'Ghế nguồn', kind: 'reference', validators: {
|
|
27862
|
-
required: true
|
|
27863
|
-
}
|
|
27864
|
-
},
|
|
27865
|
-
{
|
|
27866
|
-
key: 'toSeat', label: 'Ghế đích', kind: 'reference', validators: {
|
|
27867
|
-
required: true
|
|
27868
|
-
}
|
|
27869
|
-
},
|
|
27870
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27871
|
-
],
|
|
27872
|
-
},
|
|
27873
|
-
{
|
|
27874
|
-
actionCode: EnumActionCode.SHORTEN_S_S,
|
|
27875
|
-
label: 'Rút ngắn hiệu lực tuyến quyền lực',
|
|
27876
|
-
description: 'Rút ngắn hiệu lực tuyến quyền lực giữa hai ghế.',
|
|
27877
|
-
category: 'PowerLine',
|
|
27878
|
-
quickEmoji: '⛔🧭🪑➡️🪑',
|
|
27879
|
-
inputs: [
|
|
27880
|
-
{
|
|
27881
|
-
key: 'fromSeat', label: 'Ghế nguồn', kind: 'reference', validators: {
|
|
27882
|
-
required: true
|
|
27883
|
-
}
|
|
27884
|
-
},
|
|
27885
|
-
{
|
|
27886
|
-
key: 'toSeat', label: 'Ghế đích', kind: 'reference', validators: {
|
|
27887
|
-
required: true
|
|
27888
|
-
}
|
|
27889
|
-
},
|
|
27890
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27891
|
-
],
|
|
27892
|
-
},
|
|
28294
|
+
LINK_S_S,
|
|
28295
|
+
SHORTEN_S_S,
|
|
27893
28296
|
/* =========================
|
|
27894
28297
|
* PERSON ↔ SEAT (P ↔ S)
|
|
27895
28298
|
* ========================= */
|
|
27896
|
-
|
|
27897
|
-
actionCode: EnumActionCode.LINK_P_S_INTERNAL,
|
|
27898
|
-
label: 'Gán người vào ghế (quyết định nội bộ)',
|
|
27899
|
-
description: 'OM chủ động gán người ngoài HR vào ghế trong ngành dọc.',
|
|
27900
|
-
category: 'Assignment',
|
|
27901
|
-
quickEmoji: '👤➡️🪑',
|
|
27902
|
-
inputs: [
|
|
27903
|
-
{
|
|
27904
|
-
key: 'person', label: 'Người', kind: 'reference', validators: {
|
|
27905
|
-
required: true
|
|
27906
|
-
}
|
|
27907
|
-
},
|
|
27908
|
-
{
|
|
27909
|
-
key: 'seat', label: 'Ghế', kind: 'reference', validators: {
|
|
27910
|
-
required: true
|
|
27911
|
-
}
|
|
27912
|
-
},
|
|
27913
|
-
...TEMPORAL_INTENT_INPUTS
|
|
27914
|
-
],
|
|
27915
|
-
},
|
|
28299
|
+
LINK_P_S_INTERNAL,
|
|
27916
28300
|
/* =========================
|
|
27917
28301
|
* ATTRIBUTE
|
|
27918
28302
|
* ========================= */
|
|
27919
|
-
|
|
27920
|
-
|
|
27921
|
-
|
|
27922
|
-
|
|
27923
|
-
|
|
27924
|
-
|
|
27925
|
-
|
|
28303
|
+
SET_O_ATTR,
|
|
28304
|
+
SET_S_ATTR,
|
|
28305
|
+
SET_P_ATTR,
|
|
28306
|
+
/* =========================
|
|
28307
|
+
* SNAPSHOT / MILESTONE
|
|
28308
|
+
* ========================= */
|
|
28309
|
+
DECLARE_SNAPSHOT
|
|
28310
|
+
];
|
|
28311
|
+
|
|
28312
|
+
class CoreTimezoneComponent extends CoreFormControlBaseComponent {
|
|
28313
|
+
constructor() {
|
|
28314
|
+
super(...arguments);
|
|
28315
|
+
this.cdts = inject(CoreDatetimeService);
|
|
28316
|
+
this.dropdownOptions$ = new BehaviorSubject([]);
|
|
28317
|
+
this.value = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
28318
|
+
}
|
|
28319
|
+
ngAfterViewInit() {
|
|
28320
|
+
setTimeout(() => {
|
|
28321
|
+
this.dropdownOptions$.next(this.cdts.$timeZones().map(x => ({
|
|
28322
|
+
value: x, text: x
|
|
28323
|
+
})));
|
|
28324
|
+
});
|
|
28325
|
+
}
|
|
28326
|
+
onValueChange(e) {
|
|
28327
|
+
this.markAsTouched();
|
|
28328
|
+
this.onChange(e);
|
|
28329
|
+
}
|
|
28330
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreTimezoneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
28331
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: CoreTimezoneComponent, isStandalone: true, selector: "core-timezone", providers: [
|
|
27926
28332
|
{
|
|
27927
|
-
|
|
27928
|
-
|
|
27929
|
-
|
|
28333
|
+
provide: NG_VALUE_ACCESSOR,
|
|
28334
|
+
multi: true,
|
|
28335
|
+
useExisting: forwardRef(() => CoreTimezoneComponent),
|
|
27930
28336
|
},
|
|
28337
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-timezone-container\">\r\n <core-dropdown \r\n [options$]=\"dropdownOptions$\"\r\n [warningDisable]=\"true\"\r\n [(ngModel)]=\"value\"\r\n (ngModelOnchange)=\"onValueChange($event)\"\r\n />\r\n</div>\r\n", styles: [""], dependencies: [{ 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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
28338
|
+
}
|
|
28339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreTimezoneComponent, decorators: [{
|
|
28340
|
+
type: Component,
|
|
28341
|
+
args: [{ selector: 'core-timezone', imports: [
|
|
28342
|
+
CoreDropdownComponent,
|
|
28343
|
+
FormsModule,
|
|
28344
|
+
], providers: [
|
|
28345
|
+
{
|
|
28346
|
+
provide: NG_VALUE_ACCESSOR,
|
|
28347
|
+
multi: true,
|
|
28348
|
+
useExisting: forwardRef(() => CoreTimezoneComponent),
|
|
28349
|
+
},
|
|
28350
|
+
], template: "<div class=\"core-timezone-container\">\r\n <core-dropdown \r\n [options$]=\"dropdownOptions$\"\r\n [warningDisable]=\"true\"\r\n [(ngModel)]=\"value\"\r\n (ngModelOnchange)=\"onValueChange($event)\"\r\n />\r\n</div>\r\n" }]
|
|
28351
|
+
}] });
|
|
28352
|
+
|
|
28353
|
+
class CoreTreeReferenceComponent extends CoreFormControlBaseComponent {
|
|
28354
|
+
constructor() {
|
|
28355
|
+
super(...arguments);
|
|
28356
|
+
this.$data = input.required();
|
|
28357
|
+
this.$itemTemplateRef = input();
|
|
28358
|
+
this.selected = output();
|
|
28359
|
+
}
|
|
28360
|
+
onSelect(node) {
|
|
28361
|
+
this.selected.emit(node);
|
|
28362
|
+
this.value = node.id;
|
|
28363
|
+
console.log("onSelect", this.value);
|
|
28364
|
+
}
|
|
28365
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreTreeReferenceComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
28366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreTreeReferenceComponent, isStandalone: true, selector: "core-tree-reference", inputs: { $data: { classPropertyName: "$data", publicName: "$data", isSignal: true, isRequired: true, transformFunction: null }, $itemTemplateRef: { classPropertyName: "$itemTemplateRef", publicName: "$itemTemplateRef", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, providers: [
|
|
27931
28367
|
{
|
|
27932
|
-
|
|
27933
|
-
|
|
27934
|
-
|
|
28368
|
+
provide: NG_VALUE_ACCESSOR,
|
|
28369
|
+
multi: true,
|
|
28370
|
+
useExisting: forwardRef(() => CoreTreeReferenceComponent),
|
|
27935
28371
|
},
|
|
27936
|
-
|
|
27937
|
-
|
|
27938
|
-
|
|
28372
|
+
], usesInheritance: true, ngImport: i0, template: "<ul class=\"core-tree-root\">\r\n @for (node of $data(); track node.id) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"nodeWrapperTpl\"\r\n [ngTemplateOutletContext]=\"{ node: node, level: 0 }\">\r\n </ng-container>\r\n }\r\n</ul>\r\n\r\n<ng-template #nodeWrapperTpl let-node=\"node\" let-level=\"level\">\r\n <li\r\n class=\"core-tree-node\"\r\n [style.paddingLeft.px]=\"level * 16\"\r\n (click)=\"onSelect(node)\"\r\n >\r\n <!-- CH\u1EC8 render n\u1ED9i dung -->\r\n <ng-container\r\n [ngTemplateOutlet]=\"$itemTemplateRef() ?? defaultItemTpl\"\r\n [ngTemplateOutletContext]=\"{ node: node, level: level }\">\r\n </ng-container>\r\n </li>\r\n\r\n @if (node.children?.length) {\r\n @for (child of node.children; track child.id) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"nodeWrapperTpl\"\r\n [ngTemplateOutletContext]=\"{ node: child, level: level + 1 }\">\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultItemTpl let-node=\"node\">\r\n <span class=\"node-label\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".core-tree-root{list-style:none;margin:0;padding:0}.core-tree-node{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;border-radius:4px}.core-tree-node:hover{background-color:#f3f5f7}.node-label{font-size:14px;color:#1f2937}.node-hint{font-size:11px;color:#6b7280;opacity:.7}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
28373
|
+
}
|
|
28374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreTreeReferenceComponent, decorators: [{
|
|
28375
|
+
type: Component,
|
|
28376
|
+
args: [{ selector: 'core-tree-reference', imports: [
|
|
28377
|
+
NgTemplateOutlet
|
|
28378
|
+
], providers: [
|
|
28379
|
+
{
|
|
28380
|
+
provide: NG_VALUE_ACCESSOR,
|
|
28381
|
+
multi: true,
|
|
28382
|
+
useExisting: forwardRef(() => CoreTreeReferenceComponent),
|
|
28383
|
+
},
|
|
28384
|
+
], template: "<ul class=\"core-tree-root\">\r\n @for (node of $data(); track node.id) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"nodeWrapperTpl\"\r\n [ngTemplateOutletContext]=\"{ node: node, level: 0 }\">\r\n </ng-container>\r\n }\r\n</ul>\r\n\r\n<ng-template #nodeWrapperTpl let-node=\"node\" let-level=\"level\">\r\n <li\r\n class=\"core-tree-node\"\r\n [style.paddingLeft.px]=\"level * 16\"\r\n (click)=\"onSelect(node)\"\r\n >\r\n <!-- CH\u1EC8 render n\u1ED9i dung -->\r\n <ng-container\r\n [ngTemplateOutlet]=\"$itemTemplateRef() ?? defaultItemTpl\"\r\n [ngTemplateOutletContext]=\"{ node: node, level: level }\">\r\n </ng-container>\r\n </li>\r\n\r\n @if (node.children?.length) {\r\n @for (child of node.children; track child.id) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"nodeWrapperTpl\"\r\n [ngTemplateOutletContext]=\"{ node: child, level: level + 1 }\">\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultItemTpl let-node=\"node\">\r\n <span class=\"node-label\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".core-tree-root{list-style:none;margin:0;padding:0}.core-tree-node{display:flex;align-items:center;gap:8px;padding:4px 8px;cursor:pointer;border-radius:4px}.core-tree-node:hover{background-color:#f3f5f7}.node-label{font-size:14px;color:#1f2937}.node-hint{font-size:11px;color:#6b7280;opacity:.7}\n"] }]
|
|
28385
|
+
}] });
|
|
28386
|
+
|
|
28387
|
+
// Mock data for CoreTreeReferenceComponent
|
|
28388
|
+
// Demonstrates:
|
|
28389
|
+
// - Multiple root trees
|
|
28390
|
+
// - Horizontal (HR) vs Vertical (Project/Committee) structures
|
|
28391
|
+
// - Core component neutrality (no domain assumption)
|
|
28392
|
+
const MOCK_DATA = [
|
|
27939
28393
|
{
|
|
27940
|
-
|
|
27941
|
-
label: '
|
|
27942
|
-
|
|
27943
|
-
|
|
27944
|
-
|
|
27945
|
-
|
|
28394
|
+
id: '63c5046d-1c44-470e-a5b2-ee86249ae4a2',
|
|
28395
|
+
label: 'Headquarters',
|
|
28396
|
+
meta: {
|
|
28397
|
+
isRoot: true,
|
|
28398
|
+
isHr: true,
|
|
28399
|
+
hint: 'Green (Cây ngành ngang duy nhất)'
|
|
28400
|
+
},
|
|
28401
|
+
children: [
|
|
27946
28402
|
{
|
|
27947
|
-
|
|
27948
|
-
|
|
27949
|
-
|
|
28403
|
+
id: '0051c3a0-c481-47a4-b356-057ff5f333f1',
|
|
28404
|
+
label: 'R&D Division',
|
|
28405
|
+
children: [
|
|
28406
|
+
{
|
|
28407
|
+
id: 'ae0043c6-f304-48e1-8e74-4a4b727ab2ef',
|
|
28408
|
+
label: 'Backend Team',
|
|
28409
|
+
},
|
|
28410
|
+
{
|
|
28411
|
+
id: 'abef3813-d928-4cbc-93de-11059fa1f50b',
|
|
28412
|
+
label: 'Frontend Team',
|
|
28413
|
+
},
|
|
28414
|
+
{
|
|
28415
|
+
id: '0d6bb481-23f7-4bdb-b952-b9a9ba4083c6',
|
|
28416
|
+
label: 'QA Team',
|
|
28417
|
+
}
|
|
28418
|
+
]
|
|
27950
28419
|
},
|
|
27951
28420
|
{
|
|
27952
|
-
|
|
27953
|
-
|
|
27954
|
-
|
|
28421
|
+
id: '8c999b2f-9fa6-4212-b904-3d1bc95c3d34',
|
|
28422
|
+
label: 'Human Resources',
|
|
28423
|
+
children: [
|
|
28424
|
+
{
|
|
28425
|
+
id: '6143c4f7-3f4e-4e35-bcbb-d5529a66d3f0',
|
|
28426
|
+
label: 'HR Administration',
|
|
28427
|
+
},
|
|
28428
|
+
{
|
|
28429
|
+
id: '8847a41e-4f78-456e-816f-bd41076c771b',
|
|
28430
|
+
label: 'Payroll & Benefits',
|
|
28431
|
+
}
|
|
28432
|
+
]
|
|
27955
28433
|
},
|
|
27956
|
-
|
|
27957
|
-
|
|
28434
|
+
{
|
|
28435
|
+
id: '2c1e287a-b390-4ade-be37-c7121521456d',
|
|
28436
|
+
label: 'Sales Division',
|
|
28437
|
+
children: [
|
|
28438
|
+
{
|
|
28439
|
+
id: '1cce1776-1ebf-482f-bb34-39e9e488911e',
|
|
28440
|
+
label: 'Domestic Sales',
|
|
28441
|
+
},
|
|
28442
|
+
{
|
|
28443
|
+
id: '8aaa7acf-31ab-437f-bd57-e1e0454e337e',
|
|
28444
|
+
label: 'Global Sales',
|
|
28445
|
+
children: [
|
|
28446
|
+
{
|
|
28447
|
+
id: '94935ddb-bb47-4f1e-8ce6-7baabfc9fd8f',
|
|
28448
|
+
label: 'APAC Region',
|
|
28449
|
+
},
|
|
28450
|
+
{
|
|
28451
|
+
id: '44b4c0c9-cde8-4a5d-8f4a-b8041e01d511',
|
|
28452
|
+
label: 'EMEA Region',
|
|
28453
|
+
}
|
|
28454
|
+
]
|
|
28455
|
+
}
|
|
28456
|
+
]
|
|
28457
|
+
}
|
|
28458
|
+
]
|
|
27958
28459
|
},
|
|
27959
28460
|
{
|
|
27960
|
-
|
|
27961
|
-
label: '
|
|
27962
|
-
|
|
27963
|
-
|
|
27964
|
-
|
|
27965
|
-
|
|
28461
|
+
id: 'f9e929f3-dadd-49f1-aa80-ac022d37dcbc',
|
|
28462
|
+
label: 'Project X',
|
|
28463
|
+
meta: {
|
|
28464
|
+
isRoot: true,
|
|
28465
|
+
isHr: false,
|
|
28466
|
+
hint: 'Red (Cây ngành dọc)'
|
|
28467
|
+
},
|
|
28468
|
+
children: [
|
|
27966
28469
|
{
|
|
27967
|
-
|
|
27968
|
-
|
|
27969
|
-
}
|
|
28470
|
+
id: '7a0a3f8d-ef7c-4e8f-9b5b-38fcd6a9c021',
|
|
28471
|
+
label: 'Steering Committee',
|
|
27970
28472
|
},
|
|
27971
28473
|
{
|
|
27972
|
-
|
|
27973
|
-
|
|
27974
|
-
|
|
27975
|
-
|
|
27976
|
-
|
|
27977
|
-
|
|
28474
|
+
id: '9b6b1b2e-0df0-4f6e-9e7c-8b8f6a7c0d11',
|
|
28475
|
+
label: 'Execution Team',
|
|
28476
|
+
children: [
|
|
28477
|
+
{
|
|
28478
|
+
id: 'b1c3e7a9-5f0a-4e7d-9c8a-6f4a2b9d0e31',
|
|
28479
|
+
label: 'Technical Lead',
|
|
28480
|
+
},
|
|
28481
|
+
{
|
|
28482
|
+
id: 'c4f9a2e1-7b6d-4a1e-9c0f-3a2b8d9e7f61',
|
|
28483
|
+
label: 'Business Coordinator',
|
|
28484
|
+
}
|
|
28485
|
+
]
|
|
28486
|
+
}
|
|
28487
|
+
]
|
|
27978
28488
|
},
|
|
27979
|
-
/* =========================
|
|
27980
|
-
* SNAPSHOT / MILESTONE
|
|
27981
|
-
* ========================= */
|
|
27982
28489
|
{
|
|
27983
|
-
|
|
27984
|
-
label: '
|
|
27985
|
-
|
|
27986
|
-
|
|
27987
|
-
|
|
27988
|
-
|
|
28490
|
+
id: 'bd8c8633-9302-4510-ad7a-2eebc6e6a143',
|
|
28491
|
+
label: 'Committee Y',
|
|
28492
|
+
meta: {
|
|
28493
|
+
isRoot: true,
|
|
28494
|
+
isHr: false,
|
|
28495
|
+
hint: 'Red (Cây ngành dọc)'
|
|
28496
|
+
},
|
|
28497
|
+
children: [
|
|
27989
28498
|
{
|
|
27990
|
-
|
|
27991
|
-
|
|
27992
|
-
}
|
|
28499
|
+
id: 'a0c2f8d4-4e9b-4b6e-9f4d-5e6a1b7c9d21',
|
|
28500
|
+
label: 'Chairman Office',
|
|
27993
28501
|
},
|
|
27994
|
-
|
|
27995
|
-
|
|
28502
|
+
{
|
|
28503
|
+
id: 'd9e8f7c6-5b4a-4e3d-9c2b-1a0f8e7d6c51',
|
|
28504
|
+
label: 'Advisory Panel',
|
|
28505
|
+
children: [
|
|
28506
|
+
{
|
|
28507
|
+
id: 'e3a7d9c8-4b5f-4a6e-9d0c-2f1b8e7a6c91',
|
|
28508
|
+
label: 'Legal Advisor',
|
|
28509
|
+
},
|
|
28510
|
+
{
|
|
28511
|
+
id: 'f2b1a0c9-8e7d-4f6a-9b5c-3d4e6a7c8b11',
|
|
28512
|
+
label: 'Financial Advisor',
|
|
28513
|
+
}
|
|
28514
|
+
]
|
|
28515
|
+
}
|
|
28516
|
+
]
|
|
28517
|
+
}
|
|
27996
28518
|
];
|
|
27997
28519
|
|
|
27998
28520
|
class IntentComposerComponent extends BaseComponent {
|
|
27999
28521
|
constructor(mls) {
|
|
28000
28522
|
super(mls);
|
|
28001
28523
|
this.mls = mls;
|
|
28524
|
+
this.MOCK_DATA = MOCK_DATA;
|
|
28002
28525
|
// ===== Inputs / Outputs =====
|
|
28003
28526
|
this.$descriptor = input.required();
|
|
28004
28527
|
this.$intentComposed = output();
|
|
@@ -28007,22 +28530,58 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
28007
28530
|
this.$draftInput = signal({});
|
|
28008
28531
|
this.$errors = signal([]);
|
|
28009
28532
|
this.$checkError = signal(true);
|
|
28533
|
+
this.$defaultOrgItemTpl = viewChild('defaultOrgItemTpl');
|
|
28010
28534
|
// ===== Services =====
|
|
28011
28535
|
this.fb = inject(FormBuilder);
|
|
28012
28536
|
this.as = inject(AlertService);
|
|
28013
|
-
this.cdts = inject(CoreDatetimeService);
|
|
28014
28537
|
this.form = this.fb.group({});
|
|
28015
|
-
this
|
|
28538
|
+
this.$rowableInputs = computed(() => {
|
|
28539
|
+
const inputs = this.$descriptor().inputs ?? [];
|
|
28540
|
+
// Map<row, inputs[]>
|
|
28541
|
+
const rowMap = new Map();
|
|
28542
|
+
for (const input of inputs) {
|
|
28543
|
+
const row = input.row ?? 0;
|
|
28544
|
+
if (!rowMap.has(row)) {
|
|
28545
|
+
rowMap.set(row, []);
|
|
28546
|
+
}
|
|
28547
|
+
rowMap.get(row).push(input);
|
|
28548
|
+
}
|
|
28549
|
+
// Preserve row order (ascending)
|
|
28550
|
+
return Array
|
|
28551
|
+
.from(rowMap.entries())
|
|
28552
|
+
.sort(([a], [b]) => a - b)
|
|
28553
|
+
.map(([row, inputs]) => ({
|
|
28554
|
+
row,
|
|
28555
|
+
inputs
|
|
28556
|
+
}));
|
|
28557
|
+
});
|
|
28558
|
+
this.rCodeOptions$ = new BehaviorSubject(RCODE_FORWARD_VALUES.map(x => ({ value: x, text: x })));
|
|
28559
|
+
this.roleOptions$ = new BehaviorSubject([
|
|
28560
|
+
{
|
|
28561
|
+
value: 'MASTER',
|
|
28562
|
+
text: 'MASTER',
|
|
28563
|
+
},
|
|
28564
|
+
{
|
|
28565
|
+
value: 'CONCURRENT',
|
|
28566
|
+
text: 'CONCURRENT',
|
|
28567
|
+
},
|
|
28568
|
+
{
|
|
28569
|
+
value: 'INTERIM',
|
|
28570
|
+
text: 'INTERIM',
|
|
28571
|
+
},
|
|
28572
|
+
]);
|
|
28573
|
+
this.treeIdOptions$ = new BehaviorSubject([
|
|
28574
|
+
{
|
|
28575
|
+
value: 'bddb5729-9da1-48f7-bfe4-98ce2d71eba1',
|
|
28576
|
+
text: 'HR'
|
|
28577
|
+
},
|
|
28578
|
+
]);
|
|
28016
28579
|
effect(() => {
|
|
28017
28580
|
const descriptor = this.$descriptor();
|
|
28018
28581
|
if (!descriptor)
|
|
28019
28582
|
return;
|
|
28020
28583
|
this.buildForm(descriptor);
|
|
28021
28584
|
});
|
|
28022
|
-
const timezoneOptions = this.cdts.$timeZones().map(x => ({
|
|
28023
|
-
value: x, text: x
|
|
28024
|
-
}));
|
|
28025
|
-
this.timezoneOptions$.next(timezoneOptions);
|
|
28026
28585
|
}
|
|
28027
28586
|
// ===== Methods =====
|
|
28028
28587
|
buildForm(descriptor) {
|
|
@@ -28030,6 +28589,9 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
28030
28589
|
// Logical inputs
|
|
28031
28590
|
for (const input of descriptor.inputs) {
|
|
28032
28591
|
controls[input.key] = new FormControl(input.defaultValue ?? null, this.buildValidators(input.validators));
|
|
28592
|
+
if (input.disabled) {
|
|
28593
|
+
controls[input.key].disable();
|
|
28594
|
+
}
|
|
28033
28595
|
}
|
|
28034
28596
|
this.form = new FormGroup(controls);
|
|
28035
28597
|
}
|
|
@@ -28131,7 +28693,7 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
28131
28693
|
return this.$errors().filter(e => e.fieldKey === fieldKey);
|
|
28132
28694
|
}
|
|
28133
28695
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IntentComposerComponent, deps: [{ token: MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28134
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: IntentComposerComponent, isStandalone: true, selector: "intent-composer", inputs: { $descriptor: { classPropertyName: "$descriptor", publicName: "$descriptor", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { $intentComposed: "$intentComposed", $cancelled: "$cancelled" }, usesInheritance: true, ngImport: i0, template: "<!--\r\n IntentComposerComponent\r\n Purpose:\r\n - Collect human input for a single OM intent\r\n - Emit IntentDraft only\r\n Must NOT:\r\n - Mutate Omega\r\n - Modify IntentChain\r\n-->\r\n@if (form) {\r\n<form\r\n class=\"intent-composer-container\"\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onConfirm()\"\r\n autocomplete=\"off\"\r\n>\r\n\r\n <!-- Header -->\r\n <h3>{{ $descriptor().label }}</h3>\r\n <p class=\"desc\">{{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n\r\n\r\n\r\n
|
|
28696
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: IntentComposerComponent, isStandalone: true, selector: "intent-composer", inputs: { $descriptor: { classPropertyName: "$descriptor", publicName: "$descriptor", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { $intentComposed: "$intentComposed", $cancelled: "$cancelled" }, viewQueries: [{ propertyName: "$defaultOrgItemTpl", first: true, predicate: ["defaultOrgItemTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\r\n IntentComposerComponent\r\n Purpose:\r\n - Collect human input for a single OM intent\r\n - Emit IntentDraft only\r\n Must NOT:\r\n - Mutate Omega\r\n - Modify IntentChain\r\n-->\r\n@if (form) {\r\n<form\r\n class=\"intent-composer-container\"\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onConfirm()\"\r\n autocomplete=\"off\"\r\n>\r\n\r\n <!-- Header -->\r\n <h3>{{ $descriptor().label }}</h3>\r\n <p class=\"desc\">{{ $descriptor().quickEmoji }} | {{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n\r\n\r\n @for (row of $rowableInputs(); track $index) {\r\n\r\n <div class=\"intent-row\">\r\n @for (input of row.inputs; track $index) {\r\n <div\r\n class=\"intent-cell\"\r\n [style.flex]=\"input.flexSize ?? 1\"\r\n [class.hidden]=\"input.hidden\"\r\n >\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"input.key\"\r\n type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('treeId') {\r\n <core-dropdown\r\n [options$]=\"treeIdOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher [formControlName]=\"input.key\" [showOnOffText]=\"false\" [width]=\"66\" />\r\n <!-- <input\r\n type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" /> -->\r\n }\r\n\r\n @case ('number') {\r\n <input\r\n [formControlName]=\"input.key\"\r\n type=\"number\"\r\n (input)=\"onInputChange(input.key, $event.target.valueAsNumber)\" />\r\n }\r\n\r\n @case ('date') {\r\n <core-date-picker \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('dropdown') {\r\n <core-date-picker \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('timezoneId') {\r\n <core-timezone \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('orgGardenReference') {\r\n <!-- <core-tree-reference \r\n [formControlName]=\"input.key\"\r\n [$data]=\"MOCK_DATA\"\r\n [$itemTemplateRef]=\"$defaultOrgItemTpl()\"\r\n /> -->\r\n <core-tree-reference \r\n [formControlName]=\"input.key\"\r\n [$data]=\"MOCK_DATA\"\r\n /> \r\n }\r\n\r\n @case ('rCode') {\r\n <core-dropdown\r\n [options$]=\"rCodeOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('role') {\r\n <core-dropdown\r\n [options$]=\"roleOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('reference') {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-outline\"\r\n (click)=\"onInputChange(input.key, '__REF__')\">\r\n Ch\u1ECDn \u0111\u1ED1i t\u01B0\u1EE3ng\u2026\r\n </button>\r\n }\r\n\r\n @case ('object') {\r\n <textarea\r\n [formControlName]=\"input.key\"\r\n rows=\"3\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\">\r\n </textarea>\r\n }\r\n\r\n @default {\r\n <em class=\"unsupported\">\r\n Ki\u1EC3u input ch\u01B0a \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3\r\n </em>\r\n }\r\n\r\n }\r\n\r\n <!-- START: ERROR SESSION -->\r\n @for (error of getErrorsOfField(input.key); track $index) {\r\n <div class=\"form-control-error\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n }\r\n @if (!getErrorsOfField(input.key).length && !!$checkError()) {\r\n <div> </div>\r\n }\r\n <!-- END: ERROR SESSION -->\r\n\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 <!-- Actions -->\r\n <div class=\"composer-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary\"\r\n (click)=\"onCancel()\">\r\n Quay l\u1EA1i\r\n </button>\r\n\r\n <button\r\n type=\"submit\"\r\n class=\"btn btn-primary\"\r\n >\r\n X\u00E1c nh\u1EADn\r\n </button>\r\n </div>\r\n\r\n</form>\r\n}\r\n\r\n<ng-template #defaultOrgItemTpl let-node=\"node\" let-level=\"level\">\r\n <div class=\"test-itemTemplateRef\">\r\n {{ node.label }}\r\n </div>\r\n</ng-template>", styles: [".intent-composer-container .intent-inputs .intent-row{display:flex;gap:12px}.intent-composer-container .intent-inputs .intent-row .intent-cell.hidden{display:none}.intent-composer-container .intent-inputs .intent-row .intent-input{display:flex;flex-direction:column;margin-top:15px;margin-bottom:15px}.intent-composer-container .intent-inputs .intent-row .intent-input label{color:#464646}.intent-composer-container .intent-inputs .intent-row .intent-input label.required:after{content:\"*\";color:#ff040b}.intent-composer-container .composer-actions{display:flex;justify-content:space-between}.test-itemTemplateRef{padding:15px;background-color:#6495ed;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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: "component", type: CoreIosSwitcherComponent, selector: "core-ios-switcher", inputs: ["bgColor", "showOnOffText", "width", "height", "readonly"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "popupAlign", "rangeLimit", "placeholder", "readonly", "disabled"] }, { 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: CoreTimezoneComponent, selector: "core-timezone" }, { kind: "component", type: CoreTreeReferenceComponent, selector: "core-tree-reference", inputs: ["$data", "$itemTemplateRef"], outputs: ["selected"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
28135
28697
|
}
|
|
28136
28698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IntentComposerComponent, decorators: [{
|
|
28137
28699
|
type: Component,
|
|
@@ -28141,8 +28703,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
28141
28703
|
CoreIosSwitcherComponent,
|
|
28142
28704
|
CoreDatePickerComponent,
|
|
28143
28705
|
CoreDropdownComponent,
|
|
28706
|
+
CoreTimezoneComponent,
|
|
28707
|
+
CoreTreeReferenceComponent,
|
|
28144
28708
|
TranslatePipe,
|
|
28145
|
-
], template: "<!--\r\n IntentComposerComponent\r\n Purpose:\r\n - Collect human input for a single OM intent\r\n - Emit IntentDraft only\r\n Must NOT:\r\n - Mutate Omega\r\n - Modify IntentChain\r\n-->\r\n@if (form) {\r\n<form\r\n class=\"intent-composer-container\"\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onConfirm()\"\r\n autocomplete=\"off\"\r\n>\r\n\r\n <!-- Header -->\r\n <h3>{{ $descriptor().label }}</h3>\r\n <p class=\"desc\">{{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n\r\n\r\n\r\n
|
|
28709
|
+
], template: "<!--\r\n IntentComposerComponent\r\n Purpose:\r\n - Collect human input for a single OM intent\r\n - Emit IntentDraft only\r\n Must NOT:\r\n - Mutate Omega\r\n - Modify IntentChain\r\n-->\r\n@if (form) {\r\n<form\r\n class=\"intent-composer-container\"\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onConfirm()\"\r\n autocomplete=\"off\"\r\n>\r\n\r\n <!-- Header -->\r\n <h3>{{ $descriptor().label }}</h3>\r\n <p class=\"desc\">{{ $descriptor().quickEmoji }} | {{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n\r\n\r\n @for (row of $rowableInputs(); track $index) {\r\n\r\n <div class=\"intent-row\">\r\n @for (input of row.inputs; track $index) {\r\n <div\r\n class=\"intent-cell\"\r\n [style.flex]=\"input.flexSize ?? 1\"\r\n [class.hidden]=\"input.hidden\"\r\n >\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input\r\n class=\"form-control\"\r\n [formControlName]=\"input.key\"\r\n type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('treeId') {\r\n <core-dropdown\r\n [options$]=\"treeIdOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher [formControlName]=\"input.key\" [showOnOffText]=\"false\" [width]=\"66\" />\r\n <!-- <input\r\n type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" /> -->\r\n }\r\n\r\n @case ('number') {\r\n <input\r\n [formControlName]=\"input.key\"\r\n type=\"number\"\r\n (input)=\"onInputChange(input.key, $event.target.valueAsNumber)\" />\r\n }\r\n\r\n @case ('date') {\r\n <core-date-picker \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('dropdown') {\r\n <core-date-picker \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('timezoneId') {\r\n <core-timezone \r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('orgGardenReference') {\r\n <!-- <core-tree-reference \r\n [formControlName]=\"input.key\"\r\n [$data]=\"MOCK_DATA\"\r\n [$itemTemplateRef]=\"$defaultOrgItemTpl()\"\r\n /> -->\r\n <core-tree-reference \r\n [formControlName]=\"input.key\"\r\n [$data]=\"MOCK_DATA\"\r\n /> \r\n }\r\n\r\n @case ('rCode') {\r\n <core-dropdown\r\n [options$]=\"rCodeOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('role') {\r\n <core-dropdown\r\n [options$]=\"roleOptions$\"\r\n [warningDisable]=\"true\"\r\n [formControlName]=\"input.key\" \r\n />\r\n }\r\n\r\n @case ('reference') {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-outline\"\r\n (click)=\"onInputChange(input.key, '__REF__')\">\r\n Ch\u1ECDn \u0111\u1ED1i t\u01B0\u1EE3ng\u2026\r\n </button>\r\n }\r\n\r\n @case ('object') {\r\n <textarea\r\n [formControlName]=\"input.key\"\r\n rows=\"3\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\">\r\n </textarea>\r\n }\r\n\r\n @default {\r\n <em class=\"unsupported\">\r\n Ki\u1EC3u input ch\u01B0a \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3\r\n </em>\r\n }\r\n\r\n }\r\n\r\n <!-- START: ERROR SESSION -->\r\n @for (error of getErrorsOfField(input.key); track $index) {\r\n <div class=\"form-control-error\">\r\n {{ error.errorMessage | translate: lang }}\r\n </div>\r\n }\r\n @if (!getErrorsOfField(input.key).length && !!$checkError()) {\r\n <div> </div>\r\n }\r\n <!-- END: ERROR SESSION -->\r\n\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 <!-- Actions -->\r\n <div class=\"composer-actions\">\r\n <button\r\n type=\"button\"\r\n class=\"btn btn-secondary\"\r\n (click)=\"onCancel()\">\r\n Quay l\u1EA1i\r\n </button>\r\n\r\n <button\r\n type=\"submit\"\r\n class=\"btn btn-primary\"\r\n >\r\n X\u00E1c nh\u1EADn\r\n </button>\r\n </div>\r\n\r\n</form>\r\n}\r\n\r\n<ng-template #defaultOrgItemTpl let-node=\"node\" let-level=\"level\">\r\n <div class=\"test-itemTemplateRef\">\r\n {{ node.label }}\r\n </div>\r\n</ng-template>", styles: [".intent-composer-container .intent-inputs .intent-row{display:flex;gap:12px}.intent-composer-container .intent-inputs .intent-row .intent-cell.hidden{display:none}.intent-composer-container .intent-inputs .intent-row .intent-input{display:flex;flex-direction:column;margin-top:15px;margin-bottom:15px}.intent-composer-container .intent-inputs .intent-row .intent-input label{color:#464646}.intent-composer-container .intent-inputs .intent-row .intent-input label.required:after{content:\"*\";color:#ff040b}.intent-composer-container .composer-actions{display:flex;justify-content:space-between}.test-itemTemplateRef{padding:15px;background-color:#6495ed;color:#fff}\n"] }]
|
|
28146
28710
|
}], ctorParameters: () => [{ type: MultiLanguageService }] });
|
|
28147
28711
|
|
|
28148
28712
|
/**
|
|
@@ -28160,33 +28724,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
28160
28724
|
class CoreDomDecisionEditorComponent extends CoreFormControlBaseComponent {
|
|
28161
28725
|
constructor() {
|
|
28162
28726
|
super(...arguments);
|
|
28727
|
+
this.$omega = signal({
|
|
28728
|
+
omegaVersion: '1.0',
|
|
28729
|
+
inputChain: []
|
|
28730
|
+
});
|
|
28163
28731
|
this.value = '';
|
|
28164
28732
|
this.INTENT_DESCRIPTOR_REGISTRY = INTENT_DESCRIPTOR_REGISTRY;
|
|
28165
28733
|
// UI-only popup flag
|
|
28166
28734
|
this.$showIntentComposer = signal(false);
|
|
28167
28735
|
this.$selectedIntentDescriptor = signal(null);
|
|
28168
|
-
this.$projection =
|
|
28169
|
-
|
|
28170
|
-
|
|
28171
|
-
|
|
28172
|
-
|
|
28736
|
+
this.$projection = computed(() => {
|
|
28737
|
+
const omega = this.$omega();
|
|
28738
|
+
// Trường hợp cực đoan (chỉ khi anh vẫn cho omega nullable)
|
|
28739
|
+
if (!omega) {
|
|
28740
|
+
return {
|
|
28741
|
+
intentCount: 0,
|
|
28742
|
+
validityLabel: 'Chưa có quyết định',
|
|
28743
|
+
intents: [],
|
|
28744
|
+
outputs: [],
|
|
28745
|
+
};
|
|
28746
|
+
}
|
|
28747
|
+
return this.rebuildProjectionFromOmega(omega);
|
|
28173
28748
|
});
|
|
28174
28749
|
}
|
|
28175
28750
|
writeValue(omega) {
|
|
28176
28751
|
this.value = omega ?? '';
|
|
28177
|
-
this.$projection.set(this.rebuildProjectionFromOmega(this.value));
|
|
28752
|
+
//this.$projection.set(this.rebuildProjectionFromOmega(this.value));
|
|
28178
28753
|
}
|
|
28179
28754
|
rebuildProjectionFromOmega(omega) {
|
|
28180
|
-
|
|
28181
|
-
|
|
28182
|
-
|
|
28183
|
-
|
|
28184
|
-
|
|
28755
|
+
const intents = omega.inputChain.map(intent => {
|
|
28756
|
+
const descriptor = INTENT_DESCRIPTOR_REGISTRY
|
|
28757
|
+
.find(d => d.actionCode === intent.actionCode);
|
|
28758
|
+
const actionLabel = descriptor?.label ?? intent.actionCode;
|
|
28759
|
+
return {
|
|
28760
|
+
seq: intent.seq,
|
|
28761
|
+
actionLabel,
|
|
28762
|
+
summary: "TO DO"
|
|
28763
|
+
};
|
|
28764
|
+
});
|
|
28185
28765
|
return {
|
|
28186
|
-
intentCount:
|
|
28187
|
-
validityLabel:
|
|
28188
|
-
|
|
28189
|
-
|
|
28766
|
+
intentCount: intents.length,
|
|
28767
|
+
validityLabel: intents.length === 0
|
|
28768
|
+
? 'Chưa có quyết định'
|
|
28769
|
+
: 'Đang soạn thảo',
|
|
28770
|
+
intents,
|
|
28771
|
+
outputs: []
|
|
28190
28772
|
};
|
|
28191
28773
|
}
|
|
28192
28774
|
onAddIntent() {
|
|
@@ -28209,7 +28791,20 @@ class CoreDomDecisionEditorComponent extends CoreFormControlBaseComponent {
|
|
|
28209
28791
|
this.$selectedIntentDescriptor.set(null);
|
|
28210
28792
|
}
|
|
28211
28793
|
onIntentDrafted(draft) {
|
|
28212
|
-
|
|
28794
|
+
this.$omega.update(omega => {
|
|
28795
|
+
const nextSeq = omega.inputChain.length + 1;
|
|
28796
|
+
return {
|
|
28797
|
+
...omega,
|
|
28798
|
+
inputChain: [
|
|
28799
|
+
...omega.inputChain,
|
|
28800
|
+
{
|
|
28801
|
+
seq: nextSeq,
|
|
28802
|
+
actionCode: draft.actionCode,
|
|
28803
|
+
input: draft.input
|
|
28804
|
+
}
|
|
28805
|
+
]
|
|
28806
|
+
};
|
|
28807
|
+
});
|
|
28213
28808
|
this.$showIntentComposer.set(false);
|
|
28214
28809
|
}
|
|
28215
28810
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDomDecisionEditorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -28219,19 +28814,20 @@ class CoreDomDecisionEditorComponent extends CoreFormControlBaseComponent {
|
|
|
28219
28814
|
multi: true,
|
|
28220
28815
|
useExisting: forwardRef(() => CoreDomDecisionEditorComponent),
|
|
28221
28816
|
},
|
|
28222
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Decision Overview / Header -->\r\n <!-- ========================= -->\r\n <header class=\"editor-header\">\r\n <div class=\"editor-title\">\r\n <h2>Quy\u1EBFt \u0111\u1ECBnh t\u1ED5 ch\u1EE9c</h2>\r\n <p class=\"editor-subtitle\">\r\n So\u1EA1n th\u1EA3o m\u1ED9t quy\u1EBFt \u0111\u1ECBnh OM b\u1EA5t bi\u1EBFn (Omega)\r\n </p>\r\n </div>\r\n\r\n <div class=\"editor-meta\">\r\n <!-- read-only meta derived from Omega -->\r\n <span class=\"meta-item\">\r\n Intent count:\r\n <strong>{{ $projection().intentCount }}</strong>\r\n </span>\r\n\r\n <span class=\"meta-item\">\r\n Tr\u1EA1ng th\u00E1i:\r\n <strong>{{ $projection().validityLabel }}</strong>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n <h3>Chu\u1ED7i \u00FD \u0111\u1ECBnh (Intent Chain)</h3>\r\n\r\n @if ($projection().intents.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 intent n\u00E0o trong quy\u1EBFt \u0111\u1ECBnh n\u00E0y.</p>\r\n <p class=\"hint\">\r\n B\u1EAFt \u0111\u1EA7u b\u1EB1ng c\u00E1ch th\u00EAm intent \u0111\u1EA7u ti\u00EAn.\r\n </p>\r\n </div>\r\n } @else {\r\n
|
|
28817
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Decision Overview / Header -->\r\n <!-- ========================= -->\r\n <header class=\"editor-header\">\r\n <div class=\"editor-title\">\r\n <h2>Quy\u1EBFt \u0111\u1ECBnh t\u1ED5 ch\u1EE9c</h2>\r\n <p class=\"editor-subtitle\">\r\n So\u1EA1n th\u1EA3o m\u1ED9t quy\u1EBFt \u0111\u1ECBnh OM b\u1EA5t bi\u1EBFn (Omega)\r\n </p>\r\n </div>\r\n\r\n <div class=\"editor-meta\">\r\n <!-- read-only meta derived from Omega -->\r\n <span class=\"meta-item\">\r\n Intent count:\r\n <strong>{{ $projection().intentCount }}</strong>\r\n </span>\r\n\r\n <span class=\"meta-item\">\r\n Tr\u1EA1ng th\u00E1i:\r\n <strong>{{ $projection().validityLabel }}</strong>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n <h3>Chu\u1ED7i \u00FD \u0111\u1ECBnh (Intent Chain)</h3>\r\n\r\n @if ($projection().intents.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 intent n\u00E0o trong quy\u1EBFt \u0111\u1ECBnh n\u00E0y.</p>\r\n <p class=\"hint\">\r\n B\u1EAFt \u0111\u1EA7u b\u1EB1ng c\u00E1ch th\u00EAm intent \u0111\u1EA7u ti\u00EAn.\r\n </p>\r\n </div>\r\n } @else {\r\n <ol class=\"intent-list\">\r\n @for (intent of $projection().intents; track $index) {\r\n <li class=\"intent-item\">\r\n <div class=\"intent-card\">\r\n\r\n <!-- Header -->\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\">#{{ intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.actionLabel }}</span>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"intent-body\">\r\n @if (intent.summary) {\r\n <div class=\"intent-summary\">\r\n {{ intent.summary }}\r\n </div>\r\n } @else {\r\n <div class=\"intent-summary muted\">\r\n (Ch\u01B0a c\u00F3 di\u1EC5n gi\u1EA3i chi ti\u1EBFt)\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"intent-footer\">\r\n <button type=\"button\" class=\"btn btn-ghost\">\r\n Xem\r\n </button>\r\n <button type=\"button\" class=\"btn btn-danger-ghost\">\r\n G\u1EE1\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\r\n\r\n }\r\n\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Add Intent Entry Point -->\r\n <!-- ========================= -->\r\n <section class=\"intent-actions-panel\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onAddIntent()\">\r\n + Th\u00EAm Intent\r\n </button>\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Output Preview (Derived) -->\r\n <!-- ========================= -->\r\n <section class=\"output-preview\">\r\n <h3>K\u1EBFt qu\u1EA3 d\u1EF1 ki\u1EBFn (Preview)</h3>\r\n\r\n <p class=\"hint\">\r\n K\u1EBFt qu\u1EA3 n\u00E0y \u0111\u01B0\u1EE3c suy ra t\u1EEB Intent Chain, kh\u00F4ng th\u1EC3 ch\u1EC9nh s\u1EEDa.\r\n </p>\r\n\r\n @if ($projection().outputs.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 output n\u00E0o \u0111\u01B0\u1EE3c sinh ra.</p>\r\n </div>\r\n } @else {\r\n <ul class=\"output-list\">\r\n @for (output of $projection().outputs; track $index) {\r\n <li class=\"output-item\">\r\n <span class=\"output-key\">{{ output.key }}</span>\r\n <span class=\"output-desc\">{{ output.description }}</span>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Raw Omega (Optional / Debug) -->\r\n <!-- ========================= -->\r\n <details class=\"omega-raw\">\r\n <summary>Xem Omega (raw)</summary>\r\n <pre>{{ $omega() | json }}</pre>\r\n </details>\r\n\r\n @if ($showIntentComposer()) {\r\n <!--\r\n Intent Composer Popup\r\n Purpose: Enter intent composition mode only.\r\n MUST NOT:\r\n - Mutate Omega\r\n - Mutate projection\r\n - Execute OM logic\r\n -->\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"intent-composer-entry\">\r\n <p><strong>So\u1EA1n th\u1EA3o Intent m\u1EDBi</strong></p>\r\n\r\n @if ($selectedIntentDescriptor()) {\r\n\r\n <intent-composer\r\n [$descriptor]=\"$selectedIntentDescriptor()!\"\r\n ($intentComposed)=\"onIntentDrafted($event)\"\r\n ($cancelled)=\"onCancelIntentCompose()\">\r\n </intent-composer>\r\n\r\n } @else {\r\n\r\n <!-- N\u1ED9i dung composer s\u1EBD \u0111\u01B0\u1EE3c c\u1EAFm sau -->\r\n <ul class=\"intent-item-registry\">\r\n @for (intent of INTENT_DESCRIPTOR_REGISTRY; track $index) {\r\n <li class=\"intent-item-point\">\r\n <div class=\"intent-item\"\r\n (click)=\"onSelectIntent(intent)\">\r\n <object>{{ intent.actionCode }} | {{ intent.quickEmoji }}</object>\r\n <strong>{{ intent.label }}</strong>\r\n <p>{{ intent.description }}</p>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n\r\n }\r\n <hr />\r\n <div class=\"popup-actions\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCloseIntentComposer()\">\r\n H\u1EE7y\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>", styles: [".core-dom-decision-editor-container .modal-container{overflow:scroll}.core-dom-decision-editor-container .modal-container .modal-content-root{overflow:visible;max-height:unset}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry{padding-left:0;overflow-y:scroll;height:60vh}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry li.intent-item-point{cursor:pointer;padding:8px}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry li.intent-item-point:hover{color:#fff;background-color:#09f}.core-dom-decision-editor-container .intent-chain .intent-list{list-style:none;padding:0;margin:0}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item{margin-bottom:12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card{border:1px solid #d0d7de;border-radius:4px;background:#fff;padding:10px 12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header .intent-seq{background:#e6f0ff;color:#084298;border-radius:3px;padding:2px 6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header .intent-label{color:#212529}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body{padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body .intent-summary{color:#495057}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body .intent-summary.muted{color:#adb5bd;font-style:italic}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer{display:flex;gap:8px;margin-top:8px;padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn{border:none;background:none;cursor:pointer;font-size:13px;padding:2px 6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-ghost{color:#0d6efd}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-ghost:hover{text-decoration:underline}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-danger-ghost{color:#dc3545}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-danger-ghost:hover{text-decoration:underline}\n"], dependencies: [{ kind: "component", type: IntentComposerComponent, selector: "intent-composer", inputs: ["$descriptor"], outputs: ["$intentComposed", "$cancelled"] }, { kind: "pipe", type: JsonPipe, name: "json" }] }); }
|
|
28223
28818
|
}
|
|
28224
28819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDomDecisionEditorComponent, decorators: [{
|
|
28225
28820
|
type: Component,
|
|
28226
28821
|
args: [{ selector: 'core-dom-decision-editor', imports: [
|
|
28227
|
-
IntentComposerComponent
|
|
28822
|
+
IntentComposerComponent,
|
|
28823
|
+
JsonPipe,
|
|
28228
28824
|
], providers: [
|
|
28229
28825
|
{
|
|
28230
28826
|
provide: NG_VALUE_ACCESSOR,
|
|
28231
28827
|
multi: true,
|
|
28232
28828
|
useExisting: forwardRef(() => CoreDomDecisionEditorComponent),
|
|
28233
28829
|
},
|
|
28234
|
-
], template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Decision Overview / Header -->\r\n <!-- ========================= -->\r\n <header class=\"editor-header\">\r\n <div class=\"editor-title\">\r\n <h2>Quy\u1EBFt \u0111\u1ECBnh t\u1ED5 ch\u1EE9c</h2>\r\n <p class=\"editor-subtitle\">\r\n So\u1EA1n th\u1EA3o m\u1ED9t quy\u1EBFt \u0111\u1ECBnh OM b\u1EA5t bi\u1EBFn (Omega)\r\n </p>\r\n </div>\r\n\r\n <div class=\"editor-meta\">\r\n <!-- read-only meta derived from Omega -->\r\n <span class=\"meta-item\">\r\n Intent count:\r\n <strong>{{ $projection().intentCount }}</strong>\r\n </span>\r\n\r\n <span class=\"meta-item\">\r\n Tr\u1EA1ng th\u00E1i:\r\n <strong>{{ $projection().validityLabel }}</strong>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n <h3>Chu\u1ED7i \u00FD \u0111\u1ECBnh (Intent Chain)</h3>\r\n\r\n @if ($projection().intents.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 intent n\u00E0o trong quy\u1EBFt \u0111\u1ECBnh n\u00E0y.</p>\r\n <p class=\"hint\">\r\n B\u1EAFt \u0111\u1EA7u b\u1EB1ng c\u00E1ch th\u00EAm intent \u0111\u1EA7u ti\u00EAn.\r\n </p>\r\n </div>\r\n } @else {\r\n
|
|
28830
|
+
], template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Decision Overview / Header -->\r\n <!-- ========================= -->\r\n <header class=\"editor-header\">\r\n <div class=\"editor-title\">\r\n <h2>Quy\u1EBFt \u0111\u1ECBnh t\u1ED5 ch\u1EE9c</h2>\r\n <p class=\"editor-subtitle\">\r\n So\u1EA1n th\u1EA3o m\u1ED9t quy\u1EBFt \u0111\u1ECBnh OM b\u1EA5t bi\u1EBFn (Omega)\r\n </p>\r\n </div>\r\n\r\n <div class=\"editor-meta\">\r\n <!-- read-only meta derived from Omega -->\r\n <span class=\"meta-item\">\r\n Intent count:\r\n <strong>{{ $projection().intentCount }}</strong>\r\n </span>\r\n\r\n <span class=\"meta-item\">\r\n Tr\u1EA1ng th\u00E1i:\r\n <strong>{{ $projection().validityLabel }}</strong>\r\n </span>\r\n </div>\r\n </header>\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n <h3>Chu\u1ED7i \u00FD \u0111\u1ECBnh (Intent Chain)</h3>\r\n\r\n @if ($projection().intents.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 intent n\u00E0o trong quy\u1EBFt \u0111\u1ECBnh n\u00E0y.</p>\r\n <p class=\"hint\">\r\n B\u1EAFt \u0111\u1EA7u b\u1EB1ng c\u00E1ch th\u00EAm intent \u0111\u1EA7u ti\u00EAn.\r\n </p>\r\n </div>\r\n } @else {\r\n <ol class=\"intent-list\">\r\n @for (intent of $projection().intents; track $index) {\r\n <li class=\"intent-item\">\r\n <div class=\"intent-card\">\r\n\r\n <!-- Header -->\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\">#{{ intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.actionLabel }}</span>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"intent-body\">\r\n @if (intent.summary) {\r\n <div class=\"intent-summary\">\r\n {{ intent.summary }}\r\n </div>\r\n } @else {\r\n <div class=\"intent-summary muted\">\r\n (Ch\u01B0a c\u00F3 di\u1EC5n gi\u1EA3i chi ti\u1EBFt)\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"intent-footer\">\r\n <button type=\"button\" class=\"btn btn-ghost\">\r\n Xem\r\n </button>\r\n <button type=\"button\" class=\"btn btn-danger-ghost\">\r\n G\u1EE1\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\r\n\r\n }\r\n\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Add Intent Entry Point -->\r\n <!-- ========================= -->\r\n <section class=\"intent-actions-panel\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onAddIntent()\">\r\n + Th\u00EAm Intent\r\n </button>\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Output Preview (Derived) -->\r\n <!-- ========================= -->\r\n <section class=\"output-preview\">\r\n <h3>K\u1EBFt qu\u1EA3 d\u1EF1 ki\u1EBFn (Preview)</h3>\r\n\r\n <p class=\"hint\">\r\n K\u1EBFt qu\u1EA3 n\u00E0y \u0111\u01B0\u1EE3c suy ra t\u1EEB Intent Chain, kh\u00F4ng th\u1EC3 ch\u1EC9nh s\u1EEDa.\r\n </p>\r\n\r\n @if ($projection().outputs.length === 0) {\r\n <div class=\"empty-state\">\r\n <p>Ch\u01B0a c\u00F3 output n\u00E0o \u0111\u01B0\u1EE3c sinh ra.</p>\r\n </div>\r\n } @else {\r\n <ul class=\"output-list\">\r\n @for (output of $projection().outputs; track $index) {\r\n <li class=\"output-item\">\r\n <span class=\"output-key\">{{ output.key }}</span>\r\n <span class=\"output-desc\">{{ output.description }}</span>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </section>\r\n\r\n <!-- ========================= -->\r\n <!-- Raw Omega (Optional / Debug) -->\r\n <!-- ========================= -->\r\n <details class=\"omega-raw\">\r\n <summary>Xem Omega (raw)</summary>\r\n <pre>{{ $omega() | json }}</pre>\r\n </details>\r\n\r\n @if ($showIntentComposer()) {\r\n <!--\r\n Intent Composer Popup\r\n Purpose: Enter intent composition mode only.\r\n MUST NOT:\r\n - Mutate Omega\r\n - Mutate projection\r\n - Execute OM logic\r\n -->\r\n <div class=\"modal-container\">\r\n <div class=\"modal-content-root\">\r\n <div class=\"intent-composer-entry\">\r\n <p><strong>So\u1EA1n th\u1EA3o Intent m\u1EDBi</strong></p>\r\n\r\n @if ($selectedIntentDescriptor()) {\r\n\r\n <intent-composer\r\n [$descriptor]=\"$selectedIntentDescriptor()!\"\r\n ($intentComposed)=\"onIntentDrafted($event)\"\r\n ($cancelled)=\"onCancelIntentCompose()\">\r\n </intent-composer>\r\n\r\n } @else {\r\n\r\n <!-- N\u1ED9i dung composer s\u1EBD \u0111\u01B0\u1EE3c c\u1EAFm sau -->\r\n <ul class=\"intent-item-registry\">\r\n @for (intent of INTENT_DESCRIPTOR_REGISTRY; track $index) {\r\n <li class=\"intent-item-point\">\r\n <div class=\"intent-item\"\r\n (click)=\"onSelectIntent(intent)\">\r\n <object>{{ intent.actionCode }} | {{ intent.quickEmoji }}</object>\r\n <strong>{{ intent.label }}</strong>\r\n <p>{{ intent.description }}</p>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n\r\n }\r\n <hr />\r\n <div class=\"popup-actions\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCloseIntentComposer()\">\r\n H\u1EE7y\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>", styles: [".core-dom-decision-editor-container .modal-container{overflow:scroll}.core-dom-decision-editor-container .modal-container .modal-content-root{overflow:visible;max-height:unset}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry{padding-left:0;overflow-y:scroll;height:60vh}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry li.intent-item-point{cursor:pointer;padding:8px}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry li.intent-item-point:hover{color:#fff;background-color:#09f}.core-dom-decision-editor-container .intent-chain .intent-list{list-style:none;padding:0;margin:0}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item{margin-bottom:12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card{border:1px solid #d0d7de;border-radius:4px;background:#fff;padding:10px 12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header .intent-seq{background:#e6f0ff;color:#084298;border-radius:3px;padding:2px 6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-header .intent-label{color:#212529}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body{padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body .intent-summary{color:#495057}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-body .intent-summary.muted{color:#adb5bd;font-style:italic}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer{display:flex;gap:8px;margin-top:8px;padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn{border:none;background:none;cursor:pointer;font-size:13px;padding:2px 6px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-ghost{color:#0d6efd}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-ghost:hover{text-decoration:underline}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-danger-ghost{color:#dc3545}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-footer .btn-danger-ghost:hover{text-decoration:underline}\n"] }]
|
|
28235
28831
|
}] });
|
|
28236
28832
|
|
|
28237
28833
|
class CoreControlComponent extends BaseComponent {
|
|
@@ -28371,7 +28967,7 @@ class CoreControlComponent extends BaseComponent {
|
|
|
28371
28967
|
}
|
|
28372
28968
|
}
|
|
28373
28969
|
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 }); }
|
|
28374
|
-
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 [formArrayName]=\"control.field!\"\r\n [parentFormGroup]=\"form\"\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [disabled]=\"control.disabled!\"\r\n [readonly]=\"control.readonly!\"\r\n [addNewMode$]=\"control.addNewMode$!\"\r\n [checkError$]=\"checkError$\"\r\n >\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [required]=\"required\" [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 [class.required-highlight]=\"!!required\"\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 [required]=\"required\" [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 [required]=\"required\" [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$ || !!control.optionApiDriven) {\r\n <core-dropdown \r\n [required]=\"required\" \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$ | optionApiDriven detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [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 } @else {\r\n <div class=\"dev-declaration\">Please add uploadFileType</div>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case(\"STICKER_COLLECTION\") {\r\n <core-sticker-collection\r\n [formControlName]=\"control.field\"\r\n [required]=\"required\"\r\n [$items]=\"control.stickerCollectionItems!\"\r\n [$shownFrom]=\"control.stickerCollectionShownFrom!\"\r\n [$tooltipFrom]=\"control.stickerCollectionTooltipFrom!\"\r\n [$initialChecked]=\"control.stickerCollectionInitialChecked!\"\r\n >\r\n </core-sticker-collection>\r\n }\r\n @case (\"DOM_DECISION_EDITOR\") {\r\n <core-dom-decision-editor />\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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 [$textareaRows]=\"control.textareaRows!\"\r\n [$showLiquidSourceOnly]=\"control.showLiquidSourceOnly!\"\r\n [$isForWorkflowEmail]=\"control.isForWorkflowEmail!\"\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 {{ ' ' }}\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}.calculated-tooltip-container label.required~input:not([disabled]),.calculated-tooltip-container label.required~textarea:not([disabled]),.calculated-tooltip-container label.required~select:not([disabled]){background-color:#ff0!important}\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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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: "directive", type: i1$4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreFormArrayComponent, selector: "core-form-array", inputs: ["formArrayName", "parentFormGroup", "formArray", "config", "checkError$", "addNewMode$", "readonly", "disabled"] }, { 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", "selfEnrichmentApiDriven", "selfEnrichmentApi", "selfEnrichmentHttpVerb", "selfEnrichmentHttpPayload", "selfEnrichmentShownFrom"], 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: ["appTooltip", "showAnyway", "color", "backgroundColor", "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", "disabled", "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", "$textareaRows", "$height", "$readonly", "$showLiquidSourceOnly", "$isForWorkflowEmail", "getByIdObject$", "placeholder"] }, { kind: "component", type: CoreStickerCollectionComponent, selector: "core-sticker-collection", inputs: ["$items", "$shownFrom", "$translateShownFrom", "$tooltipFrom", "$initialChecked", "$showMore", "$showMoreTooltip", "$hideShowMoreIfNotSelected", "$enableFilter", "$enableQuickCheck"], outputs: ["$checkedChange", "$onShowMore"] }, { kind: "component", type: CoreDomDecisionEditorComponent, selector: "core-dom-decision-editor" }, { kind: "directive", type: HtmlTooltipDirective, selector: "[htmlTooltip]", inputs: ["htmlTooltip", "tooltipContext", "maxWidthUnset", "color", "backgroundColor", "hold$"] }] }); }
|
|
28970
|
+
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 [formArrayName]=\"control.field!\"\r\n [parentFormGroup]=\"form\"\r\n [formArray]=\"formArray\"\r\n [formArrayIdentityField]=\"control.formArrayIdentityField ?? 'id'\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [disabled]=\"control.disabled!\"\r\n [readonly]=\"control.readonly!\"\r\n [addNewMode$]=\"control.addNewMode$!\"\r\n [removeDisabledIf]=\"control.removeDisabledIf!\"\r\n [removeDisabledIfMessage]=\"control.removeDisabledIfMessage!\"\r\n [checkError$]=\"checkError$\"\r\n >\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [required]=\"required\" [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 [class.required-highlight]=\"!!required\"\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 [required]=\"required\" [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 [required]=\"required\" [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$ || !!control.optionApiDriven) {\r\n <core-dropdown \r\n [required]=\"required\" \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$ | optionApiDriven detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [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 } @else {\r\n <div class=\"dev-declaration\">Please add uploadFileType</div>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case(\"STICKER_COLLECTION\") {\r\n <core-sticker-collection\r\n [formControlName]=\"control.field\"\r\n [required]=\"required\"\r\n [$items]=\"control.stickerCollectionItems!\"\r\n [$shownFrom]=\"control.stickerCollectionShownFrom!\"\r\n [$tooltipFrom]=\"control.stickerCollectionTooltipFrom!\"\r\n [$initialChecked]=\"control.stickerCollectionInitialChecked!\"\r\n >\r\n </core-sticker-collection>\r\n }\r\n @case (\"DOM_DECISION_EDITOR\") {\r\n <core-dom-decision-editor />\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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 [$textareaRows]=\"control.textareaRows!\"\r\n [$showLiquidSourceOnly]=\"control.showLiquidSourceOnly!\"\r\n [$isForWorkflowEmail]=\"control.isForWorkflowEmail!\"\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 {{ ' ' }}\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}.calculated-tooltip-container label.required~input:not([disabled]),.calculated-tooltip-container label.required~textarea:not([disabled]),.calculated-tooltip-container label.required~select:not([disabled]){background-color:#ff0!important}\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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { 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: "directive", type: i1$4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: TableCellPipe, name: "tableCell" }, { kind: "component", type: CoreFormArrayComponent, selector: "core-form-array", inputs: ["formArrayName", "parentFormGroup", "formArray", "config", "checkError$", "formArrayIdentityField", "addNewMode$", "readonly", "disabled", "removeDisabledIf", "removeDisabledIfMessage"] }, { 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", "selfEnrichmentApiDriven", "selfEnrichmentApi", "selfEnrichmentHttpVerb", "selfEnrichmentHttpPayload", "selfEnrichmentShownFrom"], 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: ["appTooltip", "showAnyway", "color", "backgroundColor", "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", "disabled", "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", "$textareaRows", "$height", "$readonly", "$showLiquidSourceOnly", "$isForWorkflowEmail", "getByIdObject$", "placeholder"] }, { kind: "component", type: CoreStickerCollectionComponent, selector: "core-sticker-collection", inputs: ["$items", "$shownFrom", "$translateShownFrom", "$tooltipFrom", "$initialChecked", "$showMore", "$showMoreTooltip", "$hideShowMoreIfNotSelected", "$enableFilter", "$enableQuickCheck"], outputs: ["$checkedChange", "$onShowMore"] }, { kind: "component", type: CoreDomDecisionEditorComponent, selector: "core-dom-decision-editor" }, { kind: "directive", type: HtmlTooltipDirective, selector: "[htmlTooltip]", inputs: ["htmlTooltip", "tooltipContext", "maxWidthUnset", "color", "backgroundColor", "hold$"] }] }); }
|
|
28375
28971
|
}
|
|
28376
28972
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreControlComponent, decorators: [{
|
|
28377
28973
|
type: Component,
|
|
@@ -28406,7 +29002,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
28406
29002
|
CoreStickerCollectionComponent,
|
|
28407
29003
|
CoreDomDecisionEditorComponent,
|
|
28408
29004
|
HtmlTooltipDirective
|
|
28409
|
-
], 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 [formArrayName]=\"control.field!\"\r\n [parentFormGroup]=\"form\"\r\n [formArray]=\"formArray\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [disabled]=\"control.disabled!\"\r\n [readonly]=\"control.readonly!\"\r\n [addNewMode$]=\"control.addNewMode$!\"\r\n [checkError$]=\"checkError$\"\r\n >\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [required]=\"required\" [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 [class.required-highlight]=\"!!required\"\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 [required]=\"required\" [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 [required]=\"required\" [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$ || !!control.optionApiDriven) {\r\n <core-dropdown \r\n [required]=\"required\" \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$ | optionApiDriven detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [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 } @else {\r\n <div class=\"dev-declaration\">Please add uploadFileType</div>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case(\"STICKER_COLLECTION\") {\r\n <core-sticker-collection\r\n [formControlName]=\"control.field\"\r\n [required]=\"required\"\r\n [$items]=\"control.stickerCollectionItems!\"\r\n [$shownFrom]=\"control.stickerCollectionShownFrom!\"\r\n [$tooltipFrom]=\"control.stickerCollectionTooltipFrom!\"\r\n [$initialChecked]=\"control.stickerCollectionInitialChecked!\"\r\n >\r\n </core-sticker-collection>\r\n }\r\n @case (\"DOM_DECISION_EDITOR\") {\r\n <core-dom-decision-editor />\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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 [$textareaRows]=\"control.textareaRows!\"\r\n [$showLiquidSourceOnly]=\"control.showLiquidSourceOnly!\"\r\n [$isForWorkflowEmail]=\"control.isForWorkflowEmail!\"\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 {{ ' ' }}\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}.calculated-tooltip-container label.required~input:not([disabled]),.calculated-tooltip-container label.required~textarea:not([disabled]),.calculated-tooltip-container label.required~select:not([disabled]){background-color:#ff0!important}\n"] }]
|
|
29005
|
+
], 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 [formArrayName]=\"control.field!\"\r\n [parentFormGroup]=\"form\"\r\n [formArray]=\"formArray\"\r\n [formArrayIdentityField]=\"control.formArrayIdentityField ?? 'id'\"\r\n [config]=\"control.formArraySections! ?? []\"\r\n [disabled]=\"control.disabled!\"\r\n [readonly]=\"control.readonly!\"\r\n [addNewMode$]=\"control.addNewMode$!\"\r\n [removeDisabledIf]=\"control.removeDisabledIf!\"\r\n [removeDisabledIfMessage]=\"control.removeDisabledIfMessage!\"\r\n [checkError$]=\"checkError$\"\r\n >\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\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.required-highlight]=\"!!required\"\r\n [class.form-control-disabled]=\"!!control.disabled\" />\r\n }\r\n @case (\"CURRENCY\") {\r\n <core-currency-input [required]=\"required\" [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 [class.required-highlight]=\"!!required\"\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 [required]=\"required\" [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 [required]=\"required\" [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$ || !!control.optionApiDriven) {\r\n <core-dropdown \r\n [required]=\"required\" \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$ | optionApiDriven detected\r\n }\r\n }\r\n @case (\"LIST\") {\r\n <core-list [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [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 } @else {\r\n <div class=\"dev-declaration\">Please add uploadFileType</div>\r\n }\r\n }\r\n @case (\"ATTACHMENT\") {\r\n <core-attachment ngDefaultControl [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\"\r\n [accessorMode]=\"coreOrgTreeDefaultAccessorMode\" [height]=\"control.height!\"></core-org-tree>\r\n }\r\n @case (\"RADIOGROUP\") {\r\n <core-radio-group [required]=\"required\" [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 [required]=\"required\" [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 [required]=\"required\" [formControlName]=\"control.field\" [popupHeight]=\"control.popupHeight!\" [getByIdApi]=\"control.getByIdApi!\"></core-topic-picker>\r\n }\r\n @case(\"STICKER_COLLECTION\") {\r\n <core-sticker-collection\r\n [formControlName]=\"control.field\"\r\n [required]=\"required\"\r\n [$items]=\"control.stickerCollectionItems!\"\r\n [$shownFrom]=\"control.stickerCollectionShownFrom!\"\r\n [$tooltipFrom]=\"control.stickerCollectionTooltipFrom!\"\r\n [$initialChecked]=\"control.stickerCollectionInitialChecked!\"\r\n >\r\n </core-sticker-collection>\r\n }\r\n @case (\"DOM_DECISION_EDITOR\") {\r\n <core-dom-decision-editor />\r\n }\r\n @case (\"SEEKER\") {\r\n @switch(control.seekerSourceType) {\r\n @case(\"JOB_SEEK\") {\r\n <core-form-control-seeker\r\n [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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\r\n [selfEnrichmentApiDriven]=\"control.selfEnrichmentApiDriven!\"\r\n [selfEnrichmentApi]=\"control.selfEnrichmentApi!\"\r\n [selfEnrichmentHttpVerb]=\"control.selfEnrichmentHttpVerb!\"\r\n [selfEnrichmentHttpPayload]=\"control.selfEnrichmentHttpPayload!\"\r\n [selfEnrichmentShownFrom]=\"control.selfEnrichmentShownFrom!\"\r\n\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 [required]=\"required\" \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 [$textareaRows]=\"control.textareaRows!\"\r\n [$showLiquidSourceOnly]=\"control.showLiquidSourceOnly!\"\r\n [$isForWorkflowEmail]=\"control.isForWorkflowEmail!\"\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 {{ ' ' }}\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}.calculated-tooltip-container label.required~input:not([disabled]),.calculated-tooltip-container label.required~textarea:not([disabled]),.calculated-tooltip-container label.required~select:not([disabled]){background-color:#ff0!important}\n"] }]
|
|
28410
29006
|
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: AlertService }], propDecorators: { control: [{
|
|
28411
29007
|
type: Input
|
|
28412
29008
|
}], form: [{
|
|
@@ -33300,7 +33896,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
33300
33896
|
const hrmSchemaRoutes = [
|
|
33301
33897
|
{
|
|
33302
33898
|
path: '',
|
|
33303
|
-
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-
|
|
33899
|
+
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-BTzEGNfX.mjs').then(m => m.HrmSchemaComponent)
|
|
33304
33900
|
}
|
|
33305
33901
|
];
|
|
33306
33902
|
|
|
@@ -35473,7 +36069,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
35473
36069
|
const simpleChatRoutes = [
|
|
35474
36070
|
{
|
|
35475
36071
|
path: '',
|
|
35476
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
36072
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-CWWWy9FV.mjs').then(m => m.SimpleChatComponent)
|
|
35477
36073
|
}
|
|
35478
36074
|
];
|
|
35479
36075
|
|
|
@@ -36139,7 +36735,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36139
36735
|
const coreSysActionRoutes = [
|
|
36140
36736
|
{
|
|
36141
36737
|
path: "",
|
|
36142
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-
|
|
36738
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-YqAEn6iz.mjs').then(m => m.CoreSysActionComponent),
|
|
36143
36739
|
children: [
|
|
36144
36740
|
{
|
|
36145
36741
|
path: ":id",
|
|
@@ -37532,11 +38128,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
37532
38128
|
const sysSmtpClientRoutes = [
|
|
37533
38129
|
{
|
|
37534
38130
|
path: '',
|
|
37535
|
-
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client.component-
|
|
38131
|
+
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client.component-CtRfWRoX.mjs').then(m => m.SysSmtpClientComponent),
|
|
37536
38132
|
children: [
|
|
37537
38133
|
{
|
|
37538
38134
|
path: ':id',
|
|
37539
|
-
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client-edit.component-
|
|
38135
|
+
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client-edit.component-Cn1CYwCF.mjs').then(m => m.SysSmtpClientEditComponent),
|
|
37540
38136
|
outlet: 'corePageListAux'
|
|
37541
38137
|
}
|
|
37542
38138
|
]
|
|
@@ -38722,11 +39318,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38722
39318
|
const coreDocGenRoutes = [
|
|
38723
39319
|
{
|
|
38724
39320
|
path: 'template-list',
|
|
38725
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
39321
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-TYq8bPtG.mjs').then(m => m.TemplateListComponent),
|
|
38726
39322
|
},
|
|
38727
39323
|
{
|
|
38728
39324
|
path: ":id",
|
|
38729
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
39325
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-CvJChUao.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
38730
39326
|
canDeactivate: [CanDeactivateGuard]
|
|
38731
39327
|
},
|
|
38732
39328
|
{
|
|
@@ -38755,7 +39351,7 @@ const coreFormDesignRoutes = [
|
|
|
38755
39351
|
},
|
|
38756
39352
|
{
|
|
38757
39353
|
path: ':id',
|
|
38758
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
39354
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-D6TrPmpG.mjs').then(m => m.CoreFormDesignComponent)
|
|
38759
39355
|
}
|
|
38760
39356
|
];
|
|
38761
39357
|
|
|
@@ -39666,7 +40262,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
39666
40262
|
const coreNavigationTrackerRoutes = [
|
|
39667
40263
|
{
|
|
39668
40264
|
path: '',
|
|
39669
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
40265
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-BEMXswAW.mjs').then(m => m.TrackerStudioComponent)
|
|
39670
40266
|
}
|
|
39671
40267
|
];
|
|
39672
40268
|
|
|
@@ -42769,33 +43365,33 @@ const coreWorkflowRoutes = [
|
|
|
42769
43365
|
{
|
|
42770
43366
|
path: 'form-assign/:id',
|
|
42771
43367
|
outlet: "formAssignAux",
|
|
42772
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
43368
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-Bck-IKZX.mjs').then(m => m.WfFormAssignComponent),
|
|
42773
43369
|
canDeactivate: [CanDeactivateGuard]
|
|
42774
43370
|
}
|
|
42775
43371
|
]
|
|
42776
43372
|
},
|
|
42777
43373
|
{
|
|
42778
43374
|
path: 'global-config',
|
|
42779
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-
|
|
43375
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-DhTw3REl.mjs').then(m => m.WfGlobalConfigComponent)
|
|
42780
43376
|
},
|
|
42781
43377
|
{
|
|
42782
43378
|
path: 'db-settings',
|
|
42783
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
43379
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-D0JhoiHQ.mjs').then(m => m.DbSettingsComponent)
|
|
42784
43380
|
},
|
|
42785
43381
|
{
|
|
42786
43382
|
path: 'workflow-consume',
|
|
42787
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
43383
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-K-_atwQM.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
42788
43384
|
children: [
|
|
42789
43385
|
{
|
|
42790
43386
|
path: ':id',
|
|
42791
43387
|
outlet: "workflowConsume",
|
|
42792
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
43388
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CYB3NnkR.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
42793
43389
|
}
|
|
42794
43390
|
]
|
|
42795
43391
|
},
|
|
42796
43392
|
{
|
|
42797
43393
|
path: 'workflow-consume/:id',
|
|
42798
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
43394
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-CYB3NnkR.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
42799
43395
|
},
|
|
42800
43396
|
{
|
|
42801
43397
|
path: 'workflow-group-edit/:id',
|
|
@@ -42805,21 +43401,21 @@ const coreWorkflowRoutes = [
|
|
|
42805
43401
|
},
|
|
42806
43402
|
{
|
|
42807
43403
|
path: 'design/:id',
|
|
42808
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
43404
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-DVdapOzd.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
42809
43405
|
},
|
|
42810
43406
|
]
|
|
42811
43407
|
},
|
|
42812
43408
|
{
|
|
42813
43409
|
path: 'react/:id',
|
|
42814
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
43410
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-DE5sJiVw.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
42815
43411
|
},
|
|
42816
43412
|
{
|
|
42817
43413
|
path: 'status/:id',
|
|
42818
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
43414
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-D-KD7Veu.mjs').then(m => m.WfInstanceStatusComponent)
|
|
42819
43415
|
},
|
|
42820
43416
|
{
|
|
42821
43417
|
path: 'lab',
|
|
42822
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-
|
|
43418
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-DoFDdaIu.mjs').then(m => m.WfLabComponent)
|
|
42823
43419
|
}
|
|
42824
43420
|
];
|
|
42825
43421
|
|
|
@@ -45427,5 +46023,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
45427
46023
|
* Generated bundle index. Do not edit.
|
|
45428
46024
|
*/
|
|
45429
46025
|
|
|
45430
|
-
export { noneAutoClosedAlertOptions as $, AppService as A, BaseComponent as B, ChatService as C, DragReorderDirective as D, EnumFormBaseContolType as E, FullscreenModalLoaderComponent as F, DomService as G, EnumActorSourceType as H, ImageErrorResolverDirective as I, CoreParamControlComponent as J, CoreRadioGroupComponent as K, GptService as L, MultiLanguageService as M, CoreRuleTreeService as N, CoreRuleTreeComponent as O, CoreStickerCollectionComponent as P, ApplicationHelpService as Q, HotKeysDirective as R, StringHtmlPipe as S, TooltipDirective as T, CoreDatetimeService as U, EnumCorePageEditMode as V, CoreFormComponent as W, NavigatorService as X, JsonService as Y, EnumCoreButtonVNSCode as Z, READONLY_WORKFLOW_FIELDS as _, AppConfigService as a, CheckForUpdateService as a$, CoreButtonGroupVnsComponent as a0, CoreDropdownComponent as a1, EnumFilterOperator as a2, CoreDomDecisionEditorComponent as a3, HtmlTooltipDirective as a4, CoreControlNoFormArrayComponent as a5, EnumFormDesignMode as a6, CoreControlComponent as a7, JsonSafePipe as a8, CoreChecklistComponent as a9, EnumDragType as aA, EnumErrorType as aB, EnumIconClass as aC, EnumProfileInfoSector as aD, EnumSignalRType as aE, EnumSortDirection as aF, EnumStyleButtonClass as aG, CanActivateFunctionUrlMapperGuard as aH, InitializationCanActivateFn as aI, InitializationCanMatchFn as aJ, httpInterceptorProviders as aK, InterceptorSkipHeader as aL, appTypeInterceptor as aM, baseUrlInterceptor as aN, authInterceptor as aO, graphInterceptor as aP, tokenInterceptor as aQ, responseInterceptor as aR, timeZoneInterceptor as aS, cachingInterceptor as aT, langInterceptor as aU, OnlineUsersComponent as aV, ActionService as aW, AppInitializationService as aX, AuthService as aY, CacheService as aZ, EnumSwUpdateVersionUpdatesEventType as a_, CoreFormControlSeekerComponent as aa, CoreAttachmentComponent as ab, CoreDatePickerComponent as ac, CoreMonthSelectorComponent as ad, CoreCurrencyInputComponent as ae, EnumImageResolverType as af, NormalizeHumanNamePipe as ag, CoreIosSwitcherComponent as ah, SunnyRotatingComponent as ai, MapAppdemoToServerPipePipe as aj, MapAttachmentToServerPipe as ak, MapNewsfeedMediaToServerPipe as al, UploadedFilenameCutoffPipe as am, DialogStateComponent as an, FooterComponent as ao, RightchatComponent as ap, WaittingScreenComponent as aq, longAlertOptions as ar, attachmentOptions as as, CORE_VNS_BUTTONS as at, defaultPaging as au, DESKTOP_SCREEN_HEDER_HEIGHT as av, MOBILE_SCREEN_HEDER_HEIGHT as aw, themeBlue as ax, DATE_VALUE_ACCESSOR as ay, DateValueAccessor as az, AlertService as b, InMemoryComponent as b$, EnumDeviceType as b0, EnumBrowserType as b1, EnumOsType as b2, ClientService as b3, CommonHttpRequestService as b4, TLA_CONFIG as b5, ConfigService as b6, CoreLocalStorageService as b7, CoreTableService as b8, DndService as b9, EnumSsrsExpressExportFormat as bA, SsrsExpressService as bB, StatisticService as bC, StatisticAuthService as bD, SysMenuService as bE, TimeSheetService as bF, TopicPermissionService as bG, TopicTreeService as bH, UploadedFileService as bI, UrlService as bJ, UserActivityService as bK, EvaluateDialogService as bL, EnumWorkScheduleViewMode as bM, WorkShiftDndService as bN, AtShiftPatternComponent as bO, AtShiftPatternApplyComponent as bP, AtShiftPatternEditComponent as bQ, AtWorksignComponent as bR, AtWorksignService as bS, FunctionComponent as bT, IndividualScheduleApplyComponent as bU, FunctionEditComponent as bV, FunctionIgnoreComponent as bW, FunctionIgnoreEditComponent as bX, GroupFunctionComponent as bY, GroupFunctionEditComponent as bZ, hrmSchemaRoutes as b_, DocxMergeService as ba, FilterKitService as bb, GrpcService as bc, HeaderService as bd, HistoryService as be, HttpErrorHandler as bf, HubConnectionService as bg, IpServiceService as bh, LayoutService as bi, LiquidJsService as bj, MapService as bk, MenuService as bl, MessageService as bm, ModalService as bn, OrganizationService as bo, PkceService as bp, PositionTransferService as bq, EnumNotificationDir as br, NotificationActionType as bs, PushNotificationService as bt, RandomAvatarService as bu, RequestCache as bv, RequestCacheWithMap as bw, ResponseService as bx, RoutingService as by, EnumSsrsExpressFileExtension as bz, CoreTerminalSpinnerComponent as c, CoreTableComponent as c$, LanguageComponent as c0, LanguageEditComponent as c1, MenuComponent as c2, MenuEditComponent as c3, MutationLogComponent as c4, MutationViewComponent as c5, PaSalaryPolicyComponent as c6, PaSalaryPolicyEditComponent as c7, PortalRouteComponent as c8, ScheduleOverviewComponent as c9, ButtonGroupModule as cA, ButtonGroupService as cB, ButtonGroupComponent as cC, EnumButtonCaptionCode as cD, CoreButtonComponent as cE, CoreAccordionComponent as cF, CoreAccordionService as cG, CoreActiveUserCountComponent as cH, NewlyCreatedTokenService as cI, CoreApiProgressComponent as cJ, CoreButtonGroupComponent as cK, EnumCoreButtonCode as cL, ActionSvgEditComponent as cM, CoreButtonGroupService as cN, CoreButtonVnsComponent as cO, CoreCommonParamKitComponent as cP, CoreCompareDbPipelineComponent as cQ, CoreCompositionState as cR, CoreCompositionService as cS, CoreCompositionComponent as cT, CoreConfirmDialogComponent as cU, ConfirmDialogStateComponent as cV, CoreLazyMountComponent as cW, CoreRootMenuItemPickerComponent as cX, CoreRootMenuItemPickerService as cY, ECoreTableToolCode as cZ, ECoreTableToolClass as c_, simpleChatRoutes as ca, PortalRouteEditComponent as cb, SysOtherListComponent as cc, SysOtherListEditComponent as cd, SysOtherListTypeComponent as ce, SysOtherListTypeEditComponent as cf, coreSysActionRoutes as cg, SysActionComponent as ch, SysActionEditComponent as ci, SysFunctionActionComponent as cj, SysFunctionActionEditComponent as ck, SysFunctionActionMapperComponent as cl, SysFunctionUrlMapperComponent as cm, FunctionEditService as cn, SysModuleComponent as co, SysModuleEditComponent as cp, SysRouteAccessComponent as cq, sysSmtpClientRoutes as cr, liner_to_nested_array_script as cs, blob_to_base64_script as ct, AlertComponent as cu, EnumAlertType as cv, IAlertOptions as cw, AnimatedTextService as cx, AnimatedTextComponent as cy, BaseDropdownComponent as cz, CorePageHeaderComponent as d, CorePageListContentComponent as d$, CoreContractSeekerComponent as d0, CoreControlNoGridBufferComponent as d1, CoreControlNoSeekerComponent as d2, coreDocGenRoutes as d3, CoreDocgenToolbarComponent as d4, CoreEmployeeScheduleComponent as d5, CoreEmployeeSeekerComponent as d6, EnumCoreFileUploaderType as d7, CoreFileUploaderComponent as d8, CoreFilterHubComponent as d9, CoreListLazyComponent as dA, CoreLoadingSurfaceComponent as dB, CoreMccComponent as dC, CoreMonthPickerComponent as dD, CoreNavigationTrackerComponent as dE, coreNavigationTrackerRoutes as dF, CoreOauthCallbackComponent as dG, CoreOauthCallbackOffice365Component as dH, EnumCoreOrgTreeaAccessorMode as dI, EnumCoreOrgTreeaSearchMode as dJ, CoreOrgTreeComponent as dK, CoreOrgTreeState as dL, CoreOrgTreeService as dM, CoreOrgUnitSeekerComponent as dN, CoreOrgchartflexComponent as dO, CARD_COLORS as dP, CoreOrgchartflexWrapperComponent as dQ, coreOrgchartflexRoutes as dR, CoreOrgParamComponent as dS, EnumCorePageEditBootstrapClass as dT, EnumCorePageEditFieldType as dU, CorePageEditService as dV, CorePageEditLiteComponent as dW, CorePageEditTabComponent as dX, EnumExType as dY, CorePageListService as dZ, CorePageListState as d_, CoreFilterHubService as da, ControlBase as db, Textbox as dc, CoreControlService as dd, CustomValidators as de, URL_PATTERN as df, coreFormDesignRoutes as dg, CoreFormTabComponent as dh, CoreFormLiteComponent as di, CoreFormControlBaseComponent as dj, EnumCoreSeekerColumnJob as dk, EnumCoreSeekerColumnStaffProfile as dl, EnumCoreSeekerColumnContract as dm, EnumCoreSeekerColumnWorking as dn, EnumCoreSeekerColumnWage as dp, EnumCoreSeekerColumnPosition as dq, EnumCoreSeekerColumnPositionConcurrent as dr, EnumCoreSeekerColumnAutoForm as ds, SeekerService as dt, CoreGridBufferComponent as du, CoreHeaderParamsComponent as dv, CoreHelperComponent as dw, CoreLineComponent as dx, CoreLiquidWysiwygComponent as dy, CoreListComponent as dz, TranslatePipe as e, FilterPipe as e$, EnumCoreViewItemType as e0, CorePageViewComponent as e1, CorePaginationComponent as e2, CorePaginationFullComponent as e3, CorePaginationFullService as e4, CoreFileFormatPickerComponent as e5, CorePermissionService as e6, EnumPermissionObjectType as e7, CorePermissionComponent as e8, CorePermissionActionsComponent as e9, CoreTreeGridComponent as eA, CoreWageSeekerComponent as eB, CoreWorkingSeekerComponent as eC, coreWorkflowRoutes as eD, CoreWorkflowBuilderComponent as eE, CoreWorkflowGroupEditComponent as eF, CoreYearPickerComponent as eG, CoreYearSelectorComponent as eH, EnumCoreD3ScaleType as eI, CoreD3Service as eJ, CorePieComponent as eK, CoreScatterPlotComponent as eL, EnumHrComparisonCode as eM, EnumICoreStatisticWidgetDataType as eN, CoreStatisticWidgetComponent as eO, DecisionComponent as eP, EvaluateDialogComponent as eQ, HuconcurrentlyComponent as eR, JobComponent as eS, LanguageChangerComponent as eT, DEFAULT_SVG as eU, ItemComponent as eV, NavigatorComponent as eW, OtpInputComponent as eX, OtpInputService as eY, PageTitleComponent as eZ, PaginationComponent as e_, CorePositionConcurrentSeekerComponent as ea, CorePositionSeekerComponent as eb, CoreQrcodeComponent as ec, EnumOparator as ed, CoreQueryBuilderComponent as ee, CoreReducerIconComponent as ef, CoreRotatingTextComponent as eg, CoreRouteAccumulatorComponent as eh, CoreRoutingHistoryComponent as ei, CoreSalaryPolicyPickerComponent as ej, CoreScrollComponent as ek, CoreScrollLazyComponent as el, CoreSeenByComponent as em, CoreShiftCardComponent as en, CoreShiftCellComponent as eo, CoreShiftCollectionComponent as ep, CoreShiftStickerComponent as eq, STICKER_COLOR_SCHEMA as er, CoreSubFormGroupComponent as es, CoreTabListComponent as et, CoreTagsComponent as eu, CoreTopicPickerComponent as ev, EnumCoreArticleCategoryTreeaAccessorMode as ew, CoreTopicTreeComponent as ex, CoreTreeComponent as ey, EnumCoreTreeGridEditMode as ez, CorePageListComponent as f, normalizeHumanName as f0, PositionComponent as f1, PositionEditService as f2, FileService as f3, LongTaskService as f4, EnumRecursiveFields as f5, RecursiveService as f6, StringService as f7, UnicodeService as f8, StaffProfileComponent as f9, ThreedotsComponent as fa, TooltipComponent as fb, UserActivityComponent as fc, WageComponent as fd, tooltip_directive as fe, coreStickerCollection_component as ff, dragReorder_directive as fg, CoreStatusStickerComponent as g, BaseEditComponent as h, DialogService as i, CorePageEditComponent as j, EnumCoreTablePipeType as k, CoreCheckboxComponent as l, CoreTabsComponent as m, CoreWorkflowService as n, EnumCoreFormControlSeekerSourceType as o, CoreFormService as p, DbService as q, AiHintForColumnComponent as r, CoreWorkflowListComponent as s, CanDeactivateGuard as t, TableCellPipe as u, MapAvatarToServerPipe as v, alertOptions as w, SocketService as x, CoreFormDesignService as y, EnumWorkflowStepType as z };
|
|
45431
|
-
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-
|
|
46026
|
+
export { noneAutoClosedAlertOptions as $, AppService as A, BaseComponent as B, ChatService as C, DragReorderDirective as D, EnumFormBaseContolType as E, FullscreenModalLoaderComponent as F, DomService as G, EnumActorSourceType as H, ImageErrorResolverDirective as I, CoreParamControlComponent as J, CoreRadioGroupComponent as K, GptService as L, MultiLanguageService as M, CoreRuleTreeService as N, CoreRuleTreeComponent as O, CoreStickerCollectionComponent as P, ApplicationHelpService as Q, HotKeysDirective as R, StringHtmlPipe as S, TooltipDirective as T, CoreDatetimeService as U, EnumCorePageEditMode as V, CoreFormComponent as W, NavigatorService as X, JsonService as Y, EnumCoreButtonVNSCode as Z, READONLY_WORKFLOW_FIELDS as _, AppConfigService as a, CheckForUpdateService as a$, CoreButtonGroupVnsComponent as a0, CoreDropdownComponent as a1, EnumFilterOperator as a2, CoreDomDecisionEditorComponent as a3, HtmlTooltipDirective as a4, CoreControlNoFormArrayComponent as a5, EnumFormDesignMode as a6, CoreControlComponent as a7, JsonSafePipe as a8, CoreChecklistComponent as a9, EnumDragType as aA, EnumErrorType as aB, EnumIconClass as aC, EnumProfileInfoSector as aD, EnumSignalRType as aE, EnumSortDirection as aF, EnumStyleButtonClass as aG, CanActivateFunctionUrlMapperGuard as aH, InitializationCanActivateFn as aI, InitializationCanMatchFn as aJ, httpInterceptorProviders as aK, InterceptorSkipHeader as aL, appTypeInterceptor as aM, baseUrlInterceptor as aN, authInterceptor as aO, graphInterceptor as aP, tokenInterceptor as aQ, responseInterceptor as aR, timeZoneInterceptor as aS, cachingInterceptor as aT, langInterceptor as aU, OnlineUsersComponent as aV, ActionService as aW, AppInitializationService as aX, AuthService as aY, CacheService as aZ, EnumSwUpdateVersionUpdatesEventType as a_, CoreFormControlSeekerComponent as aa, CoreAttachmentComponent as ab, CoreDatePickerComponent as ac, CoreMonthSelectorComponent as ad, CoreCurrencyInputComponent as ae, EnumImageResolverType as af, NormalizeHumanNamePipe as ag, CoreIosSwitcherComponent as ah, SunnyRotatingComponent as ai, MapAppdemoToServerPipePipe as aj, MapAttachmentToServerPipe as ak, MapNewsfeedMediaToServerPipe as al, UploadedFilenameCutoffPipe as am, DialogStateComponent as an, FooterComponent as ao, RightchatComponent as ap, WaittingScreenComponent as aq, longAlertOptions as ar, attachmentOptions as as, CORE_VNS_BUTTONS as at, defaultPaging as au, DESKTOP_SCREEN_HEDER_HEIGHT as av, MOBILE_SCREEN_HEDER_HEIGHT as aw, themeBlue as ax, DATE_VALUE_ACCESSOR as ay, DateValueAccessor as az, AlertService as b, InMemoryComponent as b$, EnumDeviceType as b0, EnumBrowserType as b1, EnumOsType as b2, ClientService as b3, CommonHttpRequestService as b4, TLA_CONFIG as b5, ConfigService as b6, CoreLocalStorageService as b7, CoreTableService as b8, DndService as b9, EnumSsrsExpressExportFormat as bA, SsrsExpressService as bB, StatisticService as bC, StatisticAuthService as bD, SysMenuService as bE, TimeSheetService as bF, TopicPermissionService as bG, TopicTreeService as bH, UploadedFileService as bI, UrlService as bJ, UserActivityService as bK, EvaluateDialogService as bL, EnumWorkScheduleViewMode as bM, WorkShiftDndService as bN, AtShiftPatternComponent as bO, AtShiftPatternApplyComponent as bP, AtShiftPatternEditComponent as bQ, AtWorksignComponent as bR, AtWorksignService as bS, FunctionComponent as bT, IndividualScheduleApplyComponent as bU, FunctionEditComponent as bV, FunctionIgnoreComponent as bW, FunctionIgnoreEditComponent as bX, GroupFunctionComponent as bY, GroupFunctionEditComponent as bZ, hrmSchemaRoutes as b_, DocxMergeService as ba, FilterKitService as bb, GrpcService as bc, HeaderService as bd, HistoryService as be, HttpErrorHandler as bf, HubConnectionService as bg, IpServiceService as bh, LayoutService as bi, LiquidJsService as bj, MapService as bk, MenuService as bl, MessageService as bm, ModalService as bn, OrganizationService as bo, PkceService as bp, PositionTransferService as bq, EnumNotificationDir as br, NotificationActionType as bs, PushNotificationService as bt, RandomAvatarService as bu, RequestCache as bv, RequestCacheWithMap as bw, ResponseService as bx, RoutingService as by, EnumSsrsExpressFileExtension as bz, CoreTerminalSpinnerComponent as c, CoreTableComponent as c$, LanguageComponent as c0, LanguageEditComponent as c1, MenuComponent as c2, MenuEditComponent as c3, MutationLogComponent as c4, MutationViewComponent as c5, PaSalaryPolicyComponent as c6, PaSalaryPolicyEditComponent as c7, PortalRouteComponent as c8, ScheduleOverviewComponent as c9, ButtonGroupModule as cA, ButtonGroupService as cB, ButtonGroupComponent as cC, EnumButtonCaptionCode as cD, CoreButtonComponent as cE, CoreAccordionComponent as cF, CoreAccordionService as cG, CoreActiveUserCountComponent as cH, NewlyCreatedTokenService as cI, CoreApiProgressComponent as cJ, CoreButtonGroupComponent as cK, EnumCoreButtonCode as cL, ActionSvgEditComponent as cM, CoreButtonGroupService as cN, CoreButtonVnsComponent as cO, CoreCommonParamKitComponent as cP, CoreCompareDbPipelineComponent as cQ, CoreCompositionState as cR, CoreCompositionService as cS, CoreCompositionComponent as cT, CoreConfirmDialogComponent as cU, ConfirmDialogStateComponent as cV, CoreLazyMountComponent as cW, CoreRootMenuItemPickerComponent as cX, CoreRootMenuItemPickerService as cY, ECoreTableToolCode as cZ, ECoreTableToolClass as c_, simpleChatRoutes as ca, PortalRouteEditComponent as cb, SysOtherListComponent as cc, SysOtherListEditComponent as cd, SysOtherListTypeComponent as ce, SysOtherListTypeEditComponent as cf, coreSysActionRoutes as cg, SysActionComponent as ch, SysActionEditComponent as ci, SysFunctionActionComponent as cj, SysFunctionActionEditComponent as ck, SysFunctionActionMapperComponent as cl, SysFunctionUrlMapperComponent as cm, FunctionEditService as cn, SysModuleComponent as co, SysModuleEditComponent as cp, SysRouteAccessComponent as cq, sysSmtpClientRoutes as cr, liner_to_nested_array_script as cs, blob_to_base64_script as ct, AlertComponent as cu, EnumAlertType as cv, IAlertOptions as cw, AnimatedTextService as cx, AnimatedTextComponent as cy, BaseDropdownComponent as cz, CorePageHeaderComponent as d, CorePageListContentComponent as d$, CoreContractSeekerComponent as d0, CoreControlNoGridBufferComponent as d1, CoreControlNoSeekerComponent as d2, coreDocGenRoutes as d3, CoreDocgenToolbarComponent as d4, CoreEmployeeScheduleComponent as d5, CoreEmployeeSeekerComponent as d6, EnumCoreFileUploaderType as d7, CoreFileUploaderComponent as d8, CoreFilterHubComponent as d9, CoreListLazyComponent as dA, CoreLoadingSurfaceComponent as dB, CoreMccComponent as dC, CoreMonthPickerComponent as dD, CoreNavigationTrackerComponent as dE, coreNavigationTrackerRoutes as dF, CoreOauthCallbackComponent as dG, CoreOauthCallbackOffice365Component as dH, EnumCoreOrgTreeaAccessorMode as dI, EnumCoreOrgTreeaSearchMode as dJ, CoreOrgTreeComponent as dK, CoreOrgTreeState as dL, CoreOrgTreeService as dM, CoreOrgUnitSeekerComponent as dN, CoreOrgchartflexComponent as dO, CARD_COLORS as dP, CoreOrgchartflexWrapperComponent as dQ, coreOrgchartflexRoutes as dR, CoreOrgParamComponent as dS, EnumCorePageEditBootstrapClass as dT, EnumCorePageEditFieldType as dU, CorePageEditService as dV, CorePageEditLiteComponent as dW, CorePageEditTabComponent as dX, EnumExType as dY, CorePageListService as dZ, CorePageListState as d_, CoreFilterHubService as da, ControlBase as db, Textbox as dc, CoreControlService as dd, CustomValidators as de, URL_PATTERN as df, coreFormDesignRoutes as dg, CoreFormTabComponent as dh, CoreFormLiteComponent as di, CoreFormControlBaseComponent as dj, EnumCoreSeekerColumnJob as dk, EnumCoreSeekerColumnStaffProfile as dl, EnumCoreSeekerColumnContract as dm, EnumCoreSeekerColumnWorking as dn, EnumCoreSeekerColumnWage as dp, EnumCoreSeekerColumnPosition as dq, EnumCoreSeekerColumnPositionConcurrent as dr, EnumCoreSeekerColumnAutoForm as ds, SeekerService as dt, CoreGridBufferComponent as du, CoreHeaderParamsComponent as dv, CoreHelperComponent as dw, CoreLineComponent as dx, CoreLiquidWysiwygComponent as dy, CoreListComponent as dz, TranslatePipe as e, PageTitleComponent as e$, EnumCoreViewItemType as e0, CorePageViewComponent as e1, CorePaginationComponent as e2, CorePaginationFullComponent as e3, CorePaginationFullService as e4, CoreFileFormatPickerComponent as e5, CorePermissionService as e6, EnumPermissionObjectType as e7, CorePermissionComponent as e8, CorePermissionActionsComponent as e9, EnumCoreTreeGridEditMode as eA, CoreTreeGridComponent as eB, CoreTreeReferenceComponent as eC, CoreWageSeekerComponent as eD, CoreWorkingSeekerComponent as eE, coreWorkflowRoutes as eF, CoreWorkflowBuilderComponent as eG, CoreWorkflowGroupEditComponent as eH, CoreYearPickerComponent as eI, CoreYearSelectorComponent as eJ, EnumCoreD3ScaleType as eK, CoreD3Service as eL, CorePieComponent as eM, CoreScatterPlotComponent as eN, EnumHrComparisonCode as eO, EnumICoreStatisticWidgetDataType as eP, CoreStatisticWidgetComponent as eQ, DecisionComponent as eR, EvaluateDialogComponent as eS, HuconcurrentlyComponent as eT, JobComponent as eU, LanguageChangerComponent as eV, DEFAULT_SVG as eW, ItemComponent as eX, NavigatorComponent as eY, OtpInputComponent as eZ, OtpInputService as e_, CorePositionConcurrentSeekerComponent as ea, CorePositionSeekerComponent as eb, CoreQrcodeComponent as ec, EnumOparator as ed, CoreQueryBuilderComponent as ee, CoreReducerIconComponent as ef, CoreRotatingTextComponent as eg, CoreRouteAccumulatorComponent as eh, CoreRoutingHistoryComponent as ei, CoreSalaryPolicyPickerComponent as ej, CoreScrollComponent as ek, CoreScrollLazyComponent as el, CoreSeenByComponent as em, CoreShiftCardComponent as en, CoreShiftCellComponent as eo, CoreShiftCollectionComponent as ep, CoreShiftStickerComponent as eq, STICKER_COLOR_SCHEMA as er, CoreSubFormGroupComponent as es, CoreTabListComponent as et, CoreTagsComponent as eu, CoreTopicPickerComponent as ev, EnumCoreArticleCategoryTreeaAccessorMode as ew, CoreTopicTreeComponent as ex, CoreTimezoneComponent as ey, CoreTreeComponent as ez, CorePageListComponent as f, PaginationComponent as f0, FilterPipe as f1, normalizeHumanName as f2, PositionComponent as f3, PositionEditService as f4, FileService as f5, LongTaskService as f6, EnumRecursiveFields as f7, RecursiveService as f8, StringService as f9, UnicodeService as fa, StaffProfileComponent as fb, ThreedotsComponent as fc, TooltipComponent as fd, UserActivityComponent as fe, WageComponent as ff, tooltip_directive as fg, coreStickerCollection_component as fh, dragReorder_directive as fi, CoreStatusStickerComponent as g, BaseEditComponent as h, DialogService as i, CorePageEditComponent as j, EnumCoreTablePipeType as k, CoreCheckboxComponent as l, CoreTabsComponent as m, CoreWorkflowService as n, EnumCoreFormControlSeekerSourceType as o, CoreFormService as p, DbService as q, AiHintForColumnComponent as r, CoreWorkflowListComponent as s, CanDeactivateGuard as t, TableCellPipe as u, MapAvatarToServerPipe as v, alertOptions as w, SocketService as x, CoreFormDesignService as y, EnumWorkflowStepType as z };
|
|
46027
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-BsbSArBq.mjs.map
|