@magic-xpa/angular 4.1300.0-dev4130.21 → 4.1300.0-dev4130.210

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/fesm2022/magic-xpa-angular.mjs +265 -137
  2. package/fesm2022/magic-xpa-angular.mjs.map +1 -1
  3. package/package.json +13 -11
  4. package/types/magic-xpa-angular.d.ts +2608 -0
  5. package/index.d.ts +0 -61
  6. package/src/controls.metadata.model.d.ts +0 -78
  7. package/src/interfaces/sub-form-definition.iterface.d.ts +0 -18
  8. package/src/magic.core.module.d.ts +0 -44
  9. package/src/services/ISubformMagicService.d.ts +0 -4
  10. package/src/services/OverlayWindowService.d.ts +0 -49
  11. package/src/services/StylesMapManager.d.ts +0 -8
  12. package/src/services/accessor.magic.service.d.ts +0 -311
  13. package/src/services/commands-collector.magic.service.d.ts +0 -18
  14. package/src/services/component-list.magic.service.d.ts +0 -50
  15. package/src/services/confirmation.components.magic.provider.d.ts +0 -24
  16. package/src/services/engine.magic.service.d.ts +0 -32
  17. package/src/services/exit.magic.service.d.ts +0 -12
  18. package/src/services/magic-color.service.d.ts +0 -25
  19. package/src/services/magic.lazy.loader.service.d.ts +0 -6
  20. package/src/services/magic.providers.d.ts +0 -110
  21. package/src/services/magic.services.d.ts +0 -22
  22. package/src/services/mg-date-adapter.d.ts +0 -38
  23. package/src/services/overlay.conainer.magic.provider.d.ts +0 -7
  24. package/src/services/router-commands.magic.service.d.ts +0 -23
  25. package/src/services/subform.magic.service.d.ts +0 -71
  26. package/src/services/table.magic.service.d.ts +0 -86
  27. package/src/services/task.magics.service.d.ts +0 -405
  28. package/src/services/title.magic.service.d.ts +0 -20
  29. package/src/ui/GuiInteractiveExecutor.d.ts +0 -25
  30. package/src/ui/components/base-magic-alert.component.d.ts +0 -26
  31. package/src/ui/components/base-magic-confirm.component.d.ts +0 -28
  32. package/src/ui/components/magic-alert.component.d.ts +0 -9
  33. package/src/ui/components/magic-confirmation-box.component.d.ts +0 -9
  34. package/src/ui/directives/NonMagicControlDirective.d.ts +0 -67
  35. package/src/ui/directives/magic/checkbox-noformcontrol.magic.directive.d.ts +0 -15
  36. package/src/ui/directives/magic/checkbox.magic.directive.d.ts +0 -34
  37. package/src/ui/directives/magic/combobox.magic.directive.d.ts +0 -19
  38. package/src/ui/directives/magic/form-controls/control-value-accessors/checkbox.cva.directive.d.ts +0 -13
  39. package/src/ui/directives/magic/form-controls/control-value-accessors/date.cva.directive.d.ts +0 -36
  40. package/src/ui/directives/magic/form-controls/control-value-accessors/default.cva.directive.d.ts +0 -13
  41. package/src/ui/directives/magic/input.noformcontrol.magic.directive.d.ts +0 -15
  42. package/src/ui/directives/magic/nocontrol.magic.directive.d.ts +0 -21
  43. package/src/ui/directives/magic/row.magic.directive.d.ts +0 -32
  44. package/src/ui/directives/magic-focus.directive.d.ts +0 -12
  45. package/src/ui/directives/magic.directive.d.ts +0 -127
  46. package/src/ui/directives/magicViewContainerRef.directive.d.ts +0 -11
  47. package/src/ui/directives/mgformat.magic.directive.d.ts +0 -82
  48. package/src/ui/directives/range-validator.magic.directive.d.ts +0 -33
  49. package/src/ui/magic-confirmationBox.d.ts +0 -25
  50. package/src/ui/magic-modal/base-magic-overlay-container.d.ts +0 -14
  51. package/src/ui/magic-modal/magic-modal-form.d.ts +0 -8
  52. package/src/ui/magic-modal/magic-modal-interface.d.ts +0 -45
  53. package/src/ui/magic-modal/magic-overlay-container-wrapper.d.ts +0 -50
  54. package/src/ui/magic-modal/magic-overlay-container.d.ts +0 -117
  55. package/src/ui/magic-root.component.d.ts +0 -85
  56. package/src/ui/mgerror.magic.component.d.ts +0 -39
  57. package/src/ui/pipes/date.magic.pipe.d.ts +0 -23
  58. package/src/ui/pipes/time.magic.pipe.d.ts +0 -14
  59. package/src/ui/pipes/time24.magic.pipe.d.ts +0 -10
  60. package/src/ui/router-container.magic.component.d.ts +0 -50
  61. package/src/ui/subform.magic.component.d.ts +0 -37
  62. package/src/ui/task-base.magic.component.d.ts +0 -112
  63. package/src/ui/utils.d.ts +0 -12
@@ -6,13 +6,13 @@ import { DatePipe, CommonModule, formatDate } from '@angular/common';
6
6
  import * as i2 from '@angular/router';
7
7
  import { NavigationEnd, RouterModule } from '@angular/router';
