@magic-xpa/angular 4.1300.0-dev4130.30 → 4.1300.0-dev4130.300
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/magic-xpa-angular.mjs +771 -573
- package/fesm2022/magic-xpa-angular.mjs.map +1 -1
- package/package.json +14 -11
- package/types/magic-xpa-angular.d.ts +552 -405
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { isNullOrUndefined, NString, List, isUndefined, StringBuilder, RefParam } from '@magic-xpa/mscorelib';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { Injectable,
|
|
3
|
+
import { Injectable, inject, Injector, createNgModule, ViewContainerRef, ChangeDetectionStrategy, Component, Directive, EventEmitter, HostListener, Output, Input, ViewChild, ElementRef, input, output, viewChild, ChangeDetectorRef, InjectionToken, DestroyRef, Renderer2, Pipe, effect, forwardRef, NgModule } from '@angular/core';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { DatePipe, CommonModule, formatDate } from '@angular/common';
|
|
6
|
-
import
|
|
7
|
-
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
6
|
+
import { ActivatedRoute, Router, NavigationEnd, RouterModule } from '@angular/router';
|
|
8
7
|
import { FormGroup, FormControl, Validators, NG_VALIDATORS, NG_VALUE_ACCESSOR, CheckboxControlValueAccessor, DefaultValueAccessor, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
9
|
-
import * as
|
|
8
|
+
import * as i1$1 from 'ng-dynamic-component';
|
|
10
9
|
import { DynamicModule } from 'ng-dynamic-component';
|
|
11
10
|
import { InteractiveCommandType, HtmlProperties, OverlayType, Styles, GuiConstants, CommandType, PIC, GuiEnvironment, Events, Modifiers } from '@magic-xpa/gui';
|
|
12
11
|
import { MagicBridge, getGuiEventObj, CookieService, Environment, LastFocusedManager } from '@magic-xpa/engine';
|
|
12
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
13
|
import { MagicProperties, Logger, StrUtil, StorageAttribute, PICInterface, MsgInterface, BindingLevel, StorageAttributeType, MgControlType } from '@magic-xpa/utils';
|
|
14
|
+
import { Subject, EMPTY, fromEvent, Observable } from 'rxjs';
|
|
14
15
|
import { filter, map, debounceTime, take } from 'rxjs/operators';
|
|
15
|
-
import
|
|
16
|
-
import { __decorate, __metadata } from 'tslib';
|
|
17
|
-
import * as i2$1 from '@angular/cdk/drag-drop';
|
|
16
|
+
import * as i2 from '@angular/cdk/drag-drop';
|
|
18
17
|
import { DragDropModule, CdkDragHandle, CdkDrag } from '@angular/cdk/drag-drop';
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
18
|
+
import { Title } from '@angular/platform-browser';
|
|
19
|
+
import { HttpClient, provideHttpClient, withXhr, withInterceptorsFromDi } from '@angular/common/http';
|
|
22
20
|
import { maskitoTimeOptionsGenerator } from '@maskito/kit';
|
|
23
|
-
import
|
|
24
|
-
import {
|
|
21
|
+
import { Platform } from '@angular/cdk/platform';
|
|
22
|
+
import { NGX_CURRENCY_CONFIG, NgxCurrencyInputMode } from '@dintecom/ngx-currency';
|
|
23
|
+
import { MaskitoDirective } from '@maskito/angular';
|
|
25
24
|
import { NativeDateAdapter, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
25
|
+
import { io } from 'socket.io-client';
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* @ignore
|
|
@@ -239,6 +239,63 @@ var HtmlClasses;
|
|
|
239
239
|
HtmlClasses["HintColor"] = "hintcolor";
|
|
240
240
|
})(HtmlClasses || (HtmlClasses = {}));
|
|
241
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Notifies Angular that Magic state changed outside of its knowledge.
|
|
244
|
+
*
|
|
245
|
+
* The WebClient runs zoneless, so Angular no longer re-renders the application
|
|
246
|
+
* after every asynchronous task. Change detection is triggered only by Angular's
|
|
247
|
+
* own APIs - a template event binding, a signal write, `markForCheck()` and so on.
|
|
248
|
+
*
|
|
249
|
+
* Magic drives the UI from sources Angular cannot observe: DOM listeners registered
|
|
250
|
+
* through `Renderer2`, the engine's event loop, and socket callbacks. Every such
|
|
251
|
+
* source calls {@link notify}, and the Magic components refresh themselves in response.
|
|
252
|
+
*
|
|
253
|
+
* Application code can use this service for the same purpose. Call {@link notify}
|
|
254
|
+
* after changing component state from a callback Angular does not control - a
|
|
255
|
+
* `setTimeout`, a `Promise`, a `fetch` response or a third-party widget event:
|
|
256
|
+
*
|
|
257
|
+
* ```ts
|
|
258
|
+
* export class MyForm extends TaskBaseMagicComponent {
|
|
259
|
+
* private readonly magicChangeDetection = inject(MagicChangeDetectionService);
|
|
260
|
+
*
|
|
261
|
+
* override mgOnLoad(): void {
|
|
262
|
+
* setTimeout(() => {
|
|
263
|
+
* this.statusText = 'Ready';
|
|
264
|
+
* this.magicChangeDetection.notify();
|
|
265
|
+
* }, 1000);
|
|
266
|
+
* }
|
|
267
|
+
* }
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* Notifications are coalesced by Angular's scheduler, so calling {@link notify}
|
|
271
|
+
* several times in a row still results in a single refresh.
|
|
272
|
+
*/
|
|
273
|
+
class MagicChangeDetectionService {
|
|
274
|
+
/**
|
|
275
|
+
* @ignore
|
|
276
|
+
*/
|
|
277
|
+
changedSubject = new Subject();
|
|
278
|
+
/**
|
|
279
|
+
* Emits whenever Magic state changed and the views should be refreshed.
|
|
280
|
+
* Subscribers are expected to mark their view for check.
|
|
281
|
+
*/
|
|
282
|
+
changed = this.changedSubject.asObservable();
|
|
283
|
+
/**
|
|
284
|
+
* Notify Angular that state which the templates depend on has changed.
|
|
285
|
+
*/
|
|
286
|
+
notify() {
|
|
287
|
+
this.changedSubject.next();
|
|
288
|
+
}
|
|
289
|
+
/** @nocollapse */ static ɵfac = function MagicChangeDetectionService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicChangeDetectionService)(); };
|
|
290
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicChangeDetectionService, factory: MagicChangeDetectionService.ɵfac, providedIn: 'root' });
|
|
291
|
+
}
|
|
292
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicChangeDetectionService, [{
|
|
293
|
+
type: Injectable,
|
|
294
|
+
args: [{
|
|
295
|
+
providedIn: 'root'
|
|
296
|
+
}]
|
|
297
|
+
}], null, null); })();
|
|
298
|
+
|
|
242
299
|
/**
|
|
243
300
|
* @ignore
|
|
244
301
|
*/
|
|
@@ -279,6 +336,9 @@ class EngineMagicService {
|
|
|
279
336
|
//TODO - unregister
|
|
280
337
|
refreshDom = new Subject();
|
|
281
338
|
interactiveCommands = new Subject();
|
|
339
|
+
// Injected as a field rather than a constructor parameter so that the public
|
|
340
|
+
// constructor signature stays unchanged for anyone extending this service.
|
|
341
|
+
magicChangeDetection = inject(MagicChangeDetectionService);
|
|
282
342
|
startMagicEngine(httpClient, args) {
|
|
283
343
|
this.magicBridge.registerExecuteCommandsCallback(data => {
|
|
284
344
|
if (!this.isStub) {
|
|
@@ -294,11 +354,17 @@ class EngineMagicService {
|
|
|
294
354
|
console.log('moving to stub mode');
|
|
295
355
|
this.isStub = true;
|
|
296
356
|
}
|
|
357
|
+
finally {
|
|
358
|
+
// The engine finished a batch of UI commands. Running zoneless, this is the
|
|
359
|
+
// single point where every server-driven change becomes visible to Angular.
|
|
360
|
+
this.magicChangeDetection.notify();
|
|
361
|
+
}
|
|
297
362
|
}
|
|
298
363
|
});
|
|
299
364
|
this.magicBridge.registerInteractiveCallback(data => {
|
|
300
365
|
if (!this.isStub) {
|
|
301
366
|
this.interactiveCommands.next(data);
|
|
367
|
+
this.magicChangeDetection.notify();
|
|
302
368
|
}
|
|
303
369
|
});
|
|
304
370
|
this.magicBridge.Initialize(httpClient, args);
|
|
@@ -309,6 +375,11 @@ class EngineMagicService {
|
|
|
309
375
|
insertEvent(guiEvent) {
|
|
310
376
|
if (!this.isStub)
|
|
311
377
|
this.magicBridge.insertEvent(guiEvent);
|
|
378
|
+
// Every Magic UI event - from the DOM listeners registered by MagicDirective and
|
|
379
|
+
// its subclasses, from the accessor service, and from the overlay service - reaches
|
|
380
|
+
// the engine through here. Renderer2 listeners do not notify Angular's scheduler on
|
|
381
|
+
// their own, so this is where an interaction becomes a change-detection trigger.
|
|
382
|
+
this.magicChangeDetection.notify();
|
|
312
383
|
}
|
|
313
384
|
GetRangedValue(taskId, controlName, value) {
|
|
314
385
|
return this.magicBridge.GetRangedValue(taskId, controlName, value);
|
|
@@ -430,12 +501,11 @@ class ComponentListMagicService {
|
|
|
430
501
|
* @ignore
|
|
431
502
|
*/
|
|
432
503
|
class CommandsCollectorMagicService {
|
|
433
|
-
magic;
|
|
434
504
|
count = 0;
|
|
435
505
|
commands = new List();
|
|
436
506
|
subscription = null;
|
|
437
|
-
|
|
438
|
-
|
|
507
|
+
magic = inject(EngineMagicService);
|
|
508
|
+
constructor() {
|
|
439
509
|
}
|
|
440
510
|
startCollecting() {
|
|
441
511
|
this.count++;
|
|
@@ -460,7 +530,7 @@ class CommandsCollectorMagicService {
|
|
|
460
530
|
commands.forEach(command => { this.commands.Remove(command); });
|
|
461
531
|
return commands;
|
|
462
532
|
}
|
|
463
|
-
/** @nocollapse */ static ɵfac = function CommandsCollectorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommandsCollectorMagicService)(
|
|
533
|
+
/** @nocollapse */ static ɵfac = function CommandsCollectorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommandsCollectorMagicService)(); };
|
|
464
534
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: CommandsCollectorMagicService, factory: CommandsCollectorMagicService.ɵfac, providedIn: 'root' });
|
|
465
535
|
}
|
|
466
536
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommandsCollectorMagicService, [{
|
|
@@ -468,7 +538,7 @@ class CommandsCollectorMagicService {
|
|
|
468
538
|
args: [{
|
|
469
539
|
providedIn: 'root'
|
|
470
540
|
}]
|
|
471
|
-
}], () => [
|
|
541
|
+
}], () => [], null); })();
|
|
472
542
|
|
|
473
543
|
/**
|
|
474
544
|
* @ignore
|
|
@@ -522,32 +592,21 @@ class MagicLazyLoaderService {
|
|
|
522
592
|
* Service for managing subforms and routing
|
|
523
593
|
*/
|
|
524
594
|
class SubformMagicService {
|
|
525
|
-
task;
|
|
526
|
-
activatedRoute;
|
|
527
|
-
componentList;
|
|
528
|
-
pendingCommandsCollector;
|
|
529
|
-
router;
|
|
530
|
-
routerCommandsMagicService;
|
|
531
|
-
componentListMagicService;
|
|
532
|
-
loader;
|
|
533
|
-
injector;
|
|
534
|
-
compiler;
|
|
535
595
|
subformsDict /*:{ [x: string]: SubformDefinition }*/ = {};
|
|
536
596
|
routesDict = {}; // dictionary of router outlet to router path
|
|
537
597
|
currentRouteDefinition = null;
|
|
538
598
|
static currentCallerMgSubformServiceRef = null;
|
|
539
599
|
static routerContainers = new Array();
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
this.compiler = compiler;
|
|
600
|
+
task = inject(TaskMagicService);
|
|
601
|
+
activatedRoute = inject(ActivatedRoute);
|
|
602
|
+
componentList = inject(ComponentListMagicService);
|
|
603
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
604
|
+
router = inject(Router);
|
|
605
|
+
routerCommandsMagicService = inject(RouterCommandsMagicService);
|
|
606
|
+
componentListMagicService = inject(ComponentListMagicService);
|
|
607
|
+
loader = inject(MagicLazyLoaderService);
|
|
608
|
+
injector = inject(Injector);
|
|
609
|
+
constructor() {
|
|
551
610
|
}
|
|
552
611
|
/**
|
|
553
612
|
* Finds and returns the component according to the subform name
|
|
@@ -608,8 +667,7 @@ class SubformMagicService {
|
|
|
608
667
|
// extract name of module(XX) from 'MagicXXModule'
|
|
609
668
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
610
669
|
this.loader.Load(moduleName).then(m => {
|
|
611
|
-
|
|
612
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
670
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
613
671
|
this.subformsDict[subformControlName] = {
|
|
614
672
|
formName,
|
|
615
673
|
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
@@ -749,25 +807,17 @@ class SubformMagicService {
|
|
|
749
807
|
}
|
|
750
808
|
return currentActiveRoute;
|
|
751
809
|
}
|
|
752
|
-
/** @nocollapse */ static ɵfac = function SubformMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicService)(
|
|
810
|
+
/** @nocollapse */ static ɵfac = function SubformMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicService)(); };
|
|
753
811
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SubformMagicService, factory: SubformMagicService.ɵfac });
|
|
754
812
|
}
|
|
755
813
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicService, [{
|
|
756
814
|
type: Injectable
|
|
757
|
-
}], () => [
|
|
815
|
+
}], () => [], null); })();
|
|
758
816
|
|
|
759
817
|
/**
|
|
760
818
|
* Mock component, implements routing by connecting the requested URL with the appropriate Magic task
|
|
761
819
|
*/
|
|
762
820
|
class RouterContainerMagicComponent {
|
|
763
|
-
activatedRoute;
|
|
764
|
-
router;
|
|
765
|
-
magic;
|
|
766
|
-
containerTaskService;
|
|
767
|
-
viewContainerRef;
|
|
768
|
-
componentList;
|
|
769
|
-
pendingCommandsCollector;
|
|
770
|
-
routerCommandsMagicService;
|
|
771
821
|
componentRef = null;
|
|
772
822
|
parentMgSubformService = null;
|
|
773
823
|
static lastRoute = "/";
|
|
@@ -775,6 +825,14 @@ class RouterContainerMagicComponent {
|
|
|
775
825
|
static get LastRoute() {
|
|
776
826
|
return RouterContainerMagicComponent.lastRoute;
|
|
777
827
|
}
|
|
828
|
+
activatedRoute = inject(ActivatedRoute);
|
|
829
|
+
router = inject(Router);
|
|
830
|
+
magic = inject(EngineMagicService);
|
|
831
|
+
containerTaskService = inject(TaskMagicService);
|
|
832
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
833
|
+
componentList = inject(ComponentListMagicService);
|
|
834
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
835
|
+
routerCommandsMagicService = inject(RouterCommandsMagicService);
|
|
778
836
|
/**
|
|
779
837
|
*
|
|
780
838
|
* @param changeDetectorRef
|
|
@@ -785,16 +843,7 @@ class RouterContainerMagicComponent {
|
|
|
785
843
|
* @param componentList
|
|
786
844
|
* @param pendingCommandsCollector
|
|
787
845
|
*/
|
|
788
|
-
constructor(
|
|
789
|
-
this.activatedRoute = activatedRoute;
|
|
790
|
-
this.router = router;
|
|
791
|
-
this.magic = magic;
|
|
792
|
-
this.containerTaskService = containerTaskService;
|
|
793
|
-
this.viewContainerRef = viewContainerRef;
|
|
794
|
-
this.componentList = componentList;
|
|
795
|
-
this.pendingCommandsCollector = pendingCommandsCollector;
|
|
796
|
-
this.routerCommandsMagicService = routerCommandsMagicService;
|
|
797
|
-
}
|
|
846
|
+
constructor() { }
|
|
798
847
|
/**
|
|
799
848
|
* Initialization
|
|
800
849
|
*/
|
|
@@ -872,8 +921,8 @@ class RouterContainerMagicComponent {
|
|
|
872
921
|
getRouterPath() {
|
|
873
922
|
return this.routePath;
|
|
874
923
|
}
|
|
875
|
-
/** @nocollapse */ static ɵfac = function RouterContainerMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RouterContainerMagicComponent)(
|
|
876
|
-
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: RouterContainerMagicComponent, selectors: [["magic-route-outlet"]], standalone: false, decls: 0, vars: 0, template: function RouterContainerMagicComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
|
924
|
+
/** @nocollapse */ static ɵfac = function RouterContainerMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RouterContainerMagicComponent)(); };
|
|
925
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: RouterContainerMagicComponent, selectors: [["magic-route-outlet"]], standalone: false, decls: 0, vars: 0, template: function RouterContainerMagicComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 1 });
|
|
877
926
|
}
|
|
878
927
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterContainerMagicComponent, [{
|
|
879
928
|
type: Component,
|
|
@@ -881,10 +930,11 @@ class RouterContainerMagicComponent {
|
|
|
881
930
|
selector: 'magic-route-outlet',
|
|
882
931
|
template: `
|
|
883
932
|
`,
|
|
933
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
884
934
|
standalone: false
|
|
885
935
|
}]
|
|
886
|
-
}], () => [
|
|
887
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RouterContainerMagicComponent, { className: "RouterContainerMagicComponent", filePath: "src/ui/router-container.magic.component.ts", lineNumber:
|
|
936
|
+
}], () => [], null); })();
|
|
937
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RouterContainerMagicComponent, { className: "RouterContainerMagicComponent", filePath: "src/ui/router-container.magic.component.ts", lineNumber: 24 }); })();
|
|
888
938
|
|
|
889
939
|
/**
|
|
890
940
|
* @ignore
|
|
@@ -1003,37 +1053,81 @@ class GuiInteractiveExecutor {
|
|
|
1003
1053
|
}
|
|
1004
1054
|
}
|
|
1005
1055
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1056
|
+
class MagicModalProperties {
|
|
1057
|
+
formName = "overlay";
|
|
1058
|
+
showTitleBar = true;
|
|
1059
|
+
x = 0;
|
|
1060
|
+
y = 0;
|
|
1061
|
+
width = "300px";
|
|
1062
|
+
height = "300px";
|
|
1063
|
+
isCenteredToWindow = true;
|
|
1064
|
+
shouldCloseOnBackgroundClick = true;
|
|
1065
|
+
isResizable = true;
|
|
1066
|
+
isMovable = true;
|
|
1067
|
+
constructor(formName, showTitleBar, x, y, width, height, isCenteredToWindow, shouldCloseOnBackgroundClick, isResizable, isMovable) {
|
|
1068
|
+
this.formName = formName;
|
|
1069
|
+
this.showTitleBar = showTitleBar;
|
|
1070
|
+
this.x = x;
|
|
1071
|
+
this.y = y;
|
|
1072
|
+
this.width = width;
|
|
1073
|
+
this.height = height;
|
|
1074
|
+
this.isCenteredToWindow = isCenteredToWindow;
|
|
1075
|
+
this.shouldCloseOnBackgroundClick = shouldCloseOnBackgroundClick;
|
|
1076
|
+
this.isResizable = isResizable;
|
|
1077
|
+
this.isMovable = isMovable;
|
|
1078
|
+
}
|
|
1079
|
+
X() {
|
|
1080
|
+
return this.x;
|
|
1081
|
+
}
|
|
1082
|
+
Y() {
|
|
1083
|
+
return this.y;
|
|
1084
|
+
}
|
|
1085
|
+
Width() {
|
|
1086
|
+
return this.width;
|
|
1087
|
+
}
|
|
1088
|
+
Height() {
|
|
1089
|
+
return this.height;
|
|
1090
|
+
}
|
|
1091
|
+
IsCenteredToWindow() {
|
|
1092
|
+
return this.isCenteredToWindow;
|
|
1093
|
+
}
|
|
1094
|
+
FormName() {
|
|
1095
|
+
return this.formName;
|
|
1096
|
+
}
|
|
1097
|
+
ShowTitleBar() {
|
|
1098
|
+
return this.showTitleBar;
|
|
1099
|
+
}
|
|
1100
|
+
ShouldCloseOnBackgroundClick() {
|
|
1101
|
+
return this.shouldCloseOnBackgroundClick;
|
|
1102
|
+
}
|
|
1103
|
+
IsResizable() {
|
|
1104
|
+
return this.isResizable;
|
|
1105
|
+
}
|
|
1106
|
+
IsMovable() {
|
|
1107
|
+
return this.isMovable;
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
/**
|
|
1112
|
+
* Abstract base for Magic overlay container components.
|
|
1113
|
+
* Concrete classes must implement these members using Angular signal APIs (input/output).
|
|
1114
|
+
* The class is kept as an abstract class (not an interface) so that instanceof checks
|
|
1115
|
+
* in MagicOverlayContainerWrapper continue to work at runtime.
|
|
1116
|
+
*/
|
|
1117
|
+
class BaseMagicOverlayContainer {
|
|
1118
|
+
}
|
|
1024
1119
|
|
|
1025
1120
|
/**
|
|
1026
1121
|
* Directive for setting ViewContainerRef on element
|
|
1027
1122
|
*/
|
|
1028
1123
|
class MagicViewContainerRef {
|
|
1029
|
-
vcRef;
|
|
1030
|
-
constructor(
|
|
1031
|
-
this.vcRef = vcRef;
|
|
1124
|
+
vcRef = inject(ViewContainerRef);
|
|
1125
|
+
constructor() {
|
|
1032
1126
|
// For angular 10 - find the component from the views
|
|
1033
1127
|
let comp = (this.vcRef._hostLView).find(v => v != null && !isNullOrUndefined(v.setViewContainerRef));
|
|
1034
|
-
comp.setViewContainerRef(vcRef);
|
|
1128
|
+
comp.setViewContainerRef(this.vcRef);
|
|
1035
1129
|
}
|
|
1036
|
-
/** @nocollapse */ static ɵfac = function MagicViewContainerRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicViewContainerRef)(
|
|
1130
|
+
/** @nocollapse */ static ɵfac = function MagicViewContainerRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicViewContainerRef)(); };
|
|
1037
1131
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicViewContainerRef, selectors: [["", "magicViewContainerRef", ""]], standalone: false });
|
|
1038
1132
|
}
|
|
1039
1133
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicViewContainerRef, [{
|
|
@@ -1042,54 +1136,54 @@ class MagicViewContainerRef {
|
|
|
1042
1136
|
selector: '[magicViewContainerRef]',
|
|
1043
1137
|
standalone: false
|
|
1044
1138
|
}]
|
|
1045
|
-
}], () => [
|
|
1139
|
+
}], () => [], null); })();
|
|
1046
1140
|
|
|
1047
1141
|
const _c0$3 = ["modalheader"];
|
|
1048
1142
|
const _c1$1 = ["modalForeground"];
|
|
1049
1143
|
function MagicOverlayContainer_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1050
|
-
const
|
|
1144
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
1051
1145
|
i0.ɵɵelementStart(0, "button", 14);
|
|
1052
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1146
|
+
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
1147
|
i0.ɵɵtext(1, "X");
|
|
1054
1148
|
i0.ɵɵelementEnd();
|
|
1055
1149
|
} }
|
|
1056
1150
|
function MagicOverlayContainer_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1057
|
-
const
|
|
1151
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
1058
1152
|
i0.ɵɵelementStart(0, "span", 15);
|
|
1059
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_5_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1153
|
+
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
1154
|
i0.ɵɵelementEnd();
|
|
1061
1155
|
} }
|
|
1062
1156
|
function MagicOverlayContainer_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1063
|
-
const
|
|
1157
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
1064
1158
|
i0.ɵɵelementStart(0, "span", 16);
|
|
1065
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_6_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1159
|
+
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
1160
|
i0.ɵɵelementEnd();
|
|
1067
1161
|
} }
|
|
1068
1162
|
function MagicOverlayContainer_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1069
|
-
const
|
|
1163
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
1070
1164
|
i0.ɵɵelementStart(0, "span", 17);
|
|
1071
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_7_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1165
|
+
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
1166
|
i0.ɵɵelementEnd();
|
|
1073
1167
|
} }
|
|
1074
1168
|
function MagicOverlayContainer_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1075
|
-
const
|
|
1169
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
1076
1170
|
i0.ɵɵelementStart(0, "span", 18);
|
|
1077
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_8_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1171
|
+
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
1172
|
i0.ɵɵelementEnd();
|
|
1079
1173
|
} }
|
|
1080
1174
|
function MagicOverlayContainer_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1081
|
-
const
|
|
1175
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
1082
1176
|
i0.ɵɵelementStart(0, "div", 19, 2);
|
|
1083
1177
|
i0.ɵɵtext(2);
|
|
1084
1178
|
i0.ɵɵelementStart(3, "button", 20);
|
|
1085
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
1179
|
+
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
1180
|
i0.ɵɵtext(4, "X");
|
|
1087
1181
|
i0.ɵɵelementEnd()();
|
|
1088
1182
|
} if (rf & 2) {
|
|
1089
|
-
const
|
|
1090
|
-
i0.ɵɵclassProp("movable",
|
|
1183
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1184
|
+
i0.ɵɵclassProp("movable", ctx_r1.IsMovable());
|
|
1091
1185
|
i0.ɵɵadvance(2);
|
|
1092
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1186
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getText(), " ");
|
|
1093
1187
|
} }
|
|
1094
1188
|
/**
|
|
1095
1189
|
* Creates a modal window for Magic modal window components
|
|
@@ -1142,7 +1236,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1142
1236
|
ngOnInit() {
|
|
1143
1237
|
this.componentRef = this.modalbodyViewContainerRef.createComponent(this.ModalComp);
|
|
1144
1238
|
Object.assign(this.componentRef.instance, this.ModalCompParameters);
|
|
1145
|
-
let comp = this.
|
|
1239
|
+
let comp = this.getOverlayProps();
|
|
1146
1240
|
this.isCenteredToWindow = comp.IsCenteredToWindow();
|
|
1147
1241
|
}
|
|
1148
1242
|
ngAfterViewInit() {
|
|
@@ -1161,7 +1255,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1161
1255
|
*/
|
|
1162
1256
|
getText() {
|
|
1163
1257
|
if (this.componentRef !== null) {
|
|
1164
|
-
let comp = this.
|
|
1258
|
+
let comp = this.getOverlayProps();
|
|
1165
1259
|
return comp.FormName();
|
|
1166
1260
|
}
|
|
1167
1261
|
else
|
|
@@ -1180,7 +1274,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1180
1274
|
getStyle() {
|
|
1181
1275
|
let styles = {};
|
|
1182
1276
|
if (this.componentRef != undefined) {
|
|
1183
|
-
let comp = this.
|
|
1277
|
+
let comp = this.getOverlayProps();
|
|
1184
1278
|
styles['width'] = comp.Width();
|
|
1185
1279
|
styles['height'] = comp.Height();
|
|
1186
1280
|
if (this.isCenteredToWindow) {
|
|
@@ -1217,7 +1311,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1217
1311
|
*/
|
|
1218
1312
|
getShowTitleBar() {
|
|
1219
1313
|
if (this.componentRef != undefined) {
|
|
1220
|
-
let comp = this.
|
|
1314
|
+
let comp = this.getOverlayProps();
|
|
1221
1315
|
return comp.ShowTitleBar();
|
|
1222
1316
|
}
|
|
1223
1317
|
}
|
|
@@ -1231,7 +1325,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1231
1325
|
* Handles click in the background window
|
|
1232
1326
|
*/
|
|
1233
1327
|
OnBackgroundClick() {
|
|
1234
|
-
let comp = this.
|
|
1328
|
+
let comp = this.getOverlayProps();
|
|
1235
1329
|
if (comp.ShouldCloseOnBackgroundClick())
|
|
1236
1330
|
this.OnClose();
|
|
1237
1331
|
}
|
|
@@ -1240,7 +1334,9 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1240
1334
|
* @returns {boolean} True if the overlay is resizable, false otherwise.
|
|
1241
1335
|
*/
|
|
1242
1336
|
IsResizable() {
|
|
1243
|
-
|
|
1337
|
+
if (!this.componentRef)
|
|
1338
|
+
return false;
|
|
1339
|
+
let comp = this.getOverlayProps();
|
|
1244
1340
|
return comp.IsResizable();
|
|
1245
1341
|
}
|
|
1246
1342
|
/**
|
|
@@ -1248,7 +1344,9 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1248
1344
|
* @returns {boolean} True if the overlay is movable, false otherwise.
|
|
1249
1345
|
*/
|
|
1250
1346
|
IsMovable() {
|
|
1251
|
-
|
|
1347
|
+
if (!this.componentRef)
|
|
1348
|
+
return false;
|
|
1349
|
+
let comp = this.getOverlayProps();
|
|
1252
1350
|
return comp.IsMovable();
|
|
1253
1351
|
}
|
|
1254
1352
|
/**
|
|
@@ -1342,6 +1440,19 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1342
1440
|
this.resizing = false;
|
|
1343
1441
|
this.resizeDirection = null;
|
|
1344
1442
|
}
|
|
1443
|
+
getOverlayProps() {
|
|
1444
|
+
let obj = this.componentRef.instance;
|
|
1445
|
+
if (obj && obj.magicModalProperties instanceof MagicModalProperties)
|
|
1446
|
+
obj = obj.magicModalProperties;
|
|
1447
|
+
// The properties come either from a MagicModalProperties object or from a component that implements MagicModalInterface itself.
|
|
1448
|
+
if (!(obj instanceof MagicModalProperties) && typeof obj?.ShowTitleBar !== 'function') {
|
|
1449
|
+
const componentName = this.componentRef?.instance?.constructor?.name || 'Unknown';
|
|
1450
|
+
throw new Error(`Overlay component '${componentName}' cannot be opened. ` +
|
|
1451
|
+
`Ensure that the component contains a 'magicModalProperties' property of type MagicModalProperties. ` +
|
|
1452
|
+
`Example: magicModalProperties: MagicModalProperties = new MagicModalProperties("formName", true, 0, 0, "300px", "300px", true, true, true, true);`);
|
|
1453
|
+
}
|
|
1454
|
+
return obj;
|
|
1455
|
+
}
|
|
1345
1456
|
/** @nocollapse */ static ɵfac = function MagicOverlayContainer_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainer)(); };
|
|
1346
1457
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicOverlayContainer, selectors: [["app-magic-overlay-container"]], viewQuery: function MagicOverlayContainer_Query(rf, ctx) { if (rf & 1) {
|
|
1347
1458
|
i0.ɵɵviewQuery(_c0$3, 5)(_c1$1, 5);
|
|
@@ -1352,9 +1463,8 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1352
1463
|
} }, hostBindings: function MagicOverlayContainer_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1353
1464
|
i0.ɵɵlistener("mousemove", function MagicOverlayContainer_mousemove_HostBindingHandler($event) { return ctx.onResize($event); }, i0.ɵɵresolveWindow)("mouseup", function MagicOverlayContainer_mouseup_HostBindingHandler() { return ctx.onResizeEnd(); }, i0.ɵɵresolveWindow);
|
|
1354
1465
|
} }, 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) {
|
|
1355
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
1356
1466
|
i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
|
|
1357
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() {
|
|
1467
|
+
i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() { return ctx.OnBackgroundClick(); });
|
|
1358
1468
|
i0.ɵɵconditionalCreate(2, MagicOverlayContainer_Conditional_2_Template, 2, 0, "button", 5);
|
|
1359
1469
|
i0.ɵɵelementEnd();
|
|
1360
1470
|
i0.ɵɵelementStart(3, "div", 6, 0);
|
|
@@ -1383,48 +1493,48 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1383
1493
|
i0.ɵɵconditional(ctx.getShowTitleBar() ? 9 : -1);
|
|
1384
1494
|
i0.ɵɵadvance();
|
|
1385
1495
|
i0.ɵɵproperty("ngStyle", ctx.getClientAreaStyles());
|
|
1386
|
-
} }, dependencies: [i1.NgStyle, i2
|
|
1496
|
+
} }, dependencies: [i1.NgStyle, i2.CdkDragHandle, i2.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%}"], changeDetection: 1 });
|
|
1387
1497
|
}
|
|
1388
1498
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicOverlayContainer, [{
|
|
1389
1499
|
type: Component,
|
|
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"] }]
|
|
1500
|
+
args: [{ selector: 'app-magic-overlay-container', template: `
|
|
1501
|
+
<div class="boundary-line">
|
|
1502
|
+
|
|
1503
|
+
<div class="modal-background" (click)="OnBackgroundClick()">
|
|
1504
|
+
@if (!getShowTitleBar()) {
|
|
1505
|
+
<button (click)="OnClose()" tabindex="-1" style="float:right; border: none; background-color: transparent; outline: none; color: white">X</button>
|
|
1506
|
+
}
|
|
1507
|
+
</div>
|
|
1508
|
+
|
|
1509
|
+
<div #modalForeground class="modal-foreground" [ngStyle]="getStyle()" cdkDragBoundary=".boundary-line" cdkDrag [cdkDragDisabled]="!IsMovable()">
|
|
1510
|
+
|
|
1511
|
+
@if (IsResizable() && !isRtl) {
|
|
1512
|
+
<span class="dragHandle right" (mousedown)="onResizeStart($event, 'right')"></span>
|
|
1513
|
+
}
|
|
1514
|
+
@if (IsResizable() && isRtl) {
|
|
1515
|
+
<span class="dragHandle left" (mousedown)="onResizeStart($event, 'left')"></span>
|
|
1516
|
+
}
|
|
1517
|
+
@if (IsResizable()) {
|
|
1518
|
+
<span class="dragHandle corner" (mousedown)="onResizeStart($event, 'corner')"></span>
|
|
1519
|
+
}
|
|
1520
|
+
@if (IsResizable()) {
|
|
1521
|
+
<span class="dragHandle bottom" (mousedown)="onResizeStart($event, 'bottom')"></span>
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
@if (getShowTitleBar()) {
|
|
1525
|
+
<div #modalheader class="modal-header" cdkDragHandle [class.movable]="IsMovable()">
|
|
1526
|
+
{{getText()}}
|
|
1527
|
+
<button (click)="OnClose()" style="float:right" tabindex="-1">X</button>
|
|
1528
|
+
</div>
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
<div [ngStyle]="getClientAreaStyles()">
|
|
1532
|
+
<div #modalbody magicViewContainerRef>
|
|
1533
|
+
</div>
|
|
1534
|
+
</div>
|
|
1535
|
+
</div>
|
|
1536
|
+
</div>
|
|
1537
|
+
`, changeDetection: ChangeDetectionStrategy.Eager, 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"] }]
|
|
1428
1538
|
}], () => [], { headerElementRef: [{
|
|
1429
1539
|
type: ViewChild,
|
|
1430
1540
|
args: ['modalheader', { static: false }]
|
|
@@ -1444,7 +1554,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1444
1554
|
type: HostListener,
|
|
1445
1555
|
args: ['window:mouseup']
|
|
1446
1556
|
}] }); })();
|
|
1447
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber:
|
|
1557
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber: 67 }); })();
|
|
1448
1558
|
|
|
1449
1559
|
/**
|
|
1450
1560
|
* Service managing overlay windows
|
|
@@ -1487,11 +1597,11 @@ class BaseMagicConfirmComponent {
|
|
|
1487
1597
|
this.onClose.emit(result);
|
|
1488
1598
|
}
|
|
1489
1599
|
/** @nocollapse */ static ɵfac = function BaseMagicConfirmComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || BaseMagicConfirmComponent)(); };
|
|
1490
|
-
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: BaseMagicConfirmComponent, selectors: [["mg-base-confirm"]], inputs: { title: "title", message: "message" }, outputs: { onClose: "onClose" }, standalone: false, decls: 0, vars: 0, template: function BaseMagicConfirmComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
|
1600
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: BaseMagicConfirmComponent, selectors: [["mg-base-confirm"]], inputs: { title: "title", message: "message" }, outputs: { onClose: "onClose" }, standalone: false, decls: 0, vars: 0, template: function BaseMagicConfirmComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 1 });
|
|
1491
1601
|
}
|
|
1492
1602
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseMagicConfirmComponent, [{
|
|
1493
1603
|
type: Component,
|
|
1494
|
-
args: [{ selector: 'mg-base-confirm', template: '', standalone: false }]
|
|
1604
|
+
args: [{ selector: 'mg-base-confirm', template: '', changeDetection: ChangeDetectionStrategy.Eager, standalone: false }]
|
|
1495
1605
|
}], null, { title: [{
|
|
1496
1606
|
type: Input
|
|
1497
1607
|
}], message: [{
|
|
@@ -1499,7 +1609,7 @@ class BaseMagicConfirmComponent {
|
|
|
1499
1609
|
}], onClose: [{
|
|
1500
1610
|
type: Output
|
|
1501
1611
|
}] }); })();
|
|
1502
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicConfirmComponent, { className: "BaseMagicConfirmComponent", filePath: "src/ui/components/base-magic-confirm.component.ts", lineNumber:
|
|
1612
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicConfirmComponent, { className: "BaseMagicConfirmComponent", filePath: "src/ui/components/base-magic-confirm.component.ts", lineNumber: 14 }); })();
|
|
1503
1613
|
|
|
1504
1614
|
/**
|
|
1505
1615
|
* This is a base class for the magic alert components
|
|
@@ -1525,11 +1635,11 @@ class BaseMagicAlertComponent {
|
|
|
1525
1635
|
this.onClose.emit();
|
|
1526
1636
|
}
|
|
1527
1637
|
/** @nocollapse */ static ɵfac = function BaseMagicAlertComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || BaseMagicAlertComponent)(); };
|
|
1528
|
-
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: BaseMagicAlertComponent, selectors: [["mg-base-alert"]], inputs: { title: "title", message: "message" }, outputs: { onClose: "onClose" }, standalone: false, decls: 0, vars: 0, template: function BaseMagicAlertComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
|
1638
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: BaseMagicAlertComponent, selectors: [["mg-base-alert"]], inputs: { title: "title", message: "message" }, outputs: { onClose: "onClose" }, standalone: false, decls: 0, vars: 0, template: function BaseMagicAlertComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 1 });
|
|
1529
1639
|
}
|
|
1530
1640
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseMagicAlertComponent, [{
|
|
1531
1641
|
type: Component,
|
|
1532
|
-
args: [{ selector: 'mg-base-alert', template: '', standalone: false }]
|
|
1642
|
+
args: [{ selector: 'mg-base-alert', template: '', changeDetection: ChangeDetectionStrategy.Eager, standalone: false }]
|
|
1533
1643
|
}], null, { title: [{
|
|
1534
1644
|
type: Input
|
|
1535
1645
|
}], message: [{
|
|
@@ -1537,20 +1647,18 @@ class BaseMagicAlertComponent {
|
|
|
1537
1647
|
}], onClose: [{
|
|
1538
1648
|
type: Output
|
|
1539
1649
|
}] }); })();
|
|
1540
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicAlertComponent, { className: "BaseMagicAlertComponent", filePath: "src/ui/components/base-magic-alert.component.ts", lineNumber:
|
|
1650
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicAlertComponent, { className: "BaseMagicAlertComponent", filePath: "src/ui/components/base-magic-alert.component.ts", lineNumber: 16 }); })();
|
|
1541
1651
|
|
|
1542
1652
|
/**
|
|
1543
1653
|
* Directive for setting focus on element
|
|
1544
1654
|
*/
|
|
1545
1655
|
class MagicFocusDirective {
|
|
1546
|
-
hostElement;
|
|
1547
|
-
constructor(
|
|
1548
|
-
this.hostElement = hostElement;
|
|
1549
|
-
}
|
|
1656
|
+
hostElement = inject(ElementRef);
|
|
1657
|
+
constructor() { }
|
|
1550
1658
|
ngAfterViewInit() {
|
|
1551
1659
|
this.hostElement.nativeElement.focus();
|
|
1552
1660
|
}
|
|
1553
|
-
/** @nocollapse */ static ɵfac = function MagicFocusDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicFocusDirective)(
|
|
1661
|
+
/** @nocollapse */ static ɵfac = function MagicFocusDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicFocusDirective)(); };
|
|
1554
1662
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicFocusDirective, selectors: [["", "magicFocus", ""]], standalone: false });
|
|
1555
1663
|
}
|
|
1556
1664
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicFocusDirective, [{
|
|
@@ -1559,30 +1667,29 @@ class MagicFocusDirective {
|
|
|
1559
1667
|
selector: '[magicFocus]',
|
|
1560
1668
|
standalone: false
|
|
1561
1669
|
}]
|
|
1562
|
-
}], () => [
|
|
1670
|
+
}], () => [], null); })();
|
|
1563
1671
|
|
|
1564
1672
|
const _c0$2 = ["overlayContainerWrapper"];
|
|
1565
1673
|
class MagicOverlayContainerWrapper {
|
|
1566
|
-
componentListMagicService;
|
|
1567
|
-
magicLazyModuleLoader;
|
|
1568
|
-
injector;
|
|
1569
|
-
changeDetectorRef;
|
|
1570
|
-
compiler;
|
|
1571
1674
|
/**
|
|
1572
1675
|
*
|
|
1573
1676
|
*/
|
|
1574
|
-
Component = null
|
|
1677
|
+
Component = input(null, /* @ts-ignore */
|
|
1678
|
+
...(ngDevMode ? [{ debugName: "Component" }] : /* istanbul ignore next */ []));
|
|
1575
1679
|
/**
|
|
1576
1680
|
*
|
|
1577
1681
|
*/
|
|
1578
|
-
Parameters = {}
|
|
1579
|
-
|
|
1580
|
-
|
|
1682
|
+
Parameters = input({}, /* @ts-ignore */
|
|
1683
|
+
...(ngDevMode ? [{ debugName: "Parameters" }] : /* istanbul ignore next */ []));
|
|
1684
|
+
OverlayTypeParam = input(/* @ts-ignore */
|
|
1685
|
+
...(ngDevMode ? [undefined, { debugName: "OverlayTypeParam" }] : /* istanbul ignore next */ []));
|
|
1686
|
+
onClose = output();
|
|
1581
1687
|
/**
|
|
1582
1688
|
* HTML to be displayed in the modal window
|
|
1583
1689
|
*/
|
|
1584
1690
|
overlayContentViewContainerRef;
|
|
1585
|
-
overlayContainerWrapperElementRef
|
|
1691
|
+
overlayContainerWrapperElementRef = viewChild.required('overlayContainerWrapper', /* @ts-ignore */
|
|
1692
|
+
...(ngDevMode ? [{ debugName: "overlayContainerWrapperElementRef" }] : /* istanbul ignore next */ []));
|
|
1586
1693
|
/**
|
|
1587
1694
|
* @ignore
|
|
1588
1695
|
* contais data of allowed base components to use
|
|
@@ -1592,32 +1699,26 @@ class MagicOverlayContainerWrapper {
|
|
|
1592
1699
|
[OverlayType.Alert, { comp: BaseMagicAlertComponent, error: 'BaseMagicAlertComponent. Alert ' }],
|
|
1593
1700
|
[OverlayType.ConfirmationBox, { comp: BaseMagicConfirmComponent, error: 'BaseMagicConfirmComponent. Confirmation ' }]
|
|
1594
1701
|
]);
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
constructor(
|
|
1600
|
-
this.componentListMagicService = componentListMagicService;
|
|
1601
|
-
this.magicLazyModuleLoader = magicLazyModuleLoader;
|
|
1602
|
-
this.injector = injector;
|
|
1603
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
1604
|
-
this.compiler = compiler;
|
|
1702
|
+
componentListMagicService = inject(ComponentListMagicService);
|
|
1703
|
+
magicLazyModuleLoader = inject(MagicLazyLoaderService);
|
|
1704
|
+
injector = inject(Injector);
|
|
1705
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
1706
|
+
constructor() {
|
|
1605
1707
|
}
|
|
1606
1708
|
/**
|
|
1607
1709
|
*
|
|
1608
1710
|
*/
|
|
1609
1711
|
ngOnInit() {
|
|
1610
|
-
let moduleRef = this.componentListMagicService.getModuleRef(this.Parameters.MagicFormName);
|
|
1712
|
+
let moduleRef = this.componentListMagicService.getModuleRef(this.Parameters().MagicFormName);
|
|
1611
1713
|
if (moduleRef == null) {
|
|
1612
|
-
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(this.Parameters.MagicFormName);
|
|
1714
|
+
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(this.Parameters().MagicFormName);
|
|
1613
1715
|
if (lazyLoadModule != null) {
|
|
1614
1716
|
const Magic = 'Magic';
|
|
1615
1717
|
const Module = 'Module';
|
|
1616
1718
|
// extract name of module(XX) from 'MagicXXModule'
|
|
1617
1719
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
1618
1720
|
this.magicLazyModuleLoader.Load(moduleName).then(m => {
|
|
1619
|
-
|
|
1620
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
1721
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
1621
1722
|
this.loadComponent(moduleRef);
|
|
1622
1723
|
});
|
|
1623
1724
|
}
|
|
@@ -1629,11 +1730,18 @@ class MagicOverlayContainerWrapper {
|
|
|
1629
1730
|
this.loadComponent(moduleRef);
|
|
1630
1731
|
}
|
|
1631
1732
|
loadComponent(moduleRef) {
|
|
1632
|
-
this.Parameters.ModalComp = this.componentListMagicService.getComponent(this.Parameters.MagicFormName, !isNullOrUndefined(this.Parameters.MagicFormName));
|
|
1633
|
-
let componentRef = this.overlayContentViewContainerRef.createComponent(this.Component);
|
|
1634
|
-
let allowedBaseComp = MagicOverlayContainerWrapper.allowedBaseComps.get(this.OverlayTypeParam);
|
|
1733
|
+
this.Parameters().ModalComp = this.componentListMagicService.getComponent(this.Parameters().MagicFormName, !isNullOrUndefined(this.Parameters().MagicFormName));
|
|
1734
|
+
let componentRef = this.overlayContentViewContainerRef.createComponent(this.Component());
|
|
1735
|
+
let allowedBaseComp = MagicOverlayContainerWrapper.allowedBaseComps.get(this.OverlayTypeParam());
|
|
1635
1736
|
if (componentRef.instance instanceof allowedBaseComp.comp) {
|
|
1636
|
-
|
|
1737
|
+
if (this.OverlayTypeParam() === OverlayType.Overlay) {
|
|
1738
|
+
componentRef.setInput('ModalComp', this.Parameters().ModalComp);
|
|
1739
|
+
componentRef.setInput('ModalCompParameters', this.Parameters().ModalCompParameters);
|
|
1740
|
+
}
|
|
1741
|
+
else {
|
|
1742
|
+
componentRef.setInput('title', this.Parameters().title);
|
|
1743
|
+
componentRef.setInput('message', this.Parameters().message);
|
|
1744
|
+
}
|
|
1637
1745
|
componentRef.instance.onClose.subscribe((res) => {
|
|
1638
1746
|
this.onClose.emit(res);
|
|
1639
1747
|
});
|
|
@@ -1647,18 +1755,17 @@ class MagicOverlayContainerWrapper {
|
|
|
1647
1755
|
this.overlayContentViewContainerRef = vcRef;
|
|
1648
1756
|
}
|
|
1649
1757
|
GetRootElement() {
|
|
1650
|
-
return this.overlayContainerWrapperElementRef.nativeElement;
|
|
1758
|
+
return this.overlayContainerWrapperElementRef().nativeElement;
|
|
1651
1759
|
}
|
|
1652
1760
|
DetectChanges() {
|
|
1653
1761
|
this.changeDetectorRef.detectChanges();
|
|
1654
1762
|
}
|
|
1655
|
-
/** @nocollapse */ static ɵfac = function MagicOverlayContainerWrapper_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainerWrapper)(
|
|
1763
|
+
/** @nocollapse */ static ɵfac = function MagicOverlayContainerWrapper_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainerWrapper)(); };
|
|
1656
1764
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicOverlayContainerWrapper, selectors: [["app-magic-overlay-container-wrapper"]], viewQuery: function MagicOverlayContainerWrapper_Query(rf, ctx) { if (rf & 1) {
|
|
1657
|
-
i0.ɵɵ
|
|
1765
|
+
i0.ɵɵviewQuerySignal(ctx.overlayContainerWrapperElementRef, _c0$2, 5);
|
|
1658
1766
|
} if (rf & 2) {
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
} }, inputs: { Component: "Component", Parameters: "Parameters", OverlayTypeParam: "OverlayTypeParam" }, outputs: { onClose: "onClose" }, standalone: false, decls: 7, vars: 0, consts: [["overlayContainerWrapper", ""], ["overlayContent", ""], ["tabIndex", "0", "magicFocus", "", 1, "overlay-container-wrapper-background", 2, "width", "0px", "height", "0px"], [1, "overlay-container-wrapper-background"], ["magicViewContainerRef", ""], ["tabIndex", "0", 1, "overlay-container-wrapper-background", 2, "width", "0px", "height", "0px"]], template: function MagicOverlayContainerWrapper_Template(rf, ctx) { if (rf & 1) {
|
|
1767
|
+
i0.ɵɵqueryAdvance();
|
|
1768
|
+
} }, inputs: { Component: [1, "Component"], Parameters: [1, "Parameters"], OverlayTypeParam: [1, "OverlayTypeParam"] }, outputs: { onClose: "onClose" }, standalone: false, decls: 7, vars: 0, consts: [["overlayContainerWrapper", ""], ["overlayContent", ""], ["tabIndex", "0", "magicFocus", "", 1, "overlay-container-wrapper-background", 2, "width", "0px", "height", "0px"], [1, "overlay-container-wrapper-background"], ["magicViewContainerRef", ""], ["tabIndex", "0", 1, "overlay-container-wrapper-background", 2, "width", "0px", "height", "0px"]], template: function MagicOverlayContainerWrapper_Template(rf, ctx) { if (rf & 1) {
|
|
1662
1769
|
i0.ɵɵelementStart(0, "div");
|
|
1663
1770
|
i0.ɵɵelement(1, "div", 2);
|
|
1664
1771
|
i0.ɵɵelementStart(2, "div", 3, 0);
|
|
@@ -1666,7 +1773,7 @@ class MagicOverlayContainerWrapper {
|
|
|
1666
1773
|
i0.ɵɵelementEnd();
|
|
1667
1774
|
i0.ɵɵelement(6, "div", 5);
|
|
1668
1775
|
i0.ɵɵelementEnd();
|
|
1669
|
-
} }, dependencies: [MagicFocusDirective, MagicViewContainerRef], styles: [".overlay-container-wrapper-background[_ngcontent-%COMP%]{position:fixed;z-index:999;inset:0}"] });
|
|
1776
|
+
} }, dependencies: [MagicFocusDirective, MagicViewContainerRef], styles: [".overlay-container-wrapper-background[_ngcontent-%COMP%]{position:fixed;z-index:999;inset:0}"], changeDetection: 1 });
|
|
1670
1777
|
}
|
|
1671
1778
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicOverlayContainerWrapper, [{
|
|
1672
1779
|
type: Component,
|
|
@@ -1679,19 +1786,8 @@ class MagicOverlayContainerWrapper {
|
|
|
1679
1786
|
</div>
|
|
1680
1787
|
<div class="overlay-container-wrapper-background" tabIndex="0" style="width: 0px; height: 0px;" ></div>
|
|
1681
1788
|
</div>
|
|
1682
|
-
`, standalone: false, styles: [".overlay-container-wrapper-background{position:fixed;z-index:999;inset:0}\n"] }]
|
|
1683
|
-
}], () => [{ type:
|
|
1684
|
-
type: Input
|
|
1685
|
-
}], Parameters: [{
|
|
1686
|
-
type: Input
|
|
1687
|
-
}], OverlayTypeParam: [{
|
|
1688
|
-
type: Input
|
|
1689
|
-
}], onClose: [{
|
|
1690
|
-
type: Output
|
|
1691
|
-
}], overlayContainerWrapperElementRef: [{
|
|
1692
|
-
type: ViewChild,
|
|
1693
|
-
args: ['overlayContainerWrapper', { static: true }]
|
|
1694
|
-
}] }); })();
|
|
1789
|
+
`, changeDetection: ChangeDetectionStrategy.Eager, standalone: false, styles: [".overlay-container-wrapper-background{position:fixed;z-index:999;inset:0}\n"] }]
|
|
1790
|
+
}], () => [], { Component: [{ type: i0.Input, args: [{ isSignal: true, alias: "Component", required: false }] }], Parameters: [{ type: i0.Input, args: [{ isSignal: true, alias: "Parameters", required: false }] }], OverlayTypeParam: [{ type: i0.Input, args: [{ isSignal: true, alias: "OverlayTypeParam", required: false }] }], onClose: [{ type: i0.Output, args: ["onClose"] }], overlayContainerWrapperElementRef: [{ type: i0.ViewChild, args: ['overlayContainerWrapper', { isSignal: true }] }] }); })();
|
|
1695
1791
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainerWrapper, { className: "MagicOverlayContainerWrapper", filePath: "src/ui/magic-modal/magic-overlay-container-wrapper.ts", lineNumber: 46 }); })();
|
|
1696
1792
|
|
|
1697
1793
|
/***
|
|
@@ -1878,21 +1974,13 @@ class confirmationBox {
|
|
|
1878
1974
|
* Service managing overlay windows
|
|
1879
1975
|
*/
|
|
1880
1976
|
class OverlayWindowService {
|
|
1881
|
-
componentList;
|
|
1882
|
-
engineMagicService;
|
|
1883
|
-
magicLazyModuleLoader;
|
|
1884
|
-
injector;
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
constructor(componentList, engineMagicService, magicLazyModuleLoader, injector, compiler, overlayContainerMagicProvider, confirmationComponentsMagicProvider) {
|
|
1889
|
-
this.componentList = componentList;
|
|
1890
|
-
this.engineMagicService = engineMagicService;
|
|
1891
|
-
this.magicLazyModuleLoader = magicLazyModuleLoader;
|
|
1892
|
-
this.injector = injector;
|
|
1893
|
-
this.compiler = compiler;
|
|
1894
|
-
this.overlayContainerMagicProvider = overlayContainerMagicProvider;
|
|
1895
|
-
this.confirmationComponentsMagicProvider = confirmationComponentsMagicProvider;
|
|
1977
|
+
componentList = inject(ComponentListMagicService);
|
|
1978
|
+
engineMagicService = inject(EngineMagicService);
|
|
1979
|
+
magicLazyModuleLoader = inject(MagicLazyLoaderService);
|
|
1980
|
+
injector = inject(Injector);
|
|
1981
|
+
overlayContainerMagicProvider = inject(OverlayContainerMagicProvider);
|
|
1982
|
+
confirmationComponentsMagicProvider = inject(ConfirmationComponentsMagicProvider);
|
|
1983
|
+
constructor() {
|
|
1896
1984
|
}
|
|
1897
1985
|
// The view reference of container of overlay window
|
|
1898
1986
|
overlayWindowsContainerViewRef;
|
|
@@ -1913,8 +2001,7 @@ class OverlayWindowService {
|
|
|
1913
2001
|
// extract name of module(XX) from 'MagicXXModule'
|
|
1914
2002
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
1915
2003
|
this.magicLazyModuleLoader.Load(moduleName).then(m => {
|
|
1916
|
-
|
|
1917
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
2004
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
1918
2005
|
this.open(formName, taskId, taskDescription);
|
|
1919
2006
|
this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);
|
|
1920
2007
|
});
|
|
@@ -1995,13 +2082,15 @@ class OverlayWindowService {
|
|
|
1995
2082
|
// Create the UI component of modal window
|
|
1996
2083
|
let viewCRef = this.overlayWindowsContainerViewRef;
|
|
1997
2084
|
componentRef = viewCRef.createComponent(MagicOverlayContainerWrapper);
|
|
1998
|
-
// Set
|
|
1999
|
-
|
|
2085
|
+
// Set signal inputs via setInput() — direct property assignment would overwrite the signal functions
|
|
2086
|
+
componentRef.setInput('Component', magicModalContainerParameters.Component);
|
|
2087
|
+
componentRef.setInput('Parameters', magicModalContainerParameters.Parameters);
|
|
2088
|
+
componentRef.setInput('OverlayTypeParam', magicModalContainerParameters.OverlayTypeParam);
|
|
2000
2089
|
this.overlayWindowFocusManager.pushDialog(componentRef.instance.GetRootElement());
|
|
2001
2090
|
componentRef.instance.DetectChanges();
|
|
2002
2091
|
return componentRef;
|
|
2003
2092
|
}
|
|
2004
|
-
/** @nocollapse */ static ɵfac = function OverlayWindowService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OverlayWindowService)(
|
|
2093
|
+
/** @nocollapse */ static ɵfac = function OverlayWindowService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OverlayWindowService)(); };
|
|
2005
2094
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: OverlayWindowService, factory: OverlayWindowService.ɵfac, providedIn: 'root' });
|
|
2006
2095
|
}
|
|
2007
2096
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OverlayWindowService, [{
|
|
@@ -2009,7 +2098,7 @@ class OverlayWindowService {
|
|
|
2009
2098
|
args: [{
|
|
2010
2099
|
providedIn: 'root'
|
|
2011
2100
|
}]
|
|
2012
|
-
}], () => [
|
|
2101
|
+
}], () => [], null); })();
|
|
2013
2102
|
class OverlayWindowFocusManager {
|
|
2014
2103
|
rootMagicElement = null;
|
|
2015
2104
|
openDialogList = new Array(0);
|
|
@@ -2134,8 +2223,6 @@ class DialogInfo {
|
|
|
2134
2223
|
* Main service to connect the UI with the Magic WebCLient
|
|
2135
2224
|
*/
|
|
2136
2225
|
class TaskMagicService {
|
|
2137
|
-
magic;
|
|
2138
|
-
overlayWindowService;
|
|
2139
2226
|
/**
|
|
2140
2227
|
* Service to provide table-related functionalities
|
|
2141
2228
|
*/
|
|
@@ -2207,13 +2294,9 @@ class TaskMagicService {
|
|
|
2207
2294
|
* @ignore
|
|
2208
2295
|
*/
|
|
2209
2296
|
oldPageSize = 0;
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
*/
|
|
2214
|
-
constructor(magic, overlayWindowService) {
|
|
2215
|
-
this.magic = magic;
|
|
2216
|
-
this.overlayWindowService = overlayWindowService;
|
|
2297
|
+
magic = inject(EngineMagicService);
|
|
2298
|
+
overlayWindowService = inject(OverlayWindowService);
|
|
2299
|
+
constructor() {
|
|
2217
2300
|
this.Records.setGuiTopIndex(0);
|
|
2218
2301
|
this.mgInputDateFormat = null;
|
|
2219
2302
|
}
|
|
@@ -2996,12 +3079,13 @@ class TaskMagicService {
|
|
|
2996
3079
|
}
|
|
2997
3080
|
/**
|
|
2998
3081
|
* Handle the Radio button "change" event
|
|
2999
|
-
* @param event The event received from the UI
|
|
3000
3082
|
* @param idx Id of the control raising the event
|
|
3083
|
+
* @param rowId Id of the row containing the control (defaults to '0' for non-table controls)
|
|
3001
3084
|
*/
|
|
3002
|
-
mgOnRadioSelectionChanged(idx) {
|
|
3003
|
-
|
|
3004
|
-
let
|
|
3085
|
+
mgOnRadioSelectionChanged(idx, rowId = '0') {
|
|
3086
|
+
// Fetch the Form Control for the specific table row (or row '0' for non-table child controls)
|
|
3087
|
+
let result = this.getFormControl(rowId, idx);
|
|
3088
|
+
let guiEvent = getGuiEventObj('selectionchanged', idx, +rowId);
|
|
3005
3089
|
if (typeof result.value !== 'number')
|
|
3006
3090
|
guiEvent.Value = result.value.index;
|
|
3007
3091
|
else
|
|
@@ -3076,29 +3160,22 @@ class TaskMagicService {
|
|
|
3076
3160
|
}
|
|
3077
3161
|
}
|
|
3078
3162
|
}
|
|
3079
|
-
/** @nocollapse */ static ɵfac = function TaskMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskMagicService)(
|
|
3163
|
+
/** @nocollapse */ static ɵfac = function TaskMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskMagicService)(); };
|
|
3080
3164
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TaskMagicService, factory: TaskMagicService.ɵfac });
|
|
3081
3165
|
}
|
|
3082
3166
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskMagicService, [{
|
|
3083
3167
|
type: Injectable
|
|
3084
|
-
}], () => [
|
|
3168
|
+
}], () => [], null); })();
|
|
3085
3169
|
|
|
3086
3170
|
/**
|
|
3087
3171
|
* Implements various table-related functionalities
|
|
3088
3172
|
*/
|
|
3089
3173
|
class TableMagicService {
|
|
3090
|
-
componentList;
|
|
3091
|
-
task;
|
|
3092
3174
|
selectedItem;
|
|
3093
3175
|
chunkSize;
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
* @param task Magic task service
|
|
3098
|
-
*/
|
|
3099
|
-
constructor(componentList, task) {
|
|
3100
|
-
this.componentList = componentList;
|
|
3101
|
-
this.task = task;
|
|
3176
|
+
componentList = inject(ComponentListMagicService);
|
|
3177
|
+
task = inject(TaskMagicService);
|
|
3178
|
+
constructor() {
|
|
3102
3179
|
}
|
|
3103
3180
|
shouldOpenFieldTextEditor = true;
|
|
3104
3181
|
/**
|
|
@@ -3208,24 +3285,19 @@ class TableMagicService {
|
|
|
3208
3285
|
topIndex--;
|
|
3209
3286
|
return topIndex;
|
|
3210
3287
|
}
|
|
3211
|
-
/** @nocollapse */ static ɵfac = function TableMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableMagicService)(
|
|
3288
|
+
/** @nocollapse */ static ɵfac = function TableMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableMagicService)(); };
|
|
3212
3289
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TableMagicService, factory: TableMagicService.ɵfac });
|
|
3213
3290
|
}
|
|
3214
3291
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableMagicService, [{
|
|
3215
3292
|
type: Injectable
|
|
3216
|
-
}], () => [
|
|
3293
|
+
}], () => [], null); })();
|
|
3217
3294
|
|
|
3218
3295
|
/**
|
|
3219
3296
|
* Enables changing the browser title using Magic expression (SetTitle)
|
|
3220
3297
|
*/
|
|
3221
3298
|
class TitleMagicService {
|
|
3222
|
-
titleService;
|
|
3223
|
-
|
|
3224
|
-
*
|
|
3225
|
-
* @param titleService Angular's title-changing class
|
|
3226
|
-
*/
|
|
3227
|
-
constructor(titleService) {
|
|
3228
|
-
this.titleService = titleService;
|
|
3299
|
+
titleService = inject(Title);
|
|
3300
|
+
constructor() {
|
|
3229
3301
|
}
|
|
3230
3302
|
/**
|
|
3231
3303
|
* Set the new title of the window
|
|
@@ -3234,12 +3306,12 @@ class TitleMagicService {
|
|
|
3234
3306
|
setTitle(newTitle) {
|
|
3235
3307
|
this.titleService.setTitle(newTitle);
|
|
3236
3308
|
}
|
|
3237
|
-
/** @nocollapse */ static ɵfac = function TitleMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TitleMagicService)(
|
|
3309
|
+
/** @nocollapse */ static ɵfac = function TitleMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TitleMagicService)(); };
|
|
3238
3310
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TitleMagicService, factory: TitleMagicService.ɵfac });
|
|
3239
3311
|
}
|
|
3240
3312
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TitleMagicService, [{
|
|
3241
3313
|
type: Injectable
|
|
3242
|
-
}], () => [
|
|
3314
|
+
}], () => [], null); })();
|
|
3243
3315
|
|
|
3244
3316
|
let COLOR_FILE_NAME = new InjectionToken('colorFile', {
|
|
3245
3317
|
providedIn: 'root',
|
|
@@ -3252,7 +3324,6 @@ const SYSTEM_BG = 4;
|
|
|
3252
3324
|
const SYSTEM_FG_AND_SYSTEM_BG = 6;
|
|
3253
3325
|
const TRANSPERENT_BG = 1;
|
|
3254
3326
|
class MagicColorService {
|
|
3255
|
-
http;
|
|
3256
3327
|
colorFileName = 'clr_rnt.eng';
|
|
3257
3328
|
getColorFilePath() {
|
|
3258
3329
|
return 'assets/' + this.colorFileName;
|
|
@@ -3260,10 +3331,11 @@ class MagicColorService {
|
|
|
3260
3331
|
colorsData;
|
|
3261
3332
|
fileNotFound = false;
|
|
3262
3333
|
// public static FILE_NAME;
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3334
|
+
http = inject(HttpClient);
|
|
3335
|
+
colorFile1 = inject(COLOR_FILE_NAME);
|
|
3336
|
+
constructor() {
|
|
3337
|
+
if (this.colorFile1)
|
|
3338
|
+
this.colorFileName = this.colorFile1;
|
|
3267
3339
|
else
|
|
3268
3340
|
this.colorFileName = 'clr_rnt.eng';
|
|
3269
3341
|
}
|
|
@@ -3335,7 +3407,7 @@ class MagicColorService {
|
|
|
3335
3407
|
}
|
|
3336
3408
|
return '';
|
|
3337
3409
|
}
|
|
3338
|
-
/** @nocollapse */ static ɵfac = function MagicColorService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicColorService)(
|
|
3410
|
+
/** @nocollapse */ static ɵfac = function MagicColorService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicColorService)(); };
|
|
3339
3411
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicColorService, factory: MagicColorService.ɵfac, providedIn: 'root' });
|
|
3340
3412
|
}
|
|
3341
3413
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicColorService, [{
|
|
@@ -3343,26 +3415,21 @@ class MagicColorService {
|
|
|
3343
3415
|
args: [{
|
|
3344
3416
|
providedIn: 'root'
|
|
3345
3417
|
}]
|
|
3346
|
-
}], () => [
|
|
3347
|
-
type: Inject,
|
|
3348
|
-
args: [COLOR_FILE_NAME]
|
|
3349
|
-
}] }], null); })();
|
|
3418
|
+
}], () => [], null); })();
|
|
3350
3419
|
|
|
3351
3420
|
/**
|
|
3352
3421
|
* Provides the UI with values calculated by the Magic WebClient
|
|
3353
3422
|
*/
|
|
3354
3423
|
class AccessorMagicService {
|
|
3355
|
-
task;
|
|
3356
|
-
magicColor;
|
|
3357
3424
|
Logger = null;
|
|
3358
3425
|
hhmm = maskitoTimeOptionsGenerator({ mode: 'HH:MM' });
|
|
3359
3426
|
hhmmss = maskitoTimeOptionsGenerator({ mode: 'HH:MM:SS' });
|
|
3427
|
+
task = inject(TaskMagicService);
|
|
3428
|
+
magicColor = inject(MagicColorService);
|
|
3360
3429
|
/**
|
|
3361
3430
|
* @ignore
|
|
3362
3431
|
*/
|
|
3363
|
-
constructor(
|
|
3364
|
-
this.task = task;
|
|
3365
|
-
this.magicColor = magicColor;
|
|
3432
|
+
constructor() {
|
|
3366
3433
|
this.Logger = Logger.Instance;
|
|
3367
3434
|
}
|
|
3368
3435
|
UploadFileToServer(fileContent, serverFileName) {
|
|
@@ -3463,6 +3530,19 @@ class AccessorMagicService {
|
|
|
3463
3530
|
let vis = this.getProperty(controlId, HtmlProperties.Visible, rowId);
|
|
3464
3531
|
return vis ? 'visible' : 'hidden';
|
|
3465
3532
|
}
|
|
3533
|
+
/**
|
|
3534
|
+
* Returns whether a control is visible or not
|
|
3535
|
+
* @param controlId Id of control
|
|
3536
|
+
* @param rowId Id of row, if applicable
|
|
3537
|
+
* @returns true if the control is visible, false otherwise
|
|
3538
|
+
*/
|
|
3539
|
+
// mgIsVisible
|
|
3540
|
+
isVisible(controlId, rowId) {
|
|
3541
|
+
// The value is not always a boolean: getProperty() returns '' if the control has not sent its
|
|
3542
|
+
// Visible property yet, and undefined if the row does not exist. Comparing with === true turns
|
|
3543
|
+
// both into false. getVisible() behaves the same way - for those values it returns 'hidden'.
|
|
3544
|
+
return this.getProperty(controlId, HtmlProperties.Visible, rowId) === true;
|
|
3545
|
+
}
|
|
3466
3546
|
/**
|
|
3467
3547
|
* Returns alpha mask of a control
|
|
3468
3548
|
* @param controlId Id of control
|
|
@@ -3975,49 +4055,42 @@ class AccessorMagicService {
|
|
|
3975
4055
|
getColor(colorNumber, colorType) {
|
|
3976
4056
|
return this.magicColor.getColor(colorNumber, colorType);
|
|
3977
4057
|
}
|
|
3978
|
-
/** @nocollapse */ static ɵfac = function AccessorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AccessorMagicService)(
|
|
4058
|
+
/** @nocollapse */ static ɵfac = function AccessorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AccessorMagicService)(); };
|
|
3979
4059
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: AccessorMagicService, factory: AccessorMagicService.ɵfac });
|
|
3980
4060
|
}
|
|
3981
4061
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccessorMagicService, [{
|
|
3982
4062
|
type: Injectable
|
|
3983
|
-
}], () => [
|
|
4063
|
+
}], () => [], null); })();
|
|
3984
4064
|
|
|
3985
4065
|
/**
|
|
3986
4066
|
* Central place for adding the Magic services
|
|
3987
4067
|
*/
|
|
3988
4068
|
class MagicServices {
|
|
3989
|
-
task;
|
|
3990
|
-
subformService;
|
|
3991
|
-
tableService;
|
|
3992
|
-
titleService;
|
|
3993
|
-
mgAccessorService;
|
|
4069
|
+
task = inject(TaskMagicService);
|
|
4070
|
+
subformService = inject(SubformMagicService);
|
|
4071
|
+
tableService = inject(TableMagicService);
|
|
4072
|
+
titleService = inject(TitleMagicService);
|
|
4073
|
+
mgAccessorService = inject(AccessorMagicService);
|
|
3994
4074
|
/**
|
|
3995
4075
|
* @ignore
|
|
3996
4076
|
*/
|
|
3997
|
-
constructor(
|
|
3998
|
-
this.task =
|
|
3999
|
-
this.
|
|
4000
|
-
this.
|
|
4001
|
-
this.
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
task.mgSubformService = subformService;
|
|
4005
|
-
task.mgTitleService = titleService;
|
|
4006
|
-
task.mgAccessorService = mgAccessorService;
|
|
4007
|
-
}
|
|
4008
|
-
/** @nocollapse */ static ɵfac = function MagicServices_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicServices)(i0.ɵɵinject(TaskMagicService), i0.ɵɵinject(SubformMagicService), i0.ɵɵinject(TableMagicService), i0.ɵɵinject(TitleMagicService), i0.ɵɵinject(AccessorMagicService)); };
|
|
4077
|
+
constructor() {
|
|
4078
|
+
this.task.tableService = this.tableService;
|
|
4079
|
+
this.task.mgSubformService = this.subformService;
|
|
4080
|
+
this.task.mgTitleService = this.titleService;
|
|
4081
|
+
this.task.mgAccessorService = this.mgAccessorService;
|
|
4082
|
+
}
|
|
4083
|
+
/** @nocollapse */ static ɵfac = function MagicServices_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicServices)(); };
|
|
4009
4084
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicServices, factory: MagicServices.ɵfac });
|
|
4010
4085
|
}
|
|
4011
4086
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicServices, [{
|
|
4012
4087
|
type: Injectable
|
|
4013
|
-
}], () => [
|
|
4088
|
+
}], () => [], null); })();
|
|
4014
4089
|
|
|
4015
4090
|
/**
|
|
4016
4091
|
* Base component representing a Magic task
|
|
4017
4092
|
*/
|
|
4018
4093
|
class TaskBaseMagicComponent {
|
|
4019
|
-
ref;
|
|
4020
|
-
magicServices;
|
|
4021
4094
|
/**
|
|
4022
4095
|
* Id of task, used for initializing the task service
|
|
4023
4096
|
*/
|
|
@@ -4030,15 +4103,24 @@ class TaskBaseMagicComponent {
|
|
|
4030
4103
|
* @ignore
|
|
4031
4104
|
*/
|
|
4032
4105
|
magicProperties = MagicProperties;
|
|
4106
|
+
/**
|
|
4107
|
+
* @ignore
|
|
4108
|
+
* Injected as fields rather than constructor parameters, so that the constructor
|
|
4109
|
+
* signature of this base class - which every generated component inherits - is unchanged.
|
|
4110
|
+
*/
|
|
4111
|
+
magicChangeDetection = inject(MagicChangeDetectionService);
|
|
4112
|
+
/**
|
|
4113
|
+
* @ignore
|
|
4114
|
+
*/
|
|
4115
|
+
destroyRef = inject(DestroyRef);
|
|
4116
|
+
ref = inject(ChangeDetectorRef);
|
|
4117
|
+
magicServices = inject(MagicServices);
|
|
4033
4118
|
/**
|
|
4034
4119
|
*
|
|
4035
4120
|
* @param ref changes-detector object
|
|
4036
4121
|
* @param magicServices Access point for all Magic services
|
|
4037
4122
|
*/
|
|
4038
|
-
constructor(
|
|
4039
|
-
this.ref = ref;
|
|
4040
|
-
this.magicServices = magicServices;
|
|
4041
|
-
}
|
|
4123
|
+
constructor() { }
|
|
4042
4124
|
/**
|
|
4043
4125
|
* Returns the Magic task service
|
|
4044
4126
|
* @returns
|
|
@@ -4088,6 +4170,14 @@ class TaskBaseMagicComponent {
|
|
|
4088
4170
|
this.task.detectChanges.pipe().subscribe(c => {
|
|
4089
4171
|
this.ref.detectChanges();
|
|
4090
4172
|
});
|
|
4173
|
+
// Running zoneless, nothing refreshes this view unless Angular is told to.
|
|
4174
|
+
// MagicChangeDetectionService is application-scoped and never completes, so this
|
|
4175
|
+
// subscription must be tied to the component's lifetime.
|
|
4176
|
+
this.magicChangeDetection.changed
|
|
4177
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4178
|
+
.subscribe(() => {
|
|
4179
|
+
this.ref.markForCheck();
|
|
4180
|
+
});
|
|
4091
4181
|
this.task.initTask(this.taskIdParam, this.taskDescription);
|
|
4092
4182
|
this.createFormControlsAccessor(this.screenFormGroup);
|
|
4093
4183
|
this.setInputDateFormat();
|
|
@@ -4161,8 +4251,8 @@ class TaskBaseMagicComponent {
|
|
|
4161
4251
|
ngOnDestroy() {
|
|
4162
4252
|
this.task.dispose();
|
|
4163
4253
|
}
|
|
4164
|
-
/** @nocollapse */ static ɵfac = function TaskBaseMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskBaseMagicComponent)(
|
|
4165
|
-
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TaskBaseMagicComponent, selectors: [["task-magic"]], inputs: { taskIdParam: "taskIdParam", taskDescription: "taskDescription" }, standalone: false, features: [i0.ɵɵProvidersFeature([TaskMagicService, SubformMagicService, TableMagicService])], decls: 0, vars: 0, template: function TaskBaseMagicComponent_Template(rf, ctx) { }, encapsulation: 2 });
|
|
4254
|
+
/** @nocollapse */ static ɵfac = function TaskBaseMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskBaseMagicComponent)(); };
|
|
4255
|
+
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TaskBaseMagicComponent, selectors: [["task-magic"]], inputs: { taskIdParam: "taskIdParam", taskDescription: "taskDescription" }, standalone: false, features: [i0.ɵɵProvidersFeature([TaskMagicService, SubformMagicService, TableMagicService])], decls: 0, vars: 0, template: function TaskBaseMagicComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 1 });
|
|
4166
4256
|
}
|
|
4167
4257
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskBaseMagicComponent, [{
|
|
4168
4258
|
type: Component,
|
|
@@ -4170,21 +4260,20 @@ class TaskBaseMagicComponent {
|
|
|
4170
4260
|
selector: 'task-magic',
|
|
4171
4261
|
providers: [TaskMagicService, SubformMagicService, TableMagicService],
|
|
4172
4262
|
template: '',
|
|
4263
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
4173
4264
|
standalone: false
|
|
4174
4265
|
}]
|
|
4175
|
-
}], () => [
|
|
4266
|
+
}], () => [], { taskIdParam: [{
|
|
4176
4267
|
type: Input
|
|
4177
4268
|
}], taskDescription: [{
|
|
4178
4269
|
type: Input
|
|
4179
4270
|
}] }); })();
|
|
4180
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBaseMagicComponent, { className: "TaskBaseMagicComponent", filePath: "src/ui/task-base.magic.component.ts", lineNumber:
|
|
4271
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBaseMagicComponent, { className: "TaskBaseMagicComponent", filePath: "src/ui/task-base.magic.component.ts", lineNumber: 24 }); })();
|
|
4181
4272
|
|
|
4182
4273
|
/**
|
|
4183
4274
|
* @ignore
|
|
4184
4275
|
*/
|
|
4185
4276
|
class RowMagicDirective {
|
|
4186
|
-
_task;
|
|
4187
|
-
element;
|
|
4188
4277
|
rowId;
|
|
4189
4278
|
/**
|
|
4190
4279
|
* The HTML element connected to this directive
|
|
@@ -4194,9 +4283,9 @@ class RowMagicDirective {
|
|
|
4194
4283
|
* @ignore
|
|
4195
4284
|
*/
|
|
4196
4285
|
rowChangedSubscriber = null;
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4286
|
+
_task = inject(TaskMagicService);
|
|
4287
|
+
element = inject(ElementRef);
|
|
4288
|
+
constructor() {
|
|
4200
4289
|
this.htmlElement = this.element.nativeElement;
|
|
4201
4290
|
}
|
|
4202
4291
|
/**
|
|
@@ -4237,7 +4326,7 @@ class RowMagicDirective {
|
|
|
4237
4326
|
event.cancelBubble = true;
|
|
4238
4327
|
}
|
|
4239
4328
|
}
|
|
4240
|
-
/** @nocollapse */ static ɵfac = function RowMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RowMagicDirective)(
|
|
4329
|
+
/** @nocollapse */ static ɵfac = function RowMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RowMagicDirective)(); };
|
|
4241
4330
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: RowMagicDirective, selectors: [["", "magicRow", ""]], hostBindings: function RowMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
4242
4331
|
i0.ɵɵlistener("click", function RowMagicDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });
|
|
4243
4332
|
} }, inputs: { rowId: [0, "magicRow", "rowId"] }, standalone: false });
|
|
@@ -4248,7 +4337,7 @@ class RowMagicDirective {
|
|
|
4248
4337
|
selector: '[magicRow]',
|
|
4249
4338
|
standalone: false
|
|
4250
4339
|
}]
|
|
4251
|
-
}], () => [
|
|
4340
|
+
}], () => [], { rowId: [{
|
|
4252
4341
|
type: Input,
|
|
4253
4342
|
args: ['magicRow']
|
|
4254
4343
|
}], onClick: [{
|
|
@@ -4260,12 +4349,6 @@ class RowMagicDirective {
|
|
|
4260
4349
|
* Connects HTML elements to the Magic Web Client engine
|
|
4261
4350
|
*/
|
|
4262
4351
|
class MagicDirective {
|
|
4263
|
-
_task;
|
|
4264
|
-
element;
|
|
4265
|
-
renderer;
|
|
4266
|
-
vcRef;
|
|
4267
|
-
platform;
|
|
4268
|
-
magicRow;
|
|
4269
4352
|
set magic(val) {
|
|
4270
4353
|
this.id = val;
|
|
4271
4354
|
this.selector = "magic";
|
|
@@ -4329,21 +4412,15 @@ class MagicDirective {
|
|
|
4329
4412
|
* @param platform
|
|
4330
4413
|
* @param magicRow
|
|
4331
4414
|
*/
|
|
4332
|
-
constructor(
|
|
4333
|
-
this._task = _task;
|
|
4334
|
-
this.element = element;
|
|
4335
|
-
this.renderer = renderer;
|
|
4336
|
-
this.vcRef = vcRef;
|
|
4337
|
-
this.platform = platform;
|
|
4338
|
-
this.magicRow = magicRow;
|
|
4415
|
+
constructor() {
|
|
4339
4416
|
this.htmlElement = this.element.nativeElement;
|
|
4340
4417
|
//let c = (<any>this.vcRef)._view;
|
|
4341
4418
|
//while (!(c instanceof TaskBaseMagicComponent)) {
|
|
4342
4419
|
// c = c.component;
|
|
4343
4420
|
//}
|
|
4344
4421
|
//this.component = c;
|
|
4345
|
-
if (!(typeof magicRow === "undefined" || magicRow === null))
|
|
4346
|
-
this.rowId = magicRow.rowId;
|
|
4422
|
+
if (!(typeof this.magicRow === "undefined" || this.magicRow === null))
|
|
4423
|
+
this.rowId = this.magicRow.rowId;
|
|
4347
4424
|
}
|
|
4348
4425
|
/**
|
|
4349
4426
|
* Get the task service
|
|
@@ -4352,6 +4429,12 @@ class MagicDirective {
|
|
|
4352
4429
|
get task() {
|
|
4353
4430
|
return this._task;
|
|
4354
4431
|
}
|
|
4432
|
+
_task = inject(TaskMagicService);
|
|
4433
|
+
element = inject(ElementRef);
|
|
4434
|
+
renderer = inject(Renderer2);
|
|
4435
|
+
vcRef = inject(ViewContainerRef);
|
|
4436
|
+
platform = inject(Platform);
|
|
4437
|
+
magicRow = inject(RowMagicDirective, { optional: true });
|
|
4355
4438
|
/**
|
|
4356
4439
|
* Register to the events this element may need to handle
|
|
4357
4440
|
*/
|
|
@@ -4554,7 +4637,7 @@ class MagicDirective {
|
|
|
4554
4637
|
ngOnDestroy() {
|
|
4555
4638
|
this.subscribeRefreshDom.unsubscribe();
|
|
4556
4639
|
}
|
|
4557
|
-
/** @nocollapse */ static ɵfac = function MagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicDirective)(
|
|
4640
|
+
/** @nocollapse */ static ɵfac = function MagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicDirective)(); };
|
|
4558
4641
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicDirective, selectors: [["", "magic", ""]], inputs: { magic: "magic", eventsOnly: "eventsOnly", pollTime: "pollTime", rowId: "rowId" }, standalone: false });
|
|
4559
4642
|
}
|
|
4560
4643
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicDirective, [{
|
|
@@ -4563,9 +4646,7 @@ class MagicDirective {
|
|
|
4563
4646
|
selector: "[magic]",
|
|
4564
4647
|
standalone: false
|
|
4565
4648
|
}]
|
|
4566
|
-
}], () => [
|
|
4567
|
-
type: Optional
|
|
4568
|
-
}] }], { magic: [{
|
|
4649
|
+
}], () => [], { magic: [{
|
|
4569
4650
|
type: Input,
|
|
4570
4651
|
args: ["magic"]
|
|
4571
4652
|
}], eventsOnly: [{
|
|
@@ -4583,9 +4664,15 @@ class MagicDirective {
|
|
|
4583
4664
|
class NoControlMagicDirective extends MagicDirective {
|
|
4584
4665
|
set magic(val) { this.id = val; this.selector = 'magicnc'; }
|
|
4585
4666
|
;
|
|
4586
|
-
constructor(
|
|
4587
|
-
super(
|
|
4667
|
+
constructor() {
|
|
4668
|
+
super();
|
|
4588
4669
|
}
|
|
4670
|
+
_task = inject(TaskMagicService);
|
|
4671
|
+
element = inject(ElementRef);
|
|
4672
|
+
renderer = inject(Renderer2);
|
|
4673
|
+
vcRef = inject(ViewContainerRef);
|
|
4674
|
+
platform = inject(Platform);
|
|
4675
|
+
magicRow = inject(RowMagicDirective, { optional: true });
|
|
4589
4676
|
regEvents() {
|
|
4590
4677
|
super.regEvents();
|
|
4591
4678
|
if (this.htmlElement instanceof HTMLSelectElement) {
|
|
@@ -4752,7 +4839,7 @@ class NoControlMagicDirective extends MagicDirective {
|
|
|
4752
4839
|
break;
|
|
4753
4840
|
}
|
|
4754
4841
|
}
|
|
4755
|
-
/** @nocollapse */ static ɵfac = function NoControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NoControlMagicDirective)(
|
|
4842
|
+
/** @nocollapse */ static ɵfac = function NoControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NoControlMagicDirective)(); };
|
|
4756
4843
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: NoControlMagicDirective, selectors: [["", "magicnc", ""]], inputs: { magic: [0, "magicnc", "magic"] }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature] });
|
|
4757
4844
|
}
|
|
4758
4845
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NoControlMagicDirective, [{
|
|
@@ -4761,9 +4848,7 @@ class NoControlMagicDirective extends MagicDirective {
|
|
|
4761
4848
|
selector: '[magicnc]',
|
|
4762
4849
|
standalone: false
|
|
4763
4850
|
}]
|
|
4764
|
-
}], () => [
|
|
4765
|
-
type: Optional
|
|
4766
|
-
}] }], { magic: [{
|
|
4851
|
+
}], () => [], { magic: [{
|
|
4767
4852
|
type: Input,
|
|
4768
4853
|
args: ['magicnc']
|
|
4769
4854
|
}] }); })();
|
|
@@ -4778,10 +4863,9 @@ class Constants {
|
|
|
4778
4863
|
* @ignore
|
|
4779
4864
|
*/
|
|
4780
4865
|
class DateMagicPipe extends DatePipe {
|
|
4781
|
-
_task;
|
|
4782
|
-
constructor(
|
|
4866
|
+
_task = inject(TaskMagicService);
|
|
4867
|
+
constructor() {
|
|
4783
4868
|
super('en-US');
|
|
4784
|
-
this._task = _task;
|
|
4785
4869
|
}
|
|
4786
4870
|
transform(value, controlId) {
|
|
4787
4871
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -4802,7 +4886,7 @@ class DateMagicPipe extends DatePipe {
|
|
|
4802
4886
|
value = "";
|
|
4803
4887
|
return value;
|
|
4804
4888
|
}
|
|
4805
|
-
/** @nocollapse */ static ɵfac = function DateMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateMagicPipe)(
|
|
4889
|
+
/** @nocollapse */ static ɵfac = function DateMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateMagicPipe)(); };
|
|
4806
4890
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicDate", type: DateMagicPipe, pure: true, standalone: false });
|
|
4807
4891
|
}
|
|
4808
4892
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DateMagicPipe, [{
|
|
@@ -4811,7 +4895,7 @@ class DateMagicPipe extends DatePipe {
|
|
|
4811
4895
|
name: 'magicDate',
|
|
4812
4896
|
standalone: false
|
|
4813
4897
|
}]
|
|
4814
|
-
}], () => [
|
|
4898
|
+
}], () => [], null); })();
|
|
4815
4899
|
class MgDateFormatter {
|
|
4816
4900
|
ConvertMgDateFormatToAngular(mgDateMask) {
|
|
4817
4901
|
let formatStr = new StringBuilder();
|
|
@@ -4879,16 +4963,15 @@ class MgDateFormatter {
|
|
|
4879
4963
|
* Perform Magic validation on input controls which hold alphanumeric strings
|
|
4880
4964
|
*/
|
|
4881
4965
|
class MgformatMagicDirective {
|
|
4882
|
-
magicDir;
|
|
4883
|
-
_task;
|
|
4884
4966
|
datePasteFlag = false;
|
|
4967
|
+
caretPosAfterMinus = null;
|
|
4968
|
+
currencyConfig = inject(NGX_CURRENCY_CONFIG, { optional: true });
|
|
4969
|
+
magicDir = inject(MagicDirective);
|
|
4970
|
+
_task = inject(TaskMagicService);
|
|
4885
4971
|
/**
|
|
4886
4972
|
* @ignore
|
|
4887
4973
|
*/
|
|
4888
|
-
constructor(
|
|
4889
|
-
this.magicDir = magicDir;
|
|
4890
|
-
this._task = _task;
|
|
4891
|
-
}
|
|
4974
|
+
constructor() { }
|
|
4892
4975
|
ngAfterViewInit() {
|
|
4893
4976
|
let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
|
|
4894
4977
|
if (control != null && this._task.mgInputDateFormat == null) {
|
|
@@ -4918,6 +5001,24 @@ class MgformatMagicDirective {
|
|
|
4918
5001
|
*/
|
|
4919
5002
|
this.datePasteFlag = true;
|
|
4920
5003
|
}
|
|
5004
|
+
/**
|
|
5005
|
+
* ngx-currency moves the cursor to the end when '-' is typed, so fix the cursor position.
|
|
5006
|
+
* Only Natural input mode needs this. In Financial mode digits are entered
|
|
5007
|
+
* from the right, so the cursor at the end already works.
|
|
5008
|
+
*/
|
|
5009
|
+
onBeforeInputEvent(event) {
|
|
5010
|
+
if (event.data == '-') {
|
|
5011
|
+
// Cleared first, so a position saved for an earlier '-' is not used again.
|
|
5012
|
+
this.caretPosAfterMinus = null;
|
|
5013
|
+
// A value that is already negative does not change, so there is nothing to fix.
|
|
5014
|
+
// This change applies only to Natural mode, since digits are entered from left to right and nothing more can be entered once the cursor reaches the far right.
|
|
5015
|
+
if (this.currencyConfig?.inputMode == NgxCurrencyInputMode.Natural && !event.target.value.startsWith('-')) {
|
|
5016
|
+
let attr = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;
|
|
5017
|
+
if (attr == StorageAttribute.NUMERIC)
|
|
5018
|
+
this.saveCaretPosition(event.target);
|
|
5019
|
+
}
|
|
5020
|
+
}
|
|
5021
|
+
}
|
|
4921
5022
|
onInputEvent(event) {
|
|
4922
5023
|
let attr = this._task.Records.list[0].getControlMetadata(this.magicDir.id).dataType;
|
|
4923
5024
|
if (attr == StorageAttribute.DATE) {
|
|
@@ -4925,8 +5026,38 @@ class MgformatMagicDirective {
|
|
|
4925
5026
|
this.dateMasking(event);
|
|
4926
5027
|
this.datePasteFlag = false;
|
|
4927
5028
|
}
|
|
5029
|
+
else if (attr == StorageAttribute.NUMERIC) {
|
|
5030
|
+
// '-' was typed and beforeinput saved where the cursor must go.
|
|
5031
|
+
// ngx-currency's input handler may run after this one, so wait until it is done.
|
|
5032
|
+
if (event.data == '-' && this.caretPosAfterMinus != null) {
|
|
5033
|
+
setTimeout(() => event.target.setSelectionRange(this.caretPosAfterMinus, this.caretPosAfterMinus));
|
|
5034
|
+
}
|
|
5035
|
+
}
|
|
4928
5036
|
this.calculatePattern();
|
|
4929
5037
|
}
|
|
5038
|
+
/**
|
|
5039
|
+
* Saves where the cursor must go after '-' is typed in a numeric control.
|
|
5040
|
+
* The cursor can't be set here: ngx-currency adds the '-' on the input event,
|
|
5041
|
+
* which comes after this one, and moves the cursor to the end.
|
|
5042
|
+
* @param input The input control
|
|
5043
|
+
*/
|
|
5044
|
+
saveCaretPosition(input) {
|
|
5045
|
+
// /[1-9]/ matches any single digit from 1 to 9, and test() returns true
|
|
5046
|
+
// if the value contains at least one of them. '!' turns that around, so
|
|
5047
|
+
// isZero is true when every digit is 0, e.g. '0.00' or '$ 0.00', or the value is empty.
|
|
5048
|
+
// Number(value) can't be used, as the text may hold a prefix or separators.
|
|
5049
|
+
const isZero = !/[1-9]/.test(input.value);
|
|
5050
|
+
// isZero handles the case where the user clears the control and types -.
|
|
5051
|
+
// After clearing, the control is empty or shows 0.00; on - ngx-currency shows -0.00 with the cursor at the far right,
|
|
5052
|
+
// and in Natural mode no digits can be typed there. So the cursor must go before the decimal point (-0|.00),
|
|
5053
|
+
// typing 5 and 2 gives -52.00.
|
|
5054
|
+
if (isZero && input.selectionStart === 0)
|
|
5055
|
+
this.caretPosAfterMinus = 2;
|
|
5056
|
+
else
|
|
5057
|
+
// '-' is added in front of the value: put the cursor back where it was,
|
|
5058
|
+
// moved one place right for the added '-'
|
|
5059
|
+
this.caretPosAfterMinus = input.selectionStart + 1;
|
|
5060
|
+
}
|
|
4930
5061
|
//This method inserts '/' as a separator while entering date in the textbox.
|
|
4931
5062
|
//Example: 10/10/2023
|
|
4932
5063
|
dateMasking(event) {
|
|
@@ -5482,9 +5613,9 @@ class MgformatMagicDirective {
|
|
|
5482
5613
|
return true;
|
|
5483
5614
|
return false;
|
|
5484
5615
|
}
|
|
5485
|
-
/** @nocollapse */ static ɵfac = function MgformatMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgformatMagicDirective)(
|
|
5616
|
+
/** @nocollapse */ static ɵfac = function MgformatMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgformatMagicDirective)(); };
|
|
5486
5617
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MgformatMagicDirective, selectors: [["", "mgFormat", ""]], hostBindings: function MgformatMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
5487
|
-
i0.ɵɵlistener("focus", function MgformatMagicDirective_focus_HostBindingHandler($event) { return ctx.onFocusEvent($event); })("paste", function MgformatMagicDirective_paste_HostBindingHandler($event) { return ctx.onPaste($event); })("input", function MgformatMagicDirective_input_HostBindingHandler($event) { return ctx.onInputEvent($event); })("change", function MgformatMagicDirective_change_HostBindingHandler($event) { return ctx.onChangeEvent($event); })("blur", function MgformatMagicDirective_blur_HostBindingHandler($event) { return ctx.onBlurEvent($event); });
|
|
5618
|
+
i0.ɵɵlistener("focus", function MgformatMagicDirective_focus_HostBindingHandler($event) { return ctx.onFocusEvent($event); })("paste", function MgformatMagicDirective_paste_HostBindingHandler($event) { return ctx.onPaste($event); })("beforeinput", function MgformatMagicDirective_beforeinput_HostBindingHandler($event) { return ctx.onBeforeInputEvent($event); })("input", function MgformatMagicDirective_input_HostBindingHandler($event) { return ctx.onInputEvent($event); })("change", function MgformatMagicDirective_change_HostBindingHandler($event) { return ctx.onChangeEvent($event); })("blur", function MgformatMagicDirective_blur_HostBindingHandler($event) { return ctx.onBlurEvent($event); });
|
|
5488
5619
|
} }, standalone: false });
|
|
5489
5620
|
}
|
|
5490
5621
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgformatMagicDirective, [{
|
|
@@ -5493,12 +5624,15 @@ class MgformatMagicDirective {
|
|
|
5493
5624
|
selector: '[mgFormat]',
|
|
5494
5625
|
standalone: false
|
|
5495
5626
|
}]
|
|
5496
|
-
}], () => [
|
|
5627
|
+
}], () => [], { onFocusEvent: [{
|
|
5497
5628
|
type: HostListener,
|
|
5498
5629
|
args: ['focus', ['$event']]
|
|
5499
5630
|
}], onPaste: [{
|
|
5500
5631
|
type: HostListener,
|
|
5501
5632
|
args: ['paste', ['$event']]
|
|
5633
|
+
}], onBeforeInputEvent: [{
|
|
5634
|
+
type: HostListener,
|
|
5635
|
+
args: ['beforeinput', ['$event']]
|
|
5502
5636
|
}], onInputEvent: [{
|
|
5503
5637
|
type: HostListener,
|
|
5504
5638
|
args: ['input', ['$event']]
|
|
@@ -5514,10 +5648,9 @@ class MgformatMagicDirective {
|
|
|
5514
5648
|
* @ignore
|
|
5515
5649
|
*/
|
|
5516
5650
|
class TimeMagicPipe extends DatePipe {
|
|
5517
|
-
_task;
|
|
5518
|
-
constructor(
|
|
5651
|
+
_task = inject(TaskMagicService);
|
|
5652
|
+
constructor() {
|
|
5519
5653
|
super('en-US');
|
|
5520
|
-
this._task = _task;
|
|
5521
5654
|
}
|
|
5522
5655
|
transform(value, controlId) {
|
|
5523
5656
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -5548,7 +5681,7 @@ class TimeMagicPipe extends DatePipe {
|
|
|
5548
5681
|
}
|
|
5549
5682
|
return value;
|
|
5550
5683
|
}
|
|
5551
|
-
/** @nocollapse */ static ɵfac = function TimeMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeMagicPipe)(
|
|
5684
|
+
/** @nocollapse */ static ɵfac = function TimeMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeMagicPipe)(); };
|
|
5552
5685
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicTime", type: TimeMagicPipe, pure: true, standalone: false });
|
|
5553
5686
|
}
|
|
5554
5687
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeMagicPipe, [{
|
|
@@ -5557,22 +5690,20 @@ class TimeMagicPipe extends DatePipe {
|
|
|
5557
5690
|
name: 'magicTime',
|
|
5558
5691
|
standalone: false
|
|
5559
5692
|
}]
|
|
5560
|
-
}], () => [
|
|
5693
|
+
}], () => [], null); })();
|
|
5561
5694
|
|
|
5562
5695
|
/**
|
|
5563
5696
|
* Validates the field range.
|
|
5564
5697
|
*/
|
|
5565
5698
|
class RangeValidatorMagicDirective {
|
|
5566
|
-
_task;
|
|
5567
|
-
vcRef;
|
|
5699
|
+
_task = inject(TaskMagicService);
|
|
5700
|
+
vcRef = inject(ViewContainerRef);
|
|
5568
5701
|
/**
|
|
5569
5702
|
*
|
|
5570
5703
|
* @param _task The task service
|
|
5571
5704
|
* @param vcRef
|
|
5572
5705
|
*/
|
|
5573
|
-
constructor(
|
|
5574
|
-
this._task = _task;
|
|
5575
|
-
this.vcRef = vcRef;
|
|
5706
|
+
constructor() {
|
|
5576
5707
|
}
|
|
5577
5708
|
/**
|
|
5578
5709
|
* Validation method
|
|
@@ -5607,7 +5738,7 @@ class RangeValidatorMagicDirective {
|
|
|
5607
5738
|
const formGroup = c.parent.controls;
|
|
5608
5739
|
return Object.keys(formGroup).find(name => c === formGroup[name]) || null;
|
|
5609
5740
|
}
|
|
5610
|
-
/** @nocollapse */ static ɵfac = function RangeValidatorMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RangeValidatorMagicDirective)(
|
|
5741
|
+
/** @nocollapse */ static ɵfac = function RangeValidatorMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RangeValidatorMagicDirective)(); };
|
|
5611
5742
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: RangeValidatorMagicDirective, selectors: [["", "rangevalidator", ""]], standalone: false, features: [i0.ɵɵProvidersFeature([
|
|
5612
5743
|
{
|
|
5613
5744
|
provide: NG_VALIDATORS,
|
|
@@ -5629,7 +5760,7 @@ class RangeValidatorMagicDirective {
|
|
|
5629
5760
|
],
|
|
5630
5761
|
standalone: false
|
|
5631
5762
|
}]
|
|
5632
|
-
}], () => [
|
|
5763
|
+
}], () => [], null); })();
|
|
5633
5764
|
|
|
5634
5765
|
function SubformMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
5635
5766
|
i0.ɵɵelement(0, "ndc-dynamic", 0);
|
|
@@ -5641,8 +5772,6 @@ function SubformMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
5641
5772
|
* Represents a Magic subform
|
|
5642
5773
|
*/
|
|
5643
5774
|
class SubformMagicComponent {
|
|
5644
|
-
vcRef;
|
|
5645
|
-
mgSub;
|
|
5646
5775
|
/**
|
|
5647
5776
|
* @ignore
|
|
5648
5777
|
*/
|
|
@@ -5659,12 +5788,12 @@ class SubformMagicComponent {
|
|
|
5659
5788
|
/**
|
|
5660
5789
|
* @ignore
|
|
5661
5790
|
*/
|
|
5662
|
-
constructor(
|
|
5663
|
-
this.vcRef = vcRef;
|
|
5664
|
-
this.mgSub = mgSub;
|
|
5791
|
+
constructor() {
|
|
5665
5792
|
// For angular 13 - find the component from _hostLView
|
|
5666
5793
|
this.component = (this.vcRef._hostLView).find(v => !isNullOrUndefined(v));
|
|
5667
5794
|
}
|
|
5795
|
+
vcRef = inject(ViewContainerRef);
|
|
5796
|
+
mgSub = inject(SubformMagicService);
|
|
5668
5797
|
/**
|
|
5669
5798
|
* @ignore
|
|
5670
5799
|
*/
|
|
@@ -5677,32 +5806,33 @@ class SubformMagicComponent {
|
|
|
5677
5806
|
get Parameters() {
|
|
5678
5807
|
return this.mgSub.mgGetParameters(this.id);
|
|
5679
5808
|
}
|
|
5680
|
-
/** @nocollapse */ static ɵfac = function SubformMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicComponent)(
|
|
5809
|
+
/** @nocollapse */ static ɵfac = function SubformMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicComponent)(); };
|
|
5681
5810
|
/** @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) {
|
|
5682
5811
|
i0.ɵɵconditionalCreate(0, SubformMagicComponent_Conditional_0_Template, 1, 2, "ndc-dynamic", 0);
|
|
5683
5812
|
} if (rf & 2) {
|
|
5684
5813
|
i0.ɵɵconditional(ctx.Component ? 0 : -1);
|
|
5685
|
-
} }, dependencies: [
|
|
5814
|
+
} }, dependencies: [i1$1.DynamicIoDirective, i1$1.DynamicComponent], encapsulation: 2, changeDetection: 1 });
|
|
5686
5815
|
}
|
|
5687
5816
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicComponent, [{
|
|
5688
5817
|
type: Component,
|
|
5689
5818
|
args: [{
|
|
5690
5819
|
selector: 'magic-subform',
|
|
5691
|
-
template: `
|
|
5692
|
-
@if (Component) {
|
|
5693
|
-
<ndc-dynamic
|
|
5694
|
-
[ndcDynamicComponent]="Component"
|
|
5695
|
-
[ndcDynamicInputs]="Parameters">
|
|
5696
|
-
</ndc-dynamic>
|
|
5697
|
-
}
|
|
5820
|
+
template: `
|
|
5821
|
+
@if (Component) {
|
|
5822
|
+
<ndc-dynamic
|
|
5823
|
+
[ndcDynamicComponent]="Component"
|
|
5824
|
+
[ndcDynamicInputs]="Parameters">
|
|
5825
|
+
</ndc-dynamic>
|
|
5826
|
+
}
|
|
5698
5827
|
`,
|
|
5828
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
5699
5829
|
standalone: false
|
|
5700
5830
|
}]
|
|
5701
|
-
}], () => [
|
|
5831
|
+
}], () => [], { magic: [{
|
|
5702
5832
|
type: Input,
|
|
5703
5833
|
args: ['magic']
|
|
5704
5834
|
}] }); })();
|
|
5705
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber:
|
|
5835
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber: 24 }); })();
|
|
5706
5836
|
|
|
5707
5837
|
const _c0$1 = ["customContent"];
|
|
5708
5838
|
const _c1 = ["*"];
|
|
@@ -5730,9 +5860,6 @@ function ErrorMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
5730
5860
|
* Represents a Magic subform
|
|
5731
5861
|
*/
|
|
5732
5862
|
class ErrorMagicComponent {
|
|
5733
|
-
_task;
|
|
5734
|
-
mgService;
|
|
5735
|
-
changeDetectorRef;
|
|
5736
5863
|
/**
|
|
5737
5864
|
* @ignore
|
|
5738
5865
|
*/
|
|
@@ -5751,19 +5878,19 @@ class ErrorMagicComponent {
|
|
|
5751
5878
|
;
|
|
5752
5879
|
// if true - display standard magic error message, if false - customer has provides his own content and we'll use it
|
|
5753
5880
|
defaultDisplay = true;
|
|
5754
|
-
|
|
5755
|
-
|
|
5756
|
-
this.changeDetectorRef.detectChanges();
|
|
5757
|
-
}
|
|
5758
|
-
;
|
|
5881
|
+
customContentRef = viewChild('customContent', /* @ts-ignore */
|
|
5882
|
+
...(ngDevMode ? [{ debugName: "customContentRef" }] : /* istanbul ignore next */ []));
|
|
5759
5883
|
/**
|
|
5760
5884
|
* @ignore
|
|
5761
5885
|
*/
|
|
5762
|
-
constructor(
|
|
5763
|
-
this._task = _task;
|
|
5764
|
-
this.mgService = mgService;
|
|
5765
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
5886
|
+
constructor() {
|
|
5766
5887
|
this.rowId = "0";
|
|
5888
|
+
// Reactively update defaultDisplay whenever customContent changes in the DOM
|
|
5889
|
+
effect(() => {
|
|
5890
|
+
const innerComponent = this.customContentRef();
|
|
5891
|
+
this.defaultDisplay = innerComponent == undefined || this.isEmpty(innerComponent.nativeElement);
|
|
5892
|
+
this.changeDetectorRef.detectChanges();
|
|
5893
|
+
});
|
|
5767
5894
|
}
|
|
5768
5895
|
/**
|
|
5769
5896
|
* returns true if the html element has no children
|
|
@@ -5802,73 +5929,68 @@ class ErrorMagicComponent {
|
|
|
5802
5929
|
}
|
|
5803
5930
|
return false;
|
|
5804
5931
|
}
|
|
5805
|
-
|
|
5932
|
+
_task = inject(TaskMagicService);
|
|
5933
|
+
mgService = inject(AccessorMagicService);
|
|
5934
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
5935
|
+
/** @nocollapse */ static ɵfac = function ErrorMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ErrorMagicComponent)(); };
|
|
5806
5936
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ErrorMagicComponent, selectors: [["mgError"]], viewQuery: function ErrorMagicComponent_Query(rf, ctx) { if (rf & 1) {
|
|
5807
|
-
i0.ɵɵ
|
|
5937
|
+
i0.ɵɵviewQuerySignal(ctx.customContentRef, _c0$1, 5);
|
|
5808
5938
|
} if (rf & 2) {
|
|
5809
|
-
|
|
5810
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomContent = _t.first);
|
|
5939
|
+
i0.ɵɵqueryAdvance();
|
|
5811
5940
|
} }, 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) {
|
|
5812
5941
|
i0.ɵɵprojectionDef();
|
|
5813
5942
|
i0.ɵɵconditionalCreate(0, ErrorMagicComponent_Conditional_0_Template, 5, 1, "div");
|
|
5814
5943
|
} if (rf & 2) {
|
|
5815
5944
|
i0.ɵɵconditional(ctx.HasErrors(ctx.id) ? 0 : -1);
|
|
5816
|
-
} }, encapsulation: 2 });
|
|
5945
|
+
} }, encapsulation: 2, changeDetection: 1 });
|
|
5817
5946
|
}
|
|
5818
5947
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorMagicComponent, [{
|
|
5819
5948
|
type: Component,
|
|
5820
5949
|
args: [{
|
|
5821
5950
|
selector: 'mgError',
|
|
5822
|
-
template: `@if (HasErrors(id)) {
|
|
5823
|
-
<div>
|
|
5824
|
-
<div #customContent>
|
|
5825
|
-
<ng-content></ng-content>
|
|
5826
|
-
</div>
|
|
5827
|
-
@if (defaultDisplay) {
|
|
5828
|
-
<span>
|
|
5829
|
-
{{mgService.getErrMsg(id, rowId)}}
|
|
5830
|
-
</span>
|
|
5831
|
-
}
|
|
5832
|
-
</div>
|
|
5833
|
-
}
|
|
5951
|
+
template: `@if (HasErrors(id)) {
|
|
5952
|
+
<div>
|
|
5953
|
+
<div #customContent>
|
|
5954
|
+
<ng-content></ng-content>
|
|
5955
|
+
</div>
|
|
5956
|
+
@if (defaultDisplay) {
|
|
5957
|
+
<span>
|
|
5958
|
+
{{mgService.getErrMsg(id, rowId)}}
|
|
5959
|
+
</span>
|
|
5960
|
+
}
|
|
5961
|
+
</div>
|
|
5962
|
+
}
|
|
5834
5963
|
`,
|
|
5964
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
5835
5965
|
standalone: false
|
|
5836
5966
|
}]
|
|
5837
|
-
}], () => [
|
|
5967
|
+
}], () => [], { magic: [{
|
|
5838
5968
|
type: Input,
|
|
5839
5969
|
args: ['magic']
|
|
5840
5970
|
}], rowId1: [{
|
|
5841
5971
|
type: Input,
|
|
5842
5972
|
args: ['rowId']
|
|
5843
|
-
}],
|
|
5844
|
-
|
|
5845
|
-
args: ['customContent', { static: false }]
|
|
5846
|
-
}] }); })();
|
|
5847
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src/ui/mgerror.magic.component.ts", lineNumber: 28 }); })();
|
|
5973
|
+
}], customContentRef: [{ type: i0.ViewChild, args: ['customContent', { isSignal: true }] }] }); })();
|
|
5974
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src/ui/mgerror.magic.component.ts", lineNumber: 29 }); })();
|
|
5848
5975
|
|
|
5849
5976
|
/**
|
|
5850
5977
|
* Directive for checkboxes, to handle the 'change' event
|
|
5851
5978
|
*/
|
|
5852
5979
|
class CheckboxMagicDirective {
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
task;
|
|
5856
|
-
threeState = false;
|
|
5980
|
+
threeState = input(false, /* @ts-ignore */
|
|
5981
|
+
...(ngDevMode ? [{ debugName: "threeState" }] : /* istanbul ignore next */ []));
|
|
5857
5982
|
subscribeRefreshDom = null;
|
|
5858
5983
|
isIndeterminate = false;
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
constructor(
|
|
5863
|
-
this.magicDirective = magicDirective;
|
|
5864
|
-
this.el = el;
|
|
5865
|
-
this.task = task;
|
|
5984
|
+
magicDirective = inject(MagicDirective);
|
|
5985
|
+
el = inject(ElementRef);
|
|
5986
|
+
task = inject(TaskMagicService);
|
|
5987
|
+
constructor() {
|
|
5866
5988
|
}
|
|
5867
5989
|
/**
|
|
5868
5990
|
* Handles the Checkbox 'change' event - pass it to the Magic engine
|
|
5869
5991
|
*/
|
|
5870
5992
|
onChange($event) {
|
|
5871
|
-
if (this.threeState) {
|
|
5993
|
+
if (this.threeState()) {
|
|
5872
5994
|
this.handleThreeState();
|
|
5873
5995
|
}
|
|
5874
5996
|
else {
|
|
@@ -5876,7 +5998,7 @@ class CheckboxMagicDirective {
|
|
|
5876
5998
|
}
|
|
5877
5999
|
}
|
|
5878
6000
|
ngOnInit() {
|
|
5879
|
-
if (this.threeState) {
|
|
6001
|
+
if (this.threeState()) {
|
|
5880
6002
|
let guiEvent = getGuiEventObj("setAsThreeState", this.magicDirective.id, +this.magicDirective.rowId);
|
|
5881
6003
|
this.task.insertEvent(guiEvent);
|
|
5882
6004
|
this.el.nativeElement.indeterminate = this.isIndeterminate = this.task.getProperty(this.magicDirective.id, HtmlProperties.CheckBoxIndeterminate, this.magicDirective.rowId);
|
|
@@ -5931,10 +6053,10 @@ class CheckboxMagicDirective {
|
|
|
5931
6053
|
if (this.subscribeRefreshDom !== null)
|
|
5932
6054
|
this.subscribeRefreshDom.unsubscribe();
|
|
5933
6055
|
}
|
|
5934
|
-
/** @nocollapse */ static ɵfac = function CheckboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxMagicDirective)(
|
|
6056
|
+
/** @nocollapse */ static ɵfac = function CheckboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxMagicDirective)(); };
|
|
5935
6057
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: CheckboxMagicDirective, selectors: [["input", "type", "checkbox", "magic", "", 3, "noFormControl", ""]], hostBindings: function CheckboxMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
5936
6058
|
i0.ɵɵlistener("change", function CheckboxMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
5937
|
-
} }, inputs: { threeState: "threeState" }, standalone: false });
|
|
6059
|
+
} }, inputs: { threeState: [1, "threeState"] }, standalone: false });
|
|
5938
6060
|
}
|
|
5939
6061
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CheckboxMagicDirective, [{
|
|
5940
6062
|
type: Directive,
|
|
@@ -5944,9 +6066,7 @@ class CheckboxMagicDirective {
|
|
|
5944
6066
|
`,
|
|
5945
6067
|
standalone: false
|
|
5946
6068
|
}]
|
|
5947
|
-
}], () => [{
|
|
5948
|
-
type: Input
|
|
5949
|
-
}], onChange: [{
|
|
6069
|
+
}], () => [], { threeState: [{ type: i0.Input, args: [{ isSignal: true, alias: "threeState", required: false }] }], onChange: [{
|
|
5950
6070
|
type: HostListener,
|
|
5951
6071
|
args: ['change', ['$event']]
|
|
5952
6072
|
}] }); })();
|
|
@@ -5955,9 +6075,8 @@ class CheckboxMagicDirective {
|
|
|
5955
6075
|
* Directive for comboboxes, to handle the 'change' event
|
|
5956
6076
|
*/
|
|
5957
6077
|
class ComboboxMagicDirective {
|
|
5958
|
-
magicDirective;
|
|
5959
|
-
constructor(
|
|
5960
|
-
this.magicDirective = magicDirective;
|
|
6078
|
+
magicDirective = inject(MagicDirective);
|
|
6079
|
+
constructor() {
|
|
5961
6080
|
// subcribe to refreshDom. This is a special case for native select HTML control.
|
|
5962
6081
|
// to refresh the selected property. Else by default, HTML element doesn't get refreshed as per
|
|
5963
6082
|
// selected value and 1st element remains selected.
|
|
@@ -5979,7 +6098,7 @@ class ComboboxMagicDirective {
|
|
|
5979
6098
|
onComboboxItemsListChanged() {
|
|
5980
6099
|
this.magicDirective.task.refreshView();
|
|
5981
6100
|
}
|
|
5982
|
-
/** @nocollapse */ static ɵfac = function ComboboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComboboxMagicDirective)(
|
|
6101
|
+
/** @nocollapse */ static ɵfac = function ComboboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComboboxMagicDirective)(); };
|
|
5983
6102
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: ComboboxMagicDirective, selectors: [["select", "magic", "", 3, "multiple", ""]], hostBindings: function ComboboxMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
5984
6103
|
i0.ɵɵlistener("change", function ComboboxMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
5985
6104
|
} }, standalone: false });
|
|
@@ -5990,7 +6109,7 @@ class ComboboxMagicDirective {
|
|
|
5990
6109
|
selector: `select[magic]:not([multiple])`,
|
|
5991
6110
|
standalone: false
|
|
5992
6111
|
}]
|
|
5993
|
-
}], () => [
|
|
6112
|
+
}], () => [], { onChange: [{
|
|
5994
6113
|
type: HostListener,
|
|
5995
6114
|
args: ['change', ['$event']]
|
|
5996
6115
|
}] }); })();
|
|
@@ -6027,7 +6146,7 @@ function MagicShellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
6027
6146
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
6028
6147
|
const defaultSpinner_r2 = i0.ɵɵreference(7);
|
|
6029
6148
|
i0.ɵɵadvance();
|
|
6030
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate ? ctx_r0.SpinnerTemplate : defaultSpinner_r2);
|
|
6149
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate() ? ctx_r0.SpinnerTemplate() : defaultSpinner_r2);
|
|
6031
6150
|
} }
|
|
6032
6151
|
function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
6033
6152
|
i0.ɵɵelement(0, "div", 7);
|
|
@@ -6036,16 +6155,6 @@ function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
6036
6155
|
* Root Magic component
|
|
6037
6156
|
*/
|
|
6038
6157
|
class MagicShellComponent {
|
|
6039
|
-
engineMagicService;
|
|
6040
|
-
componentList;
|
|
6041
|
-
changeDetectorRef;
|
|
6042
|
-
titleService;
|
|
6043
|
-
overlayWindowService;
|
|
6044
|
-
httpClient;
|
|
6045
|
-
pendingCommandsCollector;
|
|
6046
|
-
route;
|
|
6047
|
-
router;
|
|
6048
|
-
exitMagicService;
|
|
6049
6158
|
/**
|
|
6050
6159
|
* Root component to be displayed in the window
|
|
6051
6160
|
*/
|
|
@@ -6055,10 +6164,22 @@ class MagicShellComponent {
|
|
|
6055
6164
|
*/
|
|
6056
6165
|
RootComponentParameters;
|
|
6057
6166
|
overlayWindowsContainerViewRef;
|
|
6058
|
-
rootMagicElementRef
|
|
6059
|
-
|
|
6167
|
+
rootMagicElementRef = viewChild.required('magicRoot', /* @ts-ignore */
|
|
6168
|
+
...(ngDevMode ? [{ debugName: "rootMagicElementRef" }] : /* istanbul ignore next */ []));
|
|
6169
|
+
SpinnerTemplate = input(/* @ts-ignore */
|
|
6170
|
+
...(ngDevMode ? [undefined, { debugName: "SpinnerTemplate" }] : /* istanbul ignore next */ []));
|
|
6060
6171
|
showSpinner;
|
|
6061
6172
|
magicEngineTerminated = false;
|
|
6173
|
+
engineMagicService = inject(EngineMagicService);
|
|
6174
|
+
componentList = inject(ComponentListMagicService);
|
|
6175
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
6176
|
+
titleService = inject(Title);
|
|
6177
|
+
overlayWindowService = inject(OverlayWindowService);
|
|
6178
|
+
httpClient = inject(HttpClient);
|
|
6179
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
6180
|
+
route = inject(ActivatedRoute);
|
|
6181
|
+
router = inject(Router);
|
|
6182
|
+
exitMagicService = inject(ExitMagicService, { optional: true });
|
|
6062
6183
|
/**
|
|
6063
6184
|
*
|
|
6064
6185
|
* @param magic Magic's service
|
|
@@ -6068,17 +6189,7 @@ class MagicShellComponent {
|
|
|
6068
6189
|
* @param httpClient The native httpClient instance
|
|
6069
6190
|
* @param exitMagicService Magic exit service
|
|
6070
6191
|
*/
|
|
6071
|
-
constructor(
|
|
6072
|
-
this.engineMagicService = engineMagicService;
|
|
6073
|
-
this.componentList = componentList;
|
|
6074
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
6075
|
-
this.titleService = titleService;
|
|
6076
|
-
this.overlayWindowService = overlayWindowService;
|
|
6077
|
-
this.httpClient = httpClient;
|
|
6078
|
-
this.pendingCommandsCollector = pendingCommandsCollector;
|
|
6079
|
-
this.route = route;
|
|
6080
|
-
this.router = router;
|
|
6081
|
-
this.exitMagicService = exitMagicService;
|
|
6192
|
+
constructor() {
|
|
6082
6193
|
this.initialize();
|
|
6083
6194
|
this.setTitle();
|
|
6084
6195
|
}
|
|
@@ -6098,13 +6209,20 @@ class MagicShellComponent {
|
|
|
6098
6209
|
this.magicEngineTerminated = true;
|
|
6099
6210
|
}
|
|
6100
6211
|
}
|
|
6101
|
-
|
|
6212
|
+
/**
|
|
6213
|
+
* Page-hide event listener, used in place of 'unload'.
|
|
6214
|
+
* Chrome blocks 'unload' by permissions policy ("unload is not allowed in this document"),
|
|
6215
|
+
* so an unload handler is never even registered. 'pagehide' is fired at an earlier step of
|
|
6216
|
+
* the same unloading sequence, so it covers every case 'unload' did.
|
|
6217
|
+
*/
|
|
6218
|
+
onPageHide() {
|
|
6102
6219
|
// Chrome provides an opportunity to terminate the context after user approves the browser unload alert
|
|
6103
|
-
if (!this.magicEngineTerminated)
|
|
6220
|
+
if (!this.magicEngineTerminated) {
|
|
6104
6221
|
this.engineMagicService.TerminateContextUsingFetchAPI();
|
|
6222
|
+
}
|
|
6105
6223
|
}
|
|
6106
6224
|
ngAfterViewInit() {
|
|
6107
|
-
this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef.nativeElement, this.changeDetectorRef);
|
|
6225
|
+
this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef().nativeElement, this.changeDetectorRef);
|
|
6108
6226
|
// Helper function to start the engine
|
|
6109
6227
|
const startEngine = () => {
|
|
6110
6228
|
const queryParams = this.route.snapshot.queryParams;
|
|
@@ -6218,15 +6336,14 @@ class MagicShellComponent {
|
|
|
6218
6336
|
break;
|
|
6219
6337
|
}
|
|
6220
6338
|
}
|
|
6221
|
-
/** @nocollapse */ static ɵfac = function MagicShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicShellComponent)(
|
|
6339
|
+
/** @nocollapse */ static ɵfac = function MagicShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicShellComponent)(); };
|
|
6222
6340
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicShellComponent, selectors: [["magic-root"]], viewQuery: function MagicShellComponent_Query(rf, ctx) { if (rf & 1) {
|
|
6223
|
-
i0.ɵɵ
|
|
6341
|
+
i0.ɵɵviewQuerySignal(ctx.rootMagicElementRef, _c0, 5);
|
|
6224
6342
|
} if (rf & 2) {
|
|
6225
|
-
|
|
6226
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootMagicElementRef = _t.first);
|
|
6343
|
+
i0.ɵɵqueryAdvance();
|
|
6227
6344
|
} }, hostBindings: function MagicShellComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6228
|
-
i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, i0.ɵɵresolveWindow)("
|
|
6229
|
-
} }, inputs: { SpinnerTemplate: "SpinnerTemplate" }, standalone: false, features: [i0.ɵɵProvidersFeature([
|
|
6345
|
+
i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, i0.ɵɵresolveWindow)("pagehide", function MagicShellComponent_pagehide_HostBindingHandler() { return ctx.onPageHide(); }, i0.ɵɵresolveWindow);
|
|
6346
|
+
} }, inputs: { SpinnerTemplate: [1, "SpinnerTemplate"] }, standalone: false, features: [i0.ɵɵProvidersFeature([
|
|
6230
6347
|
// ExitMagicService
|
|
6231
6348
|
])], 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) {
|
|
6232
6349
|
i0.ɵɵelementStart(0, "div", null, 0);
|
|
@@ -6240,50 +6357,43 @@ class MagicShellComponent {
|
|
|
6240
6357
|
i0.ɵɵconditional(ctx.RootComponent !== null ? 2 : -1);
|
|
6241
6358
|
i0.ɵɵadvance(3);
|
|
6242
6359
|
i0.ɵɵconditional(ctx.showSpinner ? 5 : -1);
|
|
6243
|
-
} }, dependencies: [i1.NgTemplateOutlet,
|
|
6360
|
+
} }, dependencies: [i1.NgTemplateOutlet, i1$1.DynamicIoDirective, i1$1.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)}}"], changeDetection: 1 });
|
|
6244
6361
|
}
|
|
6245
6362
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicShellComponent, [{
|
|
6246
6363
|
type: Component,
|
|
6247
6364
|
args: [{ selector: 'magic-root', providers: [
|
|
6248
6365
|
// ExitMagicService
|
|
6249
|
-
], template: `
|
|
6250
|
-
<div #magicRoot>
|
|
6251
|
-
@if (RootComponent !== null) {
|
|
6252
|
-
<ndc-dynamic
|
|
6253
|
-
[ndcDynamicComponent]="RootComponent"
|
|
6254
|
-
[ndcDynamicInputs] ="RootComponentParameters">
|
|
6255
|
-
</ndc-dynamic>
|
|
6256
|
-
}
|
|
6257
|
-
|
|
6258
|
-
<div #overlayWindowsContainer magicViewContainerRef>
|
|
6259
|
-
</div>
|
|
6260
|
-
</div>
|
|
6261
|
-
|
|
6262
|
-
@if (showSpinner) {
|
|
6263
|
-
<div class="spinner-background">
|
|
6264
|
-
<ng-container [ngTemplateOutlet]="SpinnerTemplate ? SpinnerTemplate:defaultSpinner"></ng-container>
|
|
6265
|
-
</div>
|
|
6266
|
-
}
|
|
6267
|
-
|
|
6268
|
-
<ng-template #defaultSpinner>
|
|
6269
|
-
<div class="mgSpinnerClass"></div>
|
|
6270
|
-
</ng-template>
|
|
6271
|
-
`, 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"] }]
|
|
6272
|
-
}], () => [
|
|
6273
|
-
type: Optional
|
|
6274
|
-
}] }], { rootMagicElementRef: [{
|
|
6275
|
-
type: ViewChild,
|
|
6276
|
-
args: ['magicRoot', { static: true }]
|
|
6277
|
-
}], SpinnerTemplate: [{
|
|
6278
|
-
type: Input
|
|
6279
|
-
}], onBeforeUnload: [{
|
|
6366
|
+
], template: `
|
|
6367
|
+
<div #magicRoot>
|
|
6368
|
+
@if (RootComponent !== null) {
|
|
6369
|
+
<ndc-dynamic
|
|
6370
|
+
[ndcDynamicComponent]="RootComponent"
|
|
6371
|
+
[ndcDynamicInputs] ="RootComponentParameters">
|
|
6372
|
+
</ndc-dynamic>
|
|
6373
|
+
}
|
|
6374
|
+
|
|
6375
|
+
<div #overlayWindowsContainer magicViewContainerRef>
|
|
6376
|
+
</div>
|
|
6377
|
+
</div>
|
|
6378
|
+
|
|
6379
|
+
@if (showSpinner) {
|
|
6380
|
+
<div class="spinner-background">
|
|
6381
|
+
<ng-container [ngTemplateOutlet]="SpinnerTemplate() ? SpinnerTemplate():defaultSpinner"></ng-container>
|
|
6382
|
+
</div>
|
|
6383
|
+
}
|
|
6384
|
+
|
|
6385
|
+
<ng-template #defaultSpinner>
|
|
6386
|
+
<div class="mgSpinnerClass"></div>
|
|
6387
|
+
</ng-template>
|
|
6388
|
+
`, changeDetection: ChangeDetectionStrategy.Eager, 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"] }]
|
|
6389
|
+
}], () => [], { rootMagicElementRef: [{ type: i0.ViewChild, args: ['magicRoot', { isSignal: true }] }], SpinnerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "SpinnerTemplate", required: false }] }], onBeforeUnload: [{
|
|
6280
6390
|
type: HostListener,
|
|
6281
6391
|
args: ['window:beforeunload', ['$event']]
|
|
6282
|
-
}],
|
|
6392
|
+
}], onPageHide: [{
|
|
6283
6393
|
type: HostListener,
|
|
6284
|
-
args: ['window:
|
|
6394
|
+
args: ['window:pagehide']
|
|
6285
6395
|
}] }); })();
|
|
6286
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber:
|
|
6396
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber: 90 }); })();
|
|
6287
6397
|
|
|
6288
6398
|
/**
|
|
6289
6399
|
* @ignore
|
|
@@ -6310,7 +6420,7 @@ class MagicCheckboxControlValueAccessor extends CheckboxControlValueAccessor {
|
|
|
6310
6420
|
input[type=checkbox][magic]:not([formControl]),
|
|
6311
6421
|
input[type=checkbox][magic]:not([ngModel])
|
|
6312
6422
|
`,
|
|
6313
|
-
host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },
|
|
6423
|
+
host: { '(change)': 'onChange($any($event.target).checked)', '(blur)': 'onTouched()' },
|
|
6314
6424
|
providers: [CHECKBOX_VALUE_ACCESSOR],
|
|
6315
6425
|
standalone: false
|
|
6316
6426
|
}]
|
|
@@ -6341,10 +6451,10 @@ class MagicDefaultValueAccessor extends DefaultValueAccessor {
|
|
|
6341
6451
|
textarea[magic]:not([formControlName]):not([noFormControl]):not([no-form-control])
|
|
6342
6452
|
`,
|
|
6343
6453
|
host: {
|
|
6344
|
-
'(input)': '$any(this)._handleInput($event.target.value)',
|
|
6454
|
+
'(input)': '$any(this)._handleInput($any($event.target).value)',
|
|
6345
6455
|
'(blur)': 'onTouched()',
|
|
6346
6456
|
'(compositionstart)': '$any(this)._compositionStart()',
|
|
6347
|
-
'(compositionend)': '$any(this)._compositionEnd($event.target.value)'
|
|
6457
|
+
'(compositionend)': '$any(this)._compositionEnd($any($event.target).value)'
|
|
6348
6458
|
},
|
|
6349
6459
|
providers: [MAGIC_DEFAULT_VALUE_ACCESSOR],
|
|
6350
6460
|
exportAs: 'magic',
|
|
@@ -6356,9 +6466,8 @@ class MagicDefaultValueAccessor extends DefaultValueAccessor {
|
|
|
6356
6466
|
* Directive for checkboxes which should not have a form control
|
|
6357
6467
|
*/
|
|
6358
6468
|
class CheckboxNoFormControlMagicDirective {
|
|
6359
|
-
magicDirective;
|
|
6360
|
-
constructor(
|
|
6361
|
-
this.magicDirective = magicDirective;
|
|
6469
|
+
magicDirective = inject(MagicDirective);
|
|
6470
|
+
constructor() {
|
|
6362
6471
|
}
|
|
6363
6472
|
/**
|
|
6364
6473
|
* Handle the 'Checkbox' change event - pass it to the Magic engine
|
|
@@ -6366,7 +6475,7 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6366
6475
|
onChange($event) {
|
|
6367
6476
|
this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);
|
|
6368
6477
|
}
|
|
6369
|
-
/** @nocollapse */ static ɵfac = function CheckboxNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxNoFormControlMagicDirective)(
|
|
6478
|
+
/** @nocollapse */ static ɵfac = function CheckboxNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxNoFormControlMagicDirective)(); };
|
|
6370
6479
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: CheckboxNoFormControlMagicDirective, selectors: [["input", "type", "checkbox", "magic", "", "noFormControl", ""]], hostBindings: function CheckboxNoFormControlMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6371
6480
|
i0.ɵɵlistener("change", function CheckboxNoFormControlMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
6372
6481
|
} }, standalone: false });
|
|
@@ -6379,7 +6488,7 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6379
6488
|
`,
|
|
6380
6489
|
standalone: false
|
|
6381
6490
|
}]
|
|
6382
|
-
}], () => [
|
|
6491
|
+
}], () => [], { onChange: [{
|
|
6383
6492
|
type: HostListener,
|
|
6384
6493
|
args: ['change', ['$event']]
|
|
6385
6494
|
}] }); })();
|
|
@@ -6388,9 +6497,8 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6388
6497
|
* Directive for non-checkbox input controls which do not have a form control
|
|
6389
6498
|
*/
|
|
6390
6499
|
class InputNoFormControlMagicDirective {
|
|
6391
|
-
magicDirective;
|
|
6392
|
-
constructor(
|
|
6393
|
-
this.magicDirective = magicDirective;
|
|
6500
|
+
magicDirective = inject(MagicDirective);
|
|
6501
|
+
constructor() {
|
|
6394
6502
|
}
|
|
6395
6503
|
/**
|
|
6396
6504
|
* Handles the 'change' event - pass it to the Magic engine
|
|
@@ -6398,7 +6506,7 @@ class InputNoFormControlMagicDirective {
|
|
|
6398
6506
|
onChange($event) {
|
|
6399
6507
|
this.magicDirective.task.setInputTextValue(this.magicDirective.id, this.magicDirective.rowId, event.srcElement.value);
|
|
6400
6508
|
}
|
|
6401
|
-
/** @nocollapse */ static ɵfac = function InputNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InputNoFormControlMagicDirective)(
|
|
6509
|
+
/** @nocollapse */ static ɵfac = function InputNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InputNoFormControlMagicDirective)(); };
|
|
6402
6510
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: InputNoFormControlMagicDirective, selectors: [["input", "magic", "", "noFormControl", "", 3, "type", "checkbox"], ["textarea", "magic", "", "noFormControl", "", 3, "type", "checkbox"]], hostBindings: function InputNoFormControlMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6403
6511
|
i0.ɵɵlistener("change", function InputNoFormControlMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
6404
6512
|
} }, standalone: false });
|
|
@@ -6410,7 +6518,7 @@ class InputNoFormControlMagicDirective {
|
|
|
6410
6518
|
textarea[magic]:([noFormControl]):not([type=checkbox])`,
|
|
6411
6519
|
standalone: false
|
|
6412
6520
|
}]
|
|
6413
|
-
}], () => [
|
|
6521
|
+
}], () => [], { onChange: [{
|
|
6414
6522
|
type: HostListener,
|
|
6415
6523
|
args: ['change', ['$event']]
|
|
6416
6524
|
}] }); })();
|
|
@@ -6429,10 +6537,6 @@ const DATE_VALUE_ACCESSOR = {
|
|
|
6429
6537
|
* `<input type="date" formControlName="birthday" dateInput>`
|
|
6430
6538
|
*/
|
|
6431
6539
|
class DateValueAccessor {
|
|
6432
|
-
renderer;
|
|
6433
|
-
elementRef;
|
|
6434
|
-
magicDir;
|
|
6435
|
-
_task;
|
|
6436
6540
|
onChange = (_) => { };
|
|
6437
6541
|
onTouched = () => { };
|
|
6438
6542
|
onBlurEvent(event) {
|
|
@@ -6440,12 +6544,11 @@ class DateValueAccessor {
|
|
|
6440
6544
|
let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
|
|
6441
6545
|
this.formatDateWithCentury(event.target.value, century, control);
|
|
6442
6546
|
}
|
|
6443
|
-
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
}
|
|
6547
|
+
renderer = inject(Renderer2);
|
|
6548
|
+
elementRef = inject(ElementRef);
|
|
6549
|
+
magicDir = inject(MagicDirective);
|
|
6550
|
+
_task = inject(TaskMagicService);
|
|
6551
|
+
constructor() { }
|
|
6449
6552
|
/** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */
|
|
6450
6553
|
formatDateWithCentury(userInput, century, control) {
|
|
6451
6554
|
const separator = userInput.includes('/') ? '/' : "-";
|
|
@@ -6483,7 +6586,7 @@ class DateValueAccessor {
|
|
|
6483
6586
|
setDisabledState(isDisabled) {
|
|
6484
6587
|
this.renderer.setProperty(this.elementRef.nativeElement, "disabled", isDisabled);
|
|
6485
6588
|
}
|
|
6486
|
-
/** @nocollapse */ static ɵfac = function DateValueAccessor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateValueAccessor)(
|
|
6589
|
+
/** @nocollapse */ static ɵfac = function DateValueAccessor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateValueAccessor)(); };
|
|
6487
6590
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DateValueAccessor, selectors: [["", "dateInput", ""]], hostBindings: function DateValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6488
6591
|
i0.ɵɵlistener("input", function DateValueAccessor_input_HostBindingHandler($event) { return ctx.onChange($event.target.valueAsDate); })("blur", function DateValueAccessor_blur_HostBindingHandler($event) { return ctx.onBlurEvent($event); });
|
|
6489
6592
|
} }, standalone: false, features: [i0.ɵɵProvidersFeature([DATE_VALUE_ACCESSOR])] });
|
|
@@ -6495,7 +6598,7 @@ class DateValueAccessor {
|
|
|
6495
6598
|
providers: [DATE_VALUE_ACCESSOR],
|
|
6496
6599
|
standalone: false
|
|
6497
6600
|
}]
|
|
6498
|
-
}], () => [
|
|
6601
|
+
}], () => [], { onChange: [{
|
|
6499
6602
|
type: HostListener,
|
|
6500
6603
|
args: ["input", ["$event.target.valueAsDate"]]
|
|
6501
6604
|
}], onTouched: [{
|
|
@@ -6510,10 +6613,6 @@ class DateValueAccessor {
|
|
|
6510
6613
|
* Responsible for connecting HTML elements to the Magic WebClient engine showing it is not Magic Control but a Dummy control which is used to notify only receeive focus event for now
|
|
6511
6614
|
*/
|
|
6512
6615
|
class NonMagicControlDirective {
|
|
6513
|
-
_task;
|
|
6514
|
-
element;
|
|
6515
|
-
renderer;
|
|
6516
|
-
vcRef;
|
|
6517
6616
|
set magic(val) {
|
|
6518
6617
|
this.id = val;
|
|
6519
6618
|
this.selector = 'NonMagicControl';
|
|
@@ -6551,13 +6650,13 @@ class NonMagicControlDirective {
|
|
|
6551
6650
|
* @param renderer Renderer for the element
|
|
6552
6651
|
* @param vcRef
|
|
6553
6652
|
*/
|
|
6554
|
-
constructor(
|
|
6555
|
-
this._task = _task;
|
|
6556
|
-
this.element = element;
|
|
6557
|
-
this.renderer = renderer;
|
|
6558
|
-
this.vcRef = vcRef;
|
|
6653
|
+
constructor() {
|
|
6559
6654
|
this.htmlElement = this.element.nativeElement;
|
|
6560
6655
|
}
|
|
6656
|
+
_task = inject(TaskMagicService);
|
|
6657
|
+
element = inject(ElementRef);
|
|
6658
|
+
renderer = inject(Renderer2);
|
|
6659
|
+
vcRef = inject(ViewContainerRef);
|
|
6561
6660
|
/**
|
|
6562
6661
|
* Get the task service
|
|
6563
6662
|
* @returns
|
|
@@ -6588,7 +6687,7 @@ class NonMagicControlDirective {
|
|
|
6588
6687
|
ngOnInit() {
|
|
6589
6688
|
this.regEvents();
|
|
6590
6689
|
}
|
|
6591
|
-
/** @nocollapse */ static ɵfac = function NonMagicControlDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NonMagicControlDirective)(
|
|
6690
|
+
/** @nocollapse */ static ɵfac = function NonMagicControlDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NonMagicControlDirective)(); };
|
|
6592
6691
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: NonMagicControlDirective, selectors: [["", "NonMagicControl", ""]], inputs: { magic: [0, "NonMagicControl", "magic"] }, standalone: false });
|
|
6593
6692
|
}
|
|
6594
6693
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NonMagicControlDirective, [{
|
|
@@ -6597,15 +6696,14 @@ class NonMagicControlDirective {
|
|
|
6597
6696
|
selector: '[NonMagicControl]',
|
|
6598
6697
|
standalone: false
|
|
6599
6698
|
}]
|
|
6600
|
-
}], () => [
|
|
6699
|
+
}], () => [], { magic: [{
|
|
6601
6700
|
type: Input,
|
|
6602
6701
|
args: ['NonMagicControl']
|
|
6603
6702
|
}] }); })();
|
|
6604
6703
|
|
|
6605
6704
|
class Time24MagicPipe {
|
|
6606
|
-
_task;
|
|
6607
|
-
constructor(
|
|
6608
|
-
this._task = _task;
|
|
6705
|
+
_task = inject(TaskMagicService);
|
|
6706
|
+
constructor() {
|
|
6609
6707
|
}
|
|
6610
6708
|
transform(value, controlId) {
|
|
6611
6709
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -6623,7 +6721,7 @@ class Time24MagicPipe {
|
|
|
6623
6721
|
}
|
|
6624
6722
|
return value;
|
|
6625
6723
|
}
|
|
6626
|
-
/** @nocollapse */ static ɵfac = function Time24MagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Time24MagicPipe)(
|
|
6724
|
+
/** @nocollapse */ static ɵfac = function Time24MagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Time24MagicPipe)(); };
|
|
6627
6725
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicTime24", type: Time24MagicPipe, pure: true, standalone: false });
|
|
6628
6726
|
}
|
|
6629
6727
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Time24MagicPipe, [{
|
|
@@ -6632,7 +6730,7 @@ class Time24MagicPipe {
|
|
|
6632
6730
|
name: 'magicTime24',
|
|
6633
6731
|
standalone: false
|
|
6634
6732
|
}]
|
|
6635
|
-
}], () => [
|
|
6733
|
+
}], () => [], null); })();
|
|
6636
6734
|
|
|
6637
6735
|
/**
|
|
6638
6736
|
* @ignore
|
|
@@ -6674,27 +6772,28 @@ const decs = [
|
|
|
6674
6772
|
class MagicModule {
|
|
6675
6773
|
/** @nocollapse */ static ɵfac = function MagicModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicModule)(); };
|
|
6676
6774
|
/** @nocollapse */ static ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: MagicModule });
|
|
6677
|
-
/** @nocollapse */ static ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
6775
|
+
/** @nocollapse */ static ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withXhr(), withInterceptorsFromDi())], imports: [CommonModule,
|
|
6678
6776
|
FormsModule,
|
|
6679
6777
|
ReactiveFormsModule,
|
|
6680
6778
|
RouterModule,
|
|
6681
6779
|
DynamicModule,
|
|
6682
|
-
DragDropModule
|
|
6780
|
+
DragDropModule] });
|
|
6683
6781
|
}
|
|
6684
6782
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicModule, [{
|
|
6685
6783
|
type: NgModule,
|
|
6686
6784
|
args: [{
|
|
6687
6785
|
declarations: [...decs],
|
|
6688
|
-
exports: [...decs,
|
|
6786
|
+
exports: [...decs, MaskitoDirective],
|
|
6689
6787
|
imports: [CommonModule,
|
|
6690
6788
|
FormsModule,
|
|
6691
6789
|
ReactiveFormsModule,
|
|
6692
6790
|
RouterModule,
|
|
6693
6791
|
DynamicModule,
|
|
6792
|
+
MaskitoDirective,
|
|
6694
6793
|
CdkDragHandle,
|
|
6695
6794
|
CdkDrag,
|
|
6696
6795
|
DragDropModule],
|
|
6697
|
-
providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withInterceptorsFromDi())]
|
|
6796
|
+
providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withXhr(), withInterceptorsFromDi())]
|
|
6698
6797
|
}]
|
|
6699
6798
|
}], null, null); })();
|
|
6700
6799
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MagicModule, { declarations: [MagicDirective,
|
|
@@ -6730,6 +6829,7 @@ class MagicModule {
|
|
|
6730
6829
|
ReactiveFormsModule,
|
|
6731
6830
|
RouterModule,
|
|
6732
6831
|
DynamicModule,
|
|
6832
|
+
MaskitoDirective,
|
|
6733
6833
|
CdkDragHandle,
|
|
6734
6834
|
CdkDrag,
|
|
6735
6835
|
DragDropModule], exports: [MagicDirective,
|
|
@@ -6760,7 +6860,7 @@ class MagicModule {
|
|
|
6760
6860
|
NonMagicControlDirective,
|
|
6761
6861
|
MagicFocusDirective,
|
|
6762
6862
|
MagicViewContainerRef,
|
|
6763
|
-
Time24MagicPipe,
|
|
6863
|
+
Time24MagicPipe, MaskitoDirective] }); })();
|
|
6764
6864
|
|
|
6765
6865
|
const MG_FORMATS = {
|
|
6766
6866
|
parse: { dateInput: { month: 'short', year: 'numeric', day: 'numeric' } },
|
|
@@ -6772,14 +6872,12 @@ const MG_FORMATS = {
|
|
|
6772
6872
|
}
|
|
6773
6873
|
};
|
|
6774
6874
|
class MgDateAdapter extends NativeDateAdapter {
|
|
6775
|
-
task;
|
|
6776
|
-
localeId;
|
|
6777
6875
|
mgdtfmt = null;
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
this.setLocale(localeId);
|
|
6876
|
+
task = inject(TaskMagicService);
|
|
6877
|
+
localeId = inject(MAT_DATE_LOCALE);
|
|
6878
|
+
constructor() {
|
|
6879
|
+
super();
|
|
6880
|
+
this.setLocale(this.localeId);
|
|
6783
6881
|
}
|
|
6784
6882
|
parse(value) {
|
|
6785
6883
|
let valueStr = value;
|
|
@@ -6854,15 +6952,12 @@ class MgDateAdapter extends NativeDateAdapter {
|
|
|
6854
6952
|
return date.toDateString();
|
|
6855
6953
|
}
|
|
6856
6954
|
}
|
|
6857
|
-
/** @nocollapse */ static ɵfac = function MgDateAdapter_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgDateAdapter)(
|
|
6955
|
+
/** @nocollapse */ static ɵfac = function MgDateAdapter_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgDateAdapter)(); };
|
|
6858
6956
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MgDateAdapter, factory: MgDateAdapter.ɵfac });
|
|
6859
6957
|
}
|
|
6860
6958
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgDateAdapter, [{
|
|
6861
6959
|
type: Injectable
|
|
6862
|
-
}], () => [
|
|
6863
|
-
type: Inject,
|
|
6864
|
-
args: [MAT_DATE_LOCALE]
|
|
6865
|
-
}] }], null); })();
|
|
6960
|
+
}], () => [], null); })();
|
|
6866
6961
|
|
|
6867
6962
|
const matDateProviders = [
|
|
6868
6963
|
{ provide: DateAdapter, useClass: MgDateAdapter },
|
|
@@ -6884,6 +6979,109 @@ const magicProviders = [
|
|
|
6884
6979
|
TableMagicService
|
|
6885
6980
|
];
|
|
6886
6981
|
|
|
6982
|
+
class SubscriberService {
|
|
6983
|
+
static instance;
|
|
6984
|
+
socket;
|
|
6985
|
+
constructor() {
|
|
6986
|
+
// Connect to the Socket.IO server with subscriber role
|
|
6987
|
+
this.socket = io('http://localhost:3000', {
|
|
6988
|
+
query: {
|
|
6989
|
+
role: 'subscriber',
|
|
6990
|
+
token: 'abc123' // Default token for testing; replace with actual authentication
|
|
6991
|
+
}
|
|
6992
|
+
});
|
|
6993
|
+
// Handle connection
|
|
6994
|
+
this.socket.on('connect', () => {
|
|
6995
|
+
console.log('Connected to server as subscriber:', this.socket.id);
|
|
6996
|
+
});
|
|
6997
|
+
// Handle disconnection
|
|
6998
|
+
this.socket.on('disconnect', () => {
|
|
6999
|
+
console.log('Disconnected from server');
|
|
7000
|
+
});
|
|
7001
|
+
// Handle subscription confirmation
|
|
7002
|
+
this.socket.on('subscribed', (data) => {
|
|
7003
|
+
console.log('Subscribed to topic:', data.topic, data.message);
|
|
7004
|
+
});
|
|
7005
|
+
// Handle unsubscription confirmation
|
|
7006
|
+
this.socket.on('unsubscribed', (data) => {
|
|
7007
|
+
console.log('Unsubscribed from topic:', data.topic, data.message);
|
|
7008
|
+
});
|
|
7009
|
+
// Handle errors
|
|
7010
|
+
this.socket.on('error', (error) => {
|
|
7011
|
+
console.error('Socket error:', error.message);
|
|
7012
|
+
});
|
|
7013
|
+
this.socket.on('message', (error) => {
|
|
7014
|
+
console.error('Message from xpa:', error.message);
|
|
7015
|
+
});
|
|
7016
|
+
}
|
|
7017
|
+
/**
|
|
7018
|
+
* Subscribe to a specific topic
|
|
7019
|
+
* @param topic The topic to subscribe to
|
|
7020
|
+
*/
|
|
7021
|
+
subscribe(topic) {
|
|
7022
|
+
this.socket.emit('subscribe', topic);
|
|
7023
|
+
}
|
|
7024
|
+
/**
|
|
7025
|
+
* Unsubscribe from a specific topic
|
|
7026
|
+
* @param topic The topic to unsubscribe from
|
|
7027
|
+
*/
|
|
7028
|
+
unsubscribe(topic) {
|
|
7029
|
+
this.socket.emit('unsubscribe', topic);
|
|
7030
|
+
}
|
|
7031
|
+
/**
|
|
7032
|
+
* Get an Observable for incoming messages
|
|
7033
|
+
* @returns Observable that emits message data
|
|
7034
|
+
*/
|
|
7035
|
+
onMessage() {
|
|
7036
|
+
return new Observable(observer => {
|
|
7037
|
+
this.socket.on('message', (data) => {
|
|
7038
|
+
observer.next(data);
|
|
7039
|
+
});
|
|
7040
|
+
});
|
|
7041
|
+
}
|
|
7042
|
+
/**
|
|
7043
|
+
* Get current subscriptions (for debugging)
|
|
7044
|
+
*/
|
|
7045
|
+
getSubscriptions() {
|
|
7046
|
+
this.socket.emit('getSubscriptions');
|
|
7047
|
+
}
|
|
7048
|
+
/**
|
|
7049
|
+
* Listen for subscriptions data
|
|
7050
|
+
* @returns Observable that emits subscriptions list
|
|
7051
|
+
*/
|
|
7052
|
+
onSubscriptionsData() {
|
|
7053
|
+
return new Observable(observer => {
|
|
7054
|
+
this.socket.on('subscriptionsData', (data) => {
|
|
7055
|
+
observer.next(data);
|
|
7056
|
+
});
|
|
7057
|
+
});
|
|
7058
|
+
}
|
|
7059
|
+
/**
|
|
7060
|
+
* Get the singleton instance of SubscriberService
|
|
7061
|
+
* @returns {SubscriberService} The singleton instance
|
|
7062
|
+
*/
|
|
7063
|
+
static getInstance() {
|
|
7064
|
+
if (!SubscriberService.instance) {
|
|
7065
|
+
SubscriberService.instance = new SubscriberService();
|
|
7066
|
+
}
|
|
7067
|
+
return SubscriberService.instance;
|
|
7068
|
+
}
|
|
7069
|
+
/**
|
|
7070
|
+
* Disconnect from the server
|
|
7071
|
+
*/
|
|
7072
|
+
disconnect() {
|
|
7073
|
+
this.socket.disconnect();
|
|
7074
|
+
}
|
|
7075
|
+
/** @nocollapse */ static ɵfac = function SubscriberService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubscriberService)(); };
|
|
7076
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SubscriberService, factory: SubscriberService.ɵfac, providedIn: 'root' });
|
|
7077
|
+
}
|
|
7078
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubscriberService, [{
|
|
7079
|
+
type: Injectable,
|
|
7080
|
+
args: [{
|
|
7081
|
+
providedIn: 'root'
|
|
7082
|
+
}]
|
|
7083
|
+
}], () => [], null); })();
|
|
7084
|
+
|
|
6887
7085
|
/**
|
|
6888
7086
|
* @ignore
|
|
6889
7087
|
*/
|
|
@@ -6969,5 +7167,5 @@ class ModalFormDefinition {
|
|
|
6969
7167
|
* Generated bundle index. Do not edit.
|
|
6970
7168
|
*/
|
|
6971
7169
|
|
|
6972
|
-
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 };
|
|
7170
|
+
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, MagicChangeDetectionService, MagicCheckboxControlValueAccessor, MagicColorService, MagicConfirmationBoxComponent, MagicDefaultValueAccessor, MagicDirective, MagicFocusDirective, MagicLazyLoaderService, MagicModalProperties, 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 };
|
|
6973
7171
|
//# sourceMappingURL=magic-xpa-angular.mjs.map
|