ngx-histaff-alpha 6.7.7 → 6.7.8
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-C4GlK33M.mjs → ngx-histaff-alpha-ai-hint-for-table.component-DHsa8xdU.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-C4GlK33M.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-DHsa8xdU.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BrjykzbK.mjs → ngx-histaff-alpha-core-form-design.component-DUaLLOby.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BrjykzbK.mjs.map → ngx-histaff-alpha-core-form-design.component-DUaLLOby.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-C-NgdGye.mjs → ngx-histaff-alpha-core-sys-action.component-BSbDclen.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-C-NgdGye.mjs.map → ngx-histaff-alpha-core-sys-action.component-BSbDclen.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-CWYV1jld.mjs → ngx-histaff-alpha-core-template-editor.component-C4-e6HAY.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-CWYV1jld.mjs.map → ngx-histaff-alpha-core-template-editor.component-C4-e6HAY.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-id2TElQn.mjs → ngx-histaff-alpha-core-toast-loading.component-ChM_IIXE.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-id2TElQn.mjs.map → ngx-histaff-alpha-core-toast-loading.component-ChM_IIXE.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-4CQ-jm0m.mjs → ngx-histaff-alpha-core-workflow-consume.component-WIWBCvGn.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-4CQ-jm0m.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-WIWBCvGn.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BQ9xl200.mjs → ngx-histaff-alpha-db-settings.component-1hiYGimD.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BQ9xl200.mjs.map → ngx-histaff-alpha-db-settings.component-1hiYGimD.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-D88xosQd.mjs → ngx-histaff-alpha-design-wrapper.component-CRXwK5mO.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-D88xosQd.mjs.map → ngx-histaff-alpha-design-wrapper.component-CRXwK5mO.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-BeK6tiwQ.mjs → ngx-histaff-alpha-design-wrapper.route-Dw1u5JR1.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-BeK6tiwQ.mjs.map → ngx-histaff-alpha-design-wrapper.route-Dw1u5JR1.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-Coz5KH1Z.mjs → ngx-histaff-alpha-hrm-schema.component-FNOzbUo_.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-Coz5KH1Z.mjs.map → ngx-histaff-alpha-hrm-schema.component-FNOzbUo_.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-DTSF49aS.mjs → ngx-histaff-alpha-live-form.component-Cl5qbsPy.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-live-form.component-DTSF49aS.mjs.map → ngx-histaff-alpha-live-form.component-Cl5qbsPy.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-Bfddt3DJ.mjs → ngx-histaff-alpha-ngx-histaff-alpha-CMf5E5yd.mjs} +268 -58
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-CMf5E5yd.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-CmdmeZkn.mjs → ngx-histaff-alpha-simple-chat.component-DNXB3MkY.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-CmdmeZkn.mjs.map → ngx-histaff-alpha-simple-chat.component-DNXB3MkY.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-yahvTLh8.mjs → ngx-histaff-alpha-sys-smtp-client-edit.component-Bdk9FxRM.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-yahvTLh8.mjs.map → ngx-histaff-alpha-sys-smtp-client-edit.component-Bdk9FxRM.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-DJQOWrW_.mjs → ngx-histaff-alpha-sys-smtp-client.component-Cgk2GPJs.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-DJQOWrW_.mjs.map → ngx-histaff-alpha-sys-smtp-client.component-Cgk2GPJs.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CW1wvq-D.mjs → ngx-histaff-alpha-template-list.component-BWd3Z9Ci.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CW1wvq-D.mjs.map → ngx-histaff-alpha-template-list.component-BWd3Z9Ci.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-CuDeN7V9.mjs → ngx-histaff-alpha-tracker-studio.component-Bm8WljGL.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-CuDeN7V9.mjs.map → ngx-histaff-alpha-tracker-studio.component-Bm8WljGL.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BwbYVigV.mjs → ngx-histaff-alpha-wf-form-assign.component-CQhIM39W.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BwbYVigV.mjs.map → ngx-histaff-alpha-wf-form-assign.component-CQhIM39W.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BYxq7KK5.mjs → ngx-histaff-alpha-wf-global-config.component-DpMVfjpK.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BYxq7KK5.mjs.map → ngx-histaff-alpha-wf-global-config.component-DpMVfjpK.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-CRxpzsUc.mjs → ngx-histaff-alpha-wf-instance-status.component-Dpd_4Hmw.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-CRxpzsUc.mjs.map → ngx-histaff-alpha-wf-instance-status.component-Dpd_4Hmw.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-GtdbtqYU.mjs → ngx-histaff-alpha-wf-instance-step-react.component-DrhSJX5e.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-GtdbtqYU.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-DrhSJX5e.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-BLleTFyw.mjs → ngx-histaff-alpha-wf-lab.component-CeBrXSSf.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-BLleTFyw.mjs.map → ngx-histaff-alpha-wf-lab.component-CeBrXSSf.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/narration-engine.d.ts +1 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/_base/intent-input-behavior.base.d.ts +9 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/_base/intent-input-context.d.ts +6 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/_base/intent-input-group.d.ts +4 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/base-intent-inputs/base-intent-inputs.component.d.ts +23 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/create-o-inputs/create-o-inputs.component.d.ts +18 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/create-tree-inputs/create-tree-inputs.component.d.ts +8 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/intent-composer.component.d.ts +4 -3
- package/lib/app/services/dynamic-style.service.d.ts +1 -0
- package/package.json +2 -2
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-Bfddt3DJ.mjs.map +0 -1
|
@@ -3194,6 +3194,26 @@ class DynamicStyleService {
|
|
|
3194
3194
|
transform: rotate(90deg);
|
|
3195
3195
|
}
|
|
3196
3196
|
`;
|
|
3197
|
+
}
|
|
3198
|
+
ensureFormControlStyleContract() {
|
|
3199
|
+
const STYLE_ID = 'core-form-control-style-contract';
|
|
3200
|
+
if (document.getElementById(STYLE_ID))
|
|
3201
|
+
return;
|
|
3202
|
+
const styleEl = this.renderer.createElement('style');
|
|
3203
|
+
this.renderer.setAttribute(styleEl, 'id', STYLE_ID);
|
|
3204
|
+
this.renderer.appendChild(document.head, styleEl);
|
|
3205
|
+
styleEl.innerHTML = `
|
|
3206
|
+
/* =========================================
|
|
3207
|
+
CORE FORM CONTROL STYLE CONTRACT
|
|
3208
|
+
========================================= */
|
|
3209
|
+
|
|
3210
|
+
/* Base contract: KHÔNG dùng border shorthand */
|
|
3211
|
+
.form-control {
|
|
3212
|
+
border-width: 1px;
|
|
3213
|
+
border-style: solid;
|
|
3214
|
+
border-color: #ced4da;
|
|
3215
|
+
}
|
|
3216
|
+
`;
|
|
3197
3217
|
}
|
|
3198
3218
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: DynamicStyleService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3199
3219
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: DynamicStyleService, providedIn: 'root' }); }
|
|
@@ -4031,6 +4051,7 @@ class AppInitializationService {
|
|
|
4031
4051
|
if (!!(FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR?.length)) {
|
|
4032
4052
|
this.dynamicStyleService.setRequiredHighlight(FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR);
|
|
4033
4053
|
}
|
|
4054
|
+
this.dynamicStyleService.ensureFormControlStyleContract();
|
|
4034
4055
|
});
|
|
4035
4056
|
this.appConfigService.OAUTH2_OIDC_ENABLED = OAUTH2_OIDC_ENABLED;
|
|
4036
4057
|
this.appConfigService.OAUTH2_OIDC_CLIENT_ID = OAUTH2_OIDC_CLIENT_ID;
|
|
@@ -29308,6 +29329,184 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
29308
29329
|
], template: "@if ($loading()) {\r\n<core-rotating-text />\r\n} @else {\r\n\r\n<div class=\"dom-oid-factory-container\" [class.form-control-disabled]=\"disabled\">\r\n\r\n <!-- DISPLAY -->\r\n <div class=\"oid-display-name\" [class.form-control-disabled]=\"disabled\">\r\n <input type=\"text\" class=\"oid-name-input form-control\" [class.form-control-disabled]=\"disabled\"\r\n [class.required-highlight]=\"!!required\" [value]=\"$displayName()\" [disabled]=\"disabled\" />\r\n <div class=\"icon\" (click)=\"onPopupToggle()\">\r\n <i class=\"feather-chevron-down\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"factory-popup\" [class.open]=\"$open()\">\r\n\r\n <div class=\"popup-content\">\r\n\r\n <!-- SEARCH -->\r\n @if ($showSearch()) {\r\n <div class=\"oid-search\">\r\n <input type=\"text\" class=\"oid-search-input\" placeholder=\"T\u00ECm ki\u1EBFm\u2026\" [value]=\"$searchText()\"\r\n (input)=\"onSearchTextChange($any($event.target).value)\" />\r\n </div>\r\n }\r\n\r\n @if ($currentTokens().length > 0) {\r\n <!-- \uD83C\uDD95 ACCORDION 1: C\u00E1c \u0111\u01A1n v\u1ECB v\u1EEBa t\u1EA1o -->\r\n <section class=\"oid-accordion\" coreAccordion #accCreated=\"coreAccordion\">\r\n <header class=\"core-accordion-header highlight\" (click)=\"accCreated.toggle()\">\r\n <span>\uD83C\uDD95 C\u00E1c \u0111\u01A1n v\u1ECB v\u1EEBa t\u1EA1o</span>\r\n <i class=\"feather-chevron-right core-accordion-rotate\" [class.rotated]=\"accCreated.$open()\"></i>\r\n </header>\r\n\r\n <div class=\"core-accordion-viewport\">\r\n <div class=\"core-accordion-body\">\r\n <div #coreAccordionBody>\r\n <div class=\"oid-token-strip\">\r\n @for (t of $currentTokens(); track $index) {\r\n <dom-entity-token [$token]=\"t\" [$mode]=\"'compact'\" (click)=\"onTokenPicked(t)\">\r\n </dom-entity-token>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n }\r\n\r\n <!-- \uD83C\uDF33 ACCORDION 2: C\u00E2y t\u1ED5 ch\u1EE9c -->\r\n <section class=\"oid-accordion\" coreAccordion [$externalOpen]=\"true\" #accTree=\"coreAccordion\">\r\n <header class=\"core-accordion-header\" (click)=\"accTree.toggle()\">\r\n <span>\uD83C\uDF33 C\u00E2y t\u1ED5 ch\u1EE9c</span>\r\n <i class=\"feather-chevron-right core-accordion-rotate\" [class.rotated]=\"accTree.$open()\"></i>\r\n </header>\r\n\r\n <div class=\"core-accordion-viewport\">\r\n <div class=\"core-accordion-body\">\r\n <div #coreAccordionBody>\r\n <div #treeBody>\r\n <core-tree-reference [$data]=\"MOCK_DATA\" (selected)=\"onTreeItemSelected($event)\">\r\n </core-tree-reference>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- \u25AB\uFE0F ACCORDION 3: Ngo\u00E0i c\u00E2y t\u1ED5 ch\u1EE9c -->\r\n <section class=\"oid-accordion\" coreAccordion #accOutside=\"coreAccordion\">\r\n <header class=\"core-accordion-header\" (click)=\"accOutside.toggle()\">\r\n <span>\u25AB\uFE0F Ngo\u00E0i c\u00E2y t\u1ED5 ch\u1EE9c</span>\r\n <i class=\"feather-chevron-right core-accordion-rotate\" [class.rotated]=\"accOutside.$open()\"></i>\r\n </header>\r\n\r\n <div class=\"core-accordion-viewport\">\r\n <div class=\"core-accordion-body\">\r\n <div #coreAccordionBody></div>\r\n <div #outsideBody>\r\n <em class=\"muted\">Ch\u01B0a c\u00F3 n\u1ED9i dung</em>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n}", styles: [".dom-oid-factory-container{display:flex;flex-direction:column;gap:8px;position:relative}.dom-oid-factory-container .oid-display-name{position:relative}.dom-oid-factory-container .oid-display-name .icon{display:flex;align-items:center;justify-content:center;width:35px;height:35px;cursor:pointer;position:absolute;right:0;top:0;border-left:1px solid #ced4da;z-index:1}.dom-oid-factory-container .oid-display-name input.form-control-disabled{-webkit-user-select:none;user-select:none}.dom-oid-factory-container .factory-popup{height:0;overflow:hidden;position:absolute;background-color:#fff;width:320px;box-shadow:.4rem 0 2rem #4d2e2e2e;z-index:1;top:35px;transition:height .25s ease-out}.dom-oid-factory-container .factory-popup.open{height:400px}.dom-oid-factory-container .factory-popup .popup-content{padding:15px}.dom-oid-factory-container .factory-popup .popup-content .oid-accordion .core-accordion-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;height:35px}.dom-oid-factory-container .oid-search-input{width:100%;padding:6px 10px;border:1px solid #ccc}.dom-oid-factory-container .oid-tree{max-height:320px;overflow:auto}\n"] }]
|
|
29309
29330
|
}], ctorParameters: () => [] });
|
|
29310
29331
|
|
|
29332
|
+
class IntentInputBehaviorBase {
|
|
29333
|
+
constructor() {
|
|
29334
|
+
this.$errors = signal([]);
|
|
29335
|
+
}
|
|
29336
|
+
onInputChange(fieldKey, value) {
|
|
29337
|
+
const ctx = this.ctx;
|
|
29338
|
+
if (!ctx?.form)
|
|
29339
|
+
return;
|
|
29340
|
+
const ctrl = ctx.form.get(fieldKey);
|
|
29341
|
+
if (!ctrl)
|
|
29342
|
+
return;
|
|
29343
|
+
ctrl.setValue(value);
|
|
29344
|
+
ctrl.markAsTouched();
|
|
29345
|
+
this.rebuildErrors();
|
|
29346
|
+
}
|
|
29347
|
+
rebuildErrors() {
|
|
29348
|
+
const { form, descriptor } = this.ctx;
|
|
29349
|
+
if (!form || !descriptor)
|
|
29350
|
+
return;
|
|
29351
|
+
this.$errors.set([]);
|
|
29352
|
+
for (const input of descriptor.inputs) {
|
|
29353
|
+
const control = form.get(input.key);
|
|
29354
|
+
if (!control || !control.touched || !control.errors)
|
|
29355
|
+
continue;
|
|
29356
|
+
for (const errorCode of Object.keys(control.errors)) {
|
|
29357
|
+
const policyMessage = input.errorMessages?.[errorCode];
|
|
29358
|
+
const fallbackMessage = this.buildFallbackErrorMessage(input, errorCode, control.errors[errorCode]);
|
|
29359
|
+
this.$errors.update(c => [
|
|
29360
|
+
...c,
|
|
29361
|
+
{
|
|
29362
|
+
fieldKey: input.key,
|
|
29363
|
+
fieldLabel: input.label,
|
|
29364
|
+
errorCode,
|
|
29365
|
+
errorMessage: policyMessage ?? fallbackMessage
|
|
29366
|
+
}
|
|
29367
|
+
]);
|
|
29368
|
+
}
|
|
29369
|
+
}
|
|
29370
|
+
}
|
|
29371
|
+
// Fallback message (phòng khi descriptor không khai báo)
|
|
29372
|
+
buildFallbackErrorMessage(input, errorCode, errorData) {
|
|
29373
|
+
switch (errorCode) {
|
|
29374
|
+
case 'required':
|
|
29375
|
+
return `${input.label} là bắt buộc`;
|
|
29376
|
+
case 'minLength':
|
|
29377
|
+
case 'minlength':
|
|
29378
|
+
return `${input.label} phải có ít nhất ${errorData.requiredLength} ký tự`;
|
|
29379
|
+
case 'maxLength':
|
|
29380
|
+
case 'maxlength':
|
|
29381
|
+
return `${input.label} không được vượt quá ${errorData.requiredLength} ký tự`;
|
|
29382
|
+
case 'min':
|
|
29383
|
+
return `${input.label} phải ≥ ${errorData.min}`;
|
|
29384
|
+
case 'max':
|
|
29385
|
+
return `${input.label} phải ≤ ${errorData.max}`;
|
|
29386
|
+
case 'pattern':
|
|
29387
|
+
return `${input.label} không đúng định dạng`;
|
|
29388
|
+
default:
|
|
29389
|
+
return `${input.label} không hợp lệ`;
|
|
29390
|
+
}
|
|
29391
|
+
}
|
|
29392
|
+
}
|
|
29393
|
+
|
|
29394
|
+
class BaseIntentInputsComponent extends IntentInputBehaviorBase {
|
|
29395
|
+
isTouched(key) {
|
|
29396
|
+
return !!this.$form()?.get(key)?.touched;
|
|
29397
|
+
}
|
|
29398
|
+
onContextReady(ctx) {
|
|
29399
|
+
// safe: ctx.form + ctx.descriptor đã tồn tại
|
|
29400
|
+
}
|
|
29401
|
+
constructor() {
|
|
29402
|
+
super();
|
|
29403
|
+
this.$context = input.required();
|
|
29404
|
+
this.$form = computed(() => this.$context()?.form ?? null);
|
|
29405
|
+
this.$loading = signal(false);
|
|
29406
|
+
this.$rowableInputs = computed(() => {
|
|
29407
|
+
const inputs = this.$context().descriptor.inputs ?? [];
|
|
29408
|
+
const rows = new Map();
|
|
29409
|
+
for (const input of inputs) {
|
|
29410
|
+
const row = input.row ?? 1;
|
|
29411
|
+
if (!rows.has(row))
|
|
29412
|
+
rows.set(row, []);
|
|
29413
|
+
rows.get(row).push(input);
|
|
29414
|
+
}
|
|
29415
|
+
return Array.from(rows.entries())
|
|
29416
|
+
.sort(([a], [b]) => a - b)
|
|
29417
|
+
.map(([_, inputs]) => ({ inputs }));
|
|
29418
|
+
});
|
|
29419
|
+
//$errors = signal<IIntentInputError[]>([]);
|
|
29420
|
+
this.$draftInput = signal({});
|
|
29421
|
+
effect(() => {
|
|
29422
|
+
this.ctx = this.$context();
|
|
29423
|
+
});
|
|
29424
|
+
effect(() => {
|
|
29425
|
+
const ctx = this.$context(); // ✅ dependency
|
|
29426
|
+
if (!ctx)
|
|
29427
|
+
return;
|
|
29428
|
+
this.onContextReady(ctx);
|
|
29429
|
+
});
|
|
29430
|
+
}
|
|
29431
|
+
supports(_) {
|
|
29432
|
+
return true;
|
|
29433
|
+
}
|
|
29434
|
+
getErrorsOfField(fieldKey) {
|
|
29435
|
+
return this.$errors().filter(e => e.fieldKey === fieldKey);
|
|
29436
|
+
}
|
|
29437
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: BaseIntentInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29438
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.5", type: BaseIntentInputsComponent, isStandalone: true, selector: "lib-base-intent-inputs", inputs: { $context: { classPropertyName: "$context", publicName: "$context", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
29439
|
+
}
|
|
29440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: BaseIntentInputsComponent, decorators: [{
|
|
29441
|
+
type: Component,
|
|
29442
|
+
args: [{ selector: 'lib-base-intent-inputs', imports: [
|
|
29443
|
+
ReactiveFormsModule
|
|
29444
|
+
], encapsulation: ViewEncapsulation.None, template: "" }]
|
|
29445
|
+
}], ctorParameters: () => [] });
|
|
29446
|
+
|
|
29447
|
+
class CreateTreeInputsComponent extends BaseIntentInputsComponent {
|
|
29448
|
+
supports(actionCode) {
|
|
29449
|
+
return actionCode === EnumActionCode.CREATE_TREE;
|
|
29450
|
+
}
|
|
29451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CreateTreeInputsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
29452
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CreateTreeInputsComponent, isStandalone: true, selector: "create-tree-inputs", usesInheritance: true, ngImport: i0, template: "@if ($context().form) {\r\n<div [formGroup]=\"$context().form\">\r\n@if ($context()?.descriptor?.inputs?.length) {\r\n@for (row of $rowableInputs(); track $index) {\r\n\r\n<div class=\"intent-row-grid\">\r\n @for (input of row.inputs; track $index) {\r\n <div class=\"intent-cell\" [class.hidden]=\"input.hidden\" [style.gridColumn]=\"'span ' + (input.flexSize ?? 1)\">\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n\r\n @if (input.hint && input.hint !== '') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"input.hint!\" [showAnyway]=\"true\"\r\n [style.display]=\"'inline-block'\" [style.marginLeft]=\"'2px'\"></i>\r\n }\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input class=\"form-control\" [formControlName]=\"input.key\" type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher\r\n [formControlName]=\"input.key\"\r\n [showOnOffText]=\"false\"\r\n [width]=\"66\" />\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 @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\r\n @if (!getErrorsOfField(input.key).length && isTouched(input.key)) {\r\n <div> </div>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n }\r\n</div>\r\n}\r\n}\r\n</div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CoreIosSwitcherComponent, selector: "core-ios-switcher", inputs: ["bgColor", "showOnOffText", "width", "height", "readonly"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] }); }
|
|
29453
|
+
}
|
|
29454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CreateTreeInputsComponent, decorators: [{
|
|
29455
|
+
type: Component,
|
|
29456
|
+
args: [{ selector: 'create-tree-inputs', imports: [
|
|
29457
|
+
ReactiveFormsModule,
|
|
29458
|
+
CoreIosSwitcherComponent,
|
|
29459
|
+
TranslatePipe,
|
|
29460
|
+
], template: "@if ($context().form) {\r\n<div [formGroup]=\"$context().form\">\r\n@if ($context()?.descriptor?.inputs?.length) {\r\n@for (row of $rowableInputs(); track $index) {\r\n\r\n<div class=\"intent-row-grid\">\r\n @for (input of row.inputs; track $index) {\r\n <div class=\"intent-cell\" [class.hidden]=\"input.hidden\" [style.gridColumn]=\"'span ' + (input.flexSize ?? 1)\">\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n\r\n @if (input.hint && input.hint !== '') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"input.hint!\" [showAnyway]=\"true\"\r\n [style.display]=\"'inline-block'\" [style.marginLeft]=\"'2px'\"></i>\r\n }\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input class=\"form-control\" [formControlName]=\"input.key\" type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher\r\n [formControlName]=\"input.key\"\r\n [showOnOffText]=\"false\"\r\n [width]=\"66\" />\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 @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\r\n @if (!getErrorsOfField(input.key).length && isTouched(input.key)) {\r\n <div> </div>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n }\r\n</div>\r\n}\r\n}\r\n</div>\r\n}" }]
|
|
29461
|
+
}] });
|
|
29462
|
+
|
|
29463
|
+
class CreateOInputsComponent extends BaseIntentInputsComponent {
|
|
29464
|
+
constructor() {
|
|
29465
|
+
super(...arguments);
|
|
29466
|
+
this.treeIdOptions$ = new BehaviorSubject([]);
|
|
29467
|
+
this.appService = inject(AppService);
|
|
29468
|
+
this.subscriptions = [];
|
|
29469
|
+
}
|
|
29470
|
+
supports(actionCode) {
|
|
29471
|
+
return actionCode === EnumActionCode.CREATE_O;
|
|
29472
|
+
}
|
|
29473
|
+
onContextReady(ctx) {
|
|
29474
|
+
const form = ctx.form;
|
|
29475
|
+
if (!form)
|
|
29476
|
+
return;
|
|
29477
|
+
const codeCtrl = form.get('CODE');
|
|
29478
|
+
const shortCodeCtrl = form.get('SHORT_CODE');
|
|
29479
|
+
if (!codeCtrl || !shortCodeCtrl)
|
|
29480
|
+
return;
|
|
29481
|
+
const code = crypto.randomUUID();
|
|
29482
|
+
codeCtrl.setValue(code, { emitEvent: false });
|
|
29483
|
+
codeCtrl.disable({ emitEvent: false });
|
|
29484
|
+
shortCodeCtrl.setValue(code.substring(0, 8).toUpperCase(), { emitEvent: false });
|
|
29485
|
+
}
|
|
29486
|
+
ngAfterViewInit() {
|
|
29487
|
+
setTimeout(() => {
|
|
29488
|
+
this.subscriptions.push(this.appService.get('/api/DomTree/GetAll').pipe(tap$1(_ => this.$loading.set(true)), finalize$1(() => this.$loading.set(false))).subscribe(x => {
|
|
29489
|
+
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
29490
|
+
this.treeIdOptions$.next((x.body?.innerBody ?? []).map((i) => ({ value: i.id, text: i.treeName + (i.isHr ? ' (HR)' : '') })));
|
|
29491
|
+
}
|
|
29492
|
+
}));
|
|
29493
|
+
});
|
|
29494
|
+
}
|
|
29495
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CreateOInputsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
29496
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CreateOInputsComponent, isStandalone: true, selector: "create-o-inputs", usesInheritance: true, ngImport: i0, template: "@if ($context().form) {\r\n<div [formGroup]=\"$context().form\">\r\n@if ($context()?.descriptor?.inputs?.length) {\r\n@for (row of $rowableInputs(); track $index) {\r\n\r\n<div class=\"intent-row-grid\">\r\n @for (input of row.inputs; track $index) {\r\n <div class=\"intent-cell\" [class.hidden]=\"input.hidden\" [style.gridColumn]=\"'span ' + (input.flexSize ?? 1)\">\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n\r\n @if (input.hint && input.hint !== '') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"input.hint!\" [showAnyway]=\"true\"\r\n [style.display]=\"'inline-block'\" [style.marginLeft]=\"'2px'\"></i>\r\n }\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input class=\"form-control\" [formControlName]=\"input.key\" type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('treeId') {\r\n <core-dropdown [options$]=\"treeIdOptions$\" [warningDisable]=\"true\" [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('date') {\r\n <core-date-picker [formControlName]=\"input.key\" [$rangePoint]=\"'start'\"\r\n [required]=\"!!input.validators?.required\" />\r\n }\r\n\r\n @case ('timezoneId') {\r\n <core-timezone [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher [formControlName]=\"input.key\" [showOnOffText]=\"false\" [width]=\"66\" />\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 @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 && isTouched(input.key)) {\r\n <div> </div>\r\n }\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}", styles: [""], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.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$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { 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", "$disabled"] }, { kind: "component", type: CoreDatePickerComponent, selector: "core-date-picker", inputs: ["enableTimeZoneConverter", "showPlaceholder", "popupWidth", "popupXPadding", "popupAlign", "rangeLimit", "placeholder", "readonly", "disabled", "$rangePoint"] }, { kind: "component", type: CoreTimezoneComponent, selector: "core-timezone" }, { kind: "component", type: CoreIosSwitcherComponent, selector: "core-ios-switcher", inputs: ["bgColor", "showOnOffText", "width", "height", "readonly"] }] }); }
|
|
29497
|
+
}
|
|
29498
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CreateOInputsComponent, decorators: [{
|
|
29499
|
+
type: Component,
|
|
29500
|
+
args: [{ selector: 'create-o-inputs', imports: [
|
|
29501
|
+
TranslatePipe,
|
|
29502
|
+
ReactiveFormsModule,
|
|
29503
|
+
CoreDropdownComponent,
|
|
29504
|
+
CoreDatePickerComponent,
|
|
29505
|
+
CoreTimezoneComponent,
|
|
29506
|
+
CoreIosSwitcherComponent,
|
|
29507
|
+
], template: "@if ($context().form) {\r\n<div [formGroup]=\"$context().form\">\r\n@if ($context()?.descriptor?.inputs?.length) {\r\n@for (row of $rowableInputs(); track $index) {\r\n\r\n<div class=\"intent-row-grid\">\r\n @for (input of row.inputs; track $index) {\r\n <div class=\"intent-cell\" [class.hidden]=\"input.hidden\" [style.gridColumn]=\"'span ' + (input.flexSize ?? 1)\">\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n\r\n @if (input.hint && input.hint !== '') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"input.hint!\" [showAnyway]=\"true\"\r\n [style.display]=\"'inline-block'\" [style.marginLeft]=\"'2px'\"></i>\r\n }\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input class=\"form-control\" [formControlName]=\"input.key\" type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('treeId') {\r\n <core-dropdown [options$]=\"treeIdOptions$\" [warningDisable]=\"true\" [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('date') {\r\n <core-date-picker [formControlName]=\"input.key\" [$rangePoint]=\"'start'\"\r\n [required]=\"!!input.validators?.required\" />\r\n }\r\n\r\n @case ('timezoneId') {\r\n <core-timezone [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('boolean') {\r\n <core-ios-switcher [formControlName]=\"input.key\" [showOnOffText]=\"false\" [width]=\"66\" />\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 @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 && isTouched(input.key)) {\r\n <div> </div>\r\n }\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}" }]
|
|
29508
|
+
}] });
|
|
29509
|
+
|
|
29311
29510
|
class IntentComposerComponent extends BaseComponent {
|
|
29312
29511
|
constructor(mls) {
|
|
29313
29512
|
super(mls);
|
|
@@ -29332,26 +29531,10 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
29332
29531
|
this.form = this.fb.group({});
|
|
29333
29532
|
this.$formRawValue = signal(null);
|
|
29334
29533
|
this.isDevMode = isDevMode();
|
|
29335
|
-
this.$
|
|
29336
|
-
|
|
29337
|
-
|
|
29338
|
-
|
|
29339
|
-
for (const input of inputs) {
|
|
29340
|
-
const row = input.row ?? 0;
|
|
29341
|
-
if (!rowMap.has(row)) {
|
|
29342
|
-
rowMap.set(row, []);
|
|
29343
|
-
}
|
|
29344
|
-
rowMap.get(row).push(input);
|
|
29345
|
-
}
|
|
29346
|
-
// Preserve row order (ascending)
|
|
29347
|
-
return Array
|
|
29348
|
-
.from(rowMap.entries())
|
|
29349
|
-
.sort(([a], [b]) => a - b)
|
|
29350
|
-
.map(([row, inputs]) => ({
|
|
29351
|
-
row,
|
|
29352
|
-
inputs
|
|
29353
|
-
}));
|
|
29354
|
-
});
|
|
29534
|
+
this.$context = computed(() => ({
|
|
29535
|
+
form: this.form,
|
|
29536
|
+
descriptor: this.$descriptor(),
|
|
29537
|
+
}));
|
|
29355
29538
|
this.rCodeOptions$ = new BehaviorSubject(RCODE_FORWARD_VALUES.map(x => ({ value: x, text: x })));
|
|
29356
29539
|
this.roleOptions$ = new BehaviorSubject([
|
|
29357
29540
|
{
|
|
@@ -29394,19 +29577,20 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
29394
29577
|
const controls = {};
|
|
29395
29578
|
// Logical inputs
|
|
29396
29579
|
for (const input of descriptor.inputs) {
|
|
29397
|
-
|
|
29580
|
+
const control = new FormControl(input.defaultValueFactory
|
|
29581
|
+
? input.defaultValueFactory()
|
|
29582
|
+
: input.defaultValue ?? null, this.buildValidators(input.validators));
|
|
29398
29583
|
if (input.disabled) {
|
|
29399
|
-
controls[input.key].disable();
|
|
29584
|
+
controls[input.key].disable({ emitEvent: false });
|
|
29400
29585
|
}
|
|
29586
|
+
controls[input.key] = control;
|
|
29401
29587
|
}
|
|
29588
|
+
// ⚠️ atomic replace
|
|
29402
29589
|
this.form = new FormGroup(controls);
|
|
29403
29590
|
// 🔹 snapshot ban đầu
|
|
29404
29591
|
this.$formRawValue.set(this.form.getRawValue());
|
|
29405
|
-
|
|
29406
|
-
|
|
29407
|
-
this.formSubscription = this.form.valueChanges.subscribe(x => {
|
|
29408
|
-
this.$formRawValue.set(x);
|
|
29409
|
-
});
|
|
29592
|
+
this.bindFormValueChanges();
|
|
29593
|
+
// TO DO: REMOVE THE REST
|
|
29410
29594
|
if (this.vfUtcSubscription)
|
|
29411
29595
|
this.vfUtcSubscription.unsubscribe();
|
|
29412
29596
|
if (this.$descriptor().actionCode === EnumActionCode.LINK_O_O) {
|
|
@@ -29449,11 +29633,11 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
29449
29633
|
}
|
|
29450
29634
|
this.applyActionSpecificBehavior(descriptor);
|
|
29451
29635
|
}
|
|
29452
|
-
|
|
29453
|
-
this
|
|
29454
|
-
|
|
29455
|
-
|
|
29456
|
-
})
|
|
29636
|
+
bindFormValueChanges() {
|
|
29637
|
+
this.formSubscription?.unsubscribe();
|
|
29638
|
+
this.formSubscription = this.form.valueChanges.subscribe(value => {
|
|
29639
|
+
this.$formRawValue.set(value);
|
|
29640
|
+
});
|
|
29457
29641
|
}
|
|
29458
29642
|
onConfirm() {
|
|
29459
29643
|
this.form.markAllAsTouched();
|
|
@@ -29587,7 +29771,7 @@ class IntentComposerComponent extends BaseComponent {
|
|
|
29587
29771
|
this.vfUtcSubscription.unsubscribe();
|
|
29588
29772
|
}
|
|
29589
29773
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IntentComposerComponent, deps: [{ token: MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29590
|
-
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" }, host: { listeners: { "keydown.escape": "onEscape($event)" } }, 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 class=\"intent-composer-container\" [formGroup]=\"form\" (ngSubmit)=\"onConfirm()\" autocomplete=\"off\" [hotKeys]=\"hotKeys\">\r\n\r\n <!-- Header -->\r\n <div class=\"composer-header\">\r\n <core-page-header [hideButtonGroup]=\"true\" [title]=\"$descriptor().label\" />\r\n <div class=\"icon-wrapper\" (click)=\"cancelled.emit()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"composer-body\">\r\n\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 @for (row of $rowableInputs(); track $index) {\r\n\r\n <div class=\"intent-row-grid\">\r\n @for (input of row.inputs; track $index) {\r\n <div class=\"intent-cell\" [class.hidden]=\"input.hidden\" [style.gridColumn]=\"'span ' + (input.flexSize ?? 1)\">\r\n\r\n <div class=\"intent-input\">\r\n\r\n <label [class.required]=\"input.validators?.required\">\r\n {{ input.label }}\r\n\r\n @if (input.hint && input.hint !== '') {\r\n <i class=\"feather-help-circle\" [appTooltip]=\"input.hint!\" [showAnyway]=\"true\" [style.display]=\"'inline-block'\" [style.marginLeft]=\"'2px'\"></i>\r\n }\r\n </label>\r\n\r\n @switch (input.kind) {\r\n\r\n @case ('string') {\r\n <input class=\"form-control\" [formControlName]=\"input.key\" type=\"text\"\r\n (input)=\"onInputChange(input.key, $event.target.value)\" />\r\n }\r\n\r\n @case ('treeId') {\r\n <core-dropdown [options$]=\"treeIdOptions$\" [warningDisable]=\"true\" [formControlName]=\"input.key\" />\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 [formControlName]=\"input.key\" 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\" [$rangePoint]=\"'start'\" \r\n [required]=\"!!input.validators?.required\"\r\n />\r\n }\r\n\r\n @case ('dropdown') {\r\n <core-date-picker [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('timezoneId') {\r\n <core-timezone [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('orgGardenReference') {\r\n <dom-oid-factory \r\n [formControlName]=\"input.key\" \r\n (resolved)=\"onOrgResolved($event)\"\r\n />\r\n }\r\n\r\n @case ('rCode') {\r\n <core-dropdown [options$]=\"rCodeOptions$\" [warningDisable]=\"true\" [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('role') {\r\n <core-dropdown [options$]=\"roleOptions$\" [warningDisable]=\"true\" [formControlName]=\"input.key\" />\r\n }\r\n\r\n @case ('reference') {\r\n <button type=\"button\" class=\"btn btn-outline\" (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 [formControlName]=\"input.key\" rows=\"3\" (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 type=\"button\" class=\"btn btn-secondary\" (click)=\"onCancel()\">\r\n Quay l\u1EA1i\r\n </button>\r\n\r\n <button type=\"submit\" class=\"btn btn-primary\">\r\n X\u00E1c nh\u1EADn\r\n </button>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- @if (isDevMode && $formRawValue) {\r\n <pre>{{ $formRawValue() | json }}</pre>\r\n }\r\n\r\n @if (isDevMode) {\r\n <label>Tokens</label>\r\n <pre>{{ $tokens() | json }}</pre>\r\n } -->\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 .composer-header{position:relative}.intent-composer-container .composer-header .icon-wrapper{cursor:pointer;position:absolute;width:30px;height:30px;top:5px;right:-10px;border-radius:50%;display:flex;align-items:center;justify-content:center}.intent-composer-container .composer-header .icon-wrapper:hover{background-color:#d3d3d3}.intent-composer-container .composer-header .icon-wrapper i{font-size:18px}.intent-composer-container .intent-inputs label{color:#848484}.intent-composer-container .intent-inputs .intent-row-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-bottom:12px}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell{box-sizing:border-box;min-width:0}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell.hidden{display:none}.intent-composer-container .intent-inputs .intent-row-grid .intent-input{display:flex;flex-direction:column;margin-top:15px;margin-bottom:15px}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label{color:#464646}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label.required:after{content:\"*\";color:#ff040b}.intent-composer-container .composer-actions{display:flex;justify-content:space-between}.intent-composer-container .composer-actions button{font-size:13px;border-radius:0}.intent-composer-container pre{margin-top:15px}.test-itemTemplateRef{padding:15px;background-color:#6495ed;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.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$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.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", "$rangePoint"] }, { 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", "$disabled"] }, { kind: "component", type: CoreTimezoneComponent, selector: "core-timezone" }, { kind: "component", type: DomOIdFactoryComponent, selector: "dom-oid-factory", inputs: ["$showSearch"], outputs: ["resolved"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "directive", type: HotKeysDirective, selector: "[hotKeys]", inputs: ["hotKeys"] }] }); }
|
|
29774
|
+
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" }, host: { listeners: { "keydown.escape": "onEscape($event)" } }, 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 class=\"intent-composer-container\" [formGroup]=\"form\" (ngSubmit)=\"onConfirm()\" autocomplete=\"off\" [hotKeys]=\"hotKeys\">\r\n\r\n <!-- Header -->\r\n <div class=\"composer-header\">\r\n <core-page-header [hideButtonGroup]=\"true\" [title]=\"$descriptor().label\" />\r\n <div class=\"icon-wrapper\" (click)=\"cancelled.emit()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"composer-body\">\r\n\r\n <p class=\"desc\">{{ $descriptor().quickEmoji }} | {{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n @switch ($descriptor().actionCode) {\r\n @case ('CREATE_TREE') {\r\n <create-tree-inputs [$context]=\"$context()\" />\r\n }\r\n @case ('CREATE_O') {\r\n <create-o-inputs [$context]=\"$context()\" />\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 </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"composer-actions\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCancel()\">\r\n Quay l\u1EA1i\r\n </button>\r\n\r\n <button type=\"submit\" class=\"btn btn-primary\">\r\n X\u00E1c nh\u1EADn\r\n </button>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- @if (isDevMode && $formRawValue) {\r\n <pre>{{ $formRawValue() | json }}</pre>\r\n }\r\n\r\n @if (isDevMode) {\r\n <label>Tokens</label>\r\n <pre>{{ $tokens() | json }}</pre>\r\n } -->\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 .composer-header{position:relative}.intent-composer-container .composer-header .icon-wrapper{cursor:pointer;position:absolute;width:30px;height:30px;top:5px;right:-10px;border-radius:50%;display:flex;align-items:center;justify-content:center}.intent-composer-container .composer-header .icon-wrapper:hover{background-color:#d3d3d3}.intent-composer-container .composer-header .icon-wrapper i{font-size:18px}.intent-composer-container .intent-inputs label{color:#848484}.intent-composer-container .intent-inputs .intent-row-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-bottom:12px}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell{box-sizing:border-box;min-width:0}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell.hidden{display:none}.intent-composer-container .intent-inputs .intent-row-grid .intent-input{display:flex;flex-direction:column;margin-top:15px;margin-bottom:15px}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label{color:#464646}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label.required:after{content:\"*\";color:#ff040b}.intent-composer-container .composer-actions{display:flex;justify-content:space-between}.intent-composer-container .composer-actions button{font-size:13px;border-radius:0}.intent-composer-container pre{margin-top:15px}.test-itemTemplateRef{padding:15px;background-color:#6495ed;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "directive", type: HotKeysDirective, selector: "[hotKeys]", inputs: ["hotKeys"] }, { kind: "component", type: CreateTreeInputsComponent, selector: "create-tree-inputs" }, { kind: "component", type: CreateOInputsComponent, selector: "create-o-inputs" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
29591
29775
|
}
|
|
29592
29776
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: IntentComposerComponent, decorators: [{
|
|
29593
29777
|
type: Component,
|
|
@@ -29603,10 +29787,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
29603
29787
|
TranslatePipe,
|
|
29604
29788
|
JsonPipe,
|
|
29605
29789
|
CorePageHeaderComponent,
|
|
29606
|
-
HotKeysDirective
|
|
29607
|
-
|
|
29790
|
+
HotKeysDirective,
|
|
29791
|
+
CreateTreeInputsComponent,
|
|
29792
|
+
CreateOInputsComponent,
|
|
29793
|
+
], encapsulation: ViewEncapsulation.None, host: {
|
|
29608
29794
|
'(keydown.escape)': 'onEscape($event)'
|
|
29609
|
-
}, 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 class=\"intent-composer-container\" [formGroup]=\"form\" (ngSubmit)=\"onConfirm()\" autocomplete=\"off\" [hotKeys]=\"hotKeys\">\r\n\r\n <!-- Header -->\r\n <div class=\"composer-header\">\r\n <core-page-header [hideButtonGroup]=\"true\" [title]=\"$descriptor().label\" />\r\n <div class=\"icon-wrapper\" (click)=\"cancelled.emit()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"composer-body\">\r\n\r\n <p class=\"desc\">{{ $descriptor().quickEmoji }} | {{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n
|
|
29795
|
+
}, 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 class=\"intent-composer-container\" [formGroup]=\"form\" (ngSubmit)=\"onConfirm()\" autocomplete=\"off\" [hotKeys]=\"hotKeys\">\r\n\r\n <!-- Header -->\r\n <div class=\"composer-header\">\r\n <core-page-header [hideButtonGroup]=\"true\" [title]=\"$descriptor().label\" />\r\n <div class=\"icon-wrapper\" (click)=\"cancelled.emit()\">\r\n <i class=\"feather-x\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"composer-body\">\r\n\r\n <p class=\"desc\">{{ $descriptor().quickEmoji }} | {{ $descriptor().description }}</p>\r\n\r\n <!-- Inputs -->\r\n <div class=\"intent-inputs\">\r\n @switch ($descriptor().actionCode) {\r\n @case ('CREATE_TREE') {\r\n <create-tree-inputs [$context]=\"$context()\" />\r\n }\r\n @case ('CREATE_O') {\r\n <create-o-inputs [$context]=\"$context()\" />\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 </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"composer-actions\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"onCancel()\">\r\n Quay l\u1EA1i\r\n </button>\r\n\r\n <button type=\"submit\" class=\"btn btn-primary\">\r\n X\u00E1c nh\u1EADn\r\n </button>\r\n </div>\r\n\r\n </div>\r\n\r\n <!-- @if (isDevMode && $formRawValue) {\r\n <pre>{{ $formRawValue() | json }}</pre>\r\n }\r\n\r\n @if (isDevMode) {\r\n <label>Tokens</label>\r\n <pre>{{ $tokens() | json }}</pre>\r\n } -->\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 .composer-header{position:relative}.intent-composer-container .composer-header .icon-wrapper{cursor:pointer;position:absolute;width:30px;height:30px;top:5px;right:-10px;border-radius:50%;display:flex;align-items:center;justify-content:center}.intent-composer-container .composer-header .icon-wrapper:hover{background-color:#d3d3d3}.intent-composer-container .composer-header .icon-wrapper i{font-size:18px}.intent-composer-container .intent-inputs label{color:#848484}.intent-composer-container .intent-inputs .intent-row-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;margin-bottom:12px}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell{box-sizing:border-box;min-width:0}.intent-composer-container .intent-inputs .intent-row-grid .intent-cell.hidden{display:none}.intent-composer-container .intent-inputs .intent-row-grid .intent-input{display:flex;flex-direction:column;margin-top:15px;margin-bottom:15px}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label{color:#464646}.intent-composer-container .intent-inputs .intent-row-grid .intent-input label.required:after{content:\"*\";color:#ff040b}.intent-composer-container .composer-actions{display:flex;justify-content:space-between}.intent-composer-container .composer-actions button{font-size:13px;border-radius:0}.intent-composer-container pre{margin-top:15px}.test-itemTemplateRef{padding:15px;background-color:#6495ed;color:#fff}\n"] }]
|
|
29610
29796
|
}], ctorParameters: () => [{ type: MultiLanguageService }] });
|
|
29611
29797
|
|
|
29612
29798
|
const CreateOrganizationGrammar = {
|
|
@@ -29654,6 +29840,29 @@ function narrateIntent(grammar, ctx) {
|
|
|
29654
29840
|
// 3) Join theo ngữ pháp tiếng Việt (space-based)
|
|
29655
29841
|
return parts.join(' ');
|
|
29656
29842
|
}
|
|
29843
|
+
const CREATE_TREE_GRAMMAR = {
|
|
29844
|
+
intentCode: EnumActionCode.CREATE_TREE,
|
|
29845
|
+
subject(ctx) {
|
|
29846
|
+
const treeName = ctx.facts['TREE_NAME'];
|
|
29847
|
+
const isHr = ctx.facts['IS_HR'];
|
|
29848
|
+
const isHrText = typeof isHr === 'boolean' ? (isHr ? "ngành ngang" : "ngành dọc") : "";
|
|
29849
|
+
return typeof treeName === 'string'
|
|
29850
|
+
? `Tạo cây ${isHrText} ${treeName}`
|
|
29851
|
+
: 'Tạo cây ${isHrText}';
|
|
29852
|
+
},
|
|
29853
|
+
clauses: [
|
|
29854
|
+
{
|
|
29855
|
+
// khả dụng từ <date>
|
|
29856
|
+
when: ctx => !!ctx.temporal.localDate,
|
|
29857
|
+
render: ctx => `khả dụng từ ${ctx.temporal.localDate}`
|
|
29858
|
+
},
|
|
29859
|
+
{
|
|
29860
|
+
// thuộc cây <TREE_NAME>
|
|
29861
|
+
when: ctx => !!ctx.resolved['TREE_NAME'],
|
|
29862
|
+
render: ctx => `thuộc cây ${ctx.resolved['TREE_NAME']}`
|
|
29863
|
+
}
|
|
29864
|
+
]
|
|
29865
|
+
};
|
|
29657
29866
|
const CREATE_O_GRAMMAR = {
|
|
29658
29867
|
intentCode: EnumActionCode.CREATE_O,
|
|
29659
29868
|
subject(ctx) {
|
|
@@ -29720,6 +29929,7 @@ const LINK_O_O_GRAMMAR = {
|
|
|
29720
29929
|
};
|
|
29721
29930
|
|
|
29722
29931
|
const INTENT_GRAMMAR_REGISTRY = [
|
|
29932
|
+
CREATE_TREE_GRAMMAR,
|
|
29723
29933
|
CREATE_O_GRAMMAR,
|
|
29724
29934
|
CREATE_S_GRAMMAR,
|
|
29725
29935
|
LINK_O_O_GRAMMAR
|
|
@@ -30067,7 +30277,7 @@ class CoreDomDecisionEditorComponent extends CoreFormControlBaseComponent {
|
|
|
30067
30277
|
multi: true,
|
|
30068
30278
|
useExisting: forwardRef(() => CoreDomDecisionEditorComponent),
|
|
30069
30279
|
},
|
|
30070
|
-
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n @if ($projection().intents.length > 0) {\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 <div class=\"intent-row\">\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\" [appTooltip]=\"intent.actionLabel\" [showAnyway]=\"true\" [position]=\"'above'\">#{{\r\n intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.summary }}</span>\r\n </div>\r\n\r\n <div class=\"intent-tool\">\r\n <button type=\"button\" class=\"btn btn-danger-ghost\" (click)=\"onRemoveIntent(intent.seq)\"\r\n [appTooltip]=\"'G\u1EE1'\" [showAnyway]=\"true\" [position]=\"'above'\">\r\n <i class=\"feather-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\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 @if ($projection().outputs.length > 1) {\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 <!-- @if (isDevMode) {\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 <label>allTokens</label>\r\n <pre>{{ $allTokens() | json }}</pre>\r\n\r\n } -->\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\r\n
|
|
30280
|
+
], usesInheritance: true, ngImport: i0, template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n @if ($projection().intents.length > 0) {\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 <div class=\"intent-row\">\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\" [appTooltip]=\"intent.actionLabel\" [showAnyway]=\"true\" [position]=\"'above'\">#{{\r\n intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.summary }}</span>\r\n </div>\r\n\r\n <div class=\"intent-tool\">\r\n <button type=\"button\" class=\"btn btn-danger-ghost\" (click)=\"onRemoveIntent(intent.seq)\"\r\n [appTooltip]=\"'G\u1EE1'\" [showAnyway]=\"true\" [position]=\"'above'\">\r\n <i class=\"feather-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\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 @if ($projection().outputs.length > 1) {\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 <!-- @if (isDevMode) {\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 <label>allTokens</label>\r\n <pre>{{ $allTokens() | json }}</pre>\r\n\r\n } -->\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\r\n @if ($selectedIntentDescriptor()) {\r\n\r\n <intent-composer [$descriptor]=\"$selectedIntentDescriptor()!\" (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\" (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 @if (!$activeSeq()) {\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 }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>", styles: [".core-dom-decision-editor-container .intent-actions-panel button{border-radius:0;font-size:13px}.core-dom-decision-editor-container .modal-container{overflow:scroll}.core-dom-decision-editor-container .modal-container .modal-content-root{overflow:visible;max-height:unset;padding:0}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry{padding:0 15px 15px}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry .popup-actions{display:flex;align-items:center;justify-content:flex-end}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry .popup-actions button{font-size:13px;border-radius:0}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry{margin-top:15px;padding-top:15px;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;background:#fff;padding:10px 12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card:hover{box-shadow:.4rem 0 2rem #0000002e}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row{display:flex;align-items:center;justify-content:space-between}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header{display:flex;align-items:center;gap:8px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-seq{background:#e6f0ff;color:#084298;border-radius:3px;padding:2px 6px;cursor:pointer}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-label{color:#212529;cursor:pointer}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-label:hover{color:#fff;color:#dd5f2a}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool{display:flex;gap:8px;padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .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-row .intent-tool .btn-ghost{color:#0d6efd}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-ghost:hover{text-decoration:underline}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-danger-ghost{color:#dc3545}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-danger-ghost:hover{text-decoration:underline}\n"], dependencies: [{ kind: "component", type: IntentComposerComponent, selector: "intent-composer", inputs: ["$descriptor"], outputs: ["intentComposed", "cancelled"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
|
|
30071
30281
|
}
|
|
30072
30282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreDomDecisionEditorComponent, decorators: [{
|
|
30073
30283
|
type: Component,
|
|
@@ -30088,7 +30298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
30088
30298
|
multi: true,
|
|
30089
30299
|
useExisting: forwardRef(() => CoreDomDecisionEditorComponent),
|
|
30090
30300
|
},
|
|
30091
|
-
], template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n @if ($projection().intents.length > 0) {\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 <div class=\"intent-row\">\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\" [appTooltip]=\"intent.actionLabel\" [showAnyway]=\"true\" [position]=\"'above'\">#{{\r\n intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.summary }}</span>\r\n </div>\r\n\r\n <div class=\"intent-tool\">\r\n <button type=\"button\" class=\"btn btn-danger-ghost\" (click)=\"onRemoveIntent(intent.seq)\"\r\n [appTooltip]=\"'G\u1EE1'\" [showAnyway]=\"true\" [position]=\"'above'\">\r\n <i class=\"feather-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\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 @if ($projection().outputs.length > 1) {\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 <!-- @if (isDevMode) {\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 <label>allTokens</label>\r\n <pre>{{ $allTokens() | json }}</pre>\r\n\r\n } -->\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\r\n
|
|
30301
|
+
], template: "<div class=\"core-dom-decision-editor-container\">\r\n\r\n <!-- ========================= -->\r\n <!-- Intent Chain Projection -->\r\n <!-- ========================= -->\r\n <section class=\"intent-chain\">\r\n\r\n @if ($projection().intents.length > 0) {\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 <div class=\"intent-row\">\r\n <div class=\"intent-header\">\r\n <span class=\"intent-seq\" [appTooltip]=\"intent.actionLabel\" [showAnyway]=\"true\" [position]=\"'above'\">#{{\r\n intent.seq }}</span>\r\n <span class=\"intent-label\">{{ intent.summary }}</span>\r\n </div>\r\n\r\n <div class=\"intent-tool\">\r\n <button type=\"button\" class=\"btn btn-danger-ghost\" (click)=\"onRemoveIntent(intent.seq)\"\r\n [appTooltip]=\"'G\u1EE1'\" [showAnyway]=\"true\" [position]=\"'above'\">\r\n <i class=\"feather-trash\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </li>\r\n }\r\n </ol>\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 @if ($projection().outputs.length > 1) {\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 <!-- @if (isDevMode) {\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 <label>allTokens</label>\r\n <pre>{{ $allTokens() | json }}</pre>\r\n\r\n } -->\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\r\n @if ($selectedIntentDescriptor()) {\r\n\r\n <intent-composer [$descriptor]=\"$selectedIntentDescriptor()!\" (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\" (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 @if (!$activeSeq()) {\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 }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n</div>", styles: [".core-dom-decision-editor-container .intent-actions-panel button{border-radius:0;font-size:13px}.core-dom-decision-editor-container .modal-container{overflow:scroll}.core-dom-decision-editor-container .modal-container .modal-content-root{overflow:visible;max-height:unset;padding:0}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry{padding:0 15px 15px}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry .popup-actions{display:flex;align-items:center;justify-content:flex-end}.core-dom-decision-editor-container .modal-container .modal-content-root .intent-composer-entry .popup-actions button{font-size:13px;border-radius:0}.core-dom-decision-editor-container .modal-container .modal-content-root ul.intent-item-registry{margin-top:15px;padding-top:15px;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;background:#fff;padding:10px 12px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card:hover{box-shadow:.4rem 0 2rem #0000002e}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row{display:flex;align-items:center;justify-content:space-between}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header{display:flex;align-items:center;gap:8px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-seq{background:#e6f0ff;color:#084298;border-radius:3px;padding:2px 6px;cursor:pointer}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-label{color:#212529;cursor:pointer}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-header .intent-label:hover{color:#fff;color:#dd5f2a}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool{display:flex;gap:8px;padding-left:28px}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .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-row .intent-tool .btn-ghost{color:#0d6efd}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-ghost:hover{text-decoration:underline}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-danger-ghost{color:#dc3545}.core-dom-decision-editor-container .intent-chain .intent-list .intent-item .intent-card .intent-row .intent-tool .btn-danger-ghost:hover{text-decoration:underline}\n"] }]
|
|
30092
30302
|
}], ctorParameters: () => [] });
|
|
30093
30303
|
|
|
30094
30304
|
class CoreControlComponent extends BaseComponent {
|
|
@@ -35170,7 +35380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
35170
35380
|
const hrmSchemaRoutes = [
|
|
35171
35381
|
{
|
|
35172
35382
|
path: '',
|
|
35173
|
-
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-
|
|
35383
|
+
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-FNOzbUo_.mjs').then(m => m.HrmSchemaComponent)
|
|
35174
35384
|
}
|
|
35175
35385
|
];
|
|
35176
35386
|
|
|
@@ -37343,7 +37553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
37343
37553
|
const simpleChatRoutes = [
|
|
37344
37554
|
{
|
|
37345
37555
|
path: '',
|
|
37346
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
37556
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-DNXB3MkY.mjs').then(m => m.SimpleChatComponent)
|
|
37347
37557
|
}
|
|
37348
37558
|
];
|
|
37349
37559
|
|
|
@@ -38009,7 +38219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38009
38219
|
const coreSysActionRoutes = [
|
|
38010
38220
|
{
|
|
38011
38221
|
path: "",
|
|
38012
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-
|
|
38222
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-sys-action.component-BSbDclen.mjs').then(m => m.CoreSysActionComponent),
|
|
38013
38223
|
children: [
|
|
38014
38224
|
{
|
|
38015
38225
|
path: ":id",
|
|
@@ -39402,11 +39612,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
39402
39612
|
const sysSmtpClientRoutes = [
|
|
39403
39613
|
{
|
|
39404
39614
|
path: '',
|
|
39405
|
-
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client.component-
|
|
39615
|
+
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client.component-Cgk2GPJs.mjs').then(m => m.SysSmtpClientComponent),
|
|
39406
39616
|
children: [
|
|
39407
39617
|
{
|
|
39408
39618
|
path: ':id',
|
|
39409
|
-
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client-edit.component-
|
|
39619
|
+
loadComponent: () => import('./ngx-histaff-alpha-sys-smtp-client-edit.component-Bdk9FxRM.mjs').then(m => m.SysSmtpClientEditComponent),
|
|
39410
39620
|
outlet: 'corePageListAux'
|
|
39411
39621
|
}
|
|
39412
39622
|
]
|
|
@@ -40592,11 +40802,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
40592
40802
|
const coreDocGenRoutes = [
|
|
40593
40803
|
{
|
|
40594
40804
|
path: 'template-list',
|
|
40595
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
40805
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-BWd3Z9Ci.mjs').then(m => m.TemplateListComponent),
|
|
40596
40806
|
},
|
|
40597
40807
|
{
|
|
40598
40808
|
path: ":id",
|
|
40599
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
40809
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-C4-e6HAY.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
40600
40810
|
canDeactivate: [CanDeactivateGuard]
|
|
40601
40811
|
},
|
|
40602
40812
|
{
|
|
@@ -40625,7 +40835,7 @@ const coreFormDesignRoutes = [
|
|
|
40625
40835
|
},
|
|
40626
40836
|
{
|
|
40627
40837
|
path: ':id',
|
|
40628
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
40838
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-DUaLLOby.mjs').then(m => m.CoreFormDesignComponent)
|
|
40629
40839
|
}
|
|
40630
40840
|
];
|
|
40631
40841
|
|
|
@@ -41536,7 +41746,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
41536
41746
|
const coreNavigationTrackerRoutes = [
|
|
41537
41747
|
{
|
|
41538
41748
|
path: '',
|
|
41539
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
41749
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-Bm8WljGL.mjs').then(m => m.TrackerStudioComponent)
|
|
41540
41750
|
}
|
|
41541
41751
|
];
|
|
41542
41752
|
|
|
@@ -44639,33 +44849,33 @@ const coreWorkflowRoutes = [
|
|
|
44639
44849
|
{
|
|
44640
44850
|
path: 'form-assign/:id',
|
|
44641
44851
|
outlet: "formAssignAux",
|
|
44642
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
44852
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-CQhIM39W.mjs').then(m => m.WfFormAssignComponent),
|
|
44643
44853
|
canDeactivate: [CanDeactivateGuard]
|
|
44644
44854
|
}
|
|
44645
44855
|
]
|
|
44646
44856
|
},
|
|
44647
44857
|
{
|
|
44648
44858
|
path: 'global-config',
|
|
44649
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-
|
|
44859
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-DpMVfjpK.mjs').then(m => m.WfGlobalConfigComponent)
|
|
44650
44860
|
},
|
|
44651
44861
|
{
|
|
44652
44862
|
path: 'db-settings',
|
|
44653
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
44863
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-1hiYGimD.mjs').then(m => m.DbSettingsComponent)
|
|
44654
44864
|
},
|
|
44655
44865
|
{
|
|
44656
44866
|
path: 'workflow-consume',
|
|
44657
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
44867
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-WIWBCvGn.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
44658
44868
|
children: [
|
|
44659
44869
|
{
|
|
44660
44870
|
path: ':id',
|
|
44661
44871
|
outlet: "workflowConsume",
|
|
44662
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
44872
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-Cl5qbsPy.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
44663
44873
|
}
|
|
44664
44874
|
]
|
|
44665
44875
|
},
|
|
44666
44876
|
{
|
|
44667
44877
|
path: 'workflow-consume/:id',
|
|
44668
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
44878
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-Cl5qbsPy.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
44669
44879
|
},
|
|
44670
44880
|
{
|
|
44671
44881
|
path: 'workflow-group-edit/:id',
|
|
@@ -44675,21 +44885,21 @@ const coreWorkflowRoutes = [
|
|
|
44675
44885
|
},
|
|
44676
44886
|
{
|
|
44677
44887
|
path: 'design/:id',
|
|
44678
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
44888
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-Dw1u5JR1.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
44679
44889
|
},
|
|
44680
44890
|
]
|
|
44681
44891
|
},
|
|
44682
44892
|
{
|
|
44683
44893
|
path: 'react/:id',
|
|
44684
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
44894
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-DrhSJX5e.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
44685
44895
|
},
|
|
44686
44896
|
{
|
|
44687
44897
|
path: 'status/:id',
|
|
44688
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
44898
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-Dpd_4Hmw.mjs').then(m => m.WfInstanceStatusComponent)
|
|
44689
44899
|
},
|
|
44690
44900
|
{
|
|
44691
44901
|
path: 'lab',
|
|
44692
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-
|
|
44902
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-lab.component-CeBrXSSf.mjs').then(m => m.WfLabComponent)
|
|
44693
44903
|
}
|
|
44694
44904
|
];
|
|
44695
44905
|
|
|
@@ -47298,4 +47508,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
47298
47508
|
*/
|
|
47299
47509
|
|
|
47300
47510
|
export { READONLY_WORKFLOW_FIELDS as $, AppService as A, BaseComponent as B, ChatService as C, DragReorderDirective as D, EnumFormBaseContolType as E, FullscreenModalLoaderComponent as F, DomService as G, HtmlTooltipDirective as H, ImageErrorResolverDirective as I, EnumActorSourceType as J, CoreParamControlComponent as K, CoreRadioGroupComponent as L, MultiLanguageService as M, GptService as N, CoreRuleTreeService as O, CoreRuleTreeComponent as P, CoreStickerCollectionComponent as Q, ApplicationHelpService as R, StringHtmlPipe as S, TooltipDirective as T, HotKeysDirective as U, CoreDatetimeService as V, EnumCorePageEditMode as W, CoreFormComponent as X, NavigatorService as Y, JsonService as Z, EnumCoreButtonVNSCode as _, AppConfigService as a, CheckForUpdateService as a$, noneAutoClosedAlertOptions as a0, CoreButtonGroupVnsComponent as a1, CoreDropdownComponent as a2, EnumFilterOperator as a3, CoreDomDecisionEditorComponent 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, MapAvatarToServerPipe as u, TableCellPipe as v, alertOptions as w, SocketService as x, CoreFormDesignService as y, EnumWorkflowStepType as z };
|
|
47301
|
-
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-
|
|
47511
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-CMf5E5yd.mjs.map
|