8
8
  import { FormGroup, FormControl, Validators, NG_VALIDATORS, NG_VALUE_ACCESSOR, CheckboxControlValueAccessor, DefaultValueAccessor, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
- import * as i3 from 'ng-dynamic-component';
9
+ import * as i2$3 from 'ng-dynamic-component';
10
10
  import { DynamicModule } from 'ng-dynamic-component';
11
11
  import { InteractiveCommandType, HtmlProperties, OverlayType, Styles, GuiConstants, CommandType, PIC, GuiEnvironment, Events, Modifiers } from '@magic-xpa/gui';
12
12
  import { MagicBridge, getGuiEventObj, CookieService, Environment, LastFocusedManager } from '@magic-xpa/engine';
13
13
  import { MagicProperties, Logger, StrUtil, StorageAttribute, PICInterface, MsgInterface, BindingLevel, StorageAttributeType, MgControlType } from '@magic-xpa/utils';
14
14
  import { filter, map, debounceTime, take } from 'rxjs/operators';
15
- import { Subject, EMPTY, fromEvent } from 'rxjs';
15
+ import { Subject, EMPTY, fromEvent, Observable } from 'rxjs';
16
16
  import { __decorate, __metadata } from 'tslib';
17
17
  import * as i2$1 from '@angular/cdk/drag-drop';
18
18
  import { DragDropModule, CdkDragHandle, CdkDrag } from '@angular/cdk/drag-drop';
@@ -23,6 +23,7 @@ import { maskitoTimeOptionsGenerator } from '@maskito/kit';
23
23
  import * as i2$2 from '@angular/cdk/platform';
24
24
  import { MaskitoModule } from '@maskito/angular';
25
25
  import { NativeDateAdapter, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
26
+ import { io } from 'socket.io-client';
26
27
 
27
28
  /**
28
29
  * @ignore
@@ -1046,50 +1047,50 @@ class MagicViewContainerRef {
1046
1047
 
1047
1048
  const _c0$3 = ["modalheader"];
1048
1049
  const _c1$1 = ["modalForeground"];
1049
- function MagicOverlayContainer_button_2_Template(rf, ctx) { if (rf & 1) {
1050
- const _r2 = i0.ɵɵgetCurrentView();
1050
+ function MagicOverlayContainer_Conditional_2_Template(rf, ctx) { if (rf & 1) {
1051
+ const _r1 = i0.ɵɵgetCurrentView();
1051
1052
  i0.ɵɵelementStart(0, "button", 14);
1052
- i0.ɵɵlistener("click", function MagicOverlayContainer_button_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnClose()); });
1053
+ i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnClose()); });
1053
1054
  i0.ɵɵtext(1, "X");
1054
1055
  i0.ɵɵelementEnd();
1055
1056
  } }
1056
- function MagicOverlayContainer_span_5_Template(rf, ctx) { if (rf & 1) {
1057
- const _r4 = i0.ɵɵgetCurrentView();
1057
+ function MagicOverlayContainer_Conditional_5_Template(rf, ctx) { if (rf & 1) {
1058
+ const _r3 = i0.ɵɵgetCurrentView();
1058
1059
  i0.ɵɵelementStart(0, "span", 15);
1059
- i0.ɵɵlistener("mousedown", function MagicOverlayContainer_span_5_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onResizeStart($event, "right")); });
1060
+ i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_5_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event, "right")); });
1060
1061
  i0.ɵɵelementEnd();
1061
1062
  } }
1062
- function MagicOverlayContainer_span_6_Template(rf, ctx) { if (rf & 1) {
1063
- const _r5 = i0.ɵɵgetCurrentView();
1063
+ function MagicOverlayContainer_Conditional_6_Template(rf, ctx) { if (rf & 1) {
1064
+ const _r4 = i0.ɵɵgetCurrentView();
1064
1065
  i0.ɵɵelementStart(0, "span", 16);
1065
- i0.ɵɵlistener("mousedown", function MagicOverlayContainer_span_6_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onResizeStart($event, "left")); });
1066
+ i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_6_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event, "left")); });
1066
1067
  i0.ɵɵelementEnd();
1067
1068
  } }
1068
- function MagicOverlayContainer_span_7_Template(rf, ctx) { if (rf & 1) {
1069
- const _r6 = i0.ɵɵgetCurrentView();
1069
+ function MagicOverlayContainer_Conditional_7_Template(rf, ctx) { if (rf & 1) {
1070
+ const _r5 = i0.ɵɵgetCurrentView();
1070
1071
  i0.ɵɵelementStart(0, "span", 17);
1071
- i0.ɵɵlistener("mousedown", function MagicOverlayContainer_span_7_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onResizeStart($event, "corner")); });
1072
+ i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_7_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event, "corner")); });
1072
1073
  i0.ɵɵelementEnd();
1073
1074
  } }
1074
- function MagicOverlayContainer_span_8_Template(rf, ctx) { if (rf & 1) {
1075
- const _r7 = i0.ɵɵgetCurrentView();
1075
+ function MagicOverlayContainer_Conditional_8_Template(rf, ctx) { if (rf & 1) {
1076
+ const _r6 = i0.ɵɵgetCurrentView();
1076
1077
  i0.ɵɵelementStart(0, "span", 18);
1077
- i0.ɵɵlistener("mousedown", function MagicOverlayContainer_span_8_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onResizeStart($event, "bottom")); });
1078
+ i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_8_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResizeStart($event, "bottom")); });
1078
1079
  i0.ɵɵelementEnd();
1079
1080
  } }
1080
- function MagicOverlayContainer_div_9_Template(rf, ctx) { if (rf & 1) {
1081
- const _r8 = i0.ɵɵgetCurrentView();
1081
+ function MagicOverlayContainer_Conditional_9_Template(rf, ctx) { if (rf & 1) {
1082
+ const _r7 = i0.ɵɵgetCurrentView();
1082
1083
  i0.ɵɵelementStart(0, "div", 19, 2);
1083
1084
  i0.ɵɵtext(2);
1084
1085
  i0.ɵɵelementStart(3, "button", 20);
1085
- i0.ɵɵlistener("click", function MagicOverlayContainer_div_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnClose()); });
1086
+ i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnClose()); });
1086
1087
  i0.ɵɵtext(4, "X");
1087
1088
  i0.ɵɵelementEnd()();
1088
1089
  } if (rf & 2) {
1089
- const ctx_r2 = i0.ɵɵnextContext();
1090
- i0.ɵɵclassProp("movable", ctx_r2.IsMovable());
1090
+ const ctx_r1 = i0.ɵɵnextContext();
1091
+ i0.ɵɵclassProp("movable", ctx_r1.IsMovable());
1091
1092
  i0.ɵɵadvance(2);
1092
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getText(), " ");
1093
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.getText(), " ");
1093
1094
  } }
1094
1095
  /**
1095
1096
  * Creates a modal window for Magic modal window components
@@ -1344,72 +1345,86 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
1344
1345
  }
1345
1346
  /** @nocollapse */ static ɵfac = function MagicOverlayContainer_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainer)(); };
1346
1347
  /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicOverlayContainer, selectors: [["app-magic-overlay-container"]], viewQuery: function MagicOverlayContainer_Query(rf, ctx) { if (rf & 1) {
1347
- i0.ɵɵviewQuery(_c0$3, 5);
1348
- i0.ɵɵviewQuery(_c1$1, 5);
1348
+ i0.ɵɵviewQuery(_c0$3, 5)(_c1$1, 5);
1349
1349
  } if (rf & 2) {
1350
1350
  let _t;
1351
1351
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerElementRef = _t.first);
1352
1352
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.foregroundElementRef = _t.first);
1353
1353
  } }, hostBindings: function MagicOverlayContainer_HostBindings(rf, ctx) { if (rf & 1) {
1354
- i0.ɵɵlistener("mousemove", function MagicOverlayContainer_mousemove_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow)("mouseup", function MagicOverlayContainer_mouseup_HostBindingHandler() { return ctx.onResizeEnd(); }, false, i0.ɵɵresolveWindow);
1355
- } }, inputs: { ModalComp: "ModalComp", ModalCompParameters: "ModalCompParameters" }, outputs: { onClose: "onClose" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 9, consts: [["modalForeground", ""], ["modalbody", ""], ["modalheader", ""], [1, "boundary-line"], [1, "modal-background", 3, "click"], ["tabindex", "-1", "style", "float:right; border: none; background-color: transparent; outline: none; color: white", 3, "click", 4, "ngIf"], ["cdkDragBoundary", ".boundary-line", "cdkDrag", "", 1, "modal-foreground", 3, "ngStyle", "cdkDragDisabled"], ["class", "dragHandle right", 3, "mousedown", 4, "ngIf"], ["class", "dragHandle left", 3, "mousedown", 4, "ngIf"], ["class", "dragHandle corner", 3, "mousedown", 4, "ngIf"], ["class", "dragHandle bottom", 3, "mousedown", 4, "ngIf"], ["class", "modal-header", "cdkDragHandle", "", 3, "movable", 4, "ngIf"], [3, "ngStyle"], ["magicViewContainerRef", ""], ["tabindex", "-1", 2, "float", "right", "border", "none", "background-color", "transparent", "outline", "none", "color", "white", 3, "click"], [1, "dragHandle", "right", 3, "mousedown"], [1, "dragHandle", "left", 3, "mousedown"], [1, "dragHandle", "corner", 3, "mousedown"], [1, "dragHandle", "bottom", 3, "mousedown"], ["cdkDragHandle", "", 1, "modal-header"], ["tabindex", "-1", 2, "float", "right", 3, "click"]], template: function MagicOverlayContainer_Template(rf, ctx) { if (rf & 1) {
1356
- const _r1 = i0.ɵɵgetCurrentView();
1354
+ i0.ɵɵlistener("mousemove", function MagicOverlayContainer_mousemove_HostBindingHandler($event) { return ctx.onResize($event); }, i0.ɵɵresolveWindow)("mouseup", function MagicOverlayContainer_mouseup_HostBindingHandler() { return ctx.onResizeEnd(); }, i0.ɵɵresolveWindow);
1355
+ } }, inputs: { ModalComp: "ModalComp", ModalCompParameters: "ModalCompParameters" }, outputs: { onClose: "onClose" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 9, consts: [["modalForeground", ""], ["modalbody", ""], ["modalheader", ""], [1, "boundary-line"], [1, "modal-background", 3, "click"], ["tabindex", "-1", 2, "float", "right", "border", "none", "background-color", "transparent", "outline", "none", "color", "white"], ["cdkDragBoundary", ".boundary-line", "cdkDrag", "", 1, "modal-foreground", 3, "ngStyle", "cdkDragDisabled"], [1, "dragHandle", "right"], [1, "dragHandle", "left"], [1, "dragHandle", "corner"], [1, "dragHandle", "bottom"], ["cdkDragHandle", "", 1, "modal-header", 3, "movable"], [3, "ngStyle"], ["magicViewContainerRef", ""], ["tabindex", "-1", 2, "float", "right", "border", "none", "background-color", "transparent", "outline", "none", "color", "white", 3, "click"], [1, "dragHandle", "right", 3, "mousedown"], [1, "dragHandle", "left", 3, "mousedown"], [1, "dragHandle", "corner", 3, "mousedown"], [1, "dragHandle", "bottom", 3, "mousedown"], ["cdkDragHandle", "", 1, "modal-header"], ["tabindex", "-1", 2, "float", "right", 3, "click"]], template: function MagicOverlayContainer_Template(rf, ctx) { if (rf & 1) {
1357
1356
  i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
1358
- i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.OnBackgroundClick()); });
1359
- i0.ɵɵtemplate(2, MagicOverlayContainer_button_2_Template, 2, 0, "button", 5);
1357
+ i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() { return ctx.OnBackgroundClick(); });
1358
+ i0.ɵɵconditionalCreate(2, MagicOverlayContainer_Conditional_2_Template, 2, 0, "button", 5);
1360
1359
  i0.ɵɵelementEnd();
