@sumaris-net/ngx-components 1.8.1 → 1.9.2
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/bundles/sumaris-net.ngx-components.umd.js +208 -197
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +5 -1
- package/esm2015/public_api.js +2 -1
- package/esm2015/src/app/admin/users/list/users.js +5 -22
- package/esm2015/src/app/core/home/home.js +3 -3
- package/esm2015/src/app/core/register/confirm/confirm.js +1 -1
- package/esm2015/src/app/core/services/account.service.js +38 -27
- package/esm2015/src/app/core/services/local-settings.service.js +18 -14
- package/esm2015/src/app/core/services/model/settings.model.js +1 -1
- package/esm2015/src/app/core/services/platform.service.js +35 -31
- package/esm2015/src/app/core/table/memory-table.class.js +2 -7
- package/esm2015/src/app/core/table/table.class.js +21 -24
- package/esm2015/src/app/shared/directives/autofocus.directive.js +15 -24
- package/esm2015/src/app/shared/platforms.js +36 -0
- package/esm2015/src/app/shared/services/progress-bar.service.js +1 -1
- package/esm2015/src/app/social/list/user-events.table.js +3 -8
- package/fesm2015/sumaris-net.ngx-components.js +162 -136
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/src/app/admin/users/list/users.d.ts +1 -12
- package/src/app/core/services/account.service.d.ts +2 -0
- package/src/app/core/services/local-settings.service.d.ts +0 -2
- package/src/app/core/services/model/settings.model.d.ts +0 -1
- package/src/app/core/services/platform.service.d.ts +8 -5
- package/src/app/core/table/memory-table.class.d.ts +0 -1
- package/src/app/core/table/table.class.d.ts +8 -10
- package/src/app/shared/directives/autofocus.directive.d.ts +4 -5
- package/src/app/shared/platforms.d.ts +13 -0
- package/src/app/social/list/user-events.table.d.ts +0 -1
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -992,7 +992,7 @@ class MatAutocompleteConfigHolder {
|
|
|
992
992
|
}
|
|
993
993
|
}
|
|
994
994
|
const noop$8 = (_) => { };
|
|
995
|
-
const ɵ0$
|
|
995
|
+
const ɵ0$c = noop$8;
|
|
996
996
|
class MatAutocompleteField {
|
|
997
997
|
constructor(cd, formGroupDir) {
|
|
998
998
|
this.cd = cd;
|
|
@@ -3918,26 +3918,56 @@ SharedPipesModule.decorators = [
|
|
|
3918
3918
|
},] }
|
|
3919
3919
|
];
|
|
3920
3920
|
|
|
3921
|
+
/* ---
|
|
3922
|
+
* Source: https://github.com/ionic-team/ionic-framework/blob/b0d53ca73619585671d8cf4dc24e47f826495a0a/core/src/utils/platform.ts
|
|
3923
|
+
* --- */
|
|
3924
|
+
const matchMedia = (win, query) => win.matchMedia(query).matches;
|
|
3925
|
+
const testUserAgent = (win, expr) => {
|
|
3926
|
+
const userAgent = win.navigator.userAgent || win.navigator.vendor || window.opera;
|
|
3927
|
+
return expr.test(userAgent);
|
|
3928
|
+
};
|
|
3929
|
+
const isWindow = (win) => {
|
|
3930
|
+
const userAgent = win.navigator.userAgent || win.navigator.vendor || window.opera;
|
|
3931
|
+
return /windows/i.test(userAgent);
|
|
3932
|
+
};
|
|
3933
|
+
/**
|
|
3934
|
+
* Detect desktop, by fine cursor. See https://github.com/ionic-team/ionic-framework/issues/19942
|
|
3935
|
+
* @param win
|
|
3936
|
+
*/
|
|
3937
|
+
const isDesktop = (win) => matchMedia(win, '(any-pointer:fine)');
|
|
3938
|
+
const isTouchUi = (win) => matchMedia(win, '(any-pointer:coarse)');
|
|
3939
|
+
const isMobile = (win) => isTouchUi(win) && !isDesktop(win);
|
|
3940
|
+
const isIpad = (win) => {
|
|
3941
|
+
// iOS 12 and below
|
|
3942
|
+
if (testUserAgent(win, /iPad/i)) {
|
|
3943
|
+
return true;
|
|
3944
|
+
}
|
|
3945
|
+
// iOS 13+
|
|
3946
|
+
if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
|
|
3947
|
+
return true;
|
|
3948
|
+
}
|
|
3949
|
+
return false;
|
|
3950
|
+
};
|
|
3951
|
+
const ɵ0$b = isIpad;
|
|
3952
|
+
const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);
|
|
3953
|
+
const isAndroid = (win) => testUserAgent(win, /android|sink/i);
|
|
3954
|
+
const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
|
|
3955
|
+
|
|
3921
3956
|
// Import the core angular services.
|
|
3922
3957
|
// ----------------------------------------------------------------------------------- //
|
|
3923
3958
|
// ----------------------------------------------------------------------------------- //
|
|
3924
3959
|
const BASE_TIMER_DELAY = 100;
|
|
3925
3960
|
class AutofocusDirective {
|
|
3926
3961
|
// I initialize the autofocus directive.
|
|
3927
|
-
constructor(elementRef,
|
|
3962
|
+
constructor(elementRef, keyboard) {
|
|
3928
3963
|
this.keyboard = keyboard;
|
|
3929
|
-
this.
|
|
3930
|
-
this.
|
|
3964
|
+
this._timer = null;
|
|
3965
|
+
this._elementRef = elementRef;
|
|
3931
3966
|
this.shouldFocusElement = '';
|
|
3932
|
-
this.
|
|
3967
|
+
this._timer = null;
|
|
3933
3968
|
this.timerDelay = BASE_TIMER_DELAY;
|
|
3934
|
-
|
|
3935
|
-
this.touchUi = platform.is('mobile') || platform.is('tablet');
|
|
3936
|
-
});
|
|
3969
|
+
this._mobile = isMobile(window);
|
|
3937
3970
|
}
|
|
3938
|
-
// ---
|
|
3939
|
-
// PUBLIC METHODS.
|
|
3940
|
-
// ---
|
|
3941
3971
|
// I get called once after the contents have been fully initialized.
|
|
3942
3972
|
ngAfterContentInit() {
|
|
3943
3973
|
// Because this directive can act on the stand-only "autofocus" attribute or
|
|
@@ -3972,29 +4002,26 @@ class AutofocusDirective {
|
|
|
3972
4002
|
ngOnDestroy() {
|
|
3973
4003
|
this.stopFocusWorkflow();
|
|
3974
4004
|
}
|
|
3975
|
-
|
|
3976
|
-
// PRIVATE METHODS.
|
|
3977
|
-
// ---
|
|
4005
|
+
/* --- private functions -- */
|
|
3978
4006
|
// I start the timer-based workflow that will focus the current element.
|
|
3979
4007
|
startFocusWorkflow() {
|
|
3980
4008
|
// if touch UI: do NOT focus when keyboard hide
|
|
3981
|
-
if (this.
|
|
4009
|
+
if (this._mobile && this.keyboard && this.keyboard.isVisible === false)
|
|
3982
4010
|
return;
|
|
3983
4011
|
// If there is already a timer running for this element, just let it play out -
|
|
3984
4012
|
// resetting it at this point will only push-out the time at which the focus is
|
|
3985
4013
|
// applied to the element.
|
|
3986
|
-
if (this.
|
|
4014
|
+
if (this._timer)
|
|
3987
4015
|
return;
|
|
3988
|
-
|
|
3989
|
-
|
|
3990
|
-
this.
|
|
3991
|
-
this.elementRef.nativeElement.focus();
|
|
4016
|
+
this._timer = setTimeout(() => {
|
|
4017
|
+
this._timer = null;
|
|
4018
|
+
this._elementRef.nativeElement.focus();
|
|
3992
4019
|
}, this.timerDelay);
|
|
3993
4020
|
}
|
|
3994
4021
|
// I stop the timer-based workflow, preventing focus from taking place.
|
|
3995
4022
|
stopFocusWorkflow() {
|
|
3996
|
-
clearTimeout(this.
|
|
3997
|
-
this.
|
|
4023
|
+
clearTimeout(this._timer);
|
|
4024
|
+
this._timer = null;
|
|
3998
4025
|
}
|
|
3999
4026
|
}
|
|
4000
4027
|
AutofocusDirective.decorators = [
|
|
@@ -4008,7 +4035,6 @@ AutofocusDirective.decorators = [
|
|
|
4008
4035
|
];
|
|
4009
4036
|
AutofocusDirective.ctorParameters = () => [
|
|
4010
4037
|
{ type: ElementRef },
|
|
4011
|
-
{ type: Platform },
|
|
4012
4038
|
{ type: Keyboard, decorators: [{ type: Optional }] }
|
|
4013
4039
|
];
|
|
4014
4040
|
|
|
@@ -9980,7 +10006,7 @@ SelectPeerModal.propDecorators = {
|
|
|
9980
10006
|
|
|
9981
10007
|
const moment$3 = momentImported;
|
|
9982
10008
|
const SETTINGS_STORAGE_KEY = 'settings';
|
|
9983
|
-
const SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi'];
|
|
10009
|
+
const SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
|
|
9984
10010
|
// fixme: this constant points to static environment
|
|
9985
10011
|
const DEFAULT_SETTINGS = {
|
|
9986
10012
|
accountInheritance: true,
|
|
@@ -10016,29 +10042,32 @@ class LocalSettingsService extends StartableService {
|
|
|
10016
10042
|
return this._data && this._data.latLongFormat || 'DDMM';
|
|
10017
10043
|
}
|
|
10018
10044
|
get usageMode() {
|
|
10019
|
-
|
|
10045
|
+
var _a;
|
|
10046
|
+
if (isNil((_a = this._data) === null || _a === void 0 ? void 0 : _a.mobile)) {
|
|
10047
|
+
console.warn("[settings] Accessing to property 'usageMode' BEFORE service started! Please use ready()");
|
|
10048
|
+
return isCordova(window) ? 'FIELD' : 'DESK';
|
|
10049
|
+
}
|
|
10050
|
+
return this._data.usageMode;
|
|
10020
10051
|
}
|
|
10021
10052
|
get mobile() {
|
|
10022
|
-
|
|
10053
|
+
var _a;
|
|
10054
|
+
if (isNil((_a = this._data) === null || _a === void 0 ? void 0 : _a.mobile)) {
|
|
10055
|
+
console.warn("[settings] Accessing to property 'mobile' BEFORE service started! Please use ready()");
|
|
10056
|
+
return isMobile(window);
|
|
10057
|
+
}
|
|
10058
|
+
return this._data.mobile;
|
|
10023
10059
|
}
|
|
10024
10060
|
set mobile(value) {
|
|
10025
10061
|
this._data.mobile = value;
|
|
10026
10062
|
}
|
|
10027
|
-
get touchUi() {
|
|
10028
|
-
return this._data.touchUi;
|
|
10029
|
-
}
|
|
10030
|
-
set touchUi(value) {
|
|
10031
|
-
this._data.touchUi = value;
|
|
10032
|
-
}
|
|
10033
10063
|
get pageHistory() {
|
|
10034
10064
|
return (this._data && this._data.pageHistory || []);
|
|
10035
10065
|
}
|
|
10036
10066
|
ngOnStart() {
|
|
10037
10067
|
console.info('[settings] Starting service...');
|
|
10038
10068
|
// Restoring local settings
|
|
10039
|
-
this._data.mobile =
|
|
10040
|
-
this._data.
|
|
10041
|
-
this._data.usageMode = this.platform.is('android') || this.platform.is('ios') ? 'FIELD' : 'DESK'; // FIELD by default if Android or iOs
|
|
10069
|
+
this._data.mobile = isNotNil(this._data.mobile) ? this._data.mobile : isMobile(window);
|
|
10070
|
+
this._data.usageMode = (isAndroid(window) || isIOS(window)) ? 'FIELD' : 'DESK'; // FIELD by default if Android or iOS
|
|
10042
10071
|
// Restoring local settings
|
|
10043
10072
|
return this.restoreLocally();
|
|
10044
10073
|
}
|
|
@@ -13561,6 +13590,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13561
13590
|
this.onChange = new Subject();
|
|
13562
13591
|
this.onAuthTokenChange = new Subject();
|
|
13563
13592
|
this.onAuthBasicChange = new Subject();
|
|
13593
|
+
this._stopWatching$ = new Subject();
|
|
13564
13594
|
this._cache = {
|
|
13565
13595
|
loaded: false,
|
|
13566
13596
|
keypair: null,
|
|
@@ -13963,6 +13993,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13963
13993
|
if (hadAuthBasic)
|
|
13964
13994
|
this.onAuthBasicChange.next(undefined);
|
|
13965
13995
|
this.onChange.next(undefined);
|
|
13996
|
+
this._stopWatching$.next();
|
|
13966
13997
|
});
|
|
13967
13998
|
}
|
|
13968
13999
|
/**
|
|
@@ -14079,12 +14110,17 @@ class AccountService extends BaseGraphqlService {
|
|
|
14079
14110
|
return res && res.confirmAccountEmail;
|
|
14080
14111
|
});
|
|
14081
14112
|
}
|
|
14082
|
-
|
|
14113
|
+
watch() {
|
|
14083
14114
|
if (!this._cache.pubkey)
|
|
14084
|
-
|
|
14085
|
-
|
|
14086
|
-
|
|
14087
|
-
|
|
14115
|
+
throw new Error('Not logged in');
|
|
14116
|
+
if (!this.started) {
|
|
14117
|
+
// Wait service ready, then loop
|
|
14118
|
+
return from(this.ready())
|
|
14119
|
+
.pipe(switchMap(() => this.watch()));
|
|
14120
|
+
}
|
|
14121
|
+
this._stopWatching$.next(); // Stop previous listening
|
|
14122
|
+
console.debug('[account] [WS] Watching changes');
|
|
14123
|
+
return this.graphql.subscribe({
|
|
14088
14124
|
query: AccountSubscriptions.listenChanges,
|
|
14089
14125
|
variables: {
|
|
14090
14126
|
interval: 10
|
|
@@ -14093,35 +14129,39 @@ class AccountService extends BaseGraphqlService {
|
|
|
14093
14129
|
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
14094
14130
|
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
14095
14131
|
}
|
|
14096
|
-
})
|
|
14097
|
-
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
|
-
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14104
|
-
|
|
14105
|
-
|
|
14106
|
-
})
|
|
14107
|
-
|
|
14132
|
+
})
|
|
14133
|
+
.pipe(
|
|
14134
|
+
// Stop this pipe next time we call watch()
|
|
14135
|
+
takeUntil(this._stopWatching$), map(({ data }) => {
|
|
14136
|
+
var _a;
|
|
14137
|
+
if (!data)
|
|
14138
|
+
return;
|
|
14139
|
+
const existingUpdateDate = toDateISOString((_a = this._data) === null || _a === void 0 ? void 0 : _a.updateDate);
|
|
14140
|
+
if (existingUpdateDate === data.updateDate)
|
|
14141
|
+
return;
|
|
14142
|
+
console.debug(`[account] [WS] Detected update on {${data.updateDate}}`);
|
|
14143
|
+
return Account.fromObject(data);
|
|
14144
|
+
}), filter(isNotNil));
|
|
14145
|
+
}
|
|
14146
|
+
listenChanges() {
|
|
14147
|
+
const self = this;
|
|
14148
|
+
const subscription = this.watch()
|
|
14149
|
+
.subscribe({
|
|
14150
|
+
next: (data) => self.refresh(),
|
|
14151
|
+
error: (err) => {
|
|
14108
14152
|
if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
|
|
14109
14153
|
console.info('[account] Account not exists anymore: force user to logout...', err);
|
|
14110
|
-
|
|
14154
|
+
self.logout();
|
|
14111
14155
|
}
|
|
14112
14156
|
else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
|
|
14113
14157
|
console.info('[account] Account not authorized: force user to logout...', err);
|
|
14114
|
-
|
|
14158
|
+
self.logout();
|
|
14115
14159
|
}
|
|
14116
14160
|
else {
|
|
14117
14161
|
console.warn('[account] [WS] Received error:', err);
|
|
14118
14162
|
}
|
|
14119
|
-
}),
|
|
14120
|
-
complete: () => {
|
|
14121
|
-
console.debug('[account] [WS] Completed');
|
|
14122
14163
|
}
|
|
14123
14164
|
});
|
|
14124
|
-
// Add log when closing WS
|
|
14125
14165
|
subscription.add(() => console.debug('[account] [WS] Stop listening changes'));
|
|
14126
14166
|
return subscription;
|
|
14127
14167
|
}
|
|
@@ -15125,24 +15165,39 @@ class PlatformService extends StartableService {
|
|
|
15125
15165
|
if (this._debug)
|
|
15126
15166
|
console.debug('[platform] Creating service');
|
|
15127
15167
|
}
|
|
15128
|
-
get mobile() {
|
|
15129
|
-
return isNotNil(this._mobile) ? this._mobile : this.platform.is('mobile');
|
|
15130
|
-
}
|
|
15131
15168
|
is(platformName) {
|
|
15132
|
-
|
|
15169
|
+
switch (platformName) {
|
|
15170
|
+
case 'mobile':
|
|
15171
|
+
// Use custom mobile detection - see SUMARIS issue #323
|
|
15172
|
+
return isMobile(window);
|
|
15173
|
+
default:
|
|
15174
|
+
return this.platform.is(platformName);
|
|
15175
|
+
}
|
|
15176
|
+
}
|
|
15177
|
+
get mobile() {
|
|
15178
|
+
return isNotNil(this._mobile) ? this._mobile : isMobile(window);
|
|
15133
15179
|
}
|
|
15134
15180
|
/**
|
|
15135
|
-
* Say if opened has been opened
|
|
15181
|
+
* Say if opened has been opened inside an Android or iOs App.
|
|
15136
15182
|
* This is used to known if there is cordova features
|
|
15137
15183
|
*/
|
|
15138
|
-
|
|
15139
|
-
return
|
|
15184
|
+
isCordova() {
|
|
15185
|
+
return this._cordova;
|
|
15140
15186
|
}
|
|
15141
15187
|
isAndroidCordova() {
|
|
15142
15188
|
return this._android && this._cordova || false;
|
|
15143
15189
|
}
|
|
15190
|
+
isIOSCordova() {
|
|
15191
|
+
return this._ios && this._cordova || false;
|
|
15192
|
+
}
|
|
15193
|
+
isWeb() {
|
|
15194
|
+
return !this._cordova || (!this._android && !this._ios);
|
|
15195
|
+
}
|
|
15196
|
+
isApp() {
|
|
15197
|
+
return this._cordova && (this._android || this._ios);
|
|
15198
|
+
}
|
|
15144
15199
|
get canDownload() {
|
|
15145
|
-
return this.
|
|
15200
|
+
return !!this.downloader && this.isAndroidCordova();
|
|
15146
15201
|
}
|
|
15147
15202
|
get canOpenFile() {
|
|
15148
15203
|
return false;
|
|
@@ -15159,16 +15214,13 @@ class PlatformService extends StartableService {
|
|
|
15159
15214
|
this.accountService.tokenType = undefined;
|
|
15160
15215
|
console.info('[platform] Starting platform...');
|
|
15161
15216
|
try {
|
|
15162
|
-
this._mobile = this.
|
|
15163
|
-
this._cordova = this.
|
|
15164
|
-
this._android = this.
|
|
15165
|
-
this.
|
|
15166
|
-
this.
|
|
15167
|
-
// Force
|
|
15168
|
-
|
|
15169
|
-
this.settings.mobile = this._mobile;
|
|
15170
|
-
this.settings.touchUi = this.touchUi;
|
|
15171
|
-
}
|
|
15217
|
+
this._mobile = this.is('mobile');
|
|
15218
|
+
this._cordova = this.is('cordova');
|
|
15219
|
+
this._android = this.is('android');
|
|
15220
|
+
this._ios = this.is('ios');
|
|
15221
|
+
this.configureCordovaPlugins();
|
|
15222
|
+
// Force some settings
|
|
15223
|
+
this.settings.mobile = this._mobile;
|
|
15172
15224
|
// Configure translation
|
|
15173
15225
|
yield this.configureTranslate();
|
|
15174
15226
|
// Configure storage
|
|
@@ -15182,7 +15234,7 @@ class PlatformService extends StartableService {
|
|
|
15182
15234
|
this.networkService.ready(),
|
|
15183
15235
|
this.audioProvider.ready()
|
|
15184
15236
|
]);
|
|
15185
|
-
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile},
|
|
15237
|
+
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, downloader: ${this.canDownload}, fileOpener: ${this.canOpenFile}} in ${Date.now() - now}ms`);
|
|
15186
15238
|
// Update cache configuration when network changed
|
|
15187
15239
|
this.networkService.onNetworkStatusChanges
|
|
15188
15240
|
.pipe(skip(1)) // Skip the first event (behavior subject send event immediately)
|
|
@@ -15194,7 +15246,7 @@ class PlatformService extends StartableService {
|
|
|
15194
15246
|
console.info(`[platform] Using auth token type {${tokenType}}`);
|
|
15195
15247
|
this.accountService.tokenType = tokenType;
|
|
15196
15248
|
});
|
|
15197
|
-
// Hide the splashscreen (if mobile) - after 1s
|
|
15249
|
+
// Hide the splashscreen (if mobile) - after 1s - and play start sound
|
|
15198
15250
|
if (this.mobile) {
|
|
15199
15251
|
setTimeout(() => {
|
|
15200
15252
|
var _a;
|
|
@@ -15269,7 +15321,7 @@ class PlatformService extends StartableService {
|
|
|
15269
15321
|
//}
|
|
15270
15322
|
}
|
|
15271
15323
|
/* -- protected methods -- */
|
|
15272
|
-
configureCordovaPlugins(
|
|
15324
|
+
configureCordovaPlugins() {
|
|
15273
15325
|
console.info('[platform] Configuring Cordova plugins...');
|
|
15274
15326
|
if (this.statusBar) {
|
|
15275
15327
|
this.statusBar.styleDefault();
|
|
@@ -15278,15 +15330,6 @@ class PlatformService extends StartableService {
|
|
|
15278
15330
|
if (this.keyboard) {
|
|
15279
15331
|
this.keyboard.hideFormAccessoryBar(true);
|
|
15280
15332
|
}
|
|
15281
|
-
// Force to use InAppBrowser instead of default window.open()
|
|
15282
|
-
if (this.browser) {
|
|
15283
|
-
// FIXME: this create a infinite loop (e.g. when downloading an extraction file)
|
|
15284
|
-
// window.open = (url?: string, target?: string, features?: string, replace?: boolean) => {
|
|
15285
|
-
// console.debug("[platform] Call to window.open() redirected to InAppBrowser.open()");
|
|
15286
|
-
// this.browser.create(url, target, features).show();
|
|
15287
|
-
// return window;
|
|
15288
|
-
// };
|
|
15289
|
-
}
|
|
15290
15333
|
}
|
|
15291
15334
|
configureTranslate() {
|
|
15292
15335
|
console.info('[platform] Configuring i18n ...');
|
|
@@ -18006,7 +18049,7 @@ class HomePage {
|
|
|
18006
18049
|
this.appName = config.label || this.environment.defaultAppName || 'SUMARiS';
|
|
18007
18050
|
this.logo = config.largeLogo || config.smallLogo || undefined;
|
|
18008
18051
|
this.description = config.name;
|
|
18009
|
-
this.isWeb = this.platform.
|
|
18052
|
+
this.isWeb = this.platform.isWeb();
|
|
18010
18053
|
this.canRegister = config.getPropertyAsBoolean(CORE_CONFIG_OPTIONS.REGISTRATION_ENABLE);
|
|
18011
18054
|
const partners = (config.partners || []).filter(p => p && p.logo);
|
|
18012
18055
|
this.$partners.next(partners);
|
|
@@ -18096,7 +18139,7 @@ HomePage.decorators = [
|
|
|
18096
18139
|
template: "<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\"> {{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\"> {{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}} </ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\"> </p>-->\n </ng-container>\n\n <ion-button expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon> {{ page.time|dateFromNow }}</small> \n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [innerHTML]=\"page.title\"></ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n",
|
|
18097
18140
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18098
18141
|
animations: [fadeInAnimation, slideUpDownAnimation],
|
|
18099
|
-
styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]
|
|
18142
|
+
styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card ion-card-content ion-button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]
|
|
18100
18143
|
},] }
|
|
18101
18144
|
];
|
|
18102
18145
|
HomePage.ctorParameters = () => [
|
|
@@ -18183,7 +18226,7 @@ RegisterConfirmPage.decorators = [
|
|
|
18183
18226
|
{ type: Component, args: [{
|
|
18184
18227
|
selector: 'page-register-confirm',
|
|
18185
18228
|
template: "<app-toolbar [title]=\"'REGISTER.CONFIRMED.TITLE'|translate\" color=\"primary\">\n</app-toolbar>\n\n\n<ion-content class=\"bg-image-cover center ion-padding\" [ngStyle]=\"contentStyle\">\n\n <p class=\"hidden-xs ion-padding\"> <br /><br /></p>\n <p class=\"hidden-xs\"> </p>\n\n\n <ion-card>\n <ion-card-content>\n\n <div>\n <ng-container *ngIf=\"loading\">\n <h4 translate>REGISTER.CONFIRMED.LOADING</h4>\n <p><ion-spinner></ion-spinner></p>\n </ng-container>\n\n <!-- error -->\n <ion-item *ngIf=\"!loading && error\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </div>\n\n <div *ngIf=\"!loading && !error\">\n <h3>\n <ion-icon name=\"checkmark\"></ion-icon>\n <b translate>REGISTER.CONFIRMED.SUB_TITLE</b>\n </h3>\n\n <ion-text>\n <p [innerHTML]=\"'REGISTER.CONFIRMED.SUCCESS'|translate: {email: email}\"></p>\n <p *ngIf=\"!isLogin\" [innerHTML]=\"'REGISTER.CONFIRMED.LOGIN_HELP'|translate\"></p>\n </ion-text>\n\n </div>\n\n </ion-card-content>\n\n <ion-footer *ngIf=\"!loading\">\n <ion-button expand=\"full\" color=\"primary\" [routerLink]=\"['/account']\" *ngIf=\"!isLogin\">\n <ion-icon name=\"log-in\" slot=\"start\"></ion-icon>\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n <ion-button expand=\"full\" color=\"secondary\" [routerLink]=\"['/account']\" *ngIf=\"isLogin\">\n <ion-icon name=\"contact\" slot=\"start\"></ion-icon>\n <span translate>HOME.BTN_MY_ACCOUNT</span>\n </ion-button>\n </ion-footer>\n </ion-card>\n\n</ion-content>\n",
|
|
18186
|
-
styles: ["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]
|
|
18229
|
+
styles: ["h1,h2,h3,h4,h5{white-space:normal}.bottom-banner,.center,ion-card,ion-card img,ion-content,ion-text{text-align:center;display:inline-block}ion-content{--ion-background-color:transparent;background-size:cover;display:inline-block;padding:15px}ion-card{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;max-width:400px;z-index:9}ion-card button{margin-top:16px}ion-card img{max-width:250px}.bottom-banner{padding:var(--ion-padding);background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0}.bottom-banner img.logo{max-height:50px;margin-left:8px}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:auto;max-width:260px}ion-content ion-card img{max-width:100px;margin-left:8px}ion-content ion-card ion-footer ion-button{margin-top:8px}.bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}.bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:606px}.main-content{padding-bottom:0}.bottom-banner{position:absolute;bottom:16px;left:16px;right:16px}}"]
|
|
18187
18230
|
},] }
|
|
18188
18231
|
];
|
|
18189
18232
|
RegisterConfirmPage.ctorParameters = () => [
|
|
@@ -21296,13 +21339,7 @@ class CellValueChangeListener {
|
|
|
21296
21339
|
// @dynamic
|
|
21297
21340
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
21298
21341
|
class AppTable {
|
|
21299
|
-
constructor(
|
|
21300
|
-
this.route = route;
|
|
21301
|
-
this.router = router;
|
|
21302
|
-
this.platform = platform;
|
|
21303
|
-
this.location = location;
|
|
21304
|
-
this.modalCtrl = modalCtrl;
|
|
21305
|
-
this.settings = settings;
|
|
21342
|
+
constructor(injector, columns, _dataSource, _filter) {
|
|
21306
21343
|
this.columns = columns;
|
|
21307
21344
|
this._dataSource = _dataSource;
|
|
21308
21345
|
this._filter = _filter;
|
|
@@ -21345,13 +21382,19 @@ class AppTable {
|
|
|
21345
21382
|
this.onDirty = new EventEmitter();
|
|
21346
21383
|
this.onError = new EventEmitter();
|
|
21347
21384
|
this._paginator = null;
|
|
21348
|
-
this.
|
|
21349
|
-
this.
|
|
21350
|
-
this.
|
|
21351
|
-
this.
|
|
21352
|
-
this.
|
|
21385
|
+
this.route = injector.get(ActivatedRoute);
|
|
21386
|
+
this.router = injector.get(Router);
|
|
21387
|
+
this.location = injector.get(Location);
|
|
21388
|
+
this.settings = injector.get(LocalSettingsService);
|
|
21389
|
+
this.translate = injector.get(TranslateService);
|
|
21390
|
+
this.modalCtrl = injector.get(ModalController);
|
|
21391
|
+
this.alertCtrl = injector.get(AlertController);
|
|
21392
|
+
this.toastController = injector.get(ToastController);
|
|
21393
|
+
this.formErrorAdapter = injector.get(FormErrorTranslator);
|
|
21394
|
+
this.mobile = this.settings.mobile;
|
|
21395
|
+
// Autocomplete fields
|
|
21353
21396
|
this._autocompleteConfigHolder = new MatAutocompleteConfigHolder({
|
|
21354
|
-
getUserAttributes: (a, b) => settings.getFieldDisplayAttributes(a, b)
|
|
21397
|
+
getUserAttributes: (a, b) => this.settings.getFieldDisplayAttributes(a, b)
|
|
21355
21398
|
});
|
|
21356
21399
|
this.autocompleteFields = this._autocompleteConfigHolder.fields;
|
|
21357
21400
|
}
|
|
@@ -22513,9 +22556,12 @@ class AppTable {
|
|
|
22513
22556
|
return (this.i18nColumnPrefix || '') + changeCaseToUnderscore(columnName).toUpperCase();
|
|
22514
22557
|
}
|
|
22515
22558
|
generateTableId() {
|
|
22516
|
-
|
|
22559
|
+
const id = this.location.path(true)
|
|
22560
|
+
.replace(/[?].*$/g, '')
|
|
22561
|
+
.replace(/\/[\d]+/g, '_id')
|
|
22562
|
+
+ '_' + this.constructor.name;
|
|
22517
22563
|
//if (this.debug) console.debug("[table] id = " + id);
|
|
22518
|
-
|
|
22564
|
+
return id;
|
|
22519
22565
|
}
|
|
22520
22566
|
addRowToTable(insertAt) {
|
|
22521
22567
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -22782,16 +22828,10 @@ AppTable.decorators = [
|
|
|
22782
22828
|
{ type: Directive }
|
|
22783
22829
|
];
|
|
22784
22830
|
AppTable.ctorParameters = () => [
|
|
22785
|
-
{ type:
|
|
22786
|
-
{ type: Router },
|
|
22787
|
-
{ type: undefined },
|
|
22788
|
-
{ type: Location },
|
|
22789
|
-
{ type: ModalController },
|
|
22790
|
-
{ type: LocalSettingsService },
|
|
22831
|
+
{ type: Injector },
|
|
22791
22832
|
{ type: Array },
|
|
22792
22833
|
{ type: EntitiesTableDataSource },
|
|
22793
|
-
{ type: undefined }
|
|
22794
|
-
{ type: Injector }
|
|
22834
|
+
{ type: undefined }
|
|
22795
22835
|
];
|
|
22796
22836
|
AppTable.propDecorators = {
|
|
22797
22837
|
settingsId: [{ type: Input }],
|
|
@@ -24024,8 +24064,7 @@ AppEntityEditor.ctorParameters = () => [
|
|
|
24024
24064
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
24025
24065
|
class AppInMemoryTable extends AppTable {
|
|
24026
24066
|
constructor(injector, columns, dataType, memoryDataService, validatorService, options, filter) {
|
|
24027
|
-
super(injector
|
|
24028
|
-
this.injector = injector;
|
|
24067
|
+
super(injector, columns, new EntitiesTableDataSource(dataType, memoryDataService, validatorService, options), filter);
|
|
24029
24068
|
this.columns = columns;
|
|
24030
24069
|
this.dataType = dataType;
|
|
24031
24070
|
this.memoryDataService = memoryDataService;
|
|
@@ -24515,7 +24554,7 @@ const ICONS_MAP = {
|
|
|
24515
24554
|
}*/
|
|
24516
24555
|
class UserEventsTable extends AppTable {
|
|
24517
24556
|
constructor(injector, accountService, service, entities, cd, environment) {
|
|
24518
|
-
super(injector
|
|
24557
|
+
super(injector,
|
|
24519
24558
|
// columns
|
|
24520
24559
|
RESERVED_START_COLUMNS
|
|
24521
24560
|
.concat([
|
|
@@ -24524,8 +24563,7 @@ class UserEventsTable extends AppTable {
|
|
|
24524
24563
|
'eventType',
|
|
24525
24564
|
'message'
|
|
24526
24565
|
])
|
|
24527
|
-
.concat(RESERVED_END_COLUMNS), null, null
|
|
24528
|
-
this.injector = injector;
|
|
24566
|
+
.concat(RESERVED_END_COLUMNS), null, null);
|
|
24529
24567
|
this.accountService = accountService;
|
|
24530
24568
|
this.service = service;
|
|
24531
24569
|
this.entities = entities;
|
|
@@ -24899,8 +24937,8 @@ PersonValidatorService.ctorParameters = () => [
|
|
|
24899
24937
|
];
|
|
24900
24938
|
|
|
24901
24939
|
class UsersPage extends AppTable {
|
|
24902
|
-
constructor(
|
|
24903
|
-
super(
|
|
24940
|
+
constructor(injector, accountService, validatorService, configService, dataService, cd, formBuilder, environment) {
|
|
24941
|
+
super(injector, RESERVED_START_COLUMNS
|
|
24904
24942
|
.concat([
|
|
24905
24943
|
'avatar',
|
|
24906
24944
|
'lastName',
|
|
@@ -24919,14 +24957,8 @@ class UsersPage extends AppTable {
|
|
|
24919
24957
|
dataServiceOptions: {
|
|
24920
24958
|
saveOnlyDirtyRows: true
|
|
24921
24959
|
}
|
|
24922
|
-
}), null
|
|
24923
|
-
this.route = route;
|
|
24924
|
-
this.router = router;
|
|
24925
|
-
this.platform = platform;
|
|
24926
|
-
this.location = location;
|
|
24927
|
-
this.modalCtrl = modalCtrl;
|
|
24960
|
+
}), null);
|
|
24928
24961
|
this.accountService = accountService;
|
|
24929
|
-
this.settings = settings;
|
|
24930
24962
|
this.validatorService = validatorService;
|
|
24931
24963
|
this.configService = configService;
|
|
24932
24964
|
this.dataService = dataService;
|
|
@@ -25050,19 +25082,13 @@ UsersPage.decorators = [
|
|
|
25050
25082
|
},] }
|
|
25051
25083
|
];
|
|
25052
25084
|
UsersPage.ctorParameters = () => [
|
|
25053
|
-
{ type:
|
|
25054
|
-
{ type: Router },
|
|
25055
|
-
{ type: PlatformService },
|
|
25056
|
-
{ type: Location },
|
|
25057
|
-
{ type: ModalController },
|
|
25085
|
+
{ type: Injector },
|
|
25058
25086
|
{ type: AccountService },
|
|
25059
|
-
{ type: LocalSettingsService },
|
|
25060
25087
|
{ type: ValidatorService },
|
|
25061
25088
|
{ type: ConfigService },
|
|
25062
25089
|
{ type: PersonService },
|
|
25063
25090
|
{ type: ChangeDetectorRef },
|
|
25064
25091
|
{ type: FormBuilder },
|
|
25065
|
-
{ type: Injector },
|
|
25066
25092
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] }
|
|
25067
25093
|
];
|
|
25068
25094
|
UsersPage.propDecorators = {
|
|
@@ -25132,5 +25158,5 @@ const ErrorCodes = {
|
|
|
25132
25158
|
* Generated bundle index. Do not edit.
|
|
25133
25159
|
*/
|
|
25134
25160
|
|
|
25135
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk, AppIconComponent as ɵl };
|
|
25161
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isControlHasInput, isCordova, isDesktop, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isTouchUi, isWindow, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, ɵ0$b as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk, AppIconComponent as ɵl };
|
|
25136
25162
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|