turbogui-angular 7.0.0 → 8.0.0
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/esm2020/main/controller/browser.service.mjs +48 -0
- package/esm2020/main/controller/dialog.service.mjs +324 -0
- package/esm2020/main/controller/globalerror.service.mjs +68 -0
- package/esm2020/main/controller/http.service.mjs +70 -0
- package/esm2020/main/controller/localization.service.mjs +22 -0
- package/esm2020/main/controller/notification.service.mjs +56 -0
- package/esm2020/main/controller/user.service.mjs +124 -0
- package/esm2020/main/controller/views.service.mjs +113 -0
- package/esm2020/main/model/modules/turbogui-angular.module.mjs +142 -0
- package/esm2020/main/view/animations/fade.animation.mjs +35 -0
- package/esm2020/main/view/components/busy-state-base/busy-state-base.component.mjs +38 -0
- package/esm2020/main/view/components/button-base/button-base.component.mjs +180 -0
- package/esm2020/main/view/components/button-container/button-container.component.mjs +34 -0
- package/esm2020/main/view/components/button-image/button-image.component.mjs +47 -0
- package/esm2020/main/view/components/dialog-error/dialog-error.component.mjs +41 -0
- package/esm2020/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +38 -0
- package/esm2020/main/view/components/dialog-single-option/dialog-single-option.component.mjs +41 -0
- package/esm2020/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +112 -0
- package/esm2020/main/view/components/dialog-two-option/dialog-two-option.component.mjs +42 -0
- package/{esm2015/main/view/components/views-container/views-container.component.js → esm2020/main/view/components/views-container/views-container.component.mjs} +15 -13
- package/esm2020/main/view/directives/AutoFocusOnDisplayDirective.mjs +39 -0
- package/esm2020/main/view/directives/AutoSelectTextOnFocusDirective.mjs +39 -0
- package/esm2020/main/view/directives/ElementCreatedDirective.mjs +42 -0
- package/esm2020/main/view/directives/ElementDestroyedDirective.mjs +42 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +1 -1
- package/esm2020/turbogui-angular.mjs +5 -0
- package/fesm2015/turbogui-angular.mjs +1953 -0
- package/fesm2015/turbogui-angular.mjs.map +1 -0
- package/{fesm2015/turbogui-angular.js → fesm2020/turbogui-angular.mjs} +368 -298
- package/fesm2020/turbogui-angular.mjs.map +1 -0
- package/main/controller/browser.service.d.ts +3 -8
- package/main/controller/browser.service.d.ts.map +1 -1
- package/main/controller/dialog.service.d.ts +3 -8
- package/main/controller/dialog.service.d.ts.map +1 -1
- package/main/controller/globalerror.service.d.ts +3 -0
- package/main/controller/globalerror.service.d.ts.map +1 -1
- package/main/controller/http.service.d.ts +3 -8
- package/main/controller/http.service.d.ts.map +1 -1
- package/main/controller/localization.service.d.ts +3 -8
- package/main/controller/localization.service.d.ts.map +1 -1
- package/main/controller/notification.service.d.ts +3 -8
- package/main/controller/notification.service.d.ts.map +1 -1
- package/main/controller/user.service.d.ts +3 -8
- package/main/controller/user.service.d.ts.map +1 -1
- package/main/controller/views.service.d.ts +3 -0
- package/main/controller/views.service.d.ts.map +1 -1
- package/main/model/modules/turbogui-angular.module.d.ts +23 -8
- package/main/model/modules/turbogui-angular.module.d.ts.map +1 -1
- package/main/view/animations/fade.animation.d.ts +3 -8
- package/main/view/animations/fade.animation.d.ts.map +1 -1
- package/main/view/components/busy-state-base/busy-state-base.component.d.ts +3 -8
- package/main/view/components/busy-state-base/busy-state-base.component.d.ts.map +1 -1
- package/main/view/components/button-base/button-base.component.d.ts +3 -0
- package/main/view/components/button-base/button-base.component.d.ts.map +1 -1
- package/main/view/components/button-container/button-container.component.d.ts +3 -8
- package/main/view/components/button-container/button-container.component.d.ts.map +1 -1
- package/main/view/components/button-image/button-image.component.d.ts +3 -0
- package/main/view/components/button-image/button-image.component.d.ts.map +1 -1
- package/main/view/components/dialog-error/dialog-error.component.d.ts +3 -8
- package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +3 -8
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +3 -8
- package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +3 -8
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
- package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +3 -8
- package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
- package/main/view/components/views-container/views-container.component.d.ts +3 -0
- package/main/view/components/views-container/views-container.component.d.ts.map +1 -1
- package/main/view/directives/AutoFocusOnDisplayDirective.d.ts +3 -0
- package/main/view/directives/AutoFocusOnDisplayDirective.d.ts.map +1 -1
- package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts +3 -0
- package/main/view/directives/AutoSelectTextOnFocusDirective.d.ts.map +1 -1
- package/main/view/directives/ElementCreatedDirective.d.ts +3 -0
- package/main/view/directives/ElementCreatedDirective.d.ts.map +1 -1
- package/main/view/directives/ElementDestroyedDirective.d.ts +3 -0
- package/main/view/directives/ElementDestroyedDirective.d.ts.map +1 -1
- package/package.json +24 -12
- package/turbogui-angular.d.ts +1 -2
- package/turbogui-angular.d.ts.map +1 -1
- package/bundles/turbogui-angular.umd.js +0 -2431
- package/bundles/turbogui-angular.umd.js.map +0 -1
- package/esm2015/main/controller/browser.service.js +0 -48
- package/esm2015/main/controller/dialog.service.js +0 -329
- package/esm2015/main/controller/globalerror.service.js +0 -65
- package/esm2015/main/controller/http.service.js +0 -70
- package/esm2015/main/controller/localization.service.js +0 -19
- package/esm2015/main/controller/notification.service.js +0 -53
- package/esm2015/main/controller/user.service.js +0 -125
- package/esm2015/main/controller/views.service.js +0 -113
- package/esm2015/main/model/modules/turbogui-angular.module.js +0 -93
- package/esm2015/main/view/animations/fade.animation.js +0 -32
- package/esm2015/main/view/components/busy-state-base/busy-state-base.component.js +0 -39
- package/esm2015/main/view/components/button-base/button-base.component.js +0 -149
- package/esm2015/main/view/components/button-container/button-container.component.js +0 -35
- package/esm2015/main/view/components/button-image/button-image.component.js +0 -46
- package/esm2015/main/view/components/dialog-error/dialog-error.component.js +0 -39
- package/esm2015/main/view/components/dialog-multiple-option/dialog-multiple-option.component.js +0 -36
- package/esm2015/main/view/components/dialog-single-option/dialog-single-option.component.js +0 -39
- package/esm2015/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.js +0 -108
- package/esm2015/main/view/components/dialog-two-option/dialog-two-option.component.js +0 -40
- package/esm2015/main/view/directives/AutoFocusOnDisplayDirective.js +0 -40
- package/esm2015/main/view/directives/AutoSelectTextOnFocusDirective.js +0 -39
- package/esm2015/main/view/directives/ElementCreatedDirective.js +0 -38
- package/esm2015/main/view/directives/ElementDestroyedDirective.js +0 -38
- package/esm2015/turbogui-angular.js +0 -7
- package/fesm2015/turbogui-angular.js.map +0 -1
- package/main/controller/browser.service.ngfactory.d.ts.map +0 -1
- package/main/controller/dialog.service.ngfactory.d.ts.map +0 -1
- package/main/controller/globalerror.service.ngfactory.d.ts.map +0 -1
- package/main/controller/http.service.ngfactory.d.ts.map +0 -1
- package/main/controller/localization.service.ngfactory.d.ts.map +0 -1
- package/main/controller/notification.service.ngfactory.d.ts.map +0 -1
- package/main/controller/user.service.ngfactory.d.ts.map +0 -1
- package/main/controller/views.service.ngfactory.d.ts.map +0 -1
- package/main/model/modules/turbogui-angular.module.ngfactory.d.ts.map +0 -1
- package/main/view/animations/fade.animation.ngfactory.d.ts.map +0 -1
- package/main/view/components/busy-state-base/busy-state-base.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/busy-state-base/busy-state-base.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/button-container/button-container.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/button-container/button-container.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/button-image/button-image.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/button-image/button-image.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/dialog-error/dialog-error.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/dialog-error/dialog-error.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/dialog-single-option/dialog-single-option.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/dialog-single-option/dialog-single-option.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/dialog-two-option/dialog-two-option.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/dialog-two-option/dialog-two-option.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/components/views-container/views-container.component.ngfactory.d.ts.map +0 -1
- package/main/view/components/views-container/views-container.component.scss.shim.ngstyle.d.ts.map +0 -1
- package/main/view/directives/AutoFocusOnDisplayDirective.ngfactory.d.ts.map +0 -1
- package/main/view/directives/AutoSelectTextOnFocusDirective.ngfactory.d.ts.map +0 -1
- package/main/view/directives/ElementCreatedDirective.ngfactory.d.ts.map +0 -1
- package/main/view/directives/ElementDestroyedDirective.ngfactory.d.ts.map +0 -1
- package/turbogui-angular.metadata.json +0 -1
- /package/{esm2015/main/controller/httpservice/HTTPServiceGetRequest.js → esm2020/main/controller/httpservice/HTTPServiceGetRequest.mjs} +0 -0
- /package/{esm2015/main/controller/httpservice/HTTPServicePostRequest.js → esm2020/main/controller/httpservice/HTTPServicePostRequest.mjs} +0 -0
- /package/{esm2015/main/managers/DelayedMethodCallManager.js → esm2020/main/managers/DelayedMethodCallManager.mjs} +0 -0
- /package/{esm2015/main/model/classes/GUINotification.js → esm2020/main/model/classes/GUINotification.mjs} +0 -0
- /package/{esm2015/main/model/classes/View.js → esm2020/main/model/classes/View.mjs} +0 -0
- /package/{esm2015/main/model/classes/ViewModel.js → esm2020/main/model/classes/ViewModel.mjs} +0 -0
- /package/{esm2015/main/model/classes/ViewService.js → esm2020/main/model/classes/ViewService.mjs} +0 -0
- /package/{esm2015/main/view/components/dialog-base/dialog-base.component.js → esm2020/main/view/components/dialog-base/dialog-base.component.mjs} +0 -0
- /package/{esm2015/main/view/components/dialog-options-base/dialog-options-base.component.js → esm2020/main/view/components/dialog-options-base/dialog-options-base.component.mjs} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { Injectable } from '@angular/core';
|
|
10
|
+
import { Subject } from 'rxjs';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* This is the main application event bus.
|
|
14
|
+
* All global events that happen on the application are broadcasted by this service, and
|
|
15
|
+
* can be listened by any application element who previously subscribed
|
|
16
|
+
*/
|
|
17
|
+
export class NotificationService {
|
|
18
|
+
constructor() {
|
|
19
|
+
/**
|
|
20
|
+
* The Observable instance that handles subscriptions and notifications
|
|
21
|
+
*/
|
|
22
|
+
this._notifications = new Subject();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* used by other services or components to subscribe to all notifications that are generated by this service
|
|
26
|
+
*
|
|
27
|
+
* @param notificationHandler A method that will be used to receive each notification as a GUINotification instance
|
|
28
|
+
*
|
|
29
|
+
* @returns The new subscription object. Make sure to unsubscribe when not required anymore
|
|
30
|
+
*/
|
|
31
|
+
subscribe(notificationHandler) {
|
|
32
|
+
return this._notifications.subscribe(notificationHandler);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Launch a notification to anyone who may be listening
|
|
36
|
+
*
|
|
37
|
+
* @param notification A notification instance to launch
|
|
38
|
+
*/
|
|
39
|
+
send(notification) {
|
|
40
|
+
this._notifications.next(notification);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* End a previously initiated subscription
|
|
44
|
+
*
|
|
45
|
+
* @param subscription A previously created subscription instance from which we want to unsubscribe
|
|
46
|
+
*/
|
|
47
|
+
unsubscribe(subscription) {
|
|
48
|
+
return subscription.unsubscribe();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
NotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
NotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NotificationService });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NotificationService, decorators: [{
|
|
54
|
+
type: Injectable
|
|
55
|
+
}] });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7O0FBSTdDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBSUk7O1dBRUc7UUFDYyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0tBb0NwRTtJQWpDRzs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsbUJBQTJEO1FBRWpFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxZQUE2QjtRQUU5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxZQUEwQjtRQUVsQyxPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDOztnSEF6Q1EsbUJBQW1CO29IQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdVSU5vdGlmaWNhdGlvbiB9IGZyb20gJy4uL21vZGVsL2NsYXNzZXMvR1VJTm90aWZpY2F0aW9uJztcclxuXHJcblxyXG4vKipcclxuICogVGhpcyBpcyB0aGUgbWFpbiBhcHBsaWNhdGlvbiBldmVudCBidXMuXHJcbiAqIEFsbCBnbG9iYWwgZXZlbnRzIHRoYXQgaGFwcGVuIG9uIHRoZSBhcHBsaWNhdGlvbiBhcmUgYnJvYWRjYXN0ZWQgYnkgdGhpcyBzZXJ2aWNlLCBhbmRcclxuICogY2FuIGJlIGxpc3RlbmVkIGJ5IGFueSBhcHBsaWNhdGlvbiBlbGVtZW50IHdobyBwcmV2aW91c2x5IHN1YnNjcmliZWRcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNlcnZpY2Uge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBPYnNlcnZhYmxlIGluc3RhbmNlIHRoYXQgaGFuZGxlcyBzdWJzY3JpcHRpb25zIGFuZCBub3RpZmljYXRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnMgPSBuZXcgU3ViamVjdDxHVUlOb3RpZmljYXRpb24+KCk7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdXNlZCBieSBvdGhlciBzZXJ2aWNlcyBvciBjb21wb25lbnRzIHRvIHN1YnNjcmliZSB0byBhbGwgbm90aWZpY2F0aW9ucyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgdGhpcyBzZXJ2aWNlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbkhhbmRsZXIgQSBtZXRob2QgdGhhdCB3aWxsIGJlIHVzZWQgdG8gcmVjZWl2ZSBlYWNoIG5vdGlmaWNhdGlvbiBhcyBhIEdVSU5vdGlmaWNhdGlvbiBpbnN0YW5jZVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgc3Vic2NyaXB0aW9uIG9iamVjdC4gTWFrZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4gbm90IHJlcXVpcmVkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgc3Vic2NyaWJlKG5vdGlmaWNhdGlvbkhhbmRsZXI6IChub3RpZmljYXRpb246IEdVSU5vdGlmaWNhdGlvbikgPT4gYW55KSB7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub3RpZmljYXRpb25zLnN1YnNjcmliZShub3RpZmljYXRpb25IYW5kbGVyKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMYXVuY2ggYSBub3RpZmljYXRpb24gdG8gYW55b25lIHdobyBtYXkgYmUgbGlzdGVuaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiBBIG5vdGlmaWNhdGlvbiBpbnN0YW5jZSB0byBsYXVuY2hcclxuICAgICAqL1xyXG4gICAgc2VuZChub3RpZmljYXRpb246IEdVSU5vdGlmaWNhdGlvbikge1xyXG5cclxuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zLm5leHQobm90aWZpY2F0aW9uKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmQgYSBwcmV2aW91c2x5IGluaXRpYXRlZCBzdWJzY3JpcHRpb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc3Vic2NyaXB0aW9uIEEgcHJldmlvdXNseSBjcmVhdGVkIHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBmcm9tIHdoaWNoIHdlIHdhbnQgdG8gdW5zdWJzY3JpYmVcclxuICAgICAqL1xyXG4gICAgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { Injectable } from '@angular/core';
|
|
10
|
+
import { ConversionUtils, StringUtils } from 'turbocommons-ts';
|
|
11
|
+
import { HTTPServicePostRequest } from '../controller/httpservice/HTTPServicePostRequest';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "../controller/http.service";
|
|
14
|
+
import * as i2 from "../controller/localization.service";
|
|
15
|
+
/**
|
|
16
|
+
* Manages the users model and commands
|
|
17
|
+
*/
|
|
18
|
+
export class UserService {
|
|
19
|
+
constructor(httpService, ls) {
|
|
20
|
+
this.httpService = httpService;
|
|
21
|
+
this.ls = ls;
|
|
22
|
+
/**
|
|
23
|
+
* Path to the web service that performs the user login
|
|
24
|
+
*/
|
|
25
|
+
this.loginWebService = 'users/login';
|
|
26
|
+
/**
|
|
27
|
+
* The username that is currently defined and will be used by the login methods
|
|
28
|
+
*/
|
|
29
|
+
this.userName = '';
|
|
30
|
+
/**
|
|
31
|
+
* The password for the user that is currently defined and will be used by the login methods
|
|
32
|
+
*/
|
|
33
|
+
this.password = '';
|
|
34
|
+
/**
|
|
35
|
+
* Check public getter for docs
|
|
36
|
+
*/
|
|
37
|
+
this._isLogged = false;
|
|
38
|
+
/**
|
|
39
|
+
* @see token() getter for more info
|
|
40
|
+
*/
|
|
41
|
+
this._token = '';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Tells if the services contains a non empty username and password specified
|
|
45
|
+
*/
|
|
46
|
+
get isUserAndPswDefined() {
|
|
47
|
+
return !StringUtils.isEmpty(this.userName) && !StringUtils.isEmpty(this.password);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Tells if exists a user that is currently logged or not
|
|
51
|
+
*/
|
|
52
|
+
get isLogged() {
|
|
53
|
+
return this._isLogged;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Gives the value for the currently active user authentication token or an empty string if no user logged
|
|
57
|
+
*/
|
|
58
|
+
get token() {
|
|
59
|
+
return this._token;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Perform a user login against the configured login webservice
|
|
63
|
+
*
|
|
64
|
+
* @param loginOkCallback Method to be executed once the login finishes chorrectly. An object with all the service response data will be passed to this method
|
|
65
|
+
* @param loginFailCallback Method to be executed once the login finishes incorrectly.
|
|
66
|
+
*/
|
|
67
|
+
login(loginOkCallback = null, loginFailCallback = null) {
|
|
68
|
+
const request = new HTTPServicePostRequest(this.loginWebService);
|
|
69
|
+
request.ignoreGlobalPostParams = true;
|
|
70
|
+
const encodedCredentials = ConversionUtils.stringToBase64(ConversionUtils.stringToBase64(this.userName) + ',' + ConversionUtils.stringToBase64(this.password));
|
|
71
|
+
request.parameters = {
|
|
72
|
+
data: encodedCredentials
|
|
73
|
+
};
|
|
74
|
+
request.successCallback = (response) => {
|
|
75
|
+
if (response !== '') {
|
|
76
|
+
response = JSON.parse(response);
|
|
77
|
+
this._isLogged = true;
|
|
78
|
+
this._token = response.token;
|
|
79
|
+
this.httpService.setGlobalPostParam('token', response.token);
|
|
80
|
+
if (loginOkCallback !== null) {
|
|
81
|
+
loginOkCallback(response);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
this._clearUserAndToken();
|
|
86
|
+
if (loginFailCallback !== null) {
|
|
87
|
+
loginFailCallback();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
this.httpService.execute(request);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Perform the logout for the currently logged user
|
|
95
|
+
*/
|
|
96
|
+
logout(logoutOkCallback = null) {
|
|
97
|
+
const request = new HTTPServicePostRequest('users/logout');
|
|
98
|
+
request.parameters = {
|
|
99
|
+
token: this._token
|
|
100
|
+
};
|
|
101
|
+
request.successCallback = () => {
|
|
102
|
+
this._clearUserAndToken();
|
|
103
|
+
if (logoutOkCallback !== null) {
|
|
104
|
+
logoutOkCallback();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
this.httpService.execute(request);
|
|
108
|
+
}
|
|
109
|
+
_clearUserAndToken() {
|
|
110
|
+
this.userName = '';
|
|
111
|
+
this.password = '';
|
|
112
|
+
this._isLogged = false;
|
|
113
|
+
this._token = '';
|
|
114
|
+
if (this.httpService.isGlobalPostParam('token')) {
|
|
115
|
+
this.httpService.deleteGlobalPostParam('token');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
UserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserService, deps: [{ token: i1.HTTPService }, { token: i2.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
120
|
+
UserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserService });
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserService, decorators: [{
|
|
122
|
+
type: Injectable
|
|
123
|
+
}], ctorParameters: function () { return [{ type: i1.HTTPService }, { type: i2.LocalizationService }]; } });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL3VzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBRzFGOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVc7SUFpQ3BCLFlBQW1CLFdBQXdCLEVBQ3hCLEVBQXVCO1FBRHZCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBL0IxQzs7V0FFRztRQUNILG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBR2hDOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkOztXQUVHO1FBQ0gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUdkOztXQUVHO1FBQ0ssY0FBUyxHQUFHLEtBQUssQ0FBQztRQUcxQjs7V0FFRztRQUNLLFdBQU0sR0FBRyxFQUFFLENBQUM7SUFLcEIsQ0FBQztJQUdEOztPQUVHO0lBQ0gsSUFBSSxtQkFBbUI7UUFFbkIsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUdEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBRVIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksS0FBSztRQUVMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBR0Q7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsa0JBQW9ELElBQUksRUFBRSxvQkFBeUMsSUFBSTtRQUV6RyxNQUFNLE9BQU8sR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVqRSxPQUFPLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBRXRDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FDakQsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFN0csT0FBTyxDQUFDLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsa0JBQWtCO1NBQzNCLENBQUM7UUFFRixPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFFbkMsSUFBSSxRQUFRLEtBQUssRUFBRSxFQUFFO2dCQUVqQixRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU3RCxJQUFJLGVBQWUsS0FBSyxJQUFJLEVBQUU7b0JBRTFCLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDN0I7YUFFSjtpQkFBTTtnQkFFSCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFFMUIsSUFBSSxpQkFBaUIsS0FBSyxJQUFJLEVBQUU7b0JBRTVCLGlCQUFpQixFQUFFLENBQUM7aUJBQ3ZCO2FBQ0o7UUFDTCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsbUJBQXdDLElBQUk7UUFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUzRCxPQUFPLENBQUMsVUFBVSxHQUFHO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNyQixDQUFDO1FBRUYsT0FBTyxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUU7WUFFM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLEVBQUU7Z0JBRTNCLGdCQUFnQixFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR08sa0JBQWtCO1FBRXRCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWpCLElBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBQztZQUUzQyxJQUFJLENBQUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25EO0lBQ0wsQ0FBQzs7d0dBdEpRLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb252ZXJzaW9uVXRpbHMsIFN0cmluZ1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tICcuLi9jb250cm9sbGVyL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb250cm9sbGVyL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2VQb3N0UmVxdWVzdCB9IGZyb20gJy4uL2NvbnRyb2xsZXIvaHR0cHNlcnZpY2UvSFRUUFNlcnZpY2VQb3N0UmVxdWVzdCc7XHJcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgdGhlIHVzZXJzIG1vZGVsIGFuZCBjb21tYW5kc1xyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXNlclNlcnZpY2Uge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdGggdG8gdGhlIHdlYiBzZXJ2aWNlIHRoYXQgcGVyZm9ybXMgdGhlIHVzZXIgbG9naW5cclxuICAgICAqL1xyXG4gICAgbG9naW5XZWJTZXJ2aWNlID0gJ3VzZXJzL2xvZ2luJztcclxuICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHVzZXJuYW1lIHRoYXQgaXMgY3VycmVudGx5IGRlZmluZWQgYW5kIHdpbGwgYmUgdXNlZCBieSB0aGUgbG9naW4gbWV0aG9kc1xyXG4gICAgICovXHJcbiAgICB1c2VyTmFtZSA9ICcnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwYXNzd29yZCBmb3IgdGhlIHVzZXIgdGhhdCBpcyBjdXJyZW50bHkgZGVmaW5lZCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBsb2dpbiBtZXRob2RzXHJcbiAgICAgKi9cclxuICAgIHBhc3N3b3JkID0gJyc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgcHVibGljIGdldHRlciBmb3IgZG9jc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc0xvZ2dlZCA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQHNlZSB0b2tlbigpIGdldHRlciBmb3IgbW9yZSBpbmZvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3Rva2VuID0gJyc7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwU2VydmljZTogSFRUUFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgbHM6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgc2VydmljZXMgY29udGFpbnMgYSBub24gZW1wdHkgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHNwZWNpZmllZFxyXG4gICAgICovXHJcbiAgICBnZXQgaXNVc2VyQW5kUHN3RGVmaW5lZCgpOiBib29sZWFuICB7XHJcblxyXG4gICAgICAgIHJldHVybiAhU3RyaW5nVXRpbHMuaXNFbXB0eSh0aGlzLnVzZXJOYW1lKSAmJiAhU3RyaW5nVXRpbHMuaXNFbXB0eSh0aGlzLnBhc3N3b3JkKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiBleGlzdHMgYSB1c2VyIHRoYXQgaXMgY3VycmVudGx5IGxvZ2dlZCBvciBub3RcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzTG9nZ2VkKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2dnZWQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlcyB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIHVzZXIgYXV0aGVudGljYXRpb24gdG9rZW4gb3IgYW4gZW1wdHkgc3RyaW5nIGlmIG5vIHVzZXIgbG9nZ2VkXHJcbiAgICAgKi9cclxuICAgIGdldCB0b2tlbigpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm0gYSB1c2VyIGxvZ2luIGFnYWluc3QgdGhlIGNvbmZpZ3VyZWQgbG9naW4gd2Vic2VydmljZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbG9naW5Pa0NhbGxiYWNrIE1ldGhvZCB0byBiZSBleGVjdXRlZCBvbmNlIHRoZSBsb2dpbiBmaW5pc2hlcyBjaG9ycmVjdGx5LiBBbiBvYmplY3Qgd2l0aCBhbGwgdGhlIHNlcnZpY2UgcmVzcG9uc2UgZGF0YSB3aWxsIGJlIHBhc3NlZCB0byB0aGlzIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIGxvZ2luRmFpbENhbGxiYWNrIE1ldGhvZCB0byBiZSBleGVjdXRlZCBvbmNlIHRoZSBsb2dpbiBmaW5pc2hlcyBpbmNvcnJlY3RseS5cclxuICAgICAqL1xyXG4gICAgbG9naW4obG9naW5Pa0NhbGxiYWNrOiBudWxsIHwgKChyZXNwb25zZTogYW55KSA9PiB2b2lkKSA9IG51bGwsIGxvZ2luRmFpbENhbGxiYWNrOiBudWxsIHwgKCgpID0+IHZvaWQpID0gbnVsbCkge1xyXG5cclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IEhUVFBTZXJ2aWNlUG9zdFJlcXVlc3QodGhpcy5sb2dpbldlYlNlcnZpY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHJlcXVlc3QuaWdub3JlR2xvYmFsUG9zdFBhcmFtcyA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGVuY29kZWRDcmVkZW50aWFscyA9IENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NChcclxuICAgICAgICAgICAgICAgIENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NCh0aGlzLnVzZXJOYW1lKSArICcsJyArIENvbnZlcnNpb25VdGlscy5zdHJpbmdUb0Jhc2U2NCh0aGlzLnBhc3N3b3JkKSk7XHJcblxyXG4gICAgICAgIHJlcXVlc3QucGFyYW1ldGVycyA9IHtcclxuICAgICAgICAgICAgZGF0YTogZW5jb2RlZENyZWRlbnRpYWxzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICByZXF1ZXN0LnN1Y2Nlc3NDYWxsYmFjayA9IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgIT09ICcnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTsgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90b2tlbiA9IHJlc3BvbnNlLnRva2VuO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5odHRwU2VydmljZS5zZXRHbG9iYWxQb3N0UGFyYW0oJ3Rva2VuJywgcmVzcG9uc2UudG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChsb2dpbk9rQ2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9naW5Pa0NhbGxiYWNrKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2xlYXJVc2VyQW5kVG9rZW4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobG9naW5GYWlsQ2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9naW5GYWlsQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UuZXhlY3V0ZShyZXF1ZXN0KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJmb3JtIHRoZSBsb2dvdXQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIHVzZXJcclxuICAgICAqL1xyXG4gICAgbG9nb3V0KGxvZ291dE9rQ2FsbGJhY2s6IG51bGwgfCAoKCkgPT4gdm9pZCkgPSBudWxsKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBIVFRQU2VydmljZVBvc3RSZXF1ZXN0KCd1c2Vycy9sb2dvdXQnKTtcclxuICAgICAgICBcclxuICAgICAgICByZXF1ZXN0LnBhcmFtZXRlcnMgPSB7XHJcbiAgICAgICAgICAgIHRva2VuOiB0aGlzLl90b2tlblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgXHJcbiAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyVXNlckFuZFRva2VuKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAobG9nb3V0T2tDYWxsYmFjayAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgICAgIGxvZ291dE9rQ2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UuZXhlY3V0ZShyZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICBwcml2YXRlIF9jbGVhclVzZXJBbmRUb2tlbigpe1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy51c2VyTmFtZSA9ICcnO1xyXG4gICAgICAgIHRoaXMucGFzc3dvcmQgPSAnJztcclxuICAgICAgICB0aGlzLl9pc0xvZ2dlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3Rva2VuID0gJyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYodGhpcy5odHRwU2VydmljZS5pc0dsb2JhbFBvc3RQYXJhbSgndG9rZW4nKSl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlLmRlbGV0ZUdsb2JhbFBvc3RQYXJhbSgndG9rZW4nKTtcclxuICAgICAgICB9ICAgIFxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { Injectable } from '@angular/core';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
/**
|
|
12
|
+
* Manages adding, removing and manipulating the application views
|
|
13
|
+
*/
|
|
14
|
+
export class ViewsService {
|
|
15
|
+
constructor(componentFactoryResolver) {
|
|
16
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
17
|
+
/**
|
|
18
|
+
* See getter method for docs
|
|
19
|
+
*/
|
|
20
|
+
this._loadedViewClass = null;
|
|
21
|
+
/**
|
|
22
|
+
* An instance of the model that is assigned to the currently loaded view
|
|
23
|
+
*/
|
|
24
|
+
this._loadedViewModel = null;
|
|
25
|
+
/**
|
|
26
|
+
* See setter method for docs
|
|
27
|
+
*/
|
|
28
|
+
this._viewContainerRef = null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Tells if there's any view currently loaded on the application views container
|
|
32
|
+
*/
|
|
33
|
+
get isViewLoaded() {
|
|
34
|
+
return this._loadedViewClass !== null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stores a reference to the visual element that will be used as the container for all the views.
|
|
38
|
+
* This is automatically assigned by the tg-views-container component once it is created.
|
|
39
|
+
*
|
|
40
|
+
* @see ViewsContainerComponent for more information
|
|
41
|
+
*/
|
|
42
|
+
set viewContainerRef(ref) {
|
|
43
|
+
if (ref !== null && this._viewContainerRef !== null) {
|
|
44
|
+
throw new Error('Views container already defined. Only one views container element can exist on an application');
|
|
45
|
+
}
|
|
46
|
+
this._viewContainerRef = ref;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a new view instance with the specified type and add it to the current application views container. Any currently loaded
|
|
50
|
+
* view will be removed
|
|
51
|
+
*
|
|
52
|
+
* Make sure this method is called when all the visual components of the application have been created (ngAfterViewInit)
|
|
53
|
+
*
|
|
54
|
+
* @param view The classname for the view that we want to create and add to the views container (must extend View base class).
|
|
55
|
+
*
|
|
56
|
+
* @return The instance of the newly added and created view.
|
|
57
|
+
*/
|
|
58
|
+
pushView(view) {
|
|
59
|
+
// If a view is already loaded, we will unload it first
|
|
60
|
+
if (this._loadedViewClass !== null) {
|
|
61
|
+
// If the loaded view is the same as the specified one, we will do nothing
|
|
62
|
+
if (this._loadedViewClass === view) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.popView();
|
|
66
|
+
}
|
|
67
|
+
this.verifyViewsContainerExist();
|
|
68
|
+
const factory = this.componentFactoryResolver.resolveComponentFactory(view);
|
|
69
|
+
const componentRef = this._viewContainerRef.createComponent(factory);
|
|
70
|
+
this._loadedViewModel = componentRef.instance.modelClass !== null ? new componentRef.instance.modelClass() : null;
|
|
71
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
72
|
+
this._loadedViewClass = view;
|
|
73
|
+
return componentRef;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the model that is instantiated for the currently active view. (A view model only lives while its view is active)
|
|
77
|
+
* If no view model is assigned to the current view or no view is loaded, an exception will be thrown.
|
|
78
|
+
*
|
|
79
|
+
* @return The current view model instance, which must be casted to the appropiate ViewModel extended class
|
|
80
|
+
*/
|
|
81
|
+
get model() {
|
|
82
|
+
if (this._loadedViewModel === null) {
|
|
83
|
+
throw new Error('No active model. Make sure a view is loaded with an assigned model. Do not access the model until view is initialized (for example on ngAfterViewInit)');
|
|
84
|
+
}
|
|
85
|
+
return this._loadedViewModel;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Delete the currently loaded view from the views container, and leave it empty.
|
|
89
|
+
* If no view is currently loaded, this method will do nothing
|
|
90
|
+
*/
|
|
91
|
+
popView() {
|
|
92
|
+
this.verifyViewsContainerExist();
|
|
93
|
+
if (this._loadedViewClass !== null) {
|
|
94
|
+
this._viewContainerRef.clear();
|
|
95
|
+
}
|
|
96
|
+
this._loadedViewClass = null;
|
|
97
|
+
this._loadedViewModel = null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Auxiliary method to test if the views container instance is available on the application
|
|
101
|
+
*/
|
|
102
|
+
verifyViewsContainerExist() {
|
|
103
|
+
if (this._viewContainerRef === null) {
|
|
104
|
+
throw new Error('Views container not defined. Please declare a <views-container> element in your application');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
ViewsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ViewsService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
109
|
+
ViewsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ViewsService });
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ViewsService, decorators: [{
|
|
111
|
+
type: Injectable
|
|
112
|
+
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vY29udHJvbGxlci92aWV3cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQTBCLFVBQVUsRUFBNEIsTUFBTSxlQUFlLENBQUM7O0FBSzdGOztHQUVHO0FBRUgsTUFBTSxPQUFPLFlBQVk7SUFxQnJCLFlBQTZCLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBbEIvRTs7V0FFRztRQUNLLHFCQUFnQixHQUFzQixJQUFJLENBQUM7UUFHbkQ7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBcUIsSUFBSSxDQUFDO1FBR2xEOztXQUVHO1FBQ0ssc0JBQWlCLEdBQTRCLElBQUksQ0FBQztJQUsxRCxDQUFDO0lBR0Q7O09BRUc7SUFDSCxJQUFJLFlBQVk7UUFFWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsSUFBSSxnQkFBZ0IsQ0FBQyxHQUE0QjtRQUU3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLElBQUksRUFBRTtZQUVqRCxNQUFNLElBQUksS0FBSyxDQUFDLCtGQUErRixDQUFDLENBQUM7U0FDcEg7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFHRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUMsSUFBZ0I7UUFFckIsdURBQXVEO1FBQ3ZELElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRTtZQUVoQywwRUFBMEU7WUFDMUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO2dCQUVoQyxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDbEI7UUFFRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUVqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUUsTUFBTSxZQUFZLEdBQUksSUFBSSxDQUFDLGlCQUFzQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFM0gsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFN0IsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsSUFBSSxLQUFLO1FBRUwsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBRWhDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0pBQXdKLENBQUMsQ0FBQztTQUM3SztRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxPQUFPO1FBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFO1lBRS9CLElBQUksQ0FBQyxpQkFBc0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4RDtRQUVELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBR0Q7O09BRUc7SUFDSyx5QkFBeUI7UUFFN0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBRWpDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkZBQTZGLENBQUMsQ0FBQztTQUNsSDtJQUNMLENBQUM7O3lHQXhJUSxZQUFZOzZHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFR5cGUsIFZpZXdDb250YWluZXJSZWYsIEluamVjdGFibGUsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBWaWV3IH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9WaWV3JztcclxuaW1wb3J0IHsgVmlld01vZGVsIH0gZnJvbSAnLi4vbW9kZWwvY2xhc3Nlcy9WaWV3TW9kZWwnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIGFkZGluZywgcmVtb3ZpbmcgYW5kIG1hbmlwdWxhdGluZyB0aGUgYXBwbGljYXRpb24gdmlld3NcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFZpZXdzU2VydmljZSB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VlIGdldHRlciBtZXRob2QgZm9yIGRvY3NcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbG9hZGVkVmlld0NsYXNzOiBUeXBlPFZpZXc+IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhlIGN1cnJlbnRseSBsb2FkZWQgdmlld1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9sb2FkZWRWaWV3TW9kZWw6IFZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlZSBzZXR0ZXIgbWV0aG9kIGZvciBkb2NzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGVyZSdzIGFueSB2aWV3IGN1cnJlbnRseSBsb2FkZWQgb24gdGhlIGFwcGxpY2F0aW9uIHZpZXdzIGNvbnRhaW5lclxyXG4gICAgICovXHJcbiAgICBnZXQgaXNWaWV3TG9hZGVkKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkVmlld0NsYXNzICE9PSBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlcyBhIHJlZmVyZW5jZSB0byB0aGUgdmlzdWFsIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGNvbnRhaW5lciBmb3IgYWxsIHRoZSB2aWV3cy5cclxuICAgICAqIFRoaXMgaXMgYXV0b21hdGljYWxseSBhc3NpZ25lZCBieSB0aGUgdGctdmlld3MtY29udGFpbmVyIGNvbXBvbmVudCBvbmNlIGl0IGlzIGNyZWF0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBWaWV3c0NvbnRhaW5lckNvbXBvbmVudCBmb3IgbW9yZSBpbmZvcm1hdGlvblxyXG4gICAgICovXHJcbiAgICBzZXQgdmlld0NvbnRhaW5lclJlZihyZWY6IFZpZXdDb250YWluZXJSZWYgfCBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmIChyZWYgIT09IG51bGwgJiYgdGhpcy5fdmlld0NvbnRhaW5lclJlZiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWaWV3cyBjb250YWluZXIgYWxyZWFkeSBkZWZpbmVkLiBPbmx5IG9uZSB2aWV3cyBjb250YWluZXIgZWxlbWVudCBjYW4gZXhpc3Qgb24gYW4gYXBwbGljYXRpb24nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYgPSByZWY7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIGEgbmV3IHZpZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIGFkZCBpdCB0byB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiB2aWV3cyBjb250YWluZXIuIEFueSBjdXJyZW50bHkgbG9hZGVkIFxyXG4gICAgICogdmlldyB3aWxsIGJlIHJlbW92ZWRcclxuICAgICAqXHJcbiAgICAgKiBNYWtlIHN1cmUgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYWxsIHRoZSB2aXN1YWwgY29tcG9uZW50cyBvZiB0aGUgYXBwbGljYXRpb24gaGF2ZSBiZWVuIGNyZWF0ZWQgKG5nQWZ0ZXJWaWV3SW5pdClcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmlldyBUaGUgY2xhc3NuYW1lIGZvciB0aGUgdmlldyB0aGF0IHdlIHdhbnQgdG8gY3JlYXRlIGFuZCBhZGQgdG8gdGhlIHZpZXdzIGNvbnRhaW5lciAobXVzdCBleHRlbmQgVmlldyBiYXNlIGNsYXNzKS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIFRoZSBpbnN0YW5jZSBvZiB0aGUgbmV3bHkgYWRkZWQgYW5kIGNyZWF0ZWQgdmlldy4gXHJcbiAgICAgKi9cclxuICAgIHB1c2hWaWV3KHZpZXc6IFR5cGU8Vmlldz4pIHtcclxuXHJcbiAgICAgICAgLy8gSWYgYSB2aWV3IGlzIGFscmVhZHkgbG9hZGVkLCB3ZSB3aWxsIHVubG9hZCBpdCBmaXJzdFxyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWRWaWV3Q2xhc3MgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIHRoZSBsb2FkZWQgdmlldyBpcyB0aGUgc2FtZSBhcyB0aGUgc3BlY2lmaWVkIG9uZSwgd2Ugd2lsbCBkbyBub3RoaW5nXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWRWaWV3Q2xhc3MgPT09IHZpZXcpIHtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9wVmlldygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy52ZXJpZnlWaWV3c0NvbnRhaW5lckV4aXN0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHZpZXcpO1xyXG5cclxuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSAodGhpcy5fdmlld0NvbnRhaW5lclJlZiBhcyBWaWV3Q29udGFpbmVyUmVmKS5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2xvYWRlZFZpZXdNb2RlbCA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZS5tb2RlbENsYXNzICE9PSBudWxsID8gbmV3IChjb21wb25lbnRSZWYuaW5zdGFuY2UubW9kZWxDbGFzcyBhcyBhbnkpKCkgOiBudWxsO1xyXG5cclxuICAgICAgICBjb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgICAgICB0aGlzLl9sb2FkZWRWaWV3Q2xhc3MgPSB2aWV3O1xyXG5cclxuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldCB0aGUgbW9kZWwgdGhhdCBpcyBpbnN0YW50aWF0ZWQgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIHZpZXcuIChBIHZpZXcgbW9kZWwgb25seSBsaXZlcyB3aGlsZSBpdHMgdmlldyBpcyBhY3RpdmUpXHJcbiAgICAgKiBJZiBubyB2aWV3IG1vZGVsIGlzIGFzc2lnbmVkIHRvIHRoZSBjdXJyZW50IHZpZXcgb3Igbm8gdmlldyBpcyBsb2FkZWQsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIFRoZSBjdXJyZW50IHZpZXcgbW9kZWwgaW5zdGFuY2UsIHdoaWNoIG11c3QgYmUgY2FzdGVkIHRvIHRoZSBhcHByb3BpYXRlIFZpZXdNb2RlbCBleHRlbmRlZCBjbGFzc1xyXG4gICAgICovXHJcbiAgICBnZXQgbW9kZWwoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWRWaWV3TW9kZWwgPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYWN0aXZlIG1vZGVsLiBNYWtlIHN1cmUgYSB2aWV3IGlzIGxvYWRlZCB3aXRoIGFuIGFzc2lnbmVkIG1vZGVsLiBEbyBub3QgYWNjZXNzIHRoZSBtb2RlbCB1bnRpbCB2aWV3IGlzIGluaXRpYWxpemVkIChmb3IgZXhhbXBsZSBvbiBuZ0FmdGVyVmlld0luaXQpJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGVkVmlld01vZGVsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGV0ZSB0aGUgY3VycmVudGx5IGxvYWRlZCB2aWV3IGZyb20gdGhlIHZpZXdzIGNvbnRhaW5lciwgYW5kIGxlYXZlIGl0IGVtcHR5LlxyXG4gICAgICogSWYgbm8gdmlldyBpcyBjdXJyZW50bHkgbG9hZGVkLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcG9wVmlldygpIHtcclxuXHJcbiAgICAgICAgdGhpcy52ZXJpZnlWaWV3c0NvbnRhaW5lckV4aXN0KCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkZWRWaWV3Q2xhc3MgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICh0aGlzLl92aWV3Q29udGFpbmVyUmVmIGFzIFZpZXdDb250YWluZXJSZWYpLmNsZWFyKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9sb2FkZWRWaWV3Q2xhc3MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xvYWRlZFZpZXdNb2RlbCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQXV4aWxpYXJ5IG1ldGhvZCB0byB0ZXN0IGlmIHRoZSB2aWV3cyBjb250YWluZXIgaW5zdGFuY2UgaXMgYXZhaWxhYmxlIG9uIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHZlcmlmeVZpZXdzQ29udGFpbmVyRXhpc3QoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl92aWV3Q29udGFpbmVyUmVmID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZpZXdzIGNvbnRhaW5lciBub3QgZGVmaW5lZC4gUGxlYXNlIGRlY2xhcmUgYSA8dmlld3MtY29udGFpbmVyPiBlbGVtZW50IGluIHlvdXIgYXBwbGljYXRpb24nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { NgModule } from '@angular/core';
|
|
10
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
11
|
+
import { MatInputModule } from '@angular/material/input';
|
|
12
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
13
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
14
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
15
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
16
|
+
import { BusyStateBaseComponent } from '../../view/components/busy-state-base/busy-state-base.component';
|
|
17
|
+
import { DialogService } from '../../controller/dialog.service';
|
|
18
|
+
import { LocalizationService } from '../../controller/localization.service';
|
|
19
|
+
import { HTTPService } from '../../controller/http.service';
|
|
20
|
+
import { NotificationService } from '../../controller/notification.service';
|
|
21
|
+
import { UserService } from '../../controller/user.service';
|
|
22
|
+
import { ViewsService } from '../../controller/views.service';
|
|
23
|
+
import { ViewsContainerComponent } from '../../view/components/views-container/views-container.component';
|
|
24
|
+
import { ButtonImageComponent } from '../../view/components/button-image/button-image.component';
|
|
25
|
+
import { ButtonContainerComponent } from '../../view/components/button-container/button-container.component';
|
|
26
|
+
import { DialogErrorComponent } from '../../view/components/dialog-error/dialog-error.component';
|
|
27
|
+
import { DialogSingleOptionComponent } from '../../view/components/dialog-single-option/dialog-single-option.component';
|
|
28
|
+
import { DialogTwoOptionComponent } from '../../view/components/dialog-two-option/dialog-two-option.component';
|
|
29
|
+
import { DialogSingleSelectionListComponent } from '../../view/components/dialog-single-selection-list/dialog-single-selection-list.component';
|
|
30
|
+
import { DialogMultipleOptionComponent } from '../../view/components/dialog-multiple-option/dialog-multiple-option.component';
|
|
31
|
+
import { BrowserService } from '../../controller/browser.service';
|
|
32
|
+
import { ElementCreatedDirective } from '../../view/directives/ElementCreatedDirective';
|
|
33
|
+
import { ElementDestroyedDirective } from '../../view/directives/ElementDestroyedDirective';
|
|
34
|
+
import { AutoFocusOnDisplayDirective } from '../../view/directives/AutoFocusOnDisplayDirective';
|
|
35
|
+
import { AutoSelectTextOnFocusDirective } from '../../view/directives/AutoSelectTextOnFocusDirective';
|
|
36
|
+
import * as i0 from "@angular/core";
|
|
37
|
+
/**
|
|
38
|
+
* This file contains the root module that contains all the library declarations and exports.
|
|
39
|
+
*/
|
|
40
|
+
export class TurboGuiAngularModule {
|
|
41
|
+
}
|
|
42
|
+
TurboGuiAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TurboGuiAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
43
|
+
TurboGuiAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TurboGuiAngularModule, declarations: [BusyStateBaseComponent,
|
|
44
|
+
DialogErrorComponent,
|
|
45
|
+
DialogSingleOptionComponent,
|
|
46
|
+
DialogTwoOptionComponent,
|
|
47
|
+
DialogMultipleOptionComponent,
|
|
48
|
+
DialogSingleSelectionListComponent,
|
|
49
|
+
ViewsContainerComponent,
|
|
50
|
+
ButtonImageComponent,
|
|
51
|
+
ButtonContainerComponent,
|
|
52
|
+
ElementCreatedDirective,
|
|
53
|
+
ElementDestroyedDirective,
|
|
54
|
+
AutoFocusOnDisplayDirective,
|
|
55
|
+
AutoSelectTextOnFocusDirective], imports: [MatDialogModule,
|
|
56
|
+
MatSnackBarModule,
|
|
57
|
+
MatInputModule,
|
|
58
|
+
MatButtonModule,
|
|
59
|
+
MatFormFieldModule,
|
|
60
|
+
BrowserAnimationsModule], exports: [BusyStateBaseComponent,
|
|
61
|
+
ViewsContainerComponent,
|
|
62
|
+
ButtonImageComponent,
|
|
63
|
+
ButtonContainerComponent,
|
|
64
|
+
DialogErrorComponent,
|
|
65
|
+
DialogSingleOptionComponent,
|
|
66
|
+
DialogTwoOptionComponent,
|
|
67
|
+
DialogMultipleOptionComponent,
|
|
68
|
+
DialogSingleSelectionListComponent,
|
|
69
|
+
ElementCreatedDirective,
|
|
70
|
+
ElementDestroyedDirective,
|
|
71
|
+
AutoFocusOnDisplayDirective,
|
|
72
|
+
AutoSelectTextOnFocusDirective] });
|
|
73
|
+
TurboGuiAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TurboGuiAngularModule, providers: [
|
|
74
|
+
DialogService,
|
|
75
|
+
LocalizationService,
|
|
76
|
+
HTTPService,
|
|
77
|
+
NotificationService,
|
|
78
|
+
UserService,
|
|
79
|
+
ViewsService,
|
|
80
|
+
BrowserService
|
|
81
|
+
], imports: [[
|
|
82
|
+
MatDialogModule,
|
|
83
|
+
MatSnackBarModule,
|
|
84
|
+
MatInputModule,
|
|
85
|
+
MatButtonModule,
|
|
86
|
+
MatFormFieldModule,
|
|
87
|
+
BrowserAnimationsModule
|
|
88
|
+
]] });
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TurboGuiAngularModule, decorators: [{
|
|
90
|
+
type: NgModule,
|
|
91
|
+
args: [{
|
|
92
|
+
imports: [
|
|
93
|
+
MatDialogModule,
|
|
94
|
+
MatSnackBarModule,
|
|
95
|
+
MatInputModule,
|
|
96
|
+
MatButtonModule,
|
|
97
|
+
MatFormFieldModule,
|
|
98
|
+
BrowserAnimationsModule
|
|
99
|
+
],
|
|
100
|
+
declarations: [
|
|
101
|
+
BusyStateBaseComponent,
|
|
102
|
+
DialogErrorComponent,
|
|
103
|
+
DialogSingleOptionComponent,
|
|
104
|
+
DialogTwoOptionComponent,
|
|
105
|
+
DialogMultipleOptionComponent,
|
|
106
|
+
DialogSingleSelectionListComponent,
|
|
107
|
+
ViewsContainerComponent,
|
|
108
|
+
ButtonImageComponent,
|
|
109
|
+
ButtonContainerComponent,
|
|
110
|
+
ElementCreatedDirective,
|
|
111
|
+
ElementDestroyedDirective,
|
|
112
|
+
AutoFocusOnDisplayDirective,
|
|
113
|
+
AutoSelectTextOnFocusDirective
|
|
114
|
+
],
|
|
115
|
+
// Globally available singleton services are added here
|
|
116
|
+
providers: [
|
|
117
|
+
DialogService,
|
|
118
|
+
LocalizationService,
|
|
119
|
+
HTTPService,
|
|
120
|
+
NotificationService,
|
|
121
|
+
UserService,
|
|
122
|
+
ViewsService,
|
|
123
|
+
BrowserService
|
|
124
|
+
],
|
|
125
|
+
exports: [
|
|
126
|
+
BusyStateBaseComponent,
|
|
127
|
+
ViewsContainerComponent,
|
|
128
|
+
ButtonImageComponent,
|
|
129
|
+
ButtonContainerComponent,
|
|
130
|
+
DialogErrorComponent,
|
|
131
|
+
DialogSingleOptionComponent,
|
|
132
|
+
DialogTwoOptionComponent,
|
|
133
|
+
DialogMultipleOptionComponent,
|
|
134
|
+
DialogSingleSelectionListComponent,
|
|
135
|
+
ElementCreatedDirective,
|
|
136
|
+
ElementDestroyedDirective,
|
|
137
|
+
AutoFocusOnDisplayDirective,
|
|
138
|
+
AutoSelectTextOnFocusDirective
|
|
139
|
+
]
|
|
140
|
+
}]
|
|
141
|
+
}] });
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVyYm9ndWktYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL21vZGVsL21vZHVsZXMvdHVyYm9ndWktYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDekcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJFQUEyRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDJGQUEyRixDQUFDO0FBQy9JLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLCtFQUErRSxDQUFDO0FBQzlILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNoRyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7QUFHdEc7O0dBRUc7QUF3REgsTUFBTSxPQUFPLHFCQUFxQjs7a0hBQXJCLHFCQUFxQjttSEFBckIscUJBQXFCLGlCQTNDMUIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLDZCQUE2QjtRQUM3QixrQ0FBa0M7UUFDbEMsdUJBQXVCO1FBQ3ZCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsOEJBQThCLGFBckI5QixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxlQUFlO1FBQ2Ysa0JBQWtCO1FBQ2xCLHVCQUF1QixhQStCdkIsc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0Isd0JBQXdCO1FBQ3hCLDZCQUE2QjtRQUM3QixrQ0FBa0M7UUFDbEMsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QiwyQkFBMkI7UUFDM0IsOEJBQThCO21IQUl6QixxQkFBcUIsYUEzQm5CO1FBQ1AsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQixXQUFXO1FBQ1gsbUJBQW1CO1FBQ25CLFdBQVc7UUFDWCxZQUFZO1FBQ1osY0FBYztLQUNqQixZQWxDUTtZQUNMLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWU7WUFDZixrQkFBa0I7WUFDbEIsdUJBQXVCO1NBQzFCOzJGQThDUSxxQkFBcUI7a0JBdkRqQyxRQUFRO21CQUFDO29CQUVOLE9BQU8sRUFBRTt3QkFDTCxlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3FCQUMxQjtvQkFFRCxZQUFZLEVBQUU7d0JBQ1Ysc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4Qiw2QkFBNkI7d0JBQzdCLGtDQUFrQzt3QkFDbEMsdUJBQXVCO3dCQUN2QixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3FCQUNqQztvQkFFRCx1REFBdUQ7b0JBQ3ZELFNBQVMsRUFBRTt3QkFDUCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixjQUFjO3FCQUNqQjtvQkFFRCxPQUFPLEVBQUU7d0JBQ0wsc0JBQXNCO3dCQUN0Qix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixvQkFBb0I7d0JBQ3BCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4Qiw2QkFBNkI7d0JBQzdCLGtDQUFrQzt3QkFDbEMsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLDJCQUEyQjt3QkFDM0IsOEJBQThCO3FCQUNqQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xuICpcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250cm9sbGVyL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250cm9sbGVyL3VzZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250cm9sbGVyL3ZpZXdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3c0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ZpZXcvY29tcG9uZW50cy92aWV3cy1jb250YWluZXIvdmlld3MtY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJ1dHRvbkltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9jb21wb25lbnRzL2J1dHRvbi1pbWFnZS9idXR0b24taW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ZpZXcvY29tcG9uZW50cy9idXR0b24tY29udGFpbmVyL2J1dHRvbi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ0Vycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1lcnJvci9kaWFsb2ctZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ1NpbmdsZU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctc2luZ2xlLW9wdGlvbi9kaWFsb2ctc2luZ2xlLW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy10d28tb3B0aW9uL2RpYWxvZy10d28tb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dTaW5nbGVTZWxlY3Rpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1zaW5nbGUtc2VsZWN0aW9uLWxpc3QvZGlhbG9nLXNpbmdsZS1zZWxlY3Rpb24tbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dNdWx0aXBsZU9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctbXVsdGlwbGUtb3B0aW9uL2RpYWxvZy1tdWx0aXBsZS1vcHRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb250cm9sbGVyL2Jyb3dzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRDcmVhdGVkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdmlldy9kaXJlY3RpdmVzL0VsZW1lbnRDcmVhdGVkRGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRWxlbWVudERlc3Ryb3llZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3ZpZXcvZGlyZWN0aXZlcy9FbGVtZW50RGVzdHJveWVkRGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdmlldy9kaXJlY3RpdmVzL0F1dG9Gb2N1c09uRGlzcGxheURpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEF1dG9TZWxlY3RUZXh0T25Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3ZpZXcvZGlyZWN0aXZlcy9BdXRvU2VsZWN0VGV4dE9uRm9jdXNEaXJlY3RpdmUnO1xuXG5cbi8qKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSByb290IG1vZHVsZSB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgbGlicmFyeSBkZWNsYXJhdGlvbnMgYW5kIGV4cG9ydHMuXG4gKi9cbkBOZ01vZHVsZSh7XG5cbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgTWF0U25hY2tCYXJNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGVcbiAgICBdLFxuXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ0Vycm9yQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dTaW5nbGVPcHRpb25Db21wb25lbnQsXG4gICAgICAgIERpYWxvZ1R3b09wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nTXVsdGlwbGVPcHRpb25Db21wb25lbnQsXG4gICAgICAgIERpYWxvZ1NpbmdsZVNlbGVjdGlvbkxpc3RDb21wb25lbnQsXG4gICAgICAgIFZpZXdzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25JbWFnZUNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29udGFpbmVyQ29tcG9uZW50LFxuICAgICAgICBFbGVtZW50Q3JlYXRlZERpcmVjdGl2ZSxcbiAgICAgICAgRWxlbWVudERlc3Ryb3llZERpcmVjdGl2ZSxcbiAgICAgICAgQXV0b0ZvY3VzT25EaXNwbGF5RGlyZWN0aXZlLFxuICAgICAgICBBdXRvU2VsZWN0VGV4dE9uRm9jdXNEaXJlY3RpdmVcbiAgICBdLFxuXG4gICAgLy8gR2xvYmFsbHkgYXZhaWxhYmxlIHNpbmdsZXRvbiBzZXJ2aWNlcyBhcmUgYWRkZWQgaGVyZVxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICAgICAgICBIVFRQU2VydmljZSxcbiAgICAgICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgVXNlclNlcnZpY2UsXG4gICAgICAgIFZpZXdzU2VydmljZSxcbiAgICAgICAgQnJvd3NlclNlcnZpY2VcbiAgICBdLFxuXG4gICAgZXhwb3J0czogW1xuICAgICAgICBCdXN5U3RhdGVCYXNlQ29tcG9uZW50LFxuICAgICAgICBWaWV3c0NvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uSW1hZ2VDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkNvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRXJyb3JDb21wb25lbnQsXG4gICAgICAgIERpYWxvZ1NpbmdsZU9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nVHdvT3B0aW9uQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dNdWx0aXBsZU9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nU2luZ2xlU2VsZWN0aW9uTGlzdENvbXBvbmVudCxcbiAgICAgICAgRWxlbWVudENyZWF0ZWREaXJlY3RpdmUsXG4gICAgICAgIEVsZW1lbnREZXN0cm95ZWREaXJlY3RpdmUsXG4gICAgICAgIEF1dG9Gb2N1c09uRGlzcGxheURpcmVjdGl2ZSxcbiAgICAgICAgQXV0b1NlbGVjdFRleHRPbkZvY3VzRGlyZWN0aXZlXG4gICAgXVxufSlcblxuZXhwb3J0IGNsYXNzIFR1cmJvR3VpQW5ndWxhck1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { Injectable } from '@angular/core';
|
|
10
|
+
import { trigger, animate, transition, style } from '@angular/animations';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* Fade animations
|
|
14
|
+
*/
|
|
15
|
+
export class FadeAnimationClass {
|
|
16
|
+
/**
|
|
17
|
+
* Get a custom trigger to create fade animations when components are added or removed from the application
|
|
18
|
+
*
|
|
19
|
+
* @param triggerName The name for the trigger we want to create
|
|
20
|
+
* @param enter The time and easing that we want to use for the enter state
|
|
21
|
+
* @param leave The time and easing that we want to use for the leave state
|
|
22
|
+
*/
|
|
23
|
+
static getTrigger(triggerName, enter = '1s ease', leave = '0s ease') {
|
|
24
|
+
return trigger(triggerName, [
|
|
25
|
+
transition(':enter', [style({ opacity: 0 }), animate(enter)]),
|
|
26
|
+
transition(':leave', [style({ opacity: 1 }), animate(leave, style({ opacity: 0 }))])
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
FadeAnimationClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FadeAnimationClass, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
FadeAnimationClass.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FadeAnimationClass });
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FadeAnimationClass, decorators: [{
|
|
33
|
+
type: Injectable
|
|
34
|
+
}] });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFkZS5hbmltYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL3ZpZXcvYW5pbWF0aW9ucy9mYWRlLmFuaW1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFFOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQW1CLEVBQUUsS0FBSyxHQUFHLFNBQVMsRUFBRSxLQUFLLEdBQUcsU0FBUztRQUV2RSxPQUFPLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0QsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hGLENBQUMsQ0FBQztJQUNuQyxDQUFDOzsrR0FmUSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBhbmltYXRlLCB0cmFuc2l0aW9uLCBzdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBGYWRlIGFuaW1hdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZhZGVBbmltYXRpb25DbGFzcyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXQgYSBjdXN0b20gdHJpZ2dlciB0byBjcmVhdGUgZmFkZSBhbmltYXRpb25zIHdoZW4gY29tcG9uZW50cyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB0cmlnZ2VyTmFtZSBUaGUgbmFtZSBmb3IgdGhlIHRyaWdnZXIgd2Ugd2FudCB0byBjcmVhdGVcclxuICAgICAqIEBwYXJhbSBlbnRlciBUaGUgdGltZSBhbmQgZWFzaW5nIHRoYXQgd2Ugd2FudCB0byB1c2UgZm9yIHRoZSBlbnRlciBzdGF0ZVxyXG4gICAgICogQHBhcmFtIGxlYXZlIFRoZSB0aW1lIGFuZCBlYXNpbmcgdGhhdCB3ZSB3YW50IHRvIHVzZSBmb3IgdGhlIGxlYXZlIHN0YXRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBnZXRUcmlnZ2VyKHRyaWdnZXJOYW1lOiBzdHJpbmcsIGVudGVyID0gJzFzIGVhc2UnLCBsZWF2ZSA9ICcwcyBlYXNlJykge1xyXG5cclxuICAgICAgICByZXR1cm4gdHJpZ2dlcih0cmlnZ2VyTmFtZSwgW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHtvcGFjaXR5OiAwfSksIGFuaW1hdGUoZW50ZXIpXSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbc3R5bGUoe29wYWNpdHk6IDF9KSwgYW5pbWF0ZShsZWF2ZSwgc3R5bGUoe29wYWNpdHk6IDB9KSldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TurboGUI is A library that helps with the most common and generic UI elements and functionalities
|
|
3
|
+
*
|
|
4
|
+
* Website : -> http://www.turbogui.org
|
|
5
|
+
* License : -> Licensed under the Apache License, Version 2.0. You may not use this file except in compliance with the License.
|
|
6
|
+
* License Url : -> http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
* CopyRight : -> Copyright 2018 Edertone Advanded Solutions. https://www.edertone.com
|
|
8
|
+
*/
|
|
9
|
+
import { Component, HostBinding } from '@angular/core';
|
|
10
|
+
import { FadeAnimationClass } from '../../animations/fade.animation';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
/**
|
|
13
|
+
* This component is used by turboGUI angular library to show the busy state to the user.
|
|
14
|
+
* It is used to block all the user input and progressively shows a busy cursor to notify that the application
|
|
15
|
+
* is waiting for something.
|
|
16
|
+
*
|
|
17
|
+
* We can (should) override this component with our own one to adapt its visual appearance to our application.
|
|
18
|
+
* We can then set dialogService.busyStateComponentClass to our component class at the application start to to
|
|
19
|
+
* override the default one.
|
|
20
|
+
*/
|
|
21
|
+
export class BusyStateBaseComponent {
|
|
22
|
+
constructor() {
|
|
23
|
+
/**
|
|
24
|
+
* This is used to attach the fade animation directly to this component so it fades in and out when created and removed from the app
|
|
25
|
+
*/
|
|
26
|
+
this.busyStateBaseFade = true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
BusyStateBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BusyStateBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
BusyStateBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: BusyStateBaseComponent, selector: "tg-busy-state-base", host: { properties: { "@busyStateBaseFade": "this.busyStateBaseFade" } }, ngImport: i0, template: "<div class=\"darkBg\">\r\n\r\n</div>\r\n\r\n<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(1 1)\" stroke-width=\"1\">\r\n <circle stroke-opacity=\".2\" cx=\"18\" cy=\"18\" r=\"18\"/>\r\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\r\n <animateTransform\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 18 18\"\r\n to=\"360 18 18\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </g>\r\n </g>\r\n</svg>\r\n", styles: [":host{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;z-index:999999999}.darkBg{position:absolute;cursor:progress;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:#00000096;animation-name:bgfadein;animation-duration:30s;animation-timing-function:ease}svg{z-index:5000;width:40%;height:40%;max-width:130px;max-height:130px;animation-name:loadingfadein;animation-duration:3s;animation-timing-function:ease-in}@keyframes loadingfadein{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes bgfadein{0%{opacity:0}4%{opacity:0}14%{opacity:.2}35%{opacity:.5}to{opacity:1}}\n"], animations: [FadeAnimationClass.getTrigger('busyStateBaseFade', '1s ease', '400ms ease')] });
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: BusyStateBaseComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ selector: 'tg-busy-state-base', animations: [FadeAnimationClass.getTrigger('busyStateBaseFade', '1s ease', '400ms ease')], template: "<div class=\"darkBg\">\r\n\r\n</div>\r\n\r\n<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#fff\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(1 1)\" stroke-width=\"1\">\r\n <circle stroke-opacity=\".2\" cx=\"18\" cy=\"18\" r=\"18\"/>\r\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\r\n <animateTransform\r\n attributeName=\"transform\"\r\n type=\"rotate\"\r\n from=\"0 18 18\"\r\n to=\"360 18 18\"\r\n dur=\"1s\"\r\n repeatCount=\"indefinite\"/>\r\n </path>\r\n </g>\r\n </g>\r\n</svg>\r\n", styles: [":host{position:fixed;inset:0;display:flex;justify-content:center;align-items:center;z-index:999999999}.darkBg{position:absolute;cursor:progress;width:100%;height:100%;display:flex;justify-content:center;align-items:center;background-color:#00000096;animation-name:bgfadein;animation-duration:30s;animation-timing-function:ease}svg{z-index:5000;width:40%;height:40%;max-width:130px;max-height:130px;animation-name:loadingfadein;animation-duration:3s;animation-timing-function:ease-in}@keyframes loadingfadein{0%{opacity:0}25%{opacity:0}to{opacity:1}}@keyframes bgfadein{0%{opacity:0}4%{opacity:0}14%{opacity:.2}35%{opacity:.5}to{opacity:1}}\n"] }]
|
|
34
|
+
}], propDecorators: { busyStateBaseFade: [{
|
|
35
|
+
type: HostBinding,
|
|
36
|
+
args: ['@busyStateBaseFade']
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzeS1zdGF0ZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvYnVzeS1zdGF0ZS1iYXNlL2J1c3ktc3RhdGUtYmFzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBR3JFOzs7Ozs7OztHQVFHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQVdJOztXQUVHO1FBQ2dDLHNCQUFpQixHQUFHLElBQUksQ0FBQztLQUMvRDs7bUhBUFksc0JBQXNCO3VHQUF0QixzQkFBc0Isb0lDOUJuQyxpdkJBb0JBLDZwQkRLYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7MkZBSzlFLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FFbEIsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDOzhCQVdwRCxpQkFBaUI7c0JBQW5ELFdBQVc7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGYWRlQW5pbWF0aW9uQ2xhc3MgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2ZhZGUuYW5pbWF0aW9uJztcclxuXHJcblxyXG4vKipcclxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCBieSB0dXJib0dVSSBhbmd1bGFyIGxpYnJhcnkgdG8gc2hvdyB0aGUgYnVzeSBzdGF0ZSB0byB0aGUgdXNlci5cclxuICogSXQgaXMgdXNlZCB0byBibG9jayBhbGwgdGhlIHVzZXIgaW5wdXQgYW5kIHByb2dyZXNzaXZlbHkgc2hvd3MgYSBidXN5IGN1cnNvciB0byBub3RpZnkgdGhhdCB0aGUgYXBwbGljYXRpb25cclxuICogaXMgd2FpdGluZyBmb3Igc29tZXRoaW5nLlxyXG4gKlxyXG4gKiBXZSBjYW4gKHNob3VsZCkgb3ZlcnJpZGUgdGhpcyBjb21wb25lbnQgd2l0aCBvdXIgb3duIG9uZSB0byBhZGFwdCBpdHMgdmlzdWFsIGFwcGVhcmFuY2UgdG8gb3VyIGFwcGxpY2F0aW9uLlxyXG4gKiBXZSBjYW4gdGhlbiBzZXQgZGlhbG9nU2VydmljZS5idXN5U3RhdGVDb21wb25lbnRDbGFzcyB0byBvdXIgY29tcG9uZW50IGNsYXNzIGF0IHRoZSBhcHBsaWNhdGlvbiBzdGFydCB0byB0b1xyXG4gKiBvdmVycmlkZSB0aGUgZGVmYXVsdCBvbmUuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWJ1c3ktc3RhdGUtYmFzZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2J1c3ktc3RhdGUtYmFzZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgYW5pbWF0aW9uczogW0ZhZGVBbmltYXRpb25DbGFzcy5nZXRUcmlnZ2VyKCdidXN5U3RhdGVCYXNlRmFkZScsICcxcyBlYXNlJywgJzQwMG1zIGVhc2UnKV0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnVzeS1zdGF0ZS1iYXNlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQnVzeVN0YXRlQmFzZUNvbXBvbmVudCB7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBpcyB1c2VkIHRvIGF0dGFjaCB0aGUgZmFkZSBhbmltYXRpb24gZGlyZWN0bHkgdG8gdGhpcyBjb21wb25lbnQgc28gaXQgZmFkZXMgaW4gYW5kIG91dCB3aGVuIGNyZWF0ZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgYXBwXHJcbiAgICAgKi9cclxuICAgIEBIb3N0QmluZGluZygnQGJ1c3lTdGF0ZUJhc2VGYWRlJykgYnVzeVN0YXRlQmFzZUZhZGUgPSB0cnVlO1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXJrQmdcIj5cclxuXHJcbjwvZGl2PlxyXG5cclxuPHN2ZyB3aWR0aD1cIjM4XCIgaGVpZ2h0PVwiMzhcIiB2aWV3Qm94PVwiMCAwIDM4IDM4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0cm9rZT1cIiNmZmZcIj5cclxuICAgIDxnIGZpbGw9XCJub25lXCIgZmlsbC1ydWxlPVwiZXZlbm9kZFwiPlxyXG4gICAgICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxIDEpXCIgc3Ryb2tlLXdpZHRoPVwiMVwiPlxyXG4gICAgICAgICAgICA8Y2lyY2xlIHN0cm9rZS1vcGFjaXR5PVwiLjJcIiBjeD1cIjE4XCIgY3k9XCIxOFwiIHI9XCIxOFwiLz5cclxuICAgICAgICAgICAgPHBhdGggZD1cIk0zNiAxOGMwLTkuOTQtOC4wNi0xOC0xOC0xOFwiPlxyXG4gICAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm1cclxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicm90YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBmcm9tPVwiMCAxOCAxOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG89XCIzNjAgMTggMThcIlxyXG4gICAgICAgICAgICAgICAgICAgIGR1cj1cIjFzXCJcclxuICAgICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+XHJcbiAgICAgICAgICAgIDwvcGF0aD5cclxuICAgICAgICA8L2c+XHJcbiAgICA8L2c+XHJcbjwvc3ZnPlxyXG4iXX0=
|