1361
1360
  i0.ɵɵelementStart(3, "div", 6, 0);
1362
- i0.ɵɵtemplate(5, MagicOverlayContainer_span_5_Template, 1, 0, "span", 7)(6, MagicOverlayContainer_span_6_Template, 1, 0, "span", 8)(7, MagicOverlayContainer_span_7_Template, 1, 0, "span", 9)(8, MagicOverlayContainer_span_8_Template, 1, 0, "span", 10)(9, MagicOverlayContainer_div_9_Template, 5, 3, "div", 11);
1361
+ i0.ɵɵconditionalCreate(5, MagicOverlayContainer_Conditional_5_Template, 1, 0, "span", 7);
1362
+ i0.ɵɵconditionalCreate(6, MagicOverlayContainer_Conditional_6_Template, 1, 0, "span", 8);
1363
+ i0.ɵɵconditionalCreate(7, MagicOverlayContainer_Conditional_7_Template, 1, 0, "span", 9);
1364
+ i0.ɵɵconditionalCreate(8, MagicOverlayContainer_Conditional_8_Template, 1, 0, "span", 10);
1365
+ i0.ɵɵconditionalCreate(9, MagicOverlayContainer_Conditional_9_Template, 5, 3, "div", 11);
1363
1366
  i0.ɵɵelementStart(10, "div", 12);
1364
1367
  i0.ɵɵelement(11, "div", 13, 1);
1365
1368
  i0.ɵɵelementEnd()()();
1366
1369
  } if (rf & 2) {
1367
1370
  i0.ɵɵadvance(2);
1368
- i0.ɵɵproperty("ngIf", !ctx.getShowTitleBar());
1371
+ i0.ɵɵconditional(!ctx.getShowTitleBar() ? 2 : -1);
1369
1372
  i0.ɵɵadvance();
1370
1373
  i0.ɵɵproperty("ngStyle", ctx.getStyle())("cdkDragDisabled", !ctx.IsMovable());
1371
1374
  i0.ɵɵadvance(2);
1372
- i0.ɵɵproperty("ngIf", ctx.IsResizable() && !ctx.isRtl);
1375
+ i0.ɵɵconditional(ctx.IsResizable() && !ctx.isRtl ? 5 : -1);
1373
1376
  i0.ɵɵadvance();
1374
- i0.ɵɵproperty("ngIf", ctx.IsResizable() && ctx.isRtl);
1377
+ i0.ɵɵconditional(ctx.IsResizable() && ctx.isRtl ? 6 : -1);
1375
1378
  i0.ɵɵadvance();
1376
- i0.ɵɵproperty("ngIf", ctx.IsResizable());
1379
+ i0.ɵɵconditional(ctx.IsResizable() ? 7 : -1);
1377
1380
  i0.ɵɵadvance();
1378
- i0.ɵɵproperty("ngIf", ctx.IsResizable());
1381
+ i0.ɵɵconditional(ctx.IsResizable() ? 8 : -1);
1379
1382
  i0.ɵɵadvance();
1380
- i0.ɵɵproperty("ngIf", ctx.getShowTitleBar());
1383
+ i0.ɵɵconditional(ctx.getShowTitleBar() ? 9 : -1);
1381
1384
  i0.ɵɵadvance();
1382
1385
  i0.ɵɵproperty("ngStyle", ctx.getClientAreaStyles());
1383
- } }, dependencies: [i1.NgIf, i1.NgStyle, i2$1.CdkDragHandle, i2$1.CdkDrag, MagicViewContainerRef], styles: [".modal-foreground[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#fff}.modal-background[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#000;opacity:.75}.modal-header[_ngcontent-%COMP%]{background-color:beige;border-bottom:2px solid red}.modal-header.movable[_ngcontent-%COMP%]:active{cursor:move}.container[_ngcontent-%COMP%]{position:relative}.dragHandle[_ngcontent-%COMP%]{position:absolute}.dragHandle.corner[_ngcontent-%COMP%]{width:10px;right:0;bottom:0;height:10px;cursor:nwse-resize;background:linear-gradient(135deg,rgba(0,0,0,.4) 50%,transparent 50%);position:absolute}[dir=\"rtl\"][_nghost-%COMP%] .dragHandle.corner[_ngcontent-%COMP%], [dir=\"rtl\"] [_nghost-%COMP%] .dragHandle.corner[_ngcontent-%COMP%]{right:auto!important;left:0;cursor:nesw-resize;background:linear-gradient(225deg,rgba(0,0,0,.4) 50%,transparent 50%)}.dragHandle.left[_ngcontent-%COMP%]{width:2px;left:-2px;height:100%;cursor:ew-resize}.dragHandle.right[_ngcontent-%COMP%]{width:2px;right:-2px;height:100%;cursor:ew-resize}.dragHandle.bottom[_ngcontent-%COMP%]{height:2px;bottom:-2px;width:100%;cursor:ns-resize}.boundary-line[_ngcontent-%COMP%]{width:100%;height:100%;max-width:100%}"] });
1386
+ } }, dependencies: [i1.NgStyle, i2$1.CdkDragHandle, i2$1.CdkDrag, MagicViewContainerRef], styles: [".modal-foreground[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#fff}.modal-background[_ngcontent-%COMP%]{position:fixed;inset:0;background-color:#000;opacity:.75}.modal-header[_ngcontent-%COMP%]{background-color:beige;border-bottom:2px solid red}.modal-header.movable[_ngcontent-%COMP%]:active{cursor:move}.container[_ngcontent-%COMP%]{position:relative}.dragHandle[_ngcontent-%COMP%]{position:absolute}.dragHandle.corner[_ngcontent-%COMP%]{width:10px;right:0;bottom:0;height:10px;cursor:nwse-resize;background:linear-gradient(135deg,rgba(0,0,0,.4) 50%,transparent 50%);position:absolute}[dir=\"rtl\"][_nghost-%COMP%] .dragHandle.corner[_ngcontent-%COMP%], [dir=\"rtl\"] [_nghost-%COMP%] .dragHandle.corner[_ngcontent-%COMP%]{right:auto!important;left:0;cursor:nesw-resize;background:linear-gradient(225deg,rgba(0,0,0,.4) 50%,transparent 50%)}.dragHandle.left[_ngcontent-%COMP%]{width:2px;left:-2px;height:100%;cursor:ew-resize}.dragHandle.right[_ngcontent-%COMP%]{width:2px;right:-2px;height:100%;cursor:ew-resize}.dragHandle.bottom[_ngcontent-%COMP%]{height:2px;bottom:-2px;width:100%;cursor:ns-resize}.boundary-line[_ngcontent-%COMP%]{width:100%;height:100%;max-width:100%}"] });
1384
1387
  }
