@magic-xpa/angular 4.1300.0-dev4130.29 → 4.1300.0-dev4130.292
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 +716 -572
- package/fesm2022/magic-xpa-angular.mjs.map +1 -1
- package/package.json +14 -11
- package/types/magic-xpa-angular.d.ts +537 -405
|
@@ -1,28 +1,27 @@
|
|
|
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 { MaskitoDirective } from '@maskito/angular';
|
|
25
23
|
import { NativeDateAdapter, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
24
|
+
import { io } from 'socket.io-client';
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* @ignore
|
|
@@ -239,6 +238,63 @@ var HtmlClasses;
|
|
|
239
238
|
HtmlClasses["HintColor"] = "hintcolor";
|
|
240
239
|
})(HtmlClasses || (HtmlClasses = {}));
|
|
241
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Notifies Angular that Magic state changed outside of its knowledge.
|
|
243
|
+
*
|
|
244
|
+
* The WebClient runs zoneless, so Angular no longer re-renders the application
|
|
245
|
+
* after every asynchronous task. Change detection is triggered only by Angular's
|
|
246
|
+
* own APIs - a template event binding, a signal write, `markForCheck()` and so on.
|
|
247
|
+
*
|
|
248
|
+
* Magic drives the UI from sources Angular cannot observe: DOM listeners registered
|
|
249
|
+
* through `Renderer2`, the engine's event loop, and socket callbacks. Every such
|
|
250
|
+
* source calls {@link notify}, and the Magic components refresh themselves in response.
|
|
251
|
+
*
|
|
252
|
+
* Application code can use this service for the same purpose. Call {@link notify}
|
|
253
|
+
* after changing component state from a callback Angular does not control - a
|
|
254
|
+
* `setTimeout`, a `Promise`, a `fetch` response or a third-party widget event:
|
|
255
|
+
*
|
|
256
|
+
* ```ts
|
|
257
|
+
* export class MyForm extends TaskBaseMagicComponent {
|
|
258
|
+
* private readonly magicChangeDetection = inject(MagicChangeDetectionService);
|
|
259
|
+
*
|
|
260
|
+
* override mgOnLoad(): void {
|
|
261
|
+
* setTimeout(() => {
|
|
262
|
+
* this.statusText = 'Ready';
|
|
263
|
+
* this.magicChangeDetection.notify();
|
|
264
|
+
* }, 1000);
|
|
265
|
+
* }
|
|
266
|
+
* }
|
|
267
|
+
* ```
|
|
268
|
+
*
|
|
269
|
+
* Notifications are coalesced by Angular's scheduler, so calling {@link notify}
|
|
270
|
+
* several times in a row still results in a single refresh.
|
|
271
|
+
*/
|
|
272
|
+
class MagicChangeDetectionService {
|
|
273
|
+
/**
|
|
274
|
+
* @ignore
|
|
275
|
+
*/
|
|
276
|
+
changedSubject = new Subject();
|
|
277
|
+
/**
|
|
278
|
+
* Emits whenever Magic state changed and the views should be refreshed.
|
|
279
|
+
* Subscribers are expected to mark their view for check.
|
|
280
|
+
*/
|
|
281
|
+
changed = this.changedSubject.asObservable();
|
|
282
|
+
/**
|
|
283
|
+
* Notify Angular that state which the templates depend on has changed.
|
|
284
|
+
*/
|
|
285
|
+
notify() {
|
|
286
|
+
this.changedSubject.next();
|
|
287
|
+
}
|
|
288
|
+
/** @nocollapse */ static ɵfac = function MagicChangeDetectionService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicChangeDetectionService)(); };
|
|
289
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicChangeDetectionService, factory: MagicChangeDetectionService.ɵfac, providedIn: 'root' });
|
|
290
|
+
}
|
|
291
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicChangeDetectionService, [{
|
|
292
|
+
type: Injectable,
|
|
293
|
+
args: [{
|
|
294
|
+
providedIn: 'root'
|
|
295
|
+
}]
|
|
296
|
+
}], null, null); })();
|
|
297
|
+
|
|
242
298
|
/**
|
|
243
299
|
* @ignore
|
|
244
300
|
*/
|
|
@@ -279,6 +335,9 @@ class EngineMagicService {
|
|
|
279
335
|
//TODO - unregister
|
|
280
336
|
refreshDom = new Subject();
|
|
281
337
|
interactiveCommands = new Subject();
|
|
338
|
+
// Injected as a field rather than a constructor parameter so that the public
|
|
339
|
+
// constructor signature stays unchanged for anyone extending this service.
|
|
340
|
+
magicChangeDetection = inject(MagicChangeDetectionService);
|
|
282
341
|
startMagicEngine(httpClient, args) {
|
|
283
342
|
this.magicBridge.registerExecuteCommandsCallback(data => {
|
|
284
343
|
if (!this.isStub) {
|
|
@@ -294,11 +353,17 @@ class EngineMagicService {
|
|
|
294
353
|
console.log('moving to stub mode');
|
|
295
354
|
this.isStub = true;
|
|
296
355
|
}
|
|
356
|
+
finally {
|
|
357
|
+
// The engine finished a batch of UI commands. Running zoneless, this is the
|
|
358
|
+
// single point where every server-driven change becomes visible to Angular.
|
|
359
|
+
this.magicChangeDetection.notify();
|
|
360
|
+
}
|
|
297
361
|
}
|
|
298
362
|
});
|
|
299
363
|
this.magicBridge.registerInteractiveCallback(data => {
|
|
300
364
|
if (!this.isStub) {
|
|
301
365
|
this.interactiveCommands.next(data);
|
|
366
|
+
this.magicChangeDetection.notify();
|
|
302
367
|
}
|
|
303
368
|
});
|
|
304
369
|
this.magicBridge.Initialize(httpClient, args);
|
|
@@ -309,6 +374,11 @@ class EngineMagicService {
|
|
|
309
374
|
insertEvent(guiEvent) {
|
|
310
375
|
if (!this.isStub)
|
|
311
376
|
this.magicBridge.insertEvent(guiEvent);
|
|
377
|
+
// Every Magic UI event - from the DOM listeners registered by MagicDirective and
|
|
378
|
+
// its subclasses, from the accessor service, and from the overlay service - reaches
|
|
379
|
+
// the engine through here. Renderer2 listeners do not notify Angular's scheduler on
|
|
380
|
+
// their own, so this is where an interaction becomes a change-detection trigger.
|
|
381
|
+
this.magicChangeDetection.notify();
|
|
312
382
|
}
|
|
313
383
|
GetRangedValue(taskId, controlName, value) {
|
|
314
384
|
return this.magicBridge.GetRangedValue(taskId, controlName, value);
|
|
@@ -430,12 +500,11 @@ class ComponentListMagicService {
|
|
|
430
500
|
* @ignore
|
|
431
501
|
*/
|
|
432
502
|
class CommandsCollectorMagicService {
|
|
433
|
-
magic;
|
|
434
503
|
count = 0;
|
|
435
504
|
commands = new List();
|
|
436
505
|
subscription = null;
|
|
437
|
-
|
|
438
|
-
|
|
506
|
+
magic = inject(EngineMagicService);
|
|
507
|
+
constructor() {
|
|
439
508
|
}
|
|
440
509
|
startCollecting() {
|
|
441
510
|
this.count++;
|
|
@@ -460,7 +529,7 @@ class CommandsCollectorMagicService {
|
|
|
460
529
|
commands.forEach(command => { this.commands.Remove(command); });
|
|
461
530
|
return commands;
|
|
462
531
|
}
|
|
463
|
-
/** @nocollapse */ static ɵfac = function CommandsCollectorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommandsCollectorMagicService)(
|
|
532
|
+
/** @nocollapse */ static ɵfac = function CommandsCollectorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommandsCollectorMagicService)(); };
|
|
464
533
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: CommandsCollectorMagicService, factory: CommandsCollectorMagicService.ɵfac, providedIn: 'root' });
|
|
465
534
|
}
|
|
466
535
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommandsCollectorMagicService, [{
|
|
@@ -468,7 +537,7 @@ class CommandsCollectorMagicService {
|
|
|
468
537
|
args: [{
|
|
469
538
|
providedIn: 'root'
|
|
470
539
|
}]
|
|
471
|
-
}], () => [
|
|
540
|
+
}], () => [], null); })();
|
|
472
541
|
|
|
473
542
|
/**
|
|
474
543
|
* @ignore
|
|
@@ -522,32 +591,21 @@ class MagicLazyLoaderService {
|
|
|
522
591
|
* Service for managing subforms and routing
|
|
523
592
|
*/
|
|
524
593
|
class SubformMagicService {
|
|
525
|
-
task;
|
|
526
|
-
activatedRoute;
|
|
527
|
-
componentList;
|
|
528
|
-
pendingCommandsCollector;
|
|
529
|
-
router;
|
|
530
|
-
routerCommandsMagicService;
|
|
531
|
-
componentListMagicService;
|
|
532
|
-
loader;
|
|
533
|
-
injector;
|
|
534
|
-
compiler;
|
|
535
594
|
subformsDict /*:{ [x: string]: SubformDefinition }*/ = {};
|
|
536
595
|
routesDict = {}; // dictionary of router outlet to router path
|
|
537
596
|
currentRouteDefinition = null;
|
|
538
597
|
static currentCallerMgSubformServiceRef = null;
|
|
539
598
|
static routerContainers = new Array();
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
this.compiler = compiler;
|
|
599
|
+
task = inject(TaskMagicService);
|
|
600
|
+
activatedRoute = inject(ActivatedRoute);
|
|
601
|
+
componentList = inject(ComponentListMagicService);
|
|
602
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
603
|
+
router = inject(Router);
|
|
604
|
+
routerCommandsMagicService = inject(RouterCommandsMagicService);
|
|
605
|
+
componentListMagicService = inject(ComponentListMagicService);
|
|
606
|
+
loader = inject(MagicLazyLoaderService);
|
|
607
|
+
injector = inject(Injector);
|
|
608
|
+
constructor() {
|
|
551
609
|
}
|
|
552
610
|
/**
|
|
553
611
|
* Finds and returns the component according to the subform name
|
|
@@ -608,8 +666,7 @@ class SubformMagicService {
|
|
|
608
666
|
// extract name of module(XX) from 'MagicXXModule'
|
|
609
667
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
610
668
|
this.loader.Load(moduleName).then(m => {
|
|
611
|
-
|
|
612
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
669
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
613
670
|
this.subformsDict[subformControlName] = {
|
|
614
671
|
formName,
|
|
615
672
|
parameters: { taskIdParam: taskId, taskDescription: taskDescription }
|
|
@@ -749,25 +806,17 @@ class SubformMagicService {
|
|
|
749
806
|
}
|
|
750
807
|
return currentActiveRoute;
|
|
751
808
|
}
|
|
752
|
-
/** @nocollapse */ static ɵfac = function SubformMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicService)(
|
|
809
|
+
/** @nocollapse */ static ɵfac = function SubformMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicService)(); };
|
|
753
810
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SubformMagicService, factory: SubformMagicService.ɵfac });
|
|
754
811
|
}
|
|
755
812
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicService, [{
|
|
756
813
|
type: Injectable
|
|
757
|
-
}], () => [
|
|
814
|
+
}], () => [], null); })();
|
|
758
815
|
|
|
759
816
|
/**
|
|
760
817
|
* Mock component, implements routing by connecting the requested URL with the appropriate Magic task
|
|
761
818
|
*/
|
|
762
819
|
class RouterContainerMagicComponent {
|
|
763
|
-
activatedRoute;
|
|
764
|
-
router;
|
|
765
|
-
magic;
|
|
766
|
-
containerTaskService;
|
|
767
|
-
viewContainerRef;
|
|
768
|
-
componentList;
|
|
769
|
-
pendingCommandsCollector;
|
|
770
|
-
routerCommandsMagicService;
|
|
771
820
|
componentRef = null;
|
|
772
821
|
parentMgSubformService = null;
|
|
773
822
|
static lastRoute = "/";
|
|
@@ -775,6 +824,14 @@ class RouterContainerMagicComponent {
|
|
|
775
824
|
static get LastRoute() {
|
|
776
825
|
return RouterContainerMagicComponent.lastRoute;
|
|
777
826
|
}
|
|
827
|
+
activatedRoute = inject(ActivatedRoute);
|
|
828
|
+
router = inject(Router);
|
|
829
|
+
magic = inject(EngineMagicService);
|
|
830
|
+
containerTaskService = inject(TaskMagicService);
|
|
831
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
832
|
+
componentList = inject(ComponentListMagicService);
|
|
833
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
834
|
+
routerCommandsMagicService = inject(RouterCommandsMagicService);
|
|
778
835
|
/**
|
|
779
836
|
*
|
|
780
837
|
* @param changeDetectorRef
|
|
@@ -785,16 +842,7 @@ class RouterContainerMagicComponent {
|
|
|
785
842
|
* @param componentList
|
|
786
843
|
* @param pendingCommandsCollector
|
|
787
844
|
*/
|
|
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
|
-
}
|
|
845
|
+
constructor() { }
|
|
798
846
|
/**
|
|
799
847
|
* Initialization
|
|
800
848
|
*/
|
|
@@ -872,8 +920,8 @@ class RouterContainerMagicComponent {
|
|
|
872
920
|
getRouterPath() {
|
|
873
921
|
return this.routePath;
|
|
874
922
|
}
|
|
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 });
|
|
923
|
+
/** @nocollapse */ static ɵfac = function RouterContainerMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RouterContainerMagicComponent)(); };
|
|
924
|
+
/** @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
925
|
}
|
|
878
926
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterContainerMagicComponent, [{
|
|
879
927
|
type: Component,
|
|
@@ -881,10 +929,11 @@ class RouterContainerMagicComponent {
|
|
|
881
929
|
selector: 'magic-route-outlet',
|
|
882
930
|
template: `
|
|
883
931
|
`,
|
|
932
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
884
933
|
standalone: false
|
|
885
934
|
}]
|
|
886
|
-
}], () => [
|
|
887
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RouterContainerMagicComponent, { className: "RouterContainerMagicComponent", filePath: "src/ui/router-container.magic.component.ts", lineNumber:
|
|
935
|
+
}], () => [], null); })();
|
|
936
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RouterContainerMagicComponent, { className: "RouterContainerMagicComponent", filePath: "src/ui/router-container.magic.component.ts", lineNumber: 24 }); })();
|
|
888
937
|
|
|
889
938
|
/**
|
|
890
939
|
* @ignore
|
|
@@ -1003,37 +1052,81 @@ class GuiInteractiveExecutor {
|
|
|
1003
1052
|
}
|
|
1004
1053
|
}
|
|
1005
1054
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1055
|
+
class MagicModalProperties {
|
|
1056
|
+
formName = "overlay";
|
|
1057
|
+
showTitleBar = true;
|
|
1058
|
+
x = 0;
|
|
1059
|
+
y = 0;
|
|
1060
|
+
width = "300px";
|
|
1061
|
+
height = "300px";
|
|
1062
|
+
isCenteredToWindow = true;
|
|
1063
|
+
shouldCloseOnBackgroundClick = true;
|
|
1064
|
+
isResizable = true;
|
|
1065
|
+
isMovable = true;
|
|
1066
|
+
constructor(formName, showTitleBar, x, y, width, height, isCenteredToWindow, shouldCloseOnBackgroundClick, isResizable, isMovable) {
|
|
1067
|
+
this.formName = formName;
|
|
1068
|
+
this.showTitleBar = showTitleBar;
|
|
1069
|
+
this.x = x;
|
|
1070
|
+
this.y = y;
|
|
1071
|
+
this.width = width;
|
|
1072
|
+
this.height = height;
|
|
1073
|
+
this.isCenteredToWindow = isCenteredToWindow;
|
|
1074
|
+
this.shouldCloseOnBackgroundClick = shouldCloseOnBackgroundClick;
|
|
1075
|
+
this.isResizable = isResizable;
|
|
1076
|
+
this.isMovable = isMovable;
|
|
1077
|
+
}
|
|
1078
|
+
X() {
|
|
1079
|
+
return this.x;
|
|
1080
|
+
}
|
|
1081
|
+
Y() {
|
|
1082
|
+
return this.y;
|
|
1083
|
+
}
|
|
1084
|
+
Width() {
|
|
1085
|
+
return this.width;
|
|
1086
|
+
}
|
|
1087
|
+
Height() {
|
|
1088
|
+
return this.height;
|
|
1089
|
+
}
|
|
1090
|
+
IsCenteredToWindow() {
|
|
1091
|
+
return this.isCenteredToWindow;
|
|
1092
|
+
}
|
|
1093
|
+
FormName() {
|
|
1094
|
+
return this.formName;
|
|
1095
|
+
}
|
|
1096
|
+
ShowTitleBar() {
|
|
1097
|
+
return this.showTitleBar;
|
|
1098
|
+
}
|
|
1099
|
+
ShouldCloseOnBackgroundClick() {
|
|
1100
|
+
return this.shouldCloseOnBackgroundClick;
|
|
1101
|
+
}
|
|
1102
|
+
IsResizable() {
|
|
1103
|
+
return this.isResizable;
|
|
1104
|
+
}
|
|
1105
|
+
IsMovable() {
|
|
1106
|
+
return this.isMovable;
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
/**
|
|
1111
|
+
* Abstract base for Magic overlay container components.
|
|
1112
|
+
* Concrete classes must implement these members using Angular signal APIs (input/output).
|
|
1113
|
+
* The class is kept as an abstract class (not an interface) so that instanceof checks
|
|
1114
|
+
* in MagicOverlayContainerWrapper continue to work at runtime.
|
|
1115
|
+
*/
|
|
1116
|
+
class BaseMagicOverlayContainer {
|
|
1117
|
+
}
|
|
1024
1118
|
|
|
1025
1119
|
/**
|
|
1026
1120
|
* Directive for setting ViewContainerRef on element
|
|
1027
1121
|
*/
|
|
1028
1122
|
class MagicViewContainerRef {
|
|
1029
|
-
vcRef;
|
|
1030
|
-
constructor(
|
|
1031
|
-
this.vcRef = vcRef;
|
|
1123
|
+
vcRef = inject(ViewContainerRef);
|
|
1124
|
+
constructor() {
|
|
1032
1125
|
// For angular 10 - find the component from the views
|
|
1033
1126
|
let comp = (this.vcRef._hostLView).find(v => v != null && !isNullOrUndefined(v.setViewContainerRef));
|
|
1034
|
-
comp.setViewContainerRef(vcRef);
|
|
1127
|
+
comp.setViewContainerRef(this.vcRef);
|
|
1035
1128
|
}
|
|
1036
|
-
/** @nocollapse */ static ɵfac = function MagicViewContainerRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicViewContainerRef)(
|
|
1129
|
+
/** @nocollapse */ static ɵfac = function MagicViewContainerRef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicViewContainerRef)(); };
|
|
1037
1130
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicViewContainerRef, selectors: [["", "magicViewContainerRef", ""]], standalone: false });
|
|
1038
1131
|
}
|
|
1039
1132
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicViewContainerRef, [{
|
|
@@ -1042,54 +1135,54 @@ class MagicViewContainerRef {
|
|
|
1042
1135
|
selector: '[magicViewContainerRef]',
|
|
1043
1136
|
standalone: false
|
|
1044
1137
|
}]
|
|
1045
|
-
}], () => [
|
|
1138
|
+
}], () => [], null); })();
|
|
1046
1139
|
|
|
1047
1140
|
const _c0$3 = ["modalheader"];
|
|
1048
1141
|
const _c1$1 = ["modalForeground"];
|
|
1049
1142
|
function MagicOverlayContainer_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
1050
|
-
const
|
|
1143
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
1051
1144
|
i0.ɵɵelementStart(0, "button", 14);
|
|
1052
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
1145
|
+
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
1146
|
i0.ɵɵtext(1, "X");
|
|
1054
1147
|
i0.ɵɵelementEnd();
|
|
1055
1148
|
} }
|
|
1056
1149
|
function MagicOverlayContainer_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
1057
|
-
const
|
|
1150
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
1058
1151
|
i0.ɵɵelementStart(0, "span", 15);
|
|
1059
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_5_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1152
|
+
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
1153
|
i0.ɵɵelementEnd();
|
|
1061
1154
|
} }
|
|
1062
1155
|
function MagicOverlayContainer_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
1063
|
-
const
|
|
1156
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
1064
1157
|
i0.ɵɵelementStart(0, "span", 16);
|
|
1065
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_6_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1158
|
+
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
1159
|
i0.ɵɵelementEnd();
|
|
1067
1160
|
} }
|
|
1068
1161
|
function MagicOverlayContainer_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
1069
|
-
const
|
|
1162
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
1070
1163
|
i0.ɵɵelementStart(0, "span", 17);
|
|
1071
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_7_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1164
|
+
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
1165
|
i0.ɵɵelementEnd();
|
|
1073
1166
|
} }
|
|
1074
1167
|
function MagicOverlayContainer_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
1075
|
-
const
|
|
1168
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
1076
1169
|
i0.ɵɵelementStart(0, "span", 18);
|
|
1077
|
-
i0.ɵɵlistener("mousedown", function MagicOverlayContainer_Conditional_8_Template_span_mousedown_0_listener($event) { i0.ɵɵrestoreView(
|
|
1170
|
+
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
1171
|
i0.ɵɵelementEnd();
|
|
1079
1172
|
} }
|
|
1080
1173
|
function MagicOverlayContainer_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
1081
|
-
const
|
|
1174
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
1082
1175
|
i0.ɵɵelementStart(0, "div", 19, 2);
|
|
1083
1176
|
i0.ɵɵtext(2);
|
|
1084
1177
|
i0.ɵɵelementStart(3, "button", 20);
|
|
1085
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
1178
|
+
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
1179
|
i0.ɵɵtext(4, "X");
|
|
1087
1180
|
i0.ɵɵelementEnd()();
|
|
1088
1181
|
} if (rf & 2) {
|
|
1089
|
-
const
|
|
1090
|
-
i0.ɵɵclassProp("movable",
|
|
1182
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
1183
|
+
i0.ɵɵclassProp("movable", ctx_r1.IsMovable());
|
|
1091
1184
|
i0.ɵɵadvance(2);
|
|
1092
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
1185
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.getText(), " ");
|
|
1093
1186
|
} }
|
|
1094
1187
|
/**
|
|
1095
1188
|
* Creates a modal window for Magic modal window components
|
|
@@ -1142,7 +1235,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1142
1235
|
ngOnInit() {
|
|
1143
1236
|
this.componentRef = this.modalbodyViewContainerRef.createComponent(this.ModalComp);
|
|
1144
1237
|
Object.assign(this.componentRef.instance, this.ModalCompParameters);
|
|
1145
|
-
let comp = this.
|
|
1238
|
+
let comp = this.getOverlayProps();
|
|
1146
1239
|
this.isCenteredToWindow = comp.IsCenteredToWindow();
|
|
1147
1240
|
}
|
|
1148
1241
|
ngAfterViewInit() {
|
|
@@ -1161,7 +1254,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1161
1254
|
*/
|
|
1162
1255
|
getText() {
|
|
1163
1256
|
if (this.componentRef !== null) {
|
|
1164
|
-
let comp = this.
|
|
1257
|
+
let comp = this.getOverlayProps();
|
|
1165
1258
|
return comp.FormName();
|
|
1166
1259
|
}
|
|
1167
1260
|
else
|
|
@@ -1180,7 +1273,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1180
1273
|
getStyle() {
|
|
1181
1274
|
let styles = {};
|
|
1182
1275
|
if (this.componentRef != undefined) {
|
|
1183
|
-
let comp = this.
|
|
1276
|
+
let comp = this.getOverlayProps();
|
|
1184
1277
|
styles['width'] = comp.Width();
|
|
1185
1278
|
styles['height'] = comp.Height();
|
|
1186
1279
|
if (this.isCenteredToWindow) {
|
|
@@ -1217,7 +1310,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1217
1310
|
*/
|
|
1218
1311
|
getShowTitleBar() {
|
|
1219
1312
|
if (this.componentRef != undefined) {
|
|
1220
|
-
let comp = this.
|
|
1313
|
+
let comp = this.getOverlayProps();
|
|
1221
1314
|
return comp.ShowTitleBar();
|
|
1222
1315
|
}
|
|
1223
1316
|
}
|
|
@@ -1231,7 +1324,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1231
1324
|
* Handles click in the background window
|
|
1232
1325
|
*/
|
|
1233
1326
|
OnBackgroundClick() {
|
|
1234
|
-
let comp = this.
|
|
1327
|
+
let comp = this.getOverlayProps();
|
|
1235
1328
|
if (comp.ShouldCloseOnBackgroundClick())
|
|
1236
1329
|
this.OnClose();
|
|
1237
1330
|
}
|
|
@@ -1240,7 +1333,9 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1240
1333
|
* @returns {boolean} True if the overlay is resizable, false otherwise.
|
|
1241
1334
|
*/
|
|
1242
1335
|
IsResizable() {
|
|
1243
|
-
|
|
1336
|
+
if (!this.componentRef)
|
|
1337
|
+
return false;
|
|
1338
|
+
let comp = this.getOverlayProps();
|
|
1244
1339
|
return comp.IsResizable();
|
|
1245
1340
|
}
|
|
1246
1341
|
/**
|
|
@@ -1248,7 +1343,9 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1248
1343
|
* @returns {boolean} True if the overlay is movable, false otherwise.
|
|
1249
1344
|
*/
|
|
1250
1345
|
IsMovable() {
|
|
1251
|
-
|
|
1346
|
+
if (!this.componentRef)
|
|
1347
|
+
return false;
|
|
1348
|
+
let comp = this.getOverlayProps();
|
|
1252
1349
|
return comp.IsMovable();
|
|
1253
1350
|
}
|
|
1254
1351
|
/**
|
|
@@ -1342,6 +1439,19 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1342
1439
|
this.resizing = false;
|
|
1343
1440
|
this.resizeDirection = null;
|
|
1344
1441
|
}
|
|
1442
|
+
getOverlayProps() {
|
|
1443
|
+
let obj = this.componentRef.instance;
|
|
1444
|
+
if (obj && obj.magicModalProperties instanceof MagicModalProperties)
|
|
1445
|
+
obj = obj.magicModalProperties;
|
|
1446
|
+
// The properties come either from a MagicModalProperties object or from a component that implements MagicModalInterface itself.
|
|
1447
|
+
if (!(obj instanceof MagicModalProperties) && typeof obj?.ShowTitleBar !== 'function') {
|
|
1448
|
+
const componentName = this.componentRef?.instance?.constructor?.name || 'Unknown';
|
|
1449
|
+
throw new Error(`Overlay component '${componentName}' cannot be opened. ` +
|
|
1450
|
+
`Ensure that the component contains a 'magicModalProperties' property of type MagicModalProperties. ` +
|
|
1451
|
+
`Example: magicModalProperties: MagicModalProperties = new MagicModalProperties("formName", true, 0, 0, "300px", "300px", true, true, true, true);`);
|
|
1452
|
+
}
|
|
1453
|
+
return obj;
|
|
1454
|
+
}
|
|
1345
1455
|
/** @nocollapse */ static ɵfac = function MagicOverlayContainer_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainer)(); };
|
|
1346
1456
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicOverlayContainer, selectors: [["app-magic-overlay-container"]], viewQuery: function MagicOverlayContainer_Query(rf, ctx) { if (rf & 1) {
|
|
1347
1457
|
i0.ɵɵviewQuery(_c0$3, 5)(_c1$1, 5);
|
|
@@ -1352,9 +1462,8 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1352
1462
|
} }, hostBindings: function MagicOverlayContainer_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1353
1463
|
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
1464
|
} }, 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
1465
|
i0.ɵɵelementStart(0, "div", 3)(1, "div", 4);
|
|
1357
|
-
i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() {
|
|
1466
|
+
i0.ɵɵlistener("click", function MagicOverlayContainer_Template_div_click_1_listener() { return ctx.OnBackgroundClick(); });
|
|
1358
1467
|
i0.ɵɵconditionalCreate(2, MagicOverlayContainer_Conditional_2_Template, 2, 0, "button", 5);
|
|
1359
1468
|
i0.ɵɵelementEnd();
|
|
1360
1469
|
i0.ɵɵelementStart(3, "div", 6, 0);
|
|
@@ -1383,48 +1492,48 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1383
1492
|
i0.ɵɵconditional(ctx.getShowTitleBar() ? 9 : -1);
|
|
1384
1493
|
i0.ɵɵadvance();
|
|
1385
1494
|
i0.ɵɵproperty("ngStyle", ctx.getClientAreaStyles());
|
|
1386
|
-
} }, dependencies: [i1.NgStyle, i2
|
|
1495
|
+
} }, 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
1496
|
}
|
|
1388
1497
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicOverlayContainer, [{
|
|
1389
1498
|
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"] }]
|
|
1499
|
+
args: [{ selector: 'app-magic-overlay-container', template: `
|
|
1500
|
+
<div class="boundary-line">
|
|
1501
|
+
|
|
1502
|
+
<div class="modal-background" (click)="OnBackgroundClick()">
|
|
1503
|
+
@if (!getShowTitleBar()) {
|
|
1504
|
+
<button (click)="OnClose()" tabindex="-1" style="float:right; border: none; background-color: transparent; outline: none; color: white">X</button>
|
|
1505
|
+
}
|
|
1506
|
+
</div>
|
|
1507
|
+
|
|
1508
|
+
<div #modalForeground class="modal-foreground" [ngStyle]="getStyle()" cdkDragBoundary=".boundary-line" cdkDrag [cdkDragDisabled]="!IsMovable()">
|
|
1509
|
+
|
|
1510
|
+
@if (IsResizable() && !isRtl) {
|
|
1511
|
+
<span class="dragHandle right" (mousedown)="onResizeStart($event, 'right')"></span>
|
|
1512
|
+
}
|
|
1513
|
+
@if (IsResizable() && isRtl) {
|
|
1514
|
+
<span class="dragHandle left" (mousedown)="onResizeStart($event, 'left')"></span>
|
|
1515
|
+
}
|
|
1516
|
+
@if (IsResizable()) {
|
|
1517
|
+
<span class="dragHandle corner" (mousedown)="onResizeStart($event, 'corner')"></span>
|
|
1518
|
+
}
|
|
1519
|
+
@if (IsResizable()) {
|
|
1520
|
+
<span class="dragHandle bottom" (mousedown)="onResizeStart($event, 'bottom')"></span>
|
|
1521
|
+
}
|
|
1522
|
+
|
|
1523
|
+
@if (getShowTitleBar()) {
|
|
1524
|
+
<div #modalheader class="modal-header" cdkDragHandle [class.movable]="IsMovable()">
|
|
1525
|
+
{{getText()}}
|
|
1526
|
+
<button (click)="OnClose()" style="float:right" tabindex="-1">X</button>
|
|
1527
|
+
</div>
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
<div [ngStyle]="getClientAreaStyles()">
|
|
1531
|
+
<div #modalbody magicViewContainerRef>
|
|
1532
|
+
</div>
|
|
1533
|
+
</div>
|
|
1534
|
+
</div>
|
|
1535
|
+
</div>
|
|
1536
|
+
`, 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
1537
|
}], () => [], { headerElementRef: [{
|
|
1429
1538
|
type: ViewChild,
|
|
1430
1539
|
args: ['modalheader', { static: false }]
|
|
@@ -1444,7 +1553,7 @@ class MagicOverlayContainer extends BaseMagicOverlayContainer {
|
|
|
1444
1553
|
type: HostListener,
|
|
1445
1554
|
args: ['window:mouseup']
|
|
1446
1555
|
}] }); })();
|
|
1447
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber:
|
|
1556
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainer, { className: "MagicOverlayContainer", filePath: "src/ui/magic-modal/magic-overlay-container.ts", lineNumber: 67 }); })();
|
|
1448
1557
|
|
|
1449
1558
|
/**
|
|
1450
1559
|
* Service managing overlay windows
|
|
@@ -1487,11 +1596,11 @@ class BaseMagicConfirmComponent {
|
|
|
1487
1596
|
this.onClose.emit(result);
|
|
1488
1597
|
}
|
|
1489
1598
|
/** @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 });
|
|
1599
|
+
/** @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
1600
|
}
|
|
1492
1601
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseMagicConfirmComponent, [{
|
|
1493
1602
|
type: Component,
|
|
1494
|
-
args: [{ selector: 'mg-base-confirm', template: '', standalone: false }]
|
|
1603
|
+
args: [{ selector: 'mg-base-confirm', template: '', changeDetection: ChangeDetectionStrategy.Eager, standalone: false }]
|
|
1495
1604
|
}], null, { title: [{
|
|
1496
1605
|
type: Input
|
|
1497
1606
|
}], message: [{
|
|
@@ -1499,7 +1608,7 @@ class BaseMagicConfirmComponent {
|
|
|
1499
1608
|
}], onClose: [{
|
|
1500
1609
|
type: Output
|
|
1501
1610
|
}] }); })();
|
|
1502
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicConfirmComponent, { className: "BaseMagicConfirmComponent", filePath: "src/ui/components/base-magic-confirm.component.ts", lineNumber:
|
|
1611
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicConfirmComponent, { className: "BaseMagicConfirmComponent", filePath: "src/ui/components/base-magic-confirm.component.ts", lineNumber: 14 }); })();
|
|
1503
1612
|
|
|
1504
1613
|
/**
|
|
1505
1614
|
* This is a base class for the magic alert components
|
|
@@ -1525,11 +1634,11 @@ class BaseMagicAlertComponent {
|
|
|
1525
1634
|
this.onClose.emit();
|
|
1526
1635
|
}
|
|
1527
1636
|
/** @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 });
|
|
1637
|
+
/** @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
1638
|
}
|
|
1530
1639
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseMagicAlertComponent, [{
|
|
1531
1640
|
type: Component,
|
|
1532
|
-
args: [{ selector: 'mg-base-alert', template: '', standalone: false }]
|
|
1641
|
+
args: [{ selector: 'mg-base-alert', template: '', changeDetection: ChangeDetectionStrategy.Eager, standalone: false }]
|
|
1533
1642
|
}], null, { title: [{
|
|
1534
1643
|
type: Input
|
|
1535
1644
|
}], message: [{
|
|
@@ -1537,20 +1646,18 @@ class BaseMagicAlertComponent {
|
|
|
1537
1646
|
}], onClose: [{
|
|
1538
1647
|
type: Output
|
|
1539
1648
|
}] }); })();
|
|
1540
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicAlertComponent, { className: "BaseMagicAlertComponent", filePath: "src/ui/components/base-magic-alert.component.ts", lineNumber:
|
|
1649
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BaseMagicAlertComponent, { className: "BaseMagicAlertComponent", filePath: "src/ui/components/base-magic-alert.component.ts", lineNumber: 16 }); })();
|
|
1541
1650
|
|
|
1542
1651
|
/**
|
|
1543
1652
|
* Directive for setting focus on element
|
|
1544
1653
|
*/
|
|
1545
1654
|
class MagicFocusDirective {
|
|
1546
|
-
hostElement;
|
|
1547
|
-
constructor(
|
|
1548
|
-
this.hostElement = hostElement;
|
|
1549
|
-
}
|
|
1655
|
+
hostElement = inject(ElementRef);
|
|
1656
|
+
constructor() { }
|
|
1550
1657
|
ngAfterViewInit() {
|
|
1551
1658
|
this.hostElement.nativeElement.focus();
|
|
1552
1659
|
}
|
|
1553
|
-
/** @nocollapse */ static ɵfac = function MagicFocusDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicFocusDirective)(
|
|
1660
|
+
/** @nocollapse */ static ɵfac = function MagicFocusDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicFocusDirective)(); };
|
|
1554
1661
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicFocusDirective, selectors: [["", "magicFocus", ""]], standalone: false });
|
|
1555
1662
|
}
|
|
1556
1663
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicFocusDirective, [{
|
|
@@ -1559,30 +1666,29 @@ class MagicFocusDirective {
|
|
|
1559
1666
|
selector: '[magicFocus]',
|
|
1560
1667
|
standalone: false
|
|
1561
1668
|
}]
|
|
1562
|
-
}], () => [
|
|
1669
|
+
}], () => [], null); })();
|
|
1563
1670
|
|
|
1564
1671
|
const _c0$2 = ["overlayContainerWrapper"];
|
|
1565
1672
|
class MagicOverlayContainerWrapper {
|
|
1566
|
-
componentListMagicService;
|
|
1567
|
-
magicLazyModuleLoader;
|
|
1568
|
-
injector;
|
|
1569
|
-
changeDetectorRef;
|
|
1570
|
-
compiler;
|
|
1571
1673
|
/**
|
|
1572
1674
|
*
|
|
1573
1675
|
*/
|
|
1574
|
-
Component = null
|
|
1676
|
+
Component = input(null, /* @ts-ignore */
|
|
1677
|
+
...(ngDevMode ? [{ debugName: "Component" }] : /* istanbul ignore next */ []));
|
|
1575
1678
|
/**
|
|
1576
1679
|
*
|
|
1577
1680
|
*/
|
|
1578
|
-
Parameters = {}
|
|
1579
|
-
|
|
1580
|
-
|
|
1681
|
+
Parameters = input({}, /* @ts-ignore */
|
|
1682
|
+
...(ngDevMode ? [{ debugName: "Parameters" }] : /* istanbul ignore next */ []));
|
|
1683
|
+
OverlayTypeParam = input(/* @ts-ignore */
|
|
1684
|
+
...(ngDevMode ? [undefined, { debugName: "OverlayTypeParam" }] : /* istanbul ignore next */ []));
|
|
1685
|
+
onClose = output();
|
|
1581
1686
|
/**
|
|
1582
1687
|
* HTML to be displayed in the modal window
|
|
1583
1688
|
*/
|
|
1584
1689
|
overlayContentViewContainerRef;
|
|
1585
|
-
overlayContainerWrapperElementRef
|
|
1690
|
+
overlayContainerWrapperElementRef = viewChild.required('overlayContainerWrapper', /* @ts-ignore */
|
|
1691
|
+
...(ngDevMode ? [{ debugName: "overlayContainerWrapperElementRef" }] : /* istanbul ignore next */ []));
|
|
1586
1692
|
/**
|
|
1587
1693
|
* @ignore
|
|
1588
1694
|
* contais data of allowed base components to use
|
|
@@ -1592,32 +1698,26 @@ class MagicOverlayContainerWrapper {
|
|
|
1592
1698
|
[OverlayType.Alert, { comp: BaseMagicAlertComponent, error: 'BaseMagicAlertComponent. Alert ' }],
|
|
1593
1699
|
[OverlayType.ConfirmationBox, { comp: BaseMagicConfirmComponent, error: 'BaseMagicConfirmComponent. Confirmation ' }]
|
|
1594
1700
|
]);
|
|
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;
|
|
1701
|
+
componentListMagicService = inject(ComponentListMagicService);
|
|
1702
|
+
magicLazyModuleLoader = inject(MagicLazyLoaderService);
|
|
1703
|
+
injector = inject(Injector);
|
|
1704
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
1705
|
+
constructor() {
|
|
1605
1706
|
}
|
|
1606
1707
|
/**
|
|
1607
1708
|
*
|
|
1608
1709
|
*/
|
|
1609
1710
|
ngOnInit() {
|
|
1610
|
-
let moduleRef = this.componentListMagicService.getModuleRef(this.Parameters.MagicFormName);
|
|
1711
|
+
let moduleRef = this.componentListMagicService.getModuleRef(this.Parameters().MagicFormName);
|
|
1611
1712
|
if (moduleRef == null) {
|
|
1612
|
-
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(this.Parameters.MagicFormName);
|
|
1713
|
+
let lazyLoadModule = this.componentListMagicService.getLazyLoadModuleData(this.Parameters().MagicFormName);
|
|
1613
1714
|
if (lazyLoadModule != null) {
|
|
1614
1715
|
const Magic = 'Magic';
|
|
1615
1716
|
const Module = 'Module';
|
|
1616
1717
|
// extract name of module(XX) from 'MagicXXModule'
|
|
1617
1718
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
1618
1719
|
this.magicLazyModuleLoader.Load(moduleName).then(m => {
|
|
1619
|
-
|
|
1620
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
1720
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
1621
1721
|
this.loadComponent(moduleRef);
|
|
1622
1722
|
});
|
|
1623
1723
|
}
|
|
@@ -1629,11 +1729,18 @@ class MagicOverlayContainerWrapper {
|
|
|
1629
1729
|
this.loadComponent(moduleRef);
|
|
1630
1730
|
}
|
|
1631
1731
|
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);
|
|
1732
|
+
this.Parameters().ModalComp = this.componentListMagicService.getComponent(this.Parameters().MagicFormName, !isNullOrUndefined(this.Parameters().MagicFormName));
|
|
1733
|
+
let componentRef = this.overlayContentViewContainerRef.createComponent(this.Component());
|
|
1734
|
+
let allowedBaseComp = MagicOverlayContainerWrapper.allowedBaseComps.get(this.OverlayTypeParam());
|
|
1635
1735
|
if (componentRef.instance instanceof allowedBaseComp.comp) {
|
|
1636
|
-
|
|
1736
|
+
if (this.OverlayTypeParam() === OverlayType.Overlay) {
|
|
1737
|
+
componentRef.setInput('ModalComp', this.Parameters().ModalComp);
|
|
1738
|
+
componentRef.setInput('ModalCompParameters', this.Parameters().ModalCompParameters);
|
|
1739
|
+
}
|
|
1740
|
+
else {
|
|
1741
|
+
componentRef.setInput('title', this.Parameters().title);
|
|
1742
|
+
componentRef.setInput('message', this.Parameters().message);
|
|
1743
|
+
}
|
|
1637
1744
|
componentRef.instance.onClose.subscribe((res) => {
|
|
1638
1745
|
this.onClose.emit(res);
|
|
1639
1746
|
});
|
|
@@ -1647,18 +1754,17 @@ class MagicOverlayContainerWrapper {
|
|
|
1647
1754
|
this.overlayContentViewContainerRef = vcRef;
|
|
1648
1755
|
}
|
|
1649
1756
|
GetRootElement() {
|
|
1650
|
-
return this.overlayContainerWrapperElementRef.nativeElement;
|
|
1757
|
+
return this.overlayContainerWrapperElementRef().nativeElement;
|
|
1651
1758
|
}
|
|
1652
1759
|
DetectChanges() {
|
|
1653
1760
|
this.changeDetectorRef.detectChanges();
|
|
1654
1761
|
}
|
|
1655
|
-
/** @nocollapse */ static ɵfac = function MagicOverlayContainerWrapper_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainerWrapper)(
|
|
1762
|
+
/** @nocollapse */ static ɵfac = function MagicOverlayContainerWrapper_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicOverlayContainerWrapper)(); };
|
|
1656
1763
|
/** @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.ɵɵ
|
|
1764
|
+
i0.ɵɵviewQuerySignal(ctx.overlayContainerWrapperElementRef, _c0$2, 5);
|
|
1658
1765
|
} 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) {
|
|
1766
|
+
i0.ɵɵqueryAdvance();
|
|
1767
|
+
} }, 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
1768
|
i0.ɵɵelementStart(0, "div");
|
|
1663
1769
|
i0.ɵɵelement(1, "div", 2);
|
|
1664
1770
|
i0.ɵɵelementStart(2, "div", 3, 0);
|
|
@@ -1666,7 +1772,7 @@ class MagicOverlayContainerWrapper {
|
|
|
1666
1772
|
i0.ɵɵelementEnd();
|
|
1667
1773
|
i0.ɵɵelement(6, "div", 5);
|
|
1668
1774
|
i0.ɵɵelementEnd();
|
|
1669
|
-
} }, dependencies: [MagicFocusDirective, MagicViewContainerRef], styles: [".overlay-container-wrapper-background[_ngcontent-%COMP%]{position:fixed;z-index:999;inset:0}"] });
|
|
1775
|
+
} }, dependencies: [MagicFocusDirective, MagicViewContainerRef], styles: [".overlay-container-wrapper-background[_ngcontent-%COMP%]{position:fixed;z-index:999;inset:0}"], changeDetection: 1 });
|
|
1670
1776
|
}
|
|
1671
1777
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicOverlayContainerWrapper, [{
|
|
1672
1778
|
type: Component,
|
|
@@ -1679,19 +1785,8 @@ class MagicOverlayContainerWrapper {
|
|
|
1679
1785
|
</div>
|
|
1680
1786
|
<div class="overlay-container-wrapper-background" tabIndex="0" style="width: 0px; height: 0px;" ></div>
|
|
1681
1787
|
</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
|
-
}] }); })();
|
|
1788
|
+
`, changeDetection: ChangeDetectionStrategy.Eager, standalone: false, styles: [".overlay-container-wrapper-background{position:fixed;z-index:999;inset:0}\n"] }]
|
|
1789
|
+
}], () => [], { 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
1790
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicOverlayContainerWrapper, { className: "MagicOverlayContainerWrapper", filePath: "src/ui/magic-modal/magic-overlay-container-wrapper.ts", lineNumber: 46 }); })();
|
|
1696
1791
|
|
|
1697
1792
|
/***
|
|
@@ -1878,21 +1973,13 @@ class confirmationBox {
|
|
|
1878
1973
|
* Service managing overlay windows
|
|
1879
1974
|
*/
|
|
1880
1975
|
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;
|
|
1976
|
+
componentList = inject(ComponentListMagicService);
|
|
1977
|
+
engineMagicService = inject(EngineMagicService);
|
|
1978
|
+
magicLazyModuleLoader = inject(MagicLazyLoaderService);
|
|
1979
|
+
injector = inject(Injector);
|
|
1980
|
+
overlayContainerMagicProvider = inject(OverlayContainerMagicProvider);
|
|
1981
|
+
confirmationComponentsMagicProvider = inject(ConfirmationComponentsMagicProvider);
|
|
1982
|
+
constructor() {
|
|
1896
1983
|
}
|
|
1897
1984
|
// The view reference of container of overlay window
|
|
1898
1985
|
overlayWindowsContainerViewRef;
|
|
@@ -1913,8 +2000,7 @@ class OverlayWindowService {
|
|
|
1913
2000
|
// extract name of module(XX) from 'MagicXXModule'
|
|
1914
2001
|
const moduleName = lazyLoadModule.moduleName.slice(Magic.length, -Module.length);
|
|
1915
2002
|
this.magicLazyModuleLoader.Load(moduleName).then(m => {
|
|
1916
|
-
|
|
1917
|
-
moduleRef = compiled.ngModuleFactory.create(this.injector);
|
|
2003
|
+
moduleRef = createNgModule(m[lazyLoadModule.moduleName], this.injector);
|
|
1918
2004
|
this.open(formName, taskId, taskDescription);
|
|
1919
2005
|
this.finishConfirmation(Styles.MSGBOX_BUTTON_OK, true);
|
|
1920
2006
|
});
|
|
@@ -1995,13 +2081,15 @@ class OverlayWindowService {
|
|
|
1995
2081
|
// Create the UI component of modal window
|
|
1996
2082
|
let viewCRef = this.overlayWindowsContainerViewRef;
|
|
1997
2083
|
componentRef = viewCRef.createComponent(MagicOverlayContainerWrapper);
|
|
1998
|
-
// Set
|
|
1999
|
-
|
|
2084
|
+
// Set signal inputs via setInput() — direct property assignment would overwrite the signal functions
|
|
2085
|
+
componentRef.setInput('Component', magicModalContainerParameters.Component);
|
|
2086
|
+
componentRef.setInput('Parameters', magicModalContainerParameters.Parameters);
|
|
2087
|
+
componentRef.setInput('OverlayTypeParam', magicModalContainerParameters.OverlayTypeParam);
|
|
2000
2088
|
this.overlayWindowFocusManager.pushDialog(componentRef.instance.GetRootElement());
|
|
2001
2089
|
componentRef.instance.DetectChanges();
|
|
2002
2090
|
return componentRef;
|
|
2003
2091
|
}
|
|
2004
|
-
/** @nocollapse */ static ɵfac = function OverlayWindowService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OverlayWindowService)(
|
|
2092
|
+
/** @nocollapse */ static ɵfac = function OverlayWindowService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || OverlayWindowService)(); };
|
|
2005
2093
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: OverlayWindowService, factory: OverlayWindowService.ɵfac, providedIn: 'root' });
|
|
2006
2094
|
}
|
|
2007
2095
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OverlayWindowService, [{
|
|
@@ -2009,7 +2097,7 @@ class OverlayWindowService {
|
|
|
2009
2097
|
args: [{
|
|
2010
2098
|
providedIn: 'root'
|
|
2011
2099
|
}]
|
|
2012
|
-
}], () => [
|
|
2100
|
+
}], () => [], null); })();
|
|
2013
2101
|
class OverlayWindowFocusManager {
|
|
2014
2102
|
rootMagicElement = null;
|
|
2015
2103
|
openDialogList = new Array(0);
|
|
@@ -2134,8 +2222,6 @@ class DialogInfo {
|
|
|
2134
2222
|
* Main service to connect the UI with the Magic WebCLient
|
|
2135
2223
|
*/
|
|
2136
2224
|
class TaskMagicService {
|
|
2137
|
-
magic;
|
|
2138
|
-
overlayWindowService;
|
|
2139
2225
|
/**
|
|
2140
2226
|
* Service to provide table-related functionalities
|
|
2141
2227
|
*/
|
|
@@ -2207,13 +2293,9 @@ class TaskMagicService {
|
|
|
2207
2293
|
* @ignore
|
|
2208
2294
|
*/
|
|
2209
2295
|
oldPageSize = 0;
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
*/
|
|
2214
|
-
constructor(magic, overlayWindowService) {
|
|
2215
|
-
this.magic = magic;
|
|
2216
|
-
this.overlayWindowService = overlayWindowService;
|
|
2296
|
+
magic = inject(EngineMagicService);
|
|
2297
|
+
overlayWindowService = inject(OverlayWindowService);
|
|
2298
|
+
constructor() {
|
|
2217
2299
|
this.Records.setGuiTopIndex(0);
|
|
2218
2300
|
this.mgInputDateFormat = null;
|
|
2219
2301
|
}
|
|
@@ -2996,12 +3078,13 @@ class TaskMagicService {
|
|
|
2996
3078
|
}
|
|
2997
3079
|
/**
|
|
2998
3080
|
* Handle the Radio button "change" event
|
|
2999
|
-
* @param event The event received from the UI
|
|
3000
3081
|
* @param idx Id of the control raising the event
|
|
3082
|
+
* @param rowId Id of the row containing the control (defaults to '0' for non-table controls)
|
|
3001
3083
|
*/
|
|
3002
|
-
mgOnRadioSelectionChanged(idx) {
|
|
3003
|
-
|
|
3004
|
-
let
|
|
3084
|
+
mgOnRadioSelectionChanged(idx, rowId = '0') {
|
|
3085
|
+
// Fetch the Form Control for the specific table row (or row '0' for non-table child controls)
|
|
3086
|
+
let result = this.getFormControl(rowId, idx);
|
|
3087
|
+
let guiEvent = getGuiEventObj('selectionchanged', idx, +rowId);
|
|
3005
3088
|
if (typeof result.value !== 'number')
|
|
3006
3089
|
guiEvent.Value = result.value.index;
|
|
3007
3090
|
else
|
|
@@ -3076,29 +3159,22 @@ class TaskMagicService {
|
|
|
3076
3159
|
}
|
|
3077
3160
|
}
|
|
3078
3161
|
}
|
|
3079
|
-
/** @nocollapse */ static ɵfac = function TaskMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskMagicService)(
|
|
3162
|
+
/** @nocollapse */ static ɵfac = function TaskMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskMagicService)(); };
|
|
3080
3163
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TaskMagicService, factory: TaskMagicService.ɵfac });
|
|
3081
3164
|
}
|
|
3082
3165
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskMagicService, [{
|
|
3083
3166
|
type: Injectable
|
|
3084
|
-
}], () => [
|
|
3167
|
+
}], () => [], null); })();
|
|
3085
3168
|
|
|
3086
3169
|
/**
|
|
3087
3170
|
* Implements various table-related functionalities
|
|
3088
3171
|
*/
|
|
3089
3172
|
class TableMagicService {
|
|
3090
|
-
componentList;
|
|
3091
|
-
task;
|
|
3092
3173
|
selectedItem;
|
|
3093
3174
|
chunkSize;
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
* @param task Magic task service
|
|
3098
|
-
*/
|
|
3099
|
-
constructor(componentList, task) {
|
|
3100
|
-
this.componentList = componentList;
|
|
3101
|
-
this.task = task;
|
|
3175
|
+
componentList = inject(ComponentListMagicService);
|
|
3176
|
+
task = inject(TaskMagicService);
|
|
3177
|
+
constructor() {
|
|
3102
3178
|
}
|
|
3103
3179
|
shouldOpenFieldTextEditor = true;
|
|
3104
3180
|
/**
|
|
@@ -3208,24 +3284,19 @@ class TableMagicService {
|
|
|
3208
3284
|
topIndex--;
|
|
3209
3285
|
return topIndex;
|
|
3210
3286
|
}
|
|
3211
|
-
/** @nocollapse */ static ɵfac = function TableMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableMagicService)(
|
|
3287
|
+
/** @nocollapse */ static ɵfac = function TableMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TableMagicService)(); };
|
|
3212
3288
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TableMagicService, factory: TableMagicService.ɵfac });
|
|
3213
3289
|
}
|
|
3214
3290
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableMagicService, [{
|
|
3215
3291
|
type: Injectable
|
|
3216
|
-
}], () => [
|
|
3292
|
+
}], () => [], null); })();
|
|
3217
3293
|
|
|
3218
3294
|
/**
|
|
3219
3295
|
* Enables changing the browser title using Magic expression (SetTitle)
|
|
3220
3296
|
*/
|
|
3221
3297
|
class TitleMagicService {
|
|
3222
|
-
titleService;
|
|
3223
|
-
|
|
3224
|
-
*
|
|
3225
|
-
* @param titleService Angular's title-changing class
|
|
3226
|
-
*/
|
|
3227
|
-
constructor(titleService) {
|
|
3228
|
-
this.titleService = titleService;
|
|
3298
|
+
titleService = inject(Title);
|
|
3299
|
+
constructor() {
|
|
3229
3300
|
}
|
|
3230
3301
|
/**
|
|
3231
3302
|
* Set the new title of the window
|
|
@@ -3234,12 +3305,12 @@ class TitleMagicService {
|
|
|
3234
3305
|
setTitle(newTitle) {
|
|
3235
3306
|
this.titleService.setTitle(newTitle);
|
|
3236
3307
|
}
|
|
3237
|
-
/** @nocollapse */ static ɵfac = function TitleMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TitleMagicService)(
|
|
3308
|
+
/** @nocollapse */ static ɵfac = function TitleMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TitleMagicService)(); };
|
|
3238
3309
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TitleMagicService, factory: TitleMagicService.ɵfac });
|
|
3239
3310
|
}
|
|
3240
3311
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TitleMagicService, [{
|
|
3241
3312
|
type: Injectable
|
|
3242
|
-
}], () => [
|
|
3313
|
+
}], () => [], null); })();
|
|
3243
3314
|
|
|
3244
3315
|
let COLOR_FILE_NAME = new InjectionToken('colorFile', {
|
|
3245
3316
|
providedIn: 'root',
|
|
@@ -3252,7 +3323,6 @@ const SYSTEM_BG = 4;
|
|
|
3252
3323
|
const SYSTEM_FG_AND_SYSTEM_BG = 6;
|
|
3253
3324
|
const TRANSPERENT_BG = 1;
|
|
3254
3325
|
class MagicColorService {
|
|
3255
|
-
http;
|
|
3256
3326
|
colorFileName = 'clr_rnt.eng';
|
|
3257
3327
|
getColorFilePath() {
|
|
3258
3328
|
return 'assets/' + this.colorFileName;
|
|
@@ -3260,10 +3330,11 @@ class MagicColorService {
|
|
|
3260
3330
|
colorsData;
|
|
3261
3331
|
fileNotFound = false;
|
|
3262
3332
|
// public static FILE_NAME;
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3333
|
+
http = inject(HttpClient);
|
|
3334
|
+
colorFile1 = inject(COLOR_FILE_NAME);
|
|
3335
|
+
constructor() {
|
|
3336
|
+
if (this.colorFile1)
|
|
3337
|
+
this.colorFileName = this.colorFile1;
|
|
3267
3338
|
else
|
|
3268
3339
|
this.colorFileName = 'clr_rnt.eng';
|
|
3269
3340
|
}
|
|
@@ -3335,7 +3406,7 @@ class MagicColorService {
|
|
|
3335
3406
|
}
|
|
3336
3407
|
return '';
|
|
3337
3408
|
}
|
|
3338
|
-
/** @nocollapse */ static ɵfac = function MagicColorService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicColorService)(
|
|
3409
|
+
/** @nocollapse */ static ɵfac = function MagicColorService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicColorService)(); };
|
|
3339
3410
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicColorService, factory: MagicColorService.ɵfac, providedIn: 'root' });
|
|
3340
3411
|
}
|
|
3341
3412
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicColorService, [{
|
|
@@ -3343,26 +3414,21 @@ class MagicColorService {
|
|
|
3343
3414
|
args: [{
|
|
3344
3415
|
providedIn: 'root'
|
|
3345
3416
|
}]
|
|
3346
|
-
}], () => [
|
|
3347
|
-
type: Inject,
|
|
3348
|
-
args: [COLOR_FILE_NAME]
|
|
3349
|
-
}] }], null); })();
|
|
3417
|
+
}], () => [], null); })();
|
|
3350
3418
|
|
|
3351
3419
|
/**
|
|
3352
3420
|
* Provides the UI with values calculated by the Magic WebClient
|
|
3353
3421
|
*/
|
|
3354
3422
|
class AccessorMagicService {
|
|
3355
|
-
task;
|
|
3356
|
-
magicColor;
|
|
3357
3423
|
Logger = null;
|
|
3358
3424
|
hhmm = maskitoTimeOptionsGenerator({ mode: 'HH:MM' });
|
|
3359
3425
|
hhmmss = maskitoTimeOptionsGenerator({ mode: 'HH:MM:SS' });
|
|
3426
|
+
task = inject(TaskMagicService);
|
|
3427
|
+
magicColor = inject(MagicColorService);
|
|
3360
3428
|
/**
|
|
3361
3429
|
* @ignore
|
|
3362
3430
|
*/
|
|
3363
|
-
constructor(
|
|
3364
|
-
this.task = task;
|
|
3365
|
-
this.magicColor = magicColor;
|
|
3431
|
+
constructor() {
|
|
3366
3432
|
this.Logger = Logger.Instance;
|
|
3367
3433
|
}
|
|
3368
3434
|
UploadFileToServer(fileContent, serverFileName) {
|
|
@@ -3463,6 +3529,19 @@ class AccessorMagicService {
|
|
|
3463
3529
|
let vis = this.getProperty(controlId, HtmlProperties.Visible, rowId);
|
|
3464
3530
|
return vis ? 'visible' : 'hidden';
|
|
3465
3531
|
}
|
|
3532
|
+
/**
|
|
3533
|
+
* Returns whether a control is visible or not
|
|
3534
|
+
* @param controlId Id of control
|
|
3535
|
+
* @param rowId Id of row, if applicable
|
|
3536
|
+
* @returns true if the control is visible, false otherwise
|
|
3537
|
+
*/
|
|
3538
|
+
// mgIsVisible
|
|
3539
|
+
isVisible(controlId, rowId) {
|
|
3540
|
+
// The value is not always a boolean: getProperty() returns '' if the control has not sent its
|
|
3541
|
+
// Visible property yet, and undefined if the row does not exist. Comparing with === true turns
|
|
3542
|
+
// both into false. getVisible() behaves the same way - for those values it returns 'hidden'.
|
|
3543
|
+
return this.getProperty(controlId, HtmlProperties.Visible, rowId) === true;
|
|
3544
|
+
}
|
|
3466
3545
|
/**
|
|
3467
3546
|
* Returns alpha mask of a control
|
|
3468
3547
|
* @param controlId Id of control
|
|
@@ -3975,49 +4054,42 @@ class AccessorMagicService {
|
|
|
3975
4054
|
getColor(colorNumber, colorType) {
|
|
3976
4055
|
return this.magicColor.getColor(colorNumber, colorType);
|
|
3977
4056
|
}
|
|
3978
|
-
/** @nocollapse */ static ɵfac = function AccessorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AccessorMagicService)(
|
|
4057
|
+
/** @nocollapse */ static ɵfac = function AccessorMagicService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AccessorMagicService)(); };
|
|
3979
4058
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: AccessorMagicService, factory: AccessorMagicService.ɵfac });
|
|
3980
4059
|
}
|
|
3981
4060
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AccessorMagicService, [{
|
|
3982
4061
|
type: Injectable
|
|
3983
|
-
}], () => [
|
|
4062
|
+
}], () => [], null); })();
|
|
3984
4063
|
|
|
3985
4064
|
/**
|
|
3986
4065
|
* Central place for adding the Magic services
|
|
3987
4066
|
*/
|
|
3988
4067
|
class MagicServices {
|
|
3989
|
-
task;
|
|
3990
|
-
subformService;
|
|
3991
|
-
tableService;
|
|
3992
|
-
titleService;
|
|
3993
|
-
mgAccessorService;
|
|
4068
|
+
task = inject(TaskMagicService);
|
|
4069
|
+
subformService = inject(SubformMagicService);
|
|
4070
|
+
tableService = inject(TableMagicService);
|
|
4071
|
+
titleService = inject(TitleMagicService);
|
|
4072
|
+
mgAccessorService = inject(AccessorMagicService);
|
|
3994
4073
|
/**
|
|
3995
4074
|
* @ignore
|
|
3996
4075
|
*/
|
|
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)); };
|
|
4076
|
+
constructor() {
|
|
4077
|
+
this.task.tableService = this.tableService;
|
|
4078
|
+
this.task.mgSubformService = this.subformService;
|
|
4079
|
+
this.task.mgTitleService = this.titleService;
|
|
4080
|
+
this.task.mgAccessorService = this.mgAccessorService;
|
|
4081
|
+
}
|
|
4082
|
+
/** @nocollapse */ static ɵfac = function MagicServices_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicServices)(); };
|
|
4009
4083
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MagicServices, factory: MagicServices.ɵfac });
|
|
4010
4084
|
}
|
|
4011
4085
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicServices, [{
|
|
4012
4086
|
type: Injectable
|
|
4013
|
-
}], () => [
|
|
4087
|
+
}], () => [], null); })();
|
|
4014
4088
|
|
|
4015
4089
|
/**
|
|
4016
4090
|
* Base component representing a Magic task
|
|
4017
4091
|
*/
|
|
4018
4092
|
class TaskBaseMagicComponent {
|
|
4019
|
-
ref;
|
|
4020
|
-
magicServices;
|
|
4021
4093
|
/**
|
|
4022
4094
|
* Id of task, used for initializing the task service
|
|
4023
4095
|
*/
|
|
@@ -4030,15 +4102,24 @@ class TaskBaseMagicComponent {
|
|
|
4030
4102
|
* @ignore
|
|
4031
4103
|
*/
|
|
4032
4104
|
magicProperties = MagicProperties;
|
|
4105
|
+
/**
|
|
4106
|
+
* @ignore
|
|
4107
|
+
* Injected as fields rather than constructor parameters, so that the constructor
|
|
4108
|
+
* signature of this base class - which every generated component inherits - is unchanged.
|
|
4109
|
+
*/
|
|
4110
|
+
magicChangeDetection = inject(MagicChangeDetectionService);
|
|
4111
|
+
/**
|
|
4112
|
+
* @ignore
|
|
4113
|
+
*/
|
|
4114
|
+
destroyRef = inject(DestroyRef);
|
|
4115
|
+
ref = inject(ChangeDetectorRef);
|
|
4116
|
+
magicServices = inject(MagicServices);
|
|
4033
4117
|
/**
|
|
4034
4118
|
*
|
|
4035
4119
|
* @param ref changes-detector object
|
|
4036
4120
|
* @param magicServices Access point for all Magic services
|
|
4037
4121
|
*/
|
|
4038
|
-
constructor(
|
|
4039
|
-
this.ref = ref;
|
|
4040
|
-
this.magicServices = magicServices;
|
|
4041
|
-
}
|
|
4122
|
+
constructor() { }
|
|
4042
4123
|
/**
|
|
4043
4124
|
* Returns the Magic task service
|
|
4044
4125
|
* @returns
|
|
@@ -4088,6 +4169,14 @@ class TaskBaseMagicComponent {
|
|
|
4088
4169
|
this.task.detectChanges.pipe().subscribe(c => {
|
|
4089
4170
|
this.ref.detectChanges();
|
|
4090
4171
|
});
|
|
4172
|
+
// Running zoneless, nothing refreshes this view unless Angular is told to.
|
|
4173
|
+
// MagicChangeDetectionService is application-scoped and never completes, so this
|
|
4174
|
+
// subscription must be tied to the component's lifetime.
|
|
4175
|
+
this.magicChangeDetection.changed
|
|
4176
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4177
|
+
.subscribe(() => {
|
|
4178
|
+
this.ref.markForCheck();
|
|
4179
|
+
});
|
|
4091
4180
|
this.task.initTask(this.taskIdParam, this.taskDescription);
|
|
4092
4181
|
this.createFormControlsAccessor(this.screenFormGroup);
|
|
4093
4182
|
this.setInputDateFormat();
|
|
@@ -4161,8 +4250,8 @@ class TaskBaseMagicComponent {
|
|
|
4161
4250
|
ngOnDestroy() {
|
|
4162
4251
|
this.task.dispose();
|
|
4163
4252
|
}
|
|
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 });
|
|
4253
|
+
/** @nocollapse */ static ɵfac = function TaskBaseMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskBaseMagicComponent)(); };
|
|
4254
|
+
/** @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
4255
|
}
|
|
4167
4256
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskBaseMagicComponent, [{
|
|
4168
4257
|
type: Component,
|
|
@@ -4170,21 +4259,20 @@ class TaskBaseMagicComponent {
|
|
|
4170
4259
|
selector: 'task-magic',
|
|
4171
4260
|
providers: [TaskMagicService, SubformMagicService, TableMagicService],
|
|
4172
4261
|
template: '',
|
|
4262
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
4173
4263
|
standalone: false
|
|
4174
4264
|
}]
|
|
4175
|
-
}], () => [
|
|
4265
|
+
}], () => [], { taskIdParam: [{
|
|
4176
4266
|
type: Input
|
|
4177
4267
|
}], taskDescription: [{
|
|
4178
4268
|
type: Input
|
|
4179
4269
|
}] }); })();
|
|
4180
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBaseMagicComponent, { className: "TaskBaseMagicComponent", filePath: "src/ui/task-base.magic.component.ts", lineNumber:
|
|
4270
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBaseMagicComponent, { className: "TaskBaseMagicComponent", filePath: "src/ui/task-base.magic.component.ts", lineNumber: 24 }); })();
|
|
4181
4271
|
|
|
4182
4272
|
/**
|
|
4183
4273
|
* @ignore
|
|
4184
4274
|
*/
|
|
4185
4275
|
class RowMagicDirective {
|
|
4186
|
-
_task;
|
|
4187
|
-
element;
|
|
4188
4276
|
rowId;
|
|
4189
4277
|
/**
|
|
4190
4278
|
* The HTML element connected to this directive
|
|
@@ -4194,9 +4282,9 @@ class RowMagicDirective {
|
|
|
4194
4282
|
* @ignore
|
|
4195
4283
|
*/
|
|
4196
4284
|
rowChangedSubscriber = null;
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4285
|
+
_task = inject(TaskMagicService);
|
|
4286
|
+
element = inject(ElementRef);
|
|
4287
|
+
constructor() {
|
|
4200
4288
|
this.htmlElement = this.element.nativeElement;
|
|
4201
4289
|
}
|
|
4202
4290
|
/**
|
|
@@ -4237,7 +4325,7 @@ class RowMagicDirective {
|
|
|
4237
4325
|
event.cancelBubble = true;
|
|
4238
4326
|
}
|
|
4239
4327
|
}
|
|
4240
|
-
/** @nocollapse */ static ɵfac = function RowMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RowMagicDirective)(
|
|
4328
|
+
/** @nocollapse */ static ɵfac = function RowMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RowMagicDirective)(); };
|
|
4241
4329
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: RowMagicDirective, selectors: [["", "magicRow", ""]], hostBindings: function RowMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
4242
4330
|
i0.ɵɵlistener("click", function RowMagicDirective_click_HostBindingHandler($event) { return ctx.onClick($event); });
|
|
4243
4331
|
} }, inputs: { rowId: [0, "magicRow", "rowId"] }, standalone: false });
|
|
@@ -4248,7 +4336,7 @@ class RowMagicDirective {
|
|
|
4248
4336
|
selector: '[magicRow]',
|
|
4249
4337
|
standalone: false
|
|
4250
4338
|
}]
|
|
4251
|
-
}], () => [
|
|
4339
|
+
}], () => [], { rowId: [{
|
|
4252
4340
|
type: Input,
|
|
4253
4341
|
args: ['magicRow']
|
|
4254
4342
|
}], onClick: [{
|
|
@@ -4260,12 +4348,6 @@ class RowMagicDirective {
|
|
|
4260
4348
|
* Connects HTML elements to the Magic Web Client engine
|
|
4261
4349
|
*/
|
|
4262
4350
|
class MagicDirective {
|
|
4263
|
-
_task;
|
|
4264
|
-
element;
|
|
4265
|
-
renderer;
|
|
4266
|
-
vcRef;
|
|
4267
|
-
platform;
|
|
4268
|
-
magicRow;
|
|
4269
4351
|
set magic(val) {
|
|
4270
4352
|
this.id = val;
|
|
4271
4353
|
this.selector = "magic";
|
|
@@ -4329,21 +4411,15 @@ class MagicDirective {
|
|
|
4329
4411
|
* @param platform
|
|
4330
4412
|
* @param magicRow
|
|
4331
4413
|
*/
|
|
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;
|
|
4414
|
+
constructor() {
|
|
4339
4415
|
this.htmlElement = this.element.nativeElement;
|
|
4340
4416
|
//let c = (<any>this.vcRef)._view;
|
|
4341
4417
|
//while (!(c instanceof TaskBaseMagicComponent)) {
|
|
4342
4418
|
// c = c.component;
|
|
4343
4419
|
//}
|
|
4344
4420
|
//this.component = c;
|
|
4345
|
-
if (!(typeof magicRow === "undefined" || magicRow === null))
|
|
4346
|
-
this.rowId = magicRow.rowId;
|
|
4421
|
+
if (!(typeof this.magicRow === "undefined" || this.magicRow === null))
|
|
4422
|
+
this.rowId = this.magicRow.rowId;
|
|
4347
4423
|
}
|
|
4348
4424
|
/**
|
|
4349
4425
|
* Get the task service
|
|
@@ -4352,6 +4428,12 @@ class MagicDirective {
|
|
|
4352
4428
|
get task() {
|
|
4353
4429
|
return this._task;
|
|
4354
4430
|
}
|
|
4431
|
+
_task = inject(TaskMagicService);
|
|
4432
|
+
element = inject(ElementRef);
|
|
4433
|
+
renderer = inject(Renderer2);
|
|
4434
|
+
vcRef = inject(ViewContainerRef);
|
|
4435
|
+
platform = inject(Platform);
|
|
4436
|
+
magicRow = inject(RowMagicDirective, { optional: true });
|
|
4355
4437
|
/**
|
|
4356
4438
|
* Register to the events this element may need to handle
|
|
4357
4439
|
*/
|
|
@@ -4554,7 +4636,7 @@ class MagicDirective {
|
|
|
4554
4636
|
ngOnDestroy() {
|
|
4555
4637
|
this.subscribeRefreshDom.unsubscribe();
|
|
4556
4638
|
}
|
|
4557
|
-
/** @nocollapse */ static ɵfac = function MagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicDirective)(
|
|
4639
|
+
/** @nocollapse */ static ɵfac = function MagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicDirective)(); };
|
|
4558
4640
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MagicDirective, selectors: [["", "magic", ""]], inputs: { magic: "magic", eventsOnly: "eventsOnly", pollTime: "pollTime", rowId: "rowId" }, standalone: false });
|
|
4559
4641
|
}
|
|
4560
4642
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicDirective, [{
|
|
@@ -4563,9 +4645,7 @@ class MagicDirective {
|
|
|
4563
4645
|
selector: "[magic]",
|
|
4564
4646
|
standalone: false
|
|
4565
4647
|
}]
|
|
4566
|
-
}], () => [
|
|
4567
|
-
type: Optional
|
|
4568
|
-
}] }], { magic: [{
|
|
4648
|
+
}], () => [], { magic: [{
|
|
4569
4649
|
type: Input,
|
|
4570
4650
|
args: ["magic"]
|
|
4571
4651
|
}], eventsOnly: [{
|
|
@@ -4583,9 +4663,15 @@ class MagicDirective {
|
|
|
4583
4663
|
class NoControlMagicDirective extends MagicDirective {
|
|
4584
4664
|
set magic(val) { this.id = val; this.selector = 'magicnc'; }
|
|
4585
4665
|
;
|
|
4586
|
-
constructor(
|
|
4587
|
-
super(
|
|
4666
|
+
constructor() {
|
|
4667
|
+
super();
|
|
4588
4668
|
}
|
|
4669
|
+
_task = inject(TaskMagicService);
|
|
4670
|
+
element = inject(ElementRef);
|
|
4671
|
+
renderer = inject(Renderer2);
|
|
4672
|
+
vcRef = inject(ViewContainerRef);
|
|
4673
|
+
platform = inject(Platform);
|
|
4674
|
+
magicRow = inject(RowMagicDirective, { optional: true });
|
|
4589
4675
|
regEvents() {
|
|
4590
4676
|
super.regEvents();
|
|
4591
4677
|
if (this.htmlElement instanceof HTMLSelectElement) {
|
|
@@ -4752,7 +4838,7 @@ class NoControlMagicDirective extends MagicDirective {
|
|
|
4752
4838
|
break;
|
|
4753
4839
|
}
|
|
4754
4840
|
}
|
|
4755
|
-
/** @nocollapse */ static ɵfac = function NoControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NoControlMagicDirective)(
|
|
4841
|
+
/** @nocollapse */ static ɵfac = function NoControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NoControlMagicDirective)(); };
|
|
4756
4842
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: NoControlMagicDirective, selectors: [["", "magicnc", ""]], inputs: { magic: [0, "magicnc", "magic"] }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature] });
|
|
4757
4843
|
}
|
|
4758
4844
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NoControlMagicDirective, [{
|
|
@@ -4761,9 +4847,7 @@ class NoControlMagicDirective extends MagicDirective {
|
|
|
4761
4847
|
selector: '[magicnc]',
|
|
4762
4848
|
standalone: false
|
|
4763
4849
|
}]
|
|
4764
|
-
}], () => [
|
|
4765
|
-
type: Optional
|
|
4766
|
-
}] }], { magic: [{
|
|
4850
|
+
}], () => [], { magic: [{
|
|
4767
4851
|
type: Input,
|
|
4768
4852
|
args: ['magicnc']
|
|
4769
4853
|
}] }); })();
|
|
@@ -4778,10 +4862,9 @@ class Constants {
|
|
|
4778
4862
|
* @ignore
|
|
4779
4863
|
*/
|
|
4780
4864
|
class DateMagicPipe extends DatePipe {
|
|
4781
|
-
_task;
|
|
4782
|
-
constructor(
|
|
4865
|
+
_task = inject(TaskMagicService);
|
|
4866
|
+
constructor() {
|
|
4783
4867
|
super('en-US');
|
|
4784
|
-
this._task = _task;
|
|
4785
4868
|
}
|
|
4786
4869
|
transform(value, controlId) {
|
|
4787
4870
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -4802,7 +4885,7 @@ class DateMagicPipe extends DatePipe {
|
|
|
4802
4885
|
value = "";
|
|
4803
4886
|
return value;
|
|
4804
4887
|
}
|
|
4805
|
-
/** @nocollapse */ static ɵfac = function DateMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateMagicPipe)(
|
|
4888
|
+
/** @nocollapse */ static ɵfac = function DateMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateMagicPipe)(); };
|
|
4806
4889
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicDate", type: DateMagicPipe, pure: true, standalone: false });
|
|
4807
4890
|
}
|
|
4808
4891
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DateMagicPipe, [{
|
|
@@ -4811,7 +4894,7 @@ class DateMagicPipe extends DatePipe {
|
|
|
4811
4894
|
name: 'magicDate',
|
|
4812
4895
|
standalone: false
|
|
4813
4896
|
}]
|
|
4814
|
-
}], () => [
|
|
4897
|
+
}], () => [], null); })();
|
|
4815
4898
|
class MgDateFormatter {
|
|
4816
4899
|
ConvertMgDateFormatToAngular(mgDateMask) {
|
|
4817
4900
|
let formatStr = new StringBuilder();
|
|
@@ -4879,16 +4962,13 @@ class MgDateFormatter {
|
|
|
4879
4962
|
* Perform Magic validation on input controls which hold alphanumeric strings
|
|
4880
4963
|
*/
|
|
4881
4964
|
class MgformatMagicDirective {
|
|
4882
|
-
magicDir;
|
|
4883
|
-
_task;
|
|
4884
4965
|
datePasteFlag = false;
|
|
4966
|
+
magicDir = inject(MagicDirective);
|
|
4967
|
+
_task = inject(TaskMagicService);
|
|
4885
4968
|
/**
|
|
4886
4969
|
* @ignore
|
|
4887
4970
|
*/
|
|
4888
|
-
constructor(
|
|
4889
|
-
this.magicDir = magicDir;
|
|
4890
|
-
this._task = _task;
|
|
4891
|
-
}
|
|
4971
|
+
constructor() { }
|
|
4892
4972
|
ngAfterViewInit() {
|
|
4893
4973
|
let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
|
|
4894
4974
|
if (control != null && this._task.mgInputDateFormat == null) {
|
|
@@ -5482,7 +5562,7 @@ class MgformatMagicDirective {
|
|
|
5482
5562
|
return true;
|
|
5483
5563
|
return false;
|
|
5484
5564
|
}
|
|
5485
|
-
/** @nocollapse */ static ɵfac = function MgformatMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgformatMagicDirective)(
|
|
5565
|
+
/** @nocollapse */ static ɵfac = function MgformatMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgformatMagicDirective)(); };
|
|
5486
5566
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: MgformatMagicDirective, selectors: [["", "mgFormat", ""]], hostBindings: function MgformatMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
5487
5567
|
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); });
|
|
5488
5568
|
} }, standalone: false });
|
|
@@ -5493,7 +5573,7 @@ class MgformatMagicDirective {
|
|
|
5493
5573
|
selector: '[mgFormat]',
|
|
5494
5574
|
standalone: false
|
|
5495
5575
|
}]
|
|
5496
|
-
}], () => [
|
|
5576
|
+
}], () => [], { onFocusEvent: [{
|
|
5497
5577
|
type: HostListener,
|
|
5498
5578
|
args: ['focus', ['$event']]
|
|
5499
5579
|
}], onPaste: [{
|
|
@@ -5514,10 +5594,9 @@ class MgformatMagicDirective {
|
|
|
5514
5594
|
* @ignore
|
|
5515
5595
|
*/
|
|
5516
5596
|
class TimeMagicPipe extends DatePipe {
|
|
5517
|
-
_task;
|
|
5518
|
-
constructor(
|
|
5597
|
+
_task = inject(TaskMagicService);
|
|
5598
|
+
constructor() {
|
|
5519
5599
|
super('en-US');
|
|
5520
|
-
this._task = _task;
|
|
5521
5600
|
}
|
|
5522
5601
|
transform(value, controlId) {
|
|
5523
5602
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -5548,7 +5627,7 @@ class TimeMagicPipe extends DatePipe {
|
|
|
5548
5627
|
}
|
|
5549
5628
|
return value;
|
|
5550
5629
|
}
|
|
5551
|
-
/** @nocollapse */ static ɵfac = function TimeMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeMagicPipe)(
|
|
5630
|
+
/** @nocollapse */ static ɵfac = function TimeMagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeMagicPipe)(); };
|
|
5552
5631
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicTime", type: TimeMagicPipe, pure: true, standalone: false });
|
|
5553
5632
|
}
|
|
5554
5633
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeMagicPipe, [{
|
|
@@ -5557,22 +5636,20 @@ class TimeMagicPipe extends DatePipe {
|
|
|
5557
5636
|
name: 'magicTime',
|
|
5558
5637
|
standalone: false
|
|
5559
5638
|
}]
|
|
5560
|
-
}], () => [
|
|
5639
|
+
}], () => [], null); })();
|
|
5561
5640
|
|
|
5562
5641
|
/**
|
|
5563
5642
|
* Validates the field range.
|
|
5564
5643
|
*/
|
|
5565
5644
|
class RangeValidatorMagicDirective {
|
|
5566
|
-
_task;
|
|
5567
|
-
vcRef;
|
|
5645
|
+
_task = inject(TaskMagicService);
|
|
5646
|
+
vcRef = inject(ViewContainerRef);
|
|
5568
5647
|
/**
|
|
5569
5648
|
*
|
|
5570
5649
|
* @param _task The task service
|
|
5571
5650
|
* @param vcRef
|
|
5572
5651
|
*/
|
|
5573
|
-
constructor(
|
|
5574
|
-
this._task = _task;
|
|
5575
|
-
this.vcRef = vcRef;
|
|
5652
|
+
constructor() {
|
|
5576
5653
|
}
|
|
5577
5654
|
/**
|
|
5578
5655
|
* Validation method
|
|
@@ -5607,7 +5684,7 @@ class RangeValidatorMagicDirective {
|
|
|
5607
5684
|
const formGroup = c.parent.controls;
|
|
5608
5685
|
return Object.keys(formGroup).find(name => c === formGroup[name]) || null;
|
|
5609
5686
|
}
|
|
5610
|
-
/** @nocollapse */ static ɵfac = function RangeValidatorMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RangeValidatorMagicDirective)(
|
|
5687
|
+
/** @nocollapse */ static ɵfac = function RangeValidatorMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RangeValidatorMagicDirective)(); };
|
|
5611
5688
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: RangeValidatorMagicDirective, selectors: [["", "rangevalidator", ""]], standalone: false, features: [i0.ɵɵProvidersFeature([
|
|
5612
5689
|
{
|
|
5613
5690
|
provide: NG_VALIDATORS,
|
|
@@ -5629,7 +5706,7 @@ class RangeValidatorMagicDirective {
|
|
|
5629
5706
|
],
|
|
5630
5707
|
standalone: false
|
|
5631
5708
|
}]
|
|
5632
|
-
}], () => [
|
|
5709
|
+
}], () => [], null); })();
|
|
5633
5710
|
|
|
5634
5711
|
function SubformMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
5635
5712
|
i0.ɵɵelement(0, "ndc-dynamic", 0);
|
|
@@ -5641,8 +5718,6 @@ function SubformMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
5641
5718
|
* Represents a Magic subform
|
|
5642
5719
|
*/
|
|
5643
5720
|
class SubformMagicComponent {
|
|
5644
|
-
vcRef;
|
|
5645
|
-
mgSub;
|
|
5646
5721
|
/**
|
|
5647
5722
|
* @ignore
|
|
5648
5723
|
*/
|
|
@@ -5659,12 +5734,12 @@ class SubformMagicComponent {
|
|
|
5659
5734
|
/**
|
|
5660
5735
|
* @ignore
|
|
5661
5736
|
*/
|
|
5662
|
-
constructor(
|
|
5663
|
-
this.vcRef = vcRef;
|
|
5664
|
-
this.mgSub = mgSub;
|
|
5737
|
+
constructor() {
|
|
5665
5738
|
// For angular 13 - find the component from _hostLView
|
|
5666
5739
|
this.component = (this.vcRef._hostLView).find(v => !isNullOrUndefined(v));
|
|
5667
5740
|
}
|
|
5741
|
+
vcRef = inject(ViewContainerRef);
|
|
5742
|
+
mgSub = inject(SubformMagicService);
|
|
5668
5743
|
/**
|
|
5669
5744
|
* @ignore
|
|
5670
5745
|
*/
|
|
@@ -5677,32 +5752,33 @@ class SubformMagicComponent {
|
|
|
5677
5752
|
get Parameters() {
|
|
5678
5753
|
return this.mgSub.mgGetParameters(this.id);
|
|
5679
5754
|
}
|
|
5680
|
-
/** @nocollapse */ static ɵfac = function SubformMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicComponent)(
|
|
5755
|
+
/** @nocollapse */ static ɵfac = function SubformMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubformMagicComponent)(); };
|
|
5681
5756
|
/** @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
5757
|
i0.ɵɵconditionalCreate(0, SubformMagicComponent_Conditional_0_Template, 1, 2, "ndc-dynamic", 0);
|
|
5683
5758
|
} if (rf & 2) {
|
|
5684
5759
|
i0.ɵɵconditional(ctx.Component ? 0 : -1);
|
|
5685
|
-
} }, dependencies: [
|
|
5760
|
+
} }, dependencies: [i1$1.DynamicIoDirective, i1$1.DynamicComponent], encapsulation: 2, changeDetection: 1 });
|
|
5686
5761
|
}
|
|
5687
5762
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubformMagicComponent, [{
|
|
5688
5763
|
type: Component,
|
|
5689
5764
|
args: [{
|
|
5690
5765
|
selector: 'magic-subform',
|
|
5691
|
-
template: `
|
|
5692
|
-
@if (Component) {
|
|
5693
|
-
<ndc-dynamic
|
|
5694
|
-
[ndcDynamicComponent]="Component"
|
|
5695
|
-
[ndcDynamicInputs]="Parameters">
|
|
5696
|
-
</ndc-dynamic>
|
|
5697
|
-
}
|
|
5766
|
+
template: `
|
|
5767
|
+
@if (Component) {
|
|
5768
|
+
<ndc-dynamic
|
|
5769
|
+
[ndcDynamicComponent]="Component"
|
|
5770
|
+
[ndcDynamicInputs]="Parameters">
|
|
5771
|
+
</ndc-dynamic>
|
|
5772
|
+
}
|
|
5698
5773
|
`,
|
|
5774
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
5699
5775
|
standalone: false
|
|
5700
5776
|
}]
|
|
5701
|
-
}], () => [
|
|
5777
|
+
}], () => [], { magic: [{
|
|
5702
5778
|
type: Input,
|
|
5703
5779
|
args: ['magic']
|
|
5704
5780
|
}] }); })();
|
|
5705
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber:
|
|
5781
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SubformMagicComponent, { className: "SubformMagicComponent", filePath: "src/ui/subform.magic.component.ts", lineNumber: 24 }); })();
|
|
5706
5782
|
|
|
5707
5783
|
const _c0$1 = ["customContent"];
|
|
5708
5784
|
const _c1 = ["*"];
|
|
@@ -5730,9 +5806,6 @@ function ErrorMagicComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
5730
5806
|
* Represents a Magic subform
|
|
5731
5807
|
*/
|
|
5732
5808
|
class ErrorMagicComponent {
|
|
5733
|
-
_task;
|
|
5734
|
-
mgService;
|
|
5735
|
-
changeDetectorRef;
|
|
5736
5809
|
/**
|
|
5737
5810
|
* @ignore
|
|
5738
5811
|
*/
|
|
@@ -5751,19 +5824,19 @@ class ErrorMagicComponent {
|
|
|
5751
5824
|
;
|
|
5752
5825
|
// if true - display standard magic error message, if false - customer has provides his own content and we'll use it
|
|
5753
5826
|
defaultDisplay = true;
|
|
5754
|
-
|
|
5755
|
-
|
|
5756
|
-
this.changeDetectorRef.detectChanges();
|
|
5757
|
-
}
|
|
5758
|
-
;
|
|
5827
|
+
customContentRef = viewChild('customContent', /* @ts-ignore */
|
|
5828
|
+
...(ngDevMode ? [{ debugName: "customContentRef" }] : /* istanbul ignore next */ []));
|
|
5759
5829
|
/**
|
|
5760
5830
|
* @ignore
|
|
5761
5831
|
*/
|
|
5762
|
-
constructor(
|
|
5763
|
-
this._task = _task;
|
|
5764
|
-
this.mgService = mgService;
|
|
5765
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
5832
|
+
constructor() {
|
|
5766
5833
|
this.rowId = "0";
|
|
5834
|
+
// Reactively update defaultDisplay whenever customContent changes in the DOM
|
|
5835
|
+
effect(() => {
|
|
5836
|
+
const innerComponent = this.customContentRef();
|
|
5837
|
+
this.defaultDisplay = innerComponent == undefined || this.isEmpty(innerComponent.nativeElement);
|
|
5838
|
+
this.changeDetectorRef.detectChanges();
|
|
5839
|
+
});
|
|
5767
5840
|
}
|
|
5768
5841
|
/**
|
|
5769
5842
|
* returns true if the html element has no children
|
|
@@ -5802,73 +5875,68 @@ class ErrorMagicComponent {
|
|
|
5802
5875
|
}
|
|
5803
5876
|
return false;
|
|
5804
5877
|
}
|
|
5805
|
-
|
|
5878
|
+
_task = inject(TaskMagicService);
|
|
5879
|
+
mgService = inject(AccessorMagicService);
|
|
5880
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
5881
|
+
/** @nocollapse */ static ɵfac = function ErrorMagicComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ErrorMagicComponent)(); };
|
|
5806
5882
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: ErrorMagicComponent, selectors: [["mgError"]], viewQuery: function ErrorMagicComponent_Query(rf, ctx) { if (rf & 1) {
|
|
5807
|
-
i0.ɵɵ
|
|
5883
|
+
i0.ɵɵviewQuerySignal(ctx.customContentRef, _c0$1, 5);
|
|
5808
5884
|
} if (rf & 2) {
|
|
5809
|
-
|
|
5810
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CustomContent = _t.first);
|
|
5885
|
+
i0.ɵɵqueryAdvance();
|
|
5811
5886
|
} }, 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
5887
|
i0.ɵɵprojectionDef();
|
|
5813
5888
|
i0.ɵɵconditionalCreate(0, ErrorMagicComponent_Conditional_0_Template, 5, 1, "div");
|
|
5814
5889
|
} if (rf & 2) {
|
|
5815
5890
|
i0.ɵɵconditional(ctx.HasErrors(ctx.id) ? 0 : -1);
|
|
5816
|
-
} }, encapsulation: 2 });
|
|
5891
|
+
} }, encapsulation: 2, changeDetection: 1 });
|
|
5817
5892
|
}
|
|
5818
5893
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ErrorMagicComponent, [{
|
|
5819
5894
|
type: Component,
|
|
5820
5895
|
args: [{
|
|
5821
5896
|
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
|
-
}
|
|
5897
|
+
template: `@if (HasErrors(id)) {
|
|
5898
|
+
<div>
|
|
5899
|
+
<div #customContent>
|
|
5900
|
+
<ng-content></ng-content>
|
|
5901
|
+
</div>
|
|
5902
|
+
@if (defaultDisplay) {
|
|
5903
|
+
<span>
|
|
5904
|
+
{{mgService.getErrMsg(id, rowId)}}
|
|
5905
|
+
</span>
|
|
5906
|
+
}
|
|
5907
|
+
</div>
|
|
5908
|
+
}
|
|
5834
5909
|
`,
|
|
5910
|
+
changeDetection: ChangeDetectionStrategy.Eager,
|
|
5835
5911
|
standalone: false
|
|
5836
5912
|
}]
|
|
5837
|
-
}], () => [
|
|
5913
|
+
}], () => [], { magic: [{
|
|
5838
5914
|
type: Input,
|
|
5839
5915
|
args: ['magic']
|
|
5840
5916
|
}], rowId1: [{
|
|
5841
5917
|
type: Input,
|
|
5842
5918
|
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 }); })();
|
|
5919
|
+
}], customContentRef: [{ type: i0.ViewChild, args: ['customContent', { isSignal: true }] }] }); })();
|
|
5920
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ErrorMagicComponent, { className: "ErrorMagicComponent", filePath: "src/ui/mgerror.magic.component.ts", lineNumber: 29 }); })();
|
|
5848
5921
|
|
|
5849
5922
|
/**
|
|
5850
5923
|
* Directive for checkboxes, to handle the 'change' event
|
|
5851
5924
|
*/
|
|
5852
5925
|
class CheckboxMagicDirective {
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
task;
|
|
5856
|
-
threeState = false;
|
|
5926
|
+
threeState = input(false, /* @ts-ignore */
|
|
5927
|
+
...(ngDevMode ? [{ debugName: "threeState" }] : /* istanbul ignore next */ []));
|
|
5857
5928
|
subscribeRefreshDom = null;
|
|
5858
5929
|
isIndeterminate = false;
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
constructor(
|
|
5863
|
-
this.magicDirective = magicDirective;
|
|
5864
|
-
this.el = el;
|
|
5865
|
-
this.task = task;
|
|
5930
|
+
magicDirective = inject(MagicDirective);
|
|
5931
|
+
el = inject(ElementRef);
|
|
5932
|
+
task = inject(TaskMagicService);
|
|
5933
|
+
constructor() {
|
|
5866
5934
|
}
|
|
5867
5935
|
/**
|
|
5868
5936
|
* Handles the Checkbox 'change' event - pass it to the Magic engine
|
|
5869
5937
|
*/
|
|
5870
5938
|
onChange($event) {
|
|
5871
|
-
if (this.threeState) {
|
|
5939
|
+
if (this.threeState()) {
|
|
5872
5940
|
this.handleThreeState();
|
|
5873
5941
|
}
|
|
5874
5942
|
else {
|
|
@@ -5876,7 +5944,7 @@ class CheckboxMagicDirective {
|
|
|
5876
5944
|
}
|
|
5877
5945
|
}
|
|
5878
5946
|
ngOnInit() {
|
|
5879
|
-
if (this.threeState) {
|
|
5947
|
+
if (this.threeState()) {
|
|
5880
5948
|
let guiEvent = getGuiEventObj("setAsThreeState", this.magicDirective.id, +this.magicDirective.rowId);
|
|
5881
5949
|
this.task.insertEvent(guiEvent);
|
|
5882
5950
|
this.el.nativeElement.indeterminate = this.isIndeterminate = this.task.getProperty(this.magicDirective.id, HtmlProperties.CheckBoxIndeterminate, this.magicDirective.rowId);
|
|
@@ -5931,10 +5999,10 @@ class CheckboxMagicDirective {
|
|
|
5931
5999
|
if (this.subscribeRefreshDom !== null)
|
|
5932
6000
|
this.subscribeRefreshDom.unsubscribe();
|
|
5933
6001
|
}
|
|
5934
|
-
/** @nocollapse */ static ɵfac = function CheckboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxMagicDirective)(
|
|
6002
|
+
/** @nocollapse */ static ɵfac = function CheckboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxMagicDirective)(); };
|
|
5935
6003
|
/** @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
6004
|
i0.ɵɵlistener("change", function CheckboxMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
5937
|
-
} }, inputs: { threeState: "threeState" }, standalone: false });
|
|
6005
|
+
} }, inputs: { threeState: [1, "threeState"] }, standalone: false });
|
|
5938
6006
|
}
|
|
5939
6007
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CheckboxMagicDirective, [{
|
|
5940
6008
|
type: Directive,
|
|
@@ -5944,9 +6012,7 @@ class CheckboxMagicDirective {
|
|
|
5944
6012
|
`,
|
|
5945
6013
|
standalone: false
|
|
5946
6014
|
}]
|
|
5947
|
-
}], () => [{
|
|
5948
|
-
type: Input
|
|
5949
|
-
}], onChange: [{
|
|
6015
|
+
}], () => [], { threeState: [{ type: i0.Input, args: [{ isSignal: true, alias: "threeState", required: false }] }], onChange: [{
|
|
5950
6016
|
type: HostListener,
|
|
5951
6017
|
args: ['change', ['$event']]
|
|
5952
6018
|
}] }); })();
|
|
@@ -5955,9 +6021,8 @@ class CheckboxMagicDirective {
|
|
|
5955
6021
|
* Directive for comboboxes, to handle the 'change' event
|
|
5956
6022
|
*/
|
|
5957
6023
|
class ComboboxMagicDirective {
|
|
5958
|
-
magicDirective;
|
|
5959
|
-
constructor(
|
|
5960
|
-
this.magicDirective = magicDirective;
|
|
6024
|
+
magicDirective = inject(MagicDirective);
|
|
6025
|
+
constructor() {
|
|
5961
6026
|
// subcribe to refreshDom. This is a special case for native select HTML control.
|
|
5962
6027
|
// to refresh the selected property. Else by default, HTML element doesn't get refreshed as per
|
|
5963
6028
|
// selected value and 1st element remains selected.
|
|
@@ -5979,7 +6044,7 @@ class ComboboxMagicDirective {
|
|
|
5979
6044
|
onComboboxItemsListChanged() {
|
|
5980
6045
|
this.magicDirective.task.refreshView();
|
|
5981
6046
|
}
|
|
5982
|
-
/** @nocollapse */ static ɵfac = function ComboboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComboboxMagicDirective)(
|
|
6047
|
+
/** @nocollapse */ static ɵfac = function ComboboxMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ComboboxMagicDirective)(); };
|
|
5983
6048
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: ComboboxMagicDirective, selectors: [["select", "magic", "", 3, "multiple", ""]], hostBindings: function ComboboxMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
5984
6049
|
i0.ɵɵlistener("change", function ComboboxMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
5985
6050
|
} }, standalone: false });
|
|
@@ -5990,7 +6055,7 @@ class ComboboxMagicDirective {
|
|
|
5990
6055
|
selector: `select[magic]:not([multiple])`,
|
|
5991
6056
|
standalone: false
|
|
5992
6057
|
}]
|
|
5993
|
-
}], () => [
|
|
6058
|
+
}], () => [], { onChange: [{
|
|
5994
6059
|
type: HostListener,
|
|
5995
6060
|
args: ['change', ['$event']]
|
|
5996
6061
|
}] }); })();
|
|
@@ -6027,7 +6092,7 @@ function MagicShellComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
6027
6092
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
6028
6093
|
const defaultSpinner_r2 = i0.ɵɵreference(7);
|
|
6029
6094
|
i0.ɵɵadvance();
|
|
6030
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate ? ctx_r0.SpinnerTemplate : defaultSpinner_r2);
|
|
6095
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.SpinnerTemplate() ? ctx_r0.SpinnerTemplate() : defaultSpinner_r2);
|
|
6031
6096
|
} }
|
|
6032
6097
|
function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
6033
6098
|
i0.ɵɵelement(0, "div", 7);
|
|
@@ -6036,16 +6101,6 @@ function MagicShellComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
6036
6101
|
* Root Magic component
|
|
6037
6102
|
*/
|
|
6038
6103
|
class MagicShellComponent {
|
|
6039
|
-
engineMagicService;
|
|
6040
|
-
componentList;
|
|
6041
|
-
changeDetectorRef;
|
|
6042
|
-
titleService;
|
|
6043
|
-
overlayWindowService;
|
|
6044
|
-
httpClient;
|
|
6045
|
-
pendingCommandsCollector;
|
|
6046
|
-
route;
|
|
6047
|
-
router;
|
|
6048
|
-
exitMagicService;
|
|
6049
6104
|
/**
|
|
6050
6105
|
* Root component to be displayed in the window
|
|
6051
6106
|
*/
|
|
@@ -6055,10 +6110,22 @@ class MagicShellComponent {
|
|
|
6055
6110
|
*/
|
|
6056
6111
|
RootComponentParameters;
|
|
6057
6112
|
overlayWindowsContainerViewRef;
|
|
6058
|
-
rootMagicElementRef
|
|
6059
|
-
|
|
6113
|
+
rootMagicElementRef = viewChild.required('magicRoot', /* @ts-ignore */
|
|
6114
|
+
...(ngDevMode ? [{ debugName: "rootMagicElementRef" }] : /* istanbul ignore next */ []));
|
|
6115
|
+
SpinnerTemplate = input(/* @ts-ignore */
|
|
6116
|
+
...(ngDevMode ? [undefined, { debugName: "SpinnerTemplate" }] : /* istanbul ignore next */ []));
|
|
6060
6117
|
showSpinner;
|
|
6061
6118
|
magicEngineTerminated = false;
|
|
6119
|
+
engineMagicService = inject(EngineMagicService);
|
|
6120
|
+
componentList = inject(ComponentListMagicService);
|
|
6121
|
+
changeDetectorRef = inject(ChangeDetectorRef);
|
|
6122
|
+
titleService = inject(Title);
|
|
6123
|
+
overlayWindowService = inject(OverlayWindowService);
|
|
6124
|
+
httpClient = inject(HttpClient);
|
|
6125
|
+
pendingCommandsCollector = inject(CommandsCollectorMagicService);
|
|
6126
|
+
route = inject(ActivatedRoute);
|
|
6127
|
+
router = inject(Router);
|
|
6128
|
+
exitMagicService = inject(ExitMagicService, { optional: true });
|
|
6062
6129
|
/**
|
|
6063
6130
|
*
|
|
6064
6131
|
* @param magic Magic's service
|
|
@@ -6068,17 +6135,7 @@ class MagicShellComponent {
|
|
|
6068
6135
|
* @param httpClient The native httpClient instance
|
|
6069
6136
|
* @param exitMagicService Magic exit service
|
|
6070
6137
|
*/
|
|
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;
|
|
6138
|
+
constructor() {
|
|
6082
6139
|
this.initialize();
|
|
6083
6140
|
this.setTitle();
|
|
6084
6141
|
}
|
|
@@ -6098,13 +6155,20 @@ class MagicShellComponent {
|
|
|
6098
6155
|
this.magicEngineTerminated = true;
|
|
6099
6156
|
}
|
|
6100
6157
|
}
|
|
6101
|
-
|
|
6158
|
+
/**
|
|
6159
|
+
* Page-hide event listener, used in place of 'unload'.
|
|
6160
|
+
* Chrome blocks 'unload' by permissions policy ("unload is not allowed in this document"),
|
|
6161
|
+
* so an unload handler is never even registered. 'pagehide' is fired at an earlier step of
|
|
6162
|
+
* the same unloading sequence, so it covers every case 'unload' did.
|
|
6163
|
+
*/
|
|
6164
|
+
onPageHide() {
|
|
6102
6165
|
// Chrome provides an opportunity to terminate the context after user approves the browser unload alert
|
|
6103
|
-
if (!this.magicEngineTerminated)
|
|
6166
|
+
if (!this.magicEngineTerminated) {
|
|
6104
6167
|
this.engineMagicService.TerminateContextUsingFetchAPI();
|
|
6168
|
+
}
|
|
6105
6169
|
}
|
|
6106
6170
|
ngAfterViewInit() {
|
|
6107
|
-
this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef.nativeElement, this.changeDetectorRef);
|
|
6171
|
+
this.overlayWindowService.init(this.overlayWindowsContainerViewRef, this.rootMagicElementRef().nativeElement, this.changeDetectorRef);
|
|
6108
6172
|
// Helper function to start the engine
|
|
6109
6173
|
const startEngine = () => {
|
|
6110
6174
|
const queryParams = this.route.snapshot.queryParams;
|
|
@@ -6218,15 +6282,14 @@ class MagicShellComponent {
|
|
|
6218
6282
|
break;
|
|
6219
6283
|
}
|
|
6220
6284
|
}
|
|
6221
|
-
/** @nocollapse */ static ɵfac = function MagicShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicShellComponent)(
|
|
6285
|
+
/** @nocollapse */ static ɵfac = function MagicShellComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicShellComponent)(); };
|
|
6222
6286
|
/** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: MagicShellComponent, selectors: [["magic-root"]], viewQuery: function MagicShellComponent_Query(rf, ctx) { if (rf & 1) {
|
|
6223
|
-
i0.ɵɵ
|
|
6287
|
+
i0.ɵɵviewQuerySignal(ctx.rootMagicElementRef, _c0, 5);
|
|
6224
6288
|
} if (rf & 2) {
|
|
6225
|
-
|
|
6226
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.rootMagicElementRef = _t.first);
|
|
6289
|
+
i0.ɵɵqueryAdvance();
|
|
6227
6290
|
} }, 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([
|
|
6291
|
+
i0.ɵɵlistener("beforeunload", function MagicShellComponent_beforeunload_HostBindingHandler($event) { return ctx.onBeforeUnload($event); }, i0.ɵɵresolveWindow)("pagehide", function MagicShellComponent_pagehide_HostBindingHandler() { return ctx.onPageHide(); }, i0.ɵɵresolveWindow);
|
|
6292
|
+
} }, inputs: { SpinnerTemplate: [1, "SpinnerTemplate"] }, standalone: false, features: [i0.ɵɵProvidersFeature([
|
|
6230
6293
|
// ExitMagicService
|
|
6231
6294
|
])], 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
6295
|
i0.ɵɵelementStart(0, "div", null, 0);
|
|
@@ -6240,50 +6303,43 @@ class MagicShellComponent {
|
|
|
6240
6303
|
i0.ɵɵconditional(ctx.RootComponent !== null ? 2 : -1);
|
|
6241
6304
|
i0.ɵɵadvance(3);
|
|
6242
6305
|
i0.ɵɵconditional(ctx.showSpinner ? 5 : -1);
|
|
6243
|
-
} }, dependencies: [i1.NgTemplateOutlet,
|
|
6306
|
+
} }, 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
6307
|
}
|
|
6245
6308
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicShellComponent, [{
|
|
6246
6309
|
type: Component,
|
|
6247
6310
|
args: [{ selector: 'magic-root', providers: [
|
|
6248
6311
|
// 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: [{
|
|
6312
|
+
], template: `
|
|
6313
|
+
<div #magicRoot>
|
|
6314
|
+
@if (RootComponent !== null) {
|
|
6315
|
+
<ndc-dynamic
|
|
6316
|
+
[ndcDynamicComponent]="RootComponent"
|
|
6317
|
+
[ndcDynamicInputs] ="RootComponentParameters">
|
|
6318
|
+
</ndc-dynamic>
|
|
6319
|
+
}
|
|
6320
|
+
|
|
6321
|
+
<div #overlayWindowsContainer magicViewContainerRef>
|
|
6322
|
+
</div>
|
|
6323
|
+
</div>
|
|
6324
|
+
|
|
6325
|
+
@if (showSpinner) {
|
|
6326
|
+
<div class="spinner-background">
|
|
6327
|
+
<ng-container [ngTemplateOutlet]="SpinnerTemplate() ? SpinnerTemplate():defaultSpinner"></ng-container>
|
|
6328
|
+
</div>
|
|
6329
|
+
}
|
|
6330
|
+
|
|
6331
|
+
<ng-template #defaultSpinner>
|
|
6332
|
+
<div class="mgSpinnerClass"></div>
|
|
6333
|
+
</ng-template>
|
|
6334
|
+
`, 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"] }]
|
|
6335
|
+
}], () => [], { rootMagicElementRef: [{ type: i0.ViewChild, args: ['magicRoot', { isSignal: true }] }], SpinnerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "SpinnerTemplate", required: false }] }], onBeforeUnload: [{
|
|
6280
6336
|
type: HostListener,
|
|
6281
6337
|
args: ['window:beforeunload', ['$event']]
|
|
6282
|
-
}],
|
|
6338
|
+
}], onPageHide: [{
|
|
6283
6339
|
type: HostListener,
|
|
6284
|
-
args: ['window:
|
|
6340
|
+
args: ['window:pagehide']
|
|
6285
6341
|
}] }); })();
|
|
6286
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber:
|
|
6342
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MagicShellComponent, { className: "MagicShellComponent", filePath: "src/ui/magic-root.component.ts", lineNumber: 90 }); })();
|
|
6287
6343
|
|
|
6288
6344
|
/**
|
|
6289
6345
|
* @ignore
|
|
@@ -6310,7 +6366,7 @@ class MagicCheckboxControlValueAccessor extends CheckboxControlValueAccessor {
|
|
|
6310
6366
|
input[type=checkbox][magic]:not([formControl]),
|
|
6311
6367
|
input[type=checkbox][magic]:not([ngModel])
|
|
6312
6368
|
`,
|
|
6313
|
-
host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },
|
|
6369
|
+
host: { '(change)': 'onChange($any($event.target).checked)', '(blur)': 'onTouched()' },
|
|
6314
6370
|
providers: [CHECKBOX_VALUE_ACCESSOR],
|
|
6315
6371
|
standalone: false
|
|
6316
6372
|
}]
|
|
@@ -6341,10 +6397,10 @@ class MagicDefaultValueAccessor extends DefaultValueAccessor {
|
|
|
6341
6397
|
textarea[magic]:not([formControlName]):not([noFormControl]):not([no-form-control])
|
|
6342
6398
|
`,
|
|
6343
6399
|
host: {
|
|
6344
|
-
'(input)': '$any(this)._handleInput($event.target.value)',
|
|
6400
|
+
'(input)': '$any(this)._handleInput($any($event.target).value)',
|
|
6345
6401
|
'(blur)': 'onTouched()',
|
|
6346
6402
|
'(compositionstart)': '$any(this)._compositionStart()',
|
|
6347
|
-
'(compositionend)': '$any(this)._compositionEnd($event.target.value)'
|
|
6403
|
+
'(compositionend)': '$any(this)._compositionEnd($any($event.target).value)'
|
|
6348
6404
|
},
|
|
6349
6405
|
providers: [MAGIC_DEFAULT_VALUE_ACCESSOR],
|
|
6350
6406
|
exportAs: 'magic',
|
|
@@ -6356,9 +6412,8 @@ class MagicDefaultValueAccessor extends DefaultValueAccessor {
|
|
|
6356
6412
|
* Directive for checkboxes which should not have a form control
|
|
6357
6413
|
*/
|
|
6358
6414
|
class CheckboxNoFormControlMagicDirective {
|
|
6359
|
-
magicDirective;
|
|
6360
|
-
constructor(
|
|
6361
|
-
this.magicDirective = magicDirective;
|
|
6415
|
+
magicDirective = inject(MagicDirective);
|
|
6416
|
+
constructor() {
|
|
6362
6417
|
}
|
|
6363
6418
|
/**
|
|
6364
6419
|
* Handle the 'Checkbox' change event - pass it to the Magic engine
|
|
@@ -6366,7 +6421,7 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6366
6421
|
onChange($event) {
|
|
6367
6422
|
this.magicDirective.task.onCheckChanged($event, this.magicDirective.id, +this.magicDirective.rowId);
|
|
6368
6423
|
}
|
|
6369
|
-
/** @nocollapse */ static ɵfac = function CheckboxNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxNoFormControlMagicDirective)(
|
|
6424
|
+
/** @nocollapse */ static ɵfac = function CheckboxNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CheckboxNoFormControlMagicDirective)(); };
|
|
6370
6425
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: CheckboxNoFormControlMagicDirective, selectors: [["input", "type", "checkbox", "magic", "", "noFormControl", ""]], hostBindings: function CheckboxNoFormControlMagicDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6371
6426
|
i0.ɵɵlistener("change", function CheckboxNoFormControlMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
6372
6427
|
} }, standalone: false });
|
|
@@ -6379,7 +6434,7 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6379
6434
|
`,
|
|
6380
6435
|
standalone: false
|
|
6381
6436
|
}]
|
|
6382
|
-
}], () => [
|
|
6437
|
+
}], () => [], { onChange: [{
|
|
6383
6438
|
type: HostListener,
|
|
6384
6439
|
args: ['change', ['$event']]
|
|
6385
6440
|
}] }); })();
|
|
@@ -6388,9 +6443,8 @@ class CheckboxNoFormControlMagicDirective {
|
|
|
6388
6443
|
* Directive for non-checkbox input controls which do not have a form control
|
|
6389
6444
|
*/
|
|
6390
6445
|
class InputNoFormControlMagicDirective {
|
|
6391
|
-
magicDirective;
|
|
6392
|
-
constructor(
|
|
6393
|
-
this.magicDirective = magicDirective;
|
|
6446
|
+
magicDirective = inject(MagicDirective);
|
|
6447
|
+
constructor() {
|
|
6394
6448
|
}
|
|
6395
6449
|
/**
|
|
6396
6450
|
* Handles the 'change' event - pass it to the Magic engine
|
|
@@ -6398,7 +6452,7 @@ class InputNoFormControlMagicDirective {
|
|
|
6398
6452
|
onChange($event) {
|
|
6399
6453
|
this.magicDirective.task.setInputTextValue(this.magicDirective.id, this.magicDirective.rowId, event.srcElement.value);
|
|
6400
6454
|
}
|
|
6401
|
-
/** @nocollapse */ static ɵfac = function InputNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InputNoFormControlMagicDirective)(
|
|
6455
|
+
/** @nocollapse */ static ɵfac = function InputNoFormControlMagicDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InputNoFormControlMagicDirective)(); };
|
|
6402
6456
|
/** @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
6457
|
i0.ɵɵlistener("change", function InputNoFormControlMagicDirective_change_HostBindingHandler($event) { return ctx.onChange($event); });
|
|
6404
6458
|
} }, standalone: false });
|
|
@@ -6410,7 +6464,7 @@ class InputNoFormControlMagicDirective {
|
|
|
6410
6464
|
textarea[magic]:([noFormControl]):not([type=checkbox])`,
|
|
6411
6465
|
standalone: false
|
|
6412
6466
|
}]
|
|
6413
|
-
}], () => [
|
|
6467
|
+
}], () => [], { onChange: [{
|
|
6414
6468
|
type: HostListener,
|
|
6415
6469
|
args: ['change', ['$event']]
|
|
6416
6470
|
}] }); })();
|
|
@@ -6429,10 +6483,6 @@ const DATE_VALUE_ACCESSOR = {
|
|
|
6429
6483
|
* `<input type="date" formControlName="birthday" dateInput>`
|
|
6430
6484
|
*/
|
|
6431
6485
|
class DateValueAccessor {
|
|
6432
|
-
renderer;
|
|
6433
|
-
elementRef;
|
|
6434
|
-
magicDir;
|
|
6435
|
-
_task;
|
|
6436
6486
|
onChange = (_) => { };
|
|
6437
6487
|
onTouched = () => { };
|
|
6438
6488
|
onBlurEvent(event) {
|
|
@@ -6440,12 +6490,11 @@ class DateValueAccessor {
|
|
|
6440
6490
|
let control = this._task.getFormControl(this.magicDir.rowId, this.magicDir.id);
|
|
6441
6491
|
this.formatDateWithCentury(event.target.value, century, control);
|
|
6442
6492
|
}
|
|
6443
|
-
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
6448
|
-
}
|
|
6493
|
+
renderer = inject(Renderer2);
|
|
6494
|
+
elementRef = inject(ElementRef);
|
|
6495
|
+
magicDir = inject(MagicDirective);
|
|
6496
|
+
_task = inject(TaskMagicService);
|
|
6497
|
+
constructor() { }
|
|
6449
6498
|
/** Format year, if user enters 2 digits instead of 4 digits as per the century given in Magic.ini file */
|
|
6450
6499
|
formatDateWithCentury(userInput, century, control) {
|
|
6451
6500
|
const separator = userInput.includes('/') ? '/' : "-";
|
|
@@ -6483,7 +6532,7 @@ class DateValueAccessor {
|
|
|
6483
6532
|
setDisabledState(isDisabled) {
|
|
6484
6533
|
this.renderer.setProperty(this.elementRef.nativeElement, "disabled", isDisabled);
|
|
6485
6534
|
}
|
|
6486
|
-
/** @nocollapse */ static ɵfac = function DateValueAccessor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateValueAccessor)(
|
|
6535
|
+
/** @nocollapse */ static ɵfac = function DateValueAccessor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateValueAccessor)(); };
|
|
6487
6536
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DateValueAccessor, selectors: [["", "dateInput", ""]], hostBindings: function DateValueAccessor_HostBindings(rf, ctx) { if (rf & 1) {
|
|
6488
6537
|
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
6538
|
} }, standalone: false, features: [i0.ɵɵProvidersFeature([DATE_VALUE_ACCESSOR])] });
|
|
@@ -6495,7 +6544,7 @@ class DateValueAccessor {
|
|
|
6495
6544
|
providers: [DATE_VALUE_ACCESSOR],
|
|
6496
6545
|
standalone: false
|
|
6497
6546
|
}]
|
|
6498
|
-
}], () => [
|
|
6547
|
+
}], () => [], { onChange: [{
|
|
6499
6548
|
type: HostListener,
|
|
6500
6549
|
args: ["input", ["$event.target.valueAsDate"]]
|
|
6501
6550
|
}], onTouched: [{
|
|
@@ -6510,10 +6559,6 @@ class DateValueAccessor {
|
|
|
6510
6559
|
* 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
6560
|
*/
|
|
6512
6561
|
class NonMagicControlDirective {
|
|
6513
|
-
_task;
|
|
6514
|
-
element;
|
|
6515
|
-
renderer;
|
|
6516
|
-
vcRef;
|
|
6517
6562
|
set magic(val) {
|
|
6518
6563
|
this.id = val;
|
|
6519
6564
|
this.selector = 'NonMagicControl';
|
|
@@ -6551,13 +6596,13 @@ class NonMagicControlDirective {
|
|
|
6551
6596
|
* @param renderer Renderer for the element
|
|
6552
6597
|
* @param vcRef
|
|
6553
6598
|
*/
|
|
6554
|
-
constructor(
|
|
6555
|
-
this._task = _task;
|
|
6556
|
-
this.element = element;
|
|
6557
|
-
this.renderer = renderer;
|
|
6558
|
-
this.vcRef = vcRef;
|
|
6599
|
+
constructor() {
|
|
6559
6600
|
this.htmlElement = this.element.nativeElement;
|
|
6560
6601
|
}
|
|
6602
|
+
_task = inject(TaskMagicService);
|
|
6603
|
+
element = inject(ElementRef);
|
|
6604
|
+
renderer = inject(Renderer2);
|
|
6605
|
+
vcRef = inject(ViewContainerRef);
|
|
6561
6606
|
/**
|
|
6562
6607
|
* Get the task service
|
|
6563
6608
|
* @returns
|
|
@@ -6588,7 +6633,7 @@ class NonMagicControlDirective {
|
|
|
6588
6633
|
ngOnInit() {
|
|
6589
6634
|
this.regEvents();
|
|
6590
6635
|
}
|
|
6591
|
-
/** @nocollapse */ static ɵfac = function NonMagicControlDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NonMagicControlDirective)(
|
|
6636
|
+
/** @nocollapse */ static ɵfac = function NonMagicControlDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NonMagicControlDirective)(); };
|
|
6592
6637
|
/** @nocollapse */ static ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: NonMagicControlDirective, selectors: [["", "NonMagicControl", ""]], inputs: { magic: [0, "NonMagicControl", "magic"] }, standalone: false });
|
|
6593
6638
|
}
|
|
6594
6639
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NonMagicControlDirective, [{
|
|
@@ -6597,15 +6642,14 @@ class NonMagicControlDirective {
|
|
|
6597
6642
|
selector: '[NonMagicControl]',
|
|
6598
6643
|
standalone: false
|
|
6599
6644
|
}]
|
|
6600
|
-
}], () => [
|
|
6645
|
+
}], () => [], { magic: [{
|
|
6601
6646
|
type: Input,
|
|
6602
6647
|
args: ['NonMagicControl']
|
|
6603
6648
|
}] }); })();
|
|
6604
6649
|
|
|
6605
6650
|
class Time24MagicPipe {
|
|
6606
|
-
_task;
|
|
6607
|
-
constructor(
|
|
6608
|
-
this._task = _task;
|
|
6651
|
+
_task = inject(TaskMagicService);
|
|
6652
|
+
constructor() {
|
|
6609
6653
|
}
|
|
6610
6654
|
transform(value, controlId) {
|
|
6611
6655
|
let mask = this._task.GetControlPictureMask(controlId).getMask();
|
|
@@ -6623,7 +6667,7 @@ class Time24MagicPipe {
|
|
|
6623
6667
|
}
|
|
6624
6668
|
return value;
|
|
6625
6669
|
}
|
|
6626
|
-
/** @nocollapse */ static ɵfac = function Time24MagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Time24MagicPipe)(
|
|
6670
|
+
/** @nocollapse */ static ɵfac = function Time24MagicPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || Time24MagicPipe)(); };
|
|
6627
6671
|
/** @nocollapse */ static ɵpipe = /** @pureOrBreakMyCode */ i0.ɵɵdefinePipe({ name: "magicTime24", type: Time24MagicPipe, pure: true, standalone: false });
|
|
6628
6672
|
}
|
|
6629
6673
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(Time24MagicPipe, [{
|
|
@@ -6632,7 +6676,7 @@ class Time24MagicPipe {
|
|
|
6632
6676
|
name: 'magicTime24',
|
|
6633
6677
|
standalone: false
|
|
6634
6678
|
}]
|
|
6635
|
-
}], () => [
|
|
6679
|
+
}], () => [], null); })();
|
|
6636
6680
|
|
|
6637
6681
|
/**
|
|
6638
6682
|
* @ignore
|
|
@@ -6674,27 +6718,28 @@ const decs = [
|
|
|
6674
6718
|
class MagicModule {
|
|
6675
6719
|
/** @nocollapse */ static ɵfac = function MagicModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MagicModule)(); };
|
|
6676
6720
|
/** @nocollapse */ static ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: MagicModule });
|
|
6677
|
-
/** @nocollapse */ static ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withInterceptorsFromDi())], imports: [CommonModule,
|
|
6721
|
+
/** @nocollapse */ static ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withXhr(), withInterceptorsFromDi())], imports: [CommonModule,
|
|
6678
6722
|
FormsModule,
|
|
6679
6723
|
ReactiveFormsModule,
|
|
6680
6724
|
RouterModule,
|
|
6681
6725
|
DynamicModule,
|
|
6682
|
-
DragDropModule
|
|
6726
|
+
DragDropModule] });
|
|
6683
6727
|
}
|
|
6684
6728
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MagicModule, [{
|
|
6685
6729
|
type: NgModule,
|
|
6686
6730
|
args: [{
|
|
6687
6731
|
declarations: [...decs],
|
|
6688
|
-
exports: [...decs,
|
|
6732
|
+
exports: [...decs, MaskitoDirective],
|
|
6689
6733
|
imports: [CommonModule,
|
|
6690
6734
|
FormsModule,
|
|
6691
6735
|
ReactiveFormsModule,
|
|
6692
6736
|
RouterModule,
|
|
6693
6737
|
DynamicModule,
|
|
6738
|
+
MaskitoDirective,
|
|
6694
6739
|
CdkDragHandle,
|
|
6695
6740
|
CdkDrag,
|
|
6696
6741
|
DragDropModule],
|
|
6697
|
-
providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withInterceptorsFromDi())]
|
|
6742
|
+
providers: [ConfirmationComponentsMagicProvider, OverlayContainerMagicProvider, provideHttpClient(withXhr(), withInterceptorsFromDi())]
|
|
6698
6743
|
}]
|
|
6699
6744
|
}], null, null); })();
|
|
6700
6745
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MagicModule, { declarations: [MagicDirective,
|
|
@@ -6730,6 +6775,7 @@ class MagicModule {
|
|
|
6730
6775
|
ReactiveFormsModule,
|
|
6731
6776
|
RouterModule,
|
|
6732
6777
|
DynamicModule,
|
|
6778
|
+
MaskitoDirective,
|
|
6733
6779
|
CdkDragHandle,
|
|
6734
6780
|
CdkDrag,
|
|
6735
6781
|
DragDropModule], exports: [MagicDirective,
|
|
@@ -6760,7 +6806,7 @@ class MagicModule {
|
|
|
6760
6806
|
NonMagicControlDirective,
|
|
6761
6807
|
MagicFocusDirective,
|
|
6762
6808
|
MagicViewContainerRef,
|
|
6763
|
-
Time24MagicPipe,
|
|
6809
|
+
Time24MagicPipe, MaskitoDirective] }); })();
|
|
6764
6810
|
|
|
6765
6811
|
const MG_FORMATS = {
|
|
6766
6812
|
parse: { dateInput: { month: 'short', year: 'numeric', day: 'numeric' } },
|
|
@@ -6772,14 +6818,12 @@ const MG_FORMATS = {
|
|
|
6772
6818
|
}
|
|
6773
6819
|
};
|
|
6774
6820
|
class MgDateAdapter extends NativeDateAdapter {
|
|
6775
|
-
task;
|
|
6776
|
-
localeId;
|
|
6777
6821
|
mgdtfmt = null;
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
this.setLocale(localeId);
|
|
6822
|
+
task = inject(TaskMagicService);
|
|
6823
|
+
localeId = inject(MAT_DATE_LOCALE);
|
|
6824
|
+
constructor() {
|
|
6825
|
+
super();
|
|
6826
|
+
this.setLocale(this.localeId);
|
|
6783
6827
|
}
|
|
6784
6828
|
parse(value) {
|
|
6785
6829
|
let valueStr = value;
|
|
@@ -6854,15 +6898,12 @@ class MgDateAdapter extends NativeDateAdapter {
|
|
|
6854
6898
|
return date.toDateString();
|
|
6855
6899
|
}
|
|
6856
6900
|
}
|
|
6857
|
-
/** @nocollapse */ static ɵfac = function MgDateAdapter_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgDateAdapter)(
|
|
6901
|
+
/** @nocollapse */ static ɵfac = function MgDateAdapter_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MgDateAdapter)(); };
|
|
6858
6902
|
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: MgDateAdapter, factory: MgDateAdapter.ɵfac });
|
|
6859
6903
|
}
|
|
6860
6904
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MgDateAdapter, [{
|
|
6861
6905
|
type: Injectable
|
|
6862
|
-
}], () => [
|
|
6863
|
-
type: Inject,
|
|
6864
|
-
args: [MAT_DATE_LOCALE]
|
|
6865
|
-
}] }], null); })();
|
|
6906
|
+
}], () => [], null); })();
|
|
6866
6907
|
|
|
6867
6908
|
const matDateProviders = [
|
|
6868
6909
|
{ provide: DateAdapter, useClass: MgDateAdapter },
|
|
@@ -6884,6 +6925,109 @@ const magicProviders = [
|
|
|
6884
6925
|
TableMagicService
|
|
6885
6926
|
];
|
|
6886
6927
|
|
|
6928
|
+
class SubscriberService {
|
|
6929
|
+
static instance;
|
|
6930
|
+
socket;
|
|
6931
|
+
constructor() {
|
|
6932
|
+
// Connect to the Socket.IO server with subscriber role
|
|
6933
|
+
this.socket = io('http://localhost:3000', {
|
|
6934
|
+
query: {
|
|
6935
|
+
role: 'subscriber',
|
|
6936
|
+
token: 'abc123' // Default token for testing; replace with actual authentication
|
|
6937
|
+
}
|
|
6938
|
+
});
|
|
6939
|
+
// Handle connection
|
|
6940
|
+
this.socket.on('connect', () => {
|
|
6941
|
+
console.log('Connected to server as subscriber:', this.socket.id);
|
|
6942
|
+
});
|
|
6943
|
+
// Handle disconnection
|
|
6944
|
+
this.socket.on('disconnect', () => {
|
|
6945
|
+
console.log('Disconnected from server');
|
|
6946
|
+
});
|
|
6947
|
+
// Handle subscription confirmation
|
|
6948
|
+
this.socket.on('subscribed', (data) => {
|
|
6949
|
+
console.log('Subscribed to topic:', data.topic, data.message);
|
|
6950
|
+
});
|
|
6951
|
+
// Handle unsubscription confirmation
|
|
6952
|
+
this.socket.on('unsubscribed', (data) => {
|
|
6953
|
+
console.log('Unsubscribed from topic:', data.topic, data.message);
|
|
6954
|
+
});
|
|
6955
|
+
// Handle errors
|
|
6956
|
+
this.socket.on('error', (error) => {
|
|
6957
|
+
console.error('Socket error:', error.message);
|
|
6958
|
+
});
|
|
6959
|
+
this.socket.on('message', (error) => {
|
|
6960
|
+
console.error('Message from xpa:', error.message);
|
|
6961
|
+
});
|
|
6962
|
+
}
|
|
6963
|
+
/**
|
|
6964
|
+
* Subscribe to a specific topic
|
|
6965
|
+
* @param topic The topic to subscribe to
|
|
6966
|
+
*/
|
|
6967
|
+
subscribe(topic) {
|
|
6968
|
+
this.socket.emit('subscribe', topic);
|
|
6969
|
+
}
|
|
6970
|
+
/**
|
|
6971
|
+
* Unsubscribe from a specific topic
|
|
6972
|
+
* @param topic The topic to unsubscribe from
|
|
6973
|
+
*/
|
|
6974
|
+
unsubscribe(topic) {
|
|
6975
|
+
this.socket.emit('unsubscribe', topic);
|
|
6976
|
+
}
|
|
6977
|
+
/**
|
|
6978
|
+
* Get an Observable for incoming messages
|
|
6979
|
+
* @returns Observable that emits message data
|
|
6980
|
+
*/
|
|
6981
|
+
onMessage() {
|
|
6982
|
+
return new Observable(observer => {
|
|
6983
|
+
this.socket.on('message', (data) => {
|
|
6984
|
+
observer.next(data);
|
|
6985
|
+
});
|
|
6986
|
+
});
|
|
6987
|
+
}
|
|
6988
|
+
/**
|
|
6989
|
+
* Get current subscriptions (for debugging)
|
|
6990
|
+
*/
|
|
6991
|
+
getSubscriptions() {
|
|
6992
|
+
this.socket.emit('getSubscriptions');
|
|
6993
|
+
}
|
|
6994
|
+
/**
|
|
6995
|
+
* Listen for subscriptions data
|
|
6996
|
+
* @returns Observable that emits subscriptions list
|
|
6997
|
+
*/
|
|
6998
|
+
onSubscriptionsData() {
|
|
6999
|
+
return new Observable(observer => {
|
|
7000
|
+
this.socket.on('subscriptionsData', (data) => {
|
|
7001
|
+
observer.next(data);
|
|
7002
|
+
});
|
|
7003
|
+
});
|
|
7004
|
+
}
|
|
7005
|
+
/**
|
|
7006
|
+
* Get the singleton instance of SubscriberService
|
|
7007
|
+
* @returns {SubscriberService} The singleton instance
|
|
7008
|
+
*/
|
|
7009
|
+
static getInstance() {
|
|
7010
|
+
if (!SubscriberService.instance) {
|
|
7011
|
+
SubscriberService.instance = new SubscriberService();
|
|
7012
|
+
}
|
|
7013
|
+
return SubscriberService.instance;
|
|
7014
|
+
}
|
|
7015
|
+
/**
|
|
7016
|
+
* Disconnect from the server
|
|
7017
|
+
*/
|
|
7018
|
+
disconnect() {
|
|
7019
|
+
this.socket.disconnect();
|
|
7020
|
+
}
|
|
7021
|
+
/** @nocollapse */ static ɵfac = function SubscriberService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SubscriberService)(); };
|
|
7022
|
+
/** @nocollapse */ static ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: SubscriberService, factory: SubscriberService.ɵfac, providedIn: 'root' });
|
|
7023
|
+
}
|
|
7024
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SubscriberService, [{
|
|
7025
|
+
type: Injectable,
|
|
7026
|
+
args: [{
|
|
7027
|
+
providedIn: 'root'
|
|
7028
|
+
}]
|
|
7029
|
+
}], () => [], null); })();
|
|
7030
|
+
|
|
6887
7031
|
/**
|
|
6888
7032
|
* @ignore
|
|
6889
7033
|
*/
|
|
@@ -6969,5 +7113,5 @@ class ModalFormDefinition {
|
|
|
6969
7113
|
* Generated bundle index. Do not edit.
|
|
6970
7114
|
*/
|
|
6971
7115
|
|
|
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 };
|
|
7116
|
+
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
7117
|
//# sourceMappingURL=magic-xpa-angular.mjs.map
|