1385
1388
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicOverlayContainer, [{
1386
1389
  type: Component,
1387
- args: [{ selector: 'app-magic-overlay-container', template: `
1388
- <div class="boundary-line">
1389
-
1390
- <div class="modal-background" (click)="OnBackgroundClick()">
1391
- <button (click)="OnClose()" tabindex="-1" style="float:right; border: none; background-color: transparent; outline: none; color: white" *ngIf="!getShowTitleBar()">X</button>
1392
- </div>
1393
-
1394
- <div #modalForeground class="modal-foreground" [ngStyle]="getStyle()" cdkDragBoundary=".boundary-line" cdkDrag [cdkDragDisabled]="!IsMovable()">
1395
-
1396
- <span *ngIf="IsResizable() && !isRtl" class="dragHandle right" (mousedown)="onResizeStart($event, 'right')"></span>
1397
- <span *ngIf="IsResizable() && isRtl" class="dragHandle left" (mousedown)="onResizeStart($event, 'left')"></span>
1398
- <span *ngIf="IsResizable()" class="dragHandle corner" (mousedown)="onResizeStart($event, 'corner')"></span>
1399
- <span *ngIf="IsResizable()" class="dragHandle bottom" (mousedown)="onResizeStart($event, 'bottom')"></span>
1400
-
1401
- <div #modalheader class="modal-header" *ngIf="getShowTitleBar()" cdkDragHandle [class.movable]="IsMovable()">
1402
- {{getText()}}
1403
- <button (click)="OnClose()" style="float:right" tabindex="-1">X</button>
1404
- </div>
1405
-
1406
- <div [ngStyle]="getClientAreaStyles()">
1407
- <div #modalbody magicViewContainerRef>
1408
- </div>
1409
- </div>
1410
- </div>
1411
- </div>
1412
- `, standalone: false, styles: [".modal-foreground{position:fixed;inset:0;background-color:#fff}.modal-background{position:fixed;inset:0;background-color:#000;opacity:.75}.modal-header{background-color:beige;border-bottom:2px solid red}.modal-header.movable:active{cursor:move}.container{position:relative}.dragHandle{position:absolute}.dragHandle.corner{width:10px;right:0;bottom:0;height:10px;cursor:nwse-resize;background:linear-gradient(135deg,rgba(0,0,0,.4) 50%,transparent 50%);position:absolute}:host-context([dir=\"rtl\"]) .dragHandle.corner{right:auto!important;left:0;cursor:nesw-resize;background:linear-gradient(225deg,rgba(0,0,0,.4) 50%,transparent 50%)}.dragHandle.left{width:2px;left:-2px;height:100%;cursor:ew-resize}.dragHandle.right{width:2px;right:-2px;height:100%;cursor:ew-resize}.dragHandle.bottom{height:2px;bottom:-2px;width:100%;cursor:ns-resize}.boundary-line{width:100%;height:100%;max-width:100%}\n"] }]
1390
+ args: [{ selector: 'app-magic-overlay-container', template: `
1391
+ <div class="boundary-line">
1392
+
1393
+ <div class="modal-background" (click)="OnBackgroundClick()">
1394
+ @if (!getShowTitleBar()) {
1395
+ <button (click)="OnClose()" tabindex="-1" style="float:right; border: none; background-color: transparent; outline: none; color: white">X</button>
1396
+ }
1397
+ </div>
1398
+
1399
+ <div #modalForeground class="modal-foreground" [ngStyle]="getStyle()" cdkDragBoundary=".boundary-line" cdkDrag [cdkDragDisabled]="!IsMovable()">
1400
+
1401
+ @if (IsResizable() && !isRtl) {
1402
+ <span class="dragHandle right" (mousedown)="onResizeStart($event, 'right')"></span>
1403
+ }
1404
+ @if (IsResizable() && isRtl) {
1405
+ <span class="dragHandle left" (mousedown)="onResizeStart($event, 'left')"></span>
1406
+ }
1407
+ @if (IsResizable()) {
1408
+ <span class="dragHandle corner" (mousedown)="onResizeStart($event, 'corner')"></span>
1409
+ }
1410
+ @if (IsResizable()) {
1411
+ <span class="dragHandle bottom" (mousedown)="onResizeStart($event, 'bottom')"></span>
1412
+ }
1413
+
1414
+ @if (getShowTitleBar()) {
1415
+ <div #modalheader class="modal-header" cdkDragHandle [class.movable]="IsMovable()">
1416
+ {{getText()}}
1417
+ <button (click)="OnClose()" style="float:right" tabindex="-1">X</button>
1418
+ </div>
1419
+ }
1420
+
1421
+ <div [ngStyle]="getClientAreaStyles()">
1422
+ <div #modalbody magicViewContainerRef>
1423
+ </div>
1424
+ </div>
1425
+ </div>
1426
+ </div>
1427
+ `, standalone: false, styles: [".modal-foreground{position:fixed;inset:0;background-color:#fff}.modal-background{position:fixed;inset:0;background-color:#000;opacity:.75}.modal-header{background-color:beige;border-bottom:2px solid red}.modal-header.movable:active{cursor:move}.container{position:relative}.dragHandle{position:absolute}.dragHandle.corner{width:10px;right:0;bottom:0;height:10px;cursor:nwse-resize;background:linear-gradient(135deg,rgba(0,0,0,.4) 50%,transparent 50%);position:absolute}:host-context([dir=\"rtl\"]) .dragHandle.corner{right:auto!important;left:0;cursor:nesw-resize;background:linear-gradient(225deg,rgba(0,0,0,.4) 50%,transparent 50%)}.dragHandle.left{width:2px;left:-2px;height:100%;cursor:ew-resize}.dragHandle.right{width:2px;right:-2px;height:100%;cursor:ew-resize}.dragHandle.bottom{height:2px;bottom:-2px;width:100%;cursor:ns-resize}.boundary-line{width:100%;height:100%;max-width:100%}\n"] }]
1413
1428
  }], () => [], { headerElementRef: [{
1414
1429
  type: ViewChild,
1415
1430
  args: ['modalheader', { static: false }]
@@ -1429,7 +1444,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
1429
1444
  type: HostListener,
1430
1445
  args: ['window:mouseup']
1431
1446
  }] }); })();
1432
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber: 52 }); })();
1447
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber: 64 }); })();
1433
1448
 
1434
1449
  /**
1435
1450
  * Service managing overlay windows
@@ -1697,7 +1712,7 @@ class MagicAlertComponent extends BaseMagicAlertComponent {
1697
1712
  i0.ɵɵelementEnd()()();
1698
1713
  } if (rf & 2) {
1699
1714
  i0.ɵɵadvance(3);
1700
- i0.ɵɵtextInterpolate1(" ", ctx.title, "");
1715
+ i0.ɵɵtextInterpolate1(" ", ctx.title);
1701
1716
  i0.ɵɵadvance(2);
1702
1717
  i0.ɵɵtextInterpolate1("", ctx.message, " ");
1703
1718
  } }, styles: [".mg-message-background[_ngcontent-%COMP%]{background-color:#f5f5f5;width:40%;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;padding:17px;border-radius:5px;text-align:center;margin-top:10%;margin-left:auto;margin-right:auto;border:1px solid gray}button[_ngcontent-%COMP%]{background-color:#8cd4f5;color:#fff;border:none;box-shadow:none;font-size:17px;font-weight:500;-webkit-border-radius:4px;border-radius:5px;padding:10px 32px;margin:26px 5px 0;cursor:pointer}"] });
@@ -1736,7 +1751,7 @@ class MagicConfirmationBoxComponent extends BaseMagicConfirmComponent {
1736
1751
  i0.ɵɵelementEnd()()();
1737
1752
  } if (rf & 2) {
1738
1753
  i0.ɵɵadvance(3);
1739
- i0.ɵɵtextInterpolate1(" ", ctx.title, "");
1754
+ i0.ɵɵtextInterpolate1(" ", ctx.title);
1740
1755
  i0.ɵɵadvance();
1741
1756
  i0.ɵɵtextInterpolate1(" ", ctx.message, " ");
1742
1757
  } }, styles: [".mg-message-background[_ngcontent-%COMP%]{background-color:#f5f5f5;width:40%;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;padding:17px;border-radius:5px;text-align:center;margin-top:10%;margin-left:auto;margin-right:auto;border:1px solid gray}button[_ngcontent-%COMP%]{background-color:#8cd4f5;color:#fff;border:none;box-shadow:none;font-size:17px;font-weight:500;-webkit-border-radius:4px;border-radius:5px;padding:10px 32px;margin:26px 5px 0;cursor:pointer}button.cancel[_ngcontent-%COMP%]{background-color:#c1c1c1}"] });
@@ -2981,12 +2996,13 @@ class TaskMagicService {
2981
2996
  }
2982
2997
  /**
2983
2998
  * Handle the Radio button "change" event
2984
- * @param event The event received from the UI
2985
2999
  * @param idx Id of the control raising the event
3000
+ * @param rowId Id of the row containing the control (defaults to '0' for non-table controls)
2986
3001
  */
2987
- mgOnRadioSelectionChanged(idx) {
2988
- let result = this.getFormControl('0', idx);
2989
- let guiEvent = getGuiEventObj('selectionchanged', idx, 0);
3002
+ mgOnRadioSelectionChanged(idx, rowId = '0') {
3003
+ // Fetch the Form Control for the specific table row (or row '0' for non-table child controls)
3004
+ let result = this.getFormControl(rowId, idx);
3005
+ let guiEvent = getGuiEventObj('selectionchanged', idx, +rowId);
2990
3006
  if (typeof result.value !== 'number')
2991
3007
  guiEvent.Value = result.value.index;
2992
3008
  else
@@ -5616,8 +5632,8 @@ class RangeValidatorMagicDirective {
5616
5632
  }]
5617
5633
  }], () => [{ type: TaskMagicService }, { type: i0.ViewContainerRef }], null); })();
5618
5634
 
5619
- function SubformMagicComponent_ndc_dynamic_0_Template(rf, ctx) { if (rf & 1) {
5620
- i0.ɵɵelement(0, "ndc-dynamic", 1);
5635
+ function SubformMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5636
+ i0.ɵɵelement(0, "ndc-dynamic", 0);
5621
5637
  } if (rf & 2) {
5622
5638
  const ctx_r0 = i0.ɵɵnextContext();
5623
5639
  i0.ɵɵproperty("ndcDynamicComponent", ctx_r0.Component)("ndcDynamicInputs", ctx_r0.Parameters);
@@ -5663,34 +5679,35 @@ class SubformMagicComponent {
5663
5679
  return this.mgSub.mgGetParameters(this.id);
5664
5680
  }
5665
5681
  /** @nocollapse */ static ɵfac = function SubformMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicComponent)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(SubformMagicService)); };
5666
- /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SubformMagicComponent, selectors: [["magic-subform"]], inputs: { magic: "magic" }, standalone: false, decls: 1, vars: 1, consts: [[3, "ndcDynamicComponent", "ndcDynamicInputs", 4, "ngIf"], [3, "ndcDynamicComponent", "ndcDynamicInputs"]], template: function SubformMagicComponent_Template(rf, ctx) { if (rf & 1) {
5667
- i0.ɵɵtemplate(0, SubformMagicComponent_ndc_dynamic_0_Template, 1, 2, "ndc-dynamic", 0);
5682
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SubformMagicComponent, selectors: [["magic-subform"]], inputs: { magic: "magic" }, standalone: false, decls: 1, vars: 1, consts: [[3, "ndcDynamicComponent", "ndcDynamicInputs"]], template: function SubformMagicComponent_Template(rf, ctx) { if (rf & 1) {
5683
+ i0.ɵɵconditionalCreate(0, SubformMagicComponent_Conditional_0_Template, 1, 2, "ndc-dynamic", 0);
5668
5684
  } if (rf & 2) {
5669
- i0.ɵɵproperty("ngIf", ctx.Component);
5670
- } }, dependencies: [i1.NgIf, i3.DynamicIoDirective, i3.DynamicComponent], encapsulation: 2 });
5685
+ i0.ɵɵconditional(ctx.Component ? 0 : -1);
5686
+ } }, dependencies: [i2$3.DynamicIoDirective, i2$3.DynamicComponent], encapsulation: 2 });
5671
5687
  }
5672
5688
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicComponent, [{
5673
5689
  type: Component,
5674
5690
  args: [{
5675
5691
  selector: 'magic-subform',
5676
- template: `
5677
- <ndc-dynamic
5678
- *ngIf="Component"
5679
- [ndcDynamicComponent]="Component"
5680
- [ndcDynamicInputs]="Parameters">
5681
- </ndc-dynamic>
5682
- `,
5692
+ template: `
5693
+ @if (Component) {
5694
+ <ndc-dynamic
5695
+ [ndcDynamicComponent]="Component"
5696
+ [ndcDynamicInputs]="Parameters">
5697
+ </ndc-dynamic>
5698
+ }
5699
+ `,
5683
5700
  standalone: false
5684
5701
  }]
5685
5702
  }], () => [{ type: i0.ViewContainerRef }, { type: SubformMagicService }], { magic: [{
5686
5703
  type: Input,
5687
5704
  args: ['magic']
5688
5705
  }] }); })();
5689
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber: 22 }); })();
5706
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber: 23 }); })();
5690
5707
 
5691
5708
  const _c0$1 = ["customContent"];
5692
5709
  const _c1 = ["*"];
5693
- function ErrorMagicComponent_div_0_span_4_Template(rf, ctx) { if (rf & 1) {
5710
+ function ErrorMagicComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
5694
5711
  i0.ɵɵelementStart(0, "span");
5695
5712
  i0.ɵɵtext(1);
5696
5713
  i0.ɵɵelementEnd();
@@ -5699,16 +5716,16 @@ function ErrorMagicComponent_div_0_span_4_Template(rf, ctx) { if (rf & 1) {
5699
5716
  i0.ɵɵadvance();
5700
5717
  i0.ɵɵtextInterpolate1(" ", ctx_r0.mgService.getErrMsg(ctx_r0.id, ctx_r0.rowId), " ");
5701
5718
  } }
5702
- function ErrorMagicComponent_div_0_Template(rf, ctx) { if (rf & 1) {
5719
+ function ErrorMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
5703
5720
  i0.ɵɵelementStart(0, "div")(1, "div", null, 0);
5704
5721
  i0.ɵɵprojection(3);
5705
5722
  i0.ɵɵelementEnd();
5706
- i0.ɵɵtemplate(4, ErrorMagicComponent_div_0_span_4_Template, 2, 1, "span", 1);
5723
+ i0.ɵɵconditionalCreate(4, ErrorMagicComponent_Conditional_0_Conditional_4_Template, 2, 1, "span");
5707
5724
  i0.ɵɵelementEnd();
5708
5725
  } if (rf & 2) {
5709
5726
  const ctx_r0 = i0.ɵɵnextContext();
5710
5727
  i0.ɵɵadvance(4);
5711
- i0.ɵɵproperty("ngIf", ctx_r0.defaultDisplay);
5728
+ i0.ɵɵconditional(ctx_r0.defaultDisplay ? 4 : -1);
5712
5729
  } }
5713
5730
  /**
5714
5731
  * Represents a Magic subform
@@ -5792,25 +5809,29 @@ class ErrorMagicComponent {
5792
5809
  } if (rf & 2) {
5793
5810
  let _t;
5794
5811
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomContent = _t.first);
5795
- } }, inputs: { magic: "magic", rowId1: [0, "rowId", "rowId1"] }, standalone: false, ngContentSelectors: _c1, decls: 1, vars: 1, consts: [["customContent", ""], [4, "ngIf"]], template: function ErrorMagicComponent_Template(rf, ctx) { if (rf & 1) {
5812
+ } }, inputs: { magic: "magic", rowId1: [0, "rowId", "rowId1"] }, standalone: false, ngContentSelectors: _c1, decls: 1, vars: 1, consts: [["customContent", ""]], template: function ErrorMagicComponent_Template(rf, ctx) { if (rf & 1) {
5796
5813
  i0.ɵɵprojectionDef();
5797
- i0.ɵɵtemplate(0, ErrorMagicComponent_div_0_Template, 5, 1, "div", 1);
5814
+ i0.ɵɵconditionalCreate(0, ErrorMagicComponent_Conditional_0_Template, 5, 1, "div");
5798
5815
  } if (rf & 2) {
5799
- i0.ɵɵproperty("ngIf", ctx.HasErrors(ctx.id));
5800
- } }, dependencies: [i1.NgIf], encapsulation: 2 });
5816
+ i0.ɵɵconditional(ctx.HasErrors(ctx.id) ? 0 : -1);
5817
+ } }, encapsulation: 2 });
5801
5818
  }
5802
5819
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorMagicComponent, [{
5803
5820
  type: Component,
5804
5821
  args: [{
5805
5822
  selector: 'mgError',
5806
- template: `<div *ngIf="HasErrors(id)">
5807
- <div #customContent>
5808
- <ng-content></ng-content>
5809
- </div>
5810
- <span *ngIf="defaultDisplay">
5811
- {{mgService.getErrMsg(id, rowId)}}
5812
- </span>
5813
- </div>
5823
+ template: `@if (HasErrors(id)) {
5824
+ <div>
5825
+ <div #customContent>
5826
+ <ng-content></ng-content>
5827
+ </div>
5828
+ @if (defaultDisplay) {
5829
+ <span>
5830
+ {{mgService.getErrMsg(id, rowId)}}
5831
+ </span>
5832
+ }
5833
+ </div>
5834
+ }
5814
5835
  `,
5815
5836
  standalone: false
5816
5837
  }]
@@ -5824,7 +5845,7 @@ class ErrorMagicComponent {
5824
5845
  type: ViewChild,
5825
5846
  args: ['customContent', { static: false }]
5826
5847
  }] }); })();
5827
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src/ui/mgerror.magic.component.ts", lineNumber: 24 }); })();
5848
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src/ui/mgerror.magic.component.ts", lineNumber: 28 }); })();
5828
5849
 
5829
5850
  /**
5830
5851
  * Directive for checkboxes, to handle the 'change' event
@@ -5993,15 +6014,15 @@ class ExitMagicService {
5993
6014
  }], null, null); })();
5994
6015
 
5995
6016
  const _c0 = ["magicRoot"];
5996
- function MagicShellComponent_ndc_dynamic_2_Template(rf, ctx) { if (rf & 1) {
5997
- i0.ɵɵelement(0, "ndc-dynamic", 6);
6017
+ function MagicShellComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
6018
+ i0.ɵɵelement(0, "ndc-dynamic", 3);
5998
6019
  } if (rf & 2) {
5999
6020
  const ctx_r0 = i0.ɵɵnextContext();
6000
6021
  i0.ɵɵproperty("ndcDynamicComponent", ctx_r0.RootComponent)("ndcDynamicInputs", ctx_r0.RootComponentParameters);
6001
6022
  } }
6002
- function MagicShellComponent_div_5_Template(rf, ctx) { if (rf & 1) {
6003
- i0.ɵɵelementStart(0, "div", 7);
6004
- i0.ɵɵelementContainer(1, 8);
6023
+ function MagicShellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
6024
+ i0.ɵɵelementStart(0, "div", 5);
6025
+ i0.ɵɵelementContainer(1, 6);
6005
6026
  i0.ɵɵelementEnd();
6006
6027
  } if (rf & 2) {
6007
6028
  const ctx_r0 = i0.ɵɵnextContext();
@@ -6010,7 +6031,7 @@ function MagicShellComponent_div_5_Template(rf, ctx) { if (rf & 1) {
6010
6031
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate ? ctx_r0.SpinnerTemplate : defaultSpinner_r2);
6011
6032
  } }
6012
6033
  function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
6013
- i0.ɵɵelement(0, "div", 9);
6034
+ i0.ɵɵelement(0, "div", 7);
6014
6035
  } }
6015
6036
  /**
6016
6037
  * Root Magic component
@@ -6205,46 +6226,50 @@ class MagicShellComponent {
6205
6226
  let _t;
6206
6227
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootMagicElementRef = _t.first);
6207
6228
  } }, hostBindings: function MagicShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
6208
- i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, false, i0.ɵɵresolveWindow)("unload", function MagicShellComponent_unload_HostBindingHandler($event) { return ctx.onUnload($event); }, false, i0.ɵɵresolveWindow);
6229
+ i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, i0.ɵɵresolveWindow)("unload", function MagicShellComponent_unload_HostBindingHandler($event) { return ctx.onUnload($event); }, i0.ɵɵresolveWindow);
6209
6230
  } }, inputs: { SpinnerTemplate: "SpinnerTemplate" }, standalone: false, features: [i0.ɵɵProvidersFeature([
6210
6231
  // ExitMagicService
6211
- ])], decls: 8, vars: 2, consts: [["magicRoot", ""], ["overlayWindowsContainer", ""], ["defaultSpinner", ""], [3, "ndcDynamicComponent", "ndcDynamicInputs", 4, "ngIf"], ["magicViewContainerRef", ""], ["class", "spinner-background", 4, "ngIf"], [3, "ndcDynamicComponent", "ndcDynamicInputs"], [1, "spinner-background"], [3, "ngTemplateOutlet"], [1, "mgSpinnerClass"]], template: function MagicShellComponent_Template(rf, ctx) { if (rf & 1) {
6232
+ ])], decls: 8, vars: 2, consts: [["magicRoot", ""], ["overlayWindowsContainer", ""], ["defaultSpinner", ""], [3, "ndcDynamicComponent", "ndcDynamicInputs"], ["magicViewContainerRef", ""], [1, "spinner-background"], [3, "ngTemplateOutlet"], [1, "mgSpinnerClass"]], template: function MagicShellComponent_Template(rf, ctx) { if (rf & 1) {
6212
6233
  i0.ɵɵelementStart(0, "div", null, 0);
6213
- i0.ɵɵtemplate(2, MagicShellComponent_ndc_dynamic_2_Template, 1, 2, "ndc-dynamic", 3);
6234
+ i0.ɵɵconditionalCreate(2, MagicShellComponent_Conditional_2_Template, 1, 2, "ndc-dynamic", 3);
6214
6235
  i0.ɵɵelement(3, "div", 4, 1);
6215
6236
  i0.ɵɵelementEnd();
6216
- i0.ɵɵtemplate(5, MagicShellComponent_div_5_Template, 2, 1, "div", 5)(6, MagicShellComponent_ng_template_6_Template, 1, 0, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
6237
+ i0.ɵɵconditionalCreate(5, MagicShellComponent_Conditional_5_Template, 2, 1, "div", 5);
6238
+ i0.ɵɵtemplate(6, MagicShellComponent_ng_template_6_Template, 1, 0, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
6217
6239
  } if (rf & 2) {
6218
6240
  i0.ɵɵadvance(2);
6219
- i0.ɵɵproperty("ngIf", ctx.RootComponent !== null);
6241
+ i0.ɵɵconditional(ctx.RootComponent !== null ? 2 : -1);
6220
6242
  i0.ɵɵadvance(3);
6221
- i0.ɵɵproperty("ngIf", ctx.showSpinner);
6222
- } }, dependencies: [i1.NgIf, i1.NgTemplateOutlet, i3.DynamicIoDirective, i3.DynamicComponent, MagicViewContainerRef], styles: [".mgSpinnerClass[_ngcontent-%COMP%]{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:_ngcontent-%COMP%_spin 2s linear infinite}.spinner-background[_ngcontent-%COMP%]{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"] });
6243
+ i0.ɵɵconditional(ctx.showSpinner ? 5 : -1);
6244
+ } }, dependencies: [i1.NgTemplateOutlet, i2$3.DynamicIoDirective, i2$3.DynamicComponent, MagicViewContainerRef], styles: [".mgSpinnerClass[_ngcontent-%COMP%]{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:_ngcontent-%COMP%_spin 2s linear infinite}.spinner-background[_ngcontent-%COMP%]{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"] });
6223
6245
  }
6224
6246
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicShellComponent, [{
6225
6247
  type: Component,
6226
6248
  args: [{ selector: 'magic-root', providers: [
6227
6249
  // ExitMagicService
6228
- ], template: `
6229
- <div #magicRoot>
6230
- <ndc-dynamic
6231
- *ngIf = "RootComponent !== null"
6232
- [ndcDynamicComponent]="RootComponent"
6233
- [ndcDynamicInputs] ="RootComponentParameters">
6234
- </ndc-dynamic>
6235
-
6236
- <div #overlayWindowsContainer magicViewContainerRef>
6237
- </div>
6238
- </div>
6239
-
6240
- <div class="spinner-background" *ngIf="showSpinner">
6241
- <ng-container [ngTemplateOutlet]="SpinnerTemplate ? SpinnerTemplate:defaultSpinner"></ng-container>
6242
- </div>
6243
-
6244
- <ng-template #defaultSpinner>
6245
- <div class="mgSpinnerClass"></div>
6246
- </ng-template>
6247
- `, standalone: false, styles: [".mgSpinnerClass{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:spin 2s linear infinite}.spinner-background{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
6250
+ ], template: `
6251
+ <div #magicRoot>
6252
+ @if (RootComponent !== null) {
6253
+ <ndc-dynamic
6254
+ [ndcDynamicComponent]="RootComponent"
6255
+ [ndcDynamicInputs] ="RootComponentParameters">
6256
+ </ndc-dynamic>
6257
+ }
6258
+
6259
+ <div #overlayWindowsContainer magicViewContainerRef>
6260
+ </div>
6261
+ </div>
6262
+
6263
+ @if (showSpinner) {
6264
+ <div class="spinner-background">
6265
+ <ng-container [ngTemplateOutlet]="SpinnerTemplate ? SpinnerTemplate:defaultSpinner"></ng-container>
6266
+ </div>
6267
+ }
6268
+
6269
+ <ng-template #defaultSpinner>
6270
+ <div class="mgSpinnerClass"></div>
6271
+ </ng-template>
6272
+ `, standalone: false, styles: [".mgSpinnerClass{border:10px solid #cccccc;border-top:10px solid black;border-radius:50%;position:fixed;margin:auto;inset:0;width:100px;height:100px;animation:spin 2s linear infinite}.spinner-background{position:fixed;z-index:1000;inset:0;opacity:.5}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
6248
6273
  }], () => [{ type: EngineMagicService }, { type: ComponentListMagicService }, { type: i0.ChangeDetectorRef }, { type: i1$1.Title }, { type: OverlayWindowService }, { type: i1$2.HttpClient }, { type: CommandsCollectorMagicService }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: ExitMagicService, decorators: [{
6249
6274
  type: Optional
6250
6275
  }] }], { rootMagicElementRef: [{
@@ -6259,7 +6284,7 @@ class MagicShellComponent {
6259
6284
  type: HostListener,
6260
6285
  args: ['window:unload', ['$event']]
6261
6286
  }] }); })();
6262
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber: 86 }); })();
6287
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber: 89 }); })();
6263
6288
 
6264
6289
  /**
6265
6290
  * @ignore
@@ -6860,6 +6885,109 @@ const magicProviders = [
6860
6885
  TableMagicService
6861
6886
  ];
6862
6887
 
6888
+ class SubscriberService {
6889
+ static instance;
6890
+ socket;
6891
+ constructor() {
6892
+ // Connect to the Socket.IO server with subscriber role
6893
+ this.socket = io('http://localhost:3000', {
6894
+ query: {
6895
+ role: 'subscriber',
6896
+ token: 'abc123' // Default token for testing; replace with actual authentication
6897
+ }
6898
+ });
6899
+ // Handle connection
6900
+ this.socket.on('connect', () => {
6901
+ console.log('Connected to server as subscriber:', this.socket.id);
6902
+ });
6903
+ // Handle disconnection
6904
+ this.socket.on('disconnect', () => {
6905
+ console.log('Disconnected from server');
6906
+ });
6907
+ // Handle subscription confirmation
6908
+ this.socket.on('subscribed', (data) => {
6909
+ console.log('Subscribed to topic:', data.topic, data.message);
6910
+ });
6911
+ // Handle unsubscription confirmation
6912
+ this.socket.on('unsubscribed', (data) => {
6913
+ console.log('Unsubscribed from topic:', data.topic, data.message);
6914
+ });
6915
+ // Handle errors
6916
+ this.socket.on('error', (error) => {
6917
+ console.error('Socket error:', error.message);
6918
+ });
6919
+ this.socket.on('message', (error) => {
6920
+ console.error('Message from xpa:', error.message);
6921
+ });
6922
+ }
6923
+ /**
6924
+ * Subscribe to a specific topic
6925
+ * @param topic The topic to subscribe to
6926
+ */
6927
+ subscribe(topic) {
6928
+ this.socket.emit('subscribe', topic);
6929
+ }
6930
+ /**
6931
+ * Unsubscribe from a specific topic
6932
+ * @param topic The topic to unsubscribe from
6933
+ */
6934
+ unsubscribe(topic) {
6935
+ this.socket.emit('unsubscribe', topic);
6936
+ }
6937
+ /**
6938
+ * Get an Observable for incoming messages
6939
+ * @returns Observable that emits message data
6940
+ */
6941
+ onMessage() {
6942
+ return new Observable(observer => {
6943
+ this.socket.on('message', (data) => {
6944
+ observer.next(data);
6945
+ });
6946
+ });
6947
+ }
6948
+ /**
6949
+ * Get current subscriptions (for debugging)
6950
+ */
6951
+ getSubscriptions() {
6952
+ this.socket.emit('getSubscriptions');
6953
+ }
6954
+ /**
6955
+ * Listen for subscriptions data
6956
+ * @returns Observable that emits subscriptions list
6957
+ */
6958
+ onSubscriptionsData() {
6959
+ return new Observable(observer => {
6960
+ this.socket.on('subscriptionsData', (data) => {
6961
+ observer.next(data);
6962
+ });
6963
+ });
6964
+ }
6965
+ /**
6966
+ * Get the singleton instance of SubscriberService
6967
+ * @returns {SubscriberService} The singleton instance
6968
+ */
6969
+ static getInstance() {
6970
+ if (!SubscriberService.instance) {
6971
+ SubscriberService.instance = new SubscriberService();
6972
+ }
6973
+ return SubscriberService.instance;
6974
+ }
6975
+ /**
6976
+ * Disconnect from the server
6977
+ */
6978
+ disconnect() {
6979
+ this.socket.disconnect();
6980
+ }
6981
+ /** @nocollapse */ static ɵfac = function SubscriberService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubscriberService)(); };
6982
+ /** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SubscriberService, factory: SubscriberService.ɵfac, providedIn: 'root' });
6983
+ }
6984
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubscriberService, [{
6985
+ type: Injectable,
6986
+ args: [{
6987
+ providedIn: 'root'
6988
+ }]
6989
+ }], () => [], null); })();
6990
+
6863
6991
  /**
6864
6992
  * @ignore
6865
6993
  */
@@ -6945,5 +7073,5 @@ class ModalFormDefinition {
6945
7073
  * Generated bundle index. Do not edit.
6946
7074
  */
6947
7075
 
6948
- export { AccessorMagicService, BaseMagicAlertComponent, BaseMagicConfirmComponent, BaseMagicOverlayContainer, CHECKBOX_VALUE_ACCESSOR, COLOR_FILE_NAME, CheckboxMagicDirective, CheckboxNoFormControlMagicDirective, ComboboxMagicDirective, CommandsCollectorMagicService, ComponentListMagicService, ConfirmationComponentsMagicProvider, Constants, ControlMetadata, ControlsMetadata, DATE_VALUE_ACCESSOR, DateMagicPipe, DateValueAccessor, EngineMagicService, ErrorMagicComponent, ExitMagicService, GuiInteractiveExecutor, HtmlClasses, InputNoFormControlMagicDirective, MAGIC_BG_COLOR, MAGIC_DEFAULT_VALUE_ACCESSOR, MAGIC_FG_COLOR, MG_FORMATS, MagicAlertComponent, MagicCheckboxControlValueAccessor, MagicColorService, MagicConfirmationBoxComponent, MagicDefaultValueAccessor, MagicDirective, MagicFocusDirective, MagicLazyLoaderService, MagicModule, MagicOverlayContainer, MagicOverlayContainerWrapper, MagicServices, MagicShellComponent, MagicViewContainerRef, MgDateAdapter, MgDateFormatter, MgformatMagicDirective, ModalFormDefinition, NoControlMagicDirective, NonMagicControlDirective, OverlayContainerMagicProvider, OverlayWindowService, RangeValidatorMagicDirective, Records, RouteCommand, RouterCommandsMagicService, RouterContainerMagicComponent, RowMagicDirective, StylesMapManager, SubformMagicComponent, SubformMagicService, TableMagicService, TaskBaseMagicComponent, TaskMagicService, Time24MagicPipe, TimeMagicPipe, TitleMagicService, basicMagicProviders, confirmationBox, magicProviders, matDateProviders, utils };
7076
+ export { AccessorMagicService, BaseMagicAlertComponent, BaseMagicConfirmComponent, BaseMagicOverlayContainer, CHECKBOX_VALUE_ACCESSOR, COLOR_FILE_NAME, CheckboxMagicDirective, CheckboxNoFormControlMagicDirective, ComboboxMagicDirective, CommandsCollectorMagicService, ComponentListMagicService, ConfirmationComponentsMagicProvider, Constants, ControlMetadata, ControlsMetadata, DATE_VALUE_ACCESSOR, DateMagicPipe, DateValueAccessor, EngineMagicService, ErrorMagicComponent, ExitMagicService, GuiInteractiveExecutor, HtmlClasses, InputNoFormControlMagicDirective, MAGIC_BG_COLOR, MAGIC_DEFAULT_VALUE_ACCESSOR, MAGIC_FG_COLOR, MG_FORMATS, MagicAlertComponent, MagicCheckboxControlValueAccessor, MagicColorService, MagicConfirmationBoxComponent, MagicDefaultValueAccessor, MagicDirective, MagicFocusDirective, MagicLazyLoaderService, MagicModule, MagicOverlayContainer, MagicOverlayContainerWrapper, MagicServices, MagicShellComponent, MagicViewContainerRef, MgDateAdapter, MgDateFormatter, MgformatMagicDirective, ModalFormDefinition, NoControlMagicDirective, NonMagicControlDirective, OverlayContainerMagicProvider, OverlayWindowService, RangeValidatorMagicDirective, Records, RouteCommand, RouterCommandsMagicService, RouterContainerMagicComponent, RowMagicDirective, StylesMapManager, SubformMagicComponent, SubformMagicService, SubscriberService, TableMagicService, TaskBaseMagicComponent, TaskMagicService, Time24MagicPipe, TimeMagicPipe, TitleMagicService, basicMagicProviders, confirmationBox, magicProviders, matDateProviders, utils };
6949
7077
  //# sourceMappingURL=magic-xpa-angular.mjs.map