@sumaris-net/ngx-components 1.13.1 → 1.14.1
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 +243 -51
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +5 -0
- package/esm2015/src/app/core/auth/form/form-auth.js +2 -2
- package/esm2015/src/app/core/install/install-upgrade-card.component.js +3 -3
- package/esm2015/src/app/core/services/account.service.js +1 -3
- package/esm2015/src/app/core/services/base-entity-service.class.js +6 -3
- package/esm2015/src/app/core/services/config/core.config.js +7 -1
- package/esm2015/src/app/core/services/network.service.js +53 -4
- package/esm2015/src/app/core/services/network.utils.js +1 -1
- package/esm2015/src/app/core/services/platform.service.js +91 -5
- package/esm2015/src/app/shared/http/http.utils.js +14 -2
- package/esm2015/src/app/shared/upload-file/upload-file.component.js +12 -7
- package/esm2015/src/app/shared/upload-file/upload-file.model.js +8 -1
- package/esm2015/src/app/shared/version/versions.js +5 -1
- package/esm2015/src/environments/environment.class.js +1 -1
- package/fesm2015/sumaris-net.ngx-components.js +185 -17
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/services/config/core.config.d.ts +1 -0
- package/src/app/core/services/network.service.d.ts +10 -1
- package/src/app/core/services/network.utils.d.ts +15 -0
- package/src/app/core/services/platform.service.d.ts +6 -0
- package/src/app/shared/http/http.utils.d.ts +1 -0
- package/src/app/shared/upload-file/upload-file.model.d.ts +5 -3
- package/src/app/shared/version/versions.d.ts +2 -0
- package/src/assets/i18n/en-US.json +2 -5
- package/src/assets/i18n/en.json +2 -5
- package/src/assets/i18n/fr.json +4 -3
- package/src/assets/manifest.json +5 -5
- package/src/environments/environment.class.d.ts +1 -0
- package/src/theme/_responsive.scss +7 -3
- package/sumaris-net.ngx-components.metadata.json +1 -1
- package/src/assets/manifest.sumaris.json +0 -17
|
@@ -2,4 +2,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
2
2
|
export const ENVIRONMENT = new InjectionToken('ENV');
|
|
3
3
|
export class Environment {
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFjLEtBQUssQ0FBQyxDQUFDO0FBRWxFLE1BQU0sT0FBTyxXQUFXO0NBbUV2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZldGNoUG9saWN5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQgeyBTdG9yYWdlQ29uZmlnIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IEVOVklST05NRU5UID0gbmV3IEluamVjdGlvblRva2VuPEVudmlyb25tZW50PignRU5WJyk7XG5cbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBwcm9kdWN0aW9uOiBib29sZWFuO1xuICBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgLy8gQSBwZWVyIHRvIHVzZSBhdCBzdGFydHVwICh1c2VmdWwgb24gYSB3ZWIgc2l0ZSBkZXBsb3ltZW50KVxuICBkZWZhdWx0UGVlcj86IHsgaG9zdDogc3RyaW5nOyBwb3J0OiBudW1iZXI7IHVzZVNzbD86IGJvb2xlYW47IHBhdGg/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLy8gQSBsaXN0IG9mIHBlZXJzLCB0byBzZWxlY3QgYXMgcGVlciwgaW4gc2V0dGluZ3NcbiAgZGVmYXVsdFBlZXJzPzogeyBob3N0OiBzdHJpbmc7IHBvcnQ6IG51bWJlcjsgdXNlU3NsPzogYm9vbGVhbjsgcGF0aD86IHN0cmluZyB9W107XG5cbiAgLy8gTWluIGNvbXBhdGlibGUgdmVyc2lvbiBmb3IgdGhlIHBlZXJcbiAgcGVlck1pblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLy8gSW50ZXJ2YWwgdG8gY2hlY2sgaWYgd2ViIHBhZ2UgbXVzdCBiZSByZWxvYWQsIGluIG1pbGxpc1xuICBjaGVja0FwcFZlcnNpb25JbnRlcnZhbEluU2Vjb25kcz86IG51bWJlcjtcblxuICAvLyBFbmFibGUgY2FjaGUgcGVyc2lzdGVuY2UgP1xuICBwZXJzaXN0Q2FjaGU/OiBib29sZWFuO1xuXG4gIC8vIEZvcmNlIG9mZmxpbmUgbW9kZSA/IC8hXFwgRm9yIERFViBvbmx5XG4gIG9mZmxpbmU/OiBib29sZWFuO1xuXG4gIC8vIEFwb2xsbyAoZ3JhcGhRTCkgY29uZmlnXG4gIGFwb2xsb0ZldGNoUG9saWN5PzogIEZldGNoUG9saWN5O1xuXG4gIC8vIERlZmF1bHQgdmFsdWVzXG4gIGRlZmF1bHRMb2NhbGU6IHN0cmluZztcbiAgZGVmYXVsdExhdExvbmdGb3JtYXQ/OiAnREQnIHwgJ0RETU0nIHwgJ0RETU1TUyc7XG4gIGRlZmF1bHREZXBhcnRtZW50SWQ/OiBudW1iZXI7XG4gIGRlZmF1bHRBcHBOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0QW5kcm9pZEluc3RhbGxVcmw/OiBzdHJpbmc7XG5cbiAgLy8gU3RvcmFnZVxuICBzdG9yYWdlPzogUGFydGlhbDxTdG9yYWdlQ29uZmlnPjtcbiAgc3RvcmFnZVNhdmVQZXJpb2RNcz86IG51bWJlcjtcblxuICAvLyBBYm91dFxuICBzb3VyY2VVcmw/OiBzdHJpbmc7XG4gIHJlcG9ydElzc3VlVXJsPzogc3RyaW5nO1xuICBmb3J1bVVybD86IHN0cmluZztcbiAgaGVscFVybD86IHN0cmluZztcblxuICAvLyBEZWZhdWx0IGF1dGhlbnRpY2F0aW9uIC8hXFwgRm9yIERFViBvbmx5XG4gIC8vIChzZWUgdmFsdWVzIGluIHRoZSB0ZXN0IGRhdGFiYXNlIC0gWE1MIGZpbGVzIGluIFBvZCdzIG1vZHVsZSlcbiAgZGVmYXVsdEF1dGhWYWx1ZXM/OiB7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgLy8gQWNjb3VudFxuICBhY2NvdW50Pzoge1xuICAgIHNob3dBY2NvdW50QnV0dG9uPzogYm9vbGVhbjsgLy8gU2hvdyBhY2NvdW50IGJ1dHRvbiBpbiBob21lIHBhZ2UgKGlmIHVuZGVmaW5lZCA9IHRydWUpXG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlcz86IGJvb2xlYW47XG4gICAgLy8gSWYgdW5kZWZpbmVkIG9yIDAsIHRoZW4gbGlzdGVuIG9ubHkgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwb2RcbiAgICAvLyBJZiBncmVhdGVyIHRoYW4gMCA6IHdpbGwgY2hlY2sgY29uY3VycmVudCBjaGFuZ2VzIGluIHRoZSBEQiAoZS5nLiBjaGFuZ2VzIG1kZSBieSBhbm90aGVyIHNvZnR3YXJlKSBBTkQgY2hhbmdlcyBtYWRlIHRoZSBwb2RcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kcz86IG51bWJlcjtcbiAgfTtcblxuICBlbnRpdHlFZGl0b3I/OiB7XG4gICAgZW5hYmxlTGlzdGVuQ2hhbmdlcz86IGJvb2xlYW47XG4gICAgLy8gSWYgdW5kZWZpbmVkIG9yIDAsIHRoZW4gbGlzdGVuIG9ubHkgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwb2RcbiAgICAvLyBJZiBncmVhdGVyIHRoYW4gMCA6IHdpbGwgY2hlY2sgY29uY3VycmVudCBjaGFuZ2VzIGluIHRoZSBEQiAoZS5nLiBjaGFuZ2VzIG1kZSBieSBhbm90aGVyIHNvZnR3YXJlKSBBTkQgY2hhbmdlcyBtYWRlIHRoZSBwb2RcbiAgICBsaXN0ZW5JbnRlcnZhbEluU2Vjb25kcz86IG51bWJlcjtcbiAgfTtcblxufVxuIl19
|
|
@@ -9979,7 +9979,18 @@ class HttpUtils {
|
|
|
9979
9979
|
static getResource(http, uri, opts) {
|
|
9980
9980
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9981
9981
|
// Add headers
|
|
9982
|
-
opts = Object.assign({}, opts
|
|
9982
|
+
opts = Object.assign({}, opts
|
|
9983
|
+
//headers: new HttpHeaders(),
|
|
9984
|
+
//.append('X-App-Name', environment.name)
|
|
9985
|
+
//.append('X-App-Version', environment.version),
|
|
9986
|
+
);
|
|
9987
|
+
// Force no cache
|
|
9988
|
+
if (opts.nocache === true) {
|
|
9989
|
+
opts.headers = (opts.headers instanceof HttpHeaders ? opts.headers : new HttpHeaders(opts.headers));
|
|
9990
|
+
opts.headers
|
|
9991
|
+
.append('Cache-Control', 'no-cache')
|
|
9992
|
+
.append('Pragma', 'no-cache');
|
|
9993
|
+
}
|
|
9983
9994
|
try {
|
|
9984
9995
|
// Using web http client
|
|
9985
9996
|
return (yield http.get(uri, opts).toPromise());
|
|
@@ -10021,6 +10032,7 @@ class VersionUtils {
|
|
|
10021
10032
|
}
|
|
10022
10033
|
VersionUtils.compare = compareVersionNumbers;
|
|
10023
10034
|
VersionUtils.isCompatible = isVersionCompatible;
|
|
10035
|
+
VersionUtils.isSame = isSameVersion;
|
|
10024
10036
|
/**
|
|
10025
10037
|
* Compare two software version numbers (e.g. 1.7.1)
|
|
10026
10038
|
* Returns:
|
|
@@ -10089,6 +10101,9 @@ function isVersionCompatible(minVersion, actualVersion) {
|
|
|
10089
10101
|
//console.debug(`[http] Checking actual version {${actualVersion}} is compatible with min expected version {${minVersion}}`);
|
|
10090
10102
|
return compareVersionNumbers(minVersion, actualVersion) <= 0;
|
|
10091
10103
|
}
|
|
10104
|
+
function isSameVersion(v1, v2) {
|
|
10105
|
+
return compareVersionNumbers(v1, v2) === 0;
|
|
10106
|
+
}
|
|
10092
10107
|
|
|
10093
10108
|
class SelectPeerModal {
|
|
10094
10109
|
constructor(viewCtrl, cd, http, environment) {
|
|
@@ -11020,15 +11035,65 @@ class NetworkService extends StartableService {
|
|
|
11020
11035
|
});
|
|
11021
11036
|
}
|
|
11022
11037
|
getNodeInfo(peer) {
|
|
11038
|
+
const path = this.computePeerPath(peer, '/api/node/info');
|
|
11039
|
+
return this.get(path);
|
|
11040
|
+
}
|
|
11041
|
+
getAppManifest(peer, opts) {
|
|
11042
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11043
|
+
try {
|
|
11044
|
+
let path = this.computePeerPath(peer, 'manifest.json');
|
|
11045
|
+
if (opts === null || opts === void 0 ? void 0 : opts.nocache) {
|
|
11046
|
+
path += '?t=' + Date.now();
|
|
11047
|
+
}
|
|
11048
|
+
return yield this.get(path, opts);
|
|
11049
|
+
}
|
|
11050
|
+
catch (err) {
|
|
11051
|
+
if (this.environment.production)
|
|
11052
|
+
console.error('[network] Cannot load file \'manifest.json\'. Please make sure webserver config allow CORS access', err);
|
|
11053
|
+
else
|
|
11054
|
+
console.error('[network] Cannot load file \'manifest.json\'.', err);
|
|
11055
|
+
// Continue
|
|
11056
|
+
}
|
|
11057
|
+
});
|
|
11058
|
+
}
|
|
11059
|
+
getAppVersion(peer, opts) {
|
|
11060
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
11061
|
+
try {
|
|
11062
|
+
let path = this.computePeerPath(peer, 'version.appup');
|
|
11063
|
+
if (opts === null || opts === void 0 ? void 0 : opts.nocache) {
|
|
11064
|
+
path += '?t=' + Date.now();
|
|
11065
|
+
}
|
|
11066
|
+
const appVersion = yield this.get(path, opts);
|
|
11067
|
+
if (isNotNilOrBlank(appVersion))
|
|
11068
|
+
return appVersion;
|
|
11069
|
+
}
|
|
11070
|
+
catch (err) {
|
|
11071
|
+
if (this.environment.production)
|
|
11072
|
+
console.error('[network] Cannot load file \'version.appup\'. Please make sure webserver config allow CORS access');
|
|
11073
|
+
else
|
|
11074
|
+
console.error('[network] Cannot load file \'version.appup\'.', err);
|
|
11075
|
+
// Continue
|
|
11076
|
+
}
|
|
11077
|
+
// Try loading manifest.json
|
|
11078
|
+
const manifest = yield this.getAppManifest(peer, opts);
|
|
11079
|
+
return manifest === null || manifest === void 0 ? void 0 : manifest.version;
|
|
11080
|
+
});
|
|
11081
|
+
}
|
|
11082
|
+
computePeerPath(peer, path) {
|
|
11023
11083
|
peer = peer || this.peer;
|
|
11024
11084
|
if (!peer)
|
|
11025
11085
|
return undefined;
|
|
11026
|
-
let peerUrl =
|
|
11086
|
+
let peerUrl = (peer instanceof Peer) ? peer.url : peer;
|
|
11027
11087
|
// Remove trailing slash
|
|
11028
11088
|
if (peerUrl.endsWith('/')) {
|
|
11029
11089
|
peerUrl = peerUrl.substr(0, peerUrl.length - 1);
|
|
11030
11090
|
}
|
|
11031
|
-
|
|
11091
|
+
// Add first path
|
|
11092
|
+
if (!path.startsWith('/')) {
|
|
11093
|
+
path = '/' + path;
|
|
11094
|
+
}
|
|
11095
|
+
// Concat peer URL and path
|
|
11096
|
+
return peerUrl + path;
|
|
11032
11097
|
}
|
|
11033
11098
|
/**
|
|
11034
11099
|
* Allow to force offline mode
|
|
@@ -13951,8 +14016,6 @@ class AccountService extends BaseGraphqlService {
|
|
|
13951
14016
|
}
|
|
13952
14017
|
canUserWriteDataForDepartment(recorderDepartment) {
|
|
13953
14018
|
if (ReferentialUtils.isEmpty(recorderDepartment)) {
|
|
13954
|
-
if (!this.isAdmin())
|
|
13955
|
-
console.warn('Unable to check if user has right: invalid recorderDepartment', recorderDepartment);
|
|
13956
14019
|
return this.isAdmin();
|
|
13957
14020
|
}
|
|
13958
14021
|
// Should be login, and status ENABLE
|
|
@@ -15037,6 +15100,12 @@ const CORE_CONFIG_OPTIONS = Object.freeze({
|
|
|
15037
15100
|
key: 'sumaris.android.install.url',
|
|
15038
15101
|
label: 'CONFIGURATION.OPTIONS.ANDROID_INSTALL_URL',
|
|
15039
15102
|
type: 'string'
|
|
15103
|
+
},
|
|
15104
|
+
DB_TIMEZONE: {
|
|
15105
|
+
key: 'sumaris.persistence.db.timezone',
|
|
15106
|
+
label: 'DB Timezone (readonly)',
|
|
15107
|
+
type: 'string',
|
|
15108
|
+
isTransient: true // ONly on server, cannot be set
|
|
15040
15109
|
}
|
|
15041
15110
|
});
|
|
15042
15111
|
|
|
@@ -15455,6 +15524,9 @@ class PlatformService extends StartableService {
|
|
|
15455
15524
|
isApp() {
|
|
15456
15525
|
return this._cordova && (this._android || this._ios);
|
|
15457
15526
|
}
|
|
15527
|
+
isMobileWeb() {
|
|
15528
|
+
return isMobile(window) && this.isWeb();
|
|
15529
|
+
}
|
|
15458
15530
|
get canDownload() {
|
|
15459
15531
|
return !!this.downloader && this.isAndroidCordova();
|
|
15460
15532
|
}
|
|
@@ -15468,6 +15540,7 @@ class PlatformService extends StartableService {
|
|
|
15468
15540
|
return this.platform.height();
|
|
15469
15541
|
}
|
|
15470
15542
|
ngOnStart() {
|
|
15543
|
+
var _a;
|
|
15471
15544
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15472
15545
|
const now = Date.now();
|
|
15473
15546
|
this.accountService.tokenType = undefined;
|
|
@@ -15493,11 +15566,16 @@ class PlatformService extends StartableService {
|
|
|
15493
15566
|
this.networkService.ready(),
|
|
15494
15567
|
this.audioProvider.ready()
|
|
15495
15568
|
]);
|
|
15496
|
-
|
|
15569
|
+
// Check if web app has update, and reload page if need
|
|
15570
|
+
if (this.isWeb() && this.environment.production) {
|
|
15571
|
+
yield this.checkAppVersion({ canReload: true });
|
|
15572
|
+
}
|
|
15497
15573
|
// Update cache configuration when network changed
|
|
15498
15574
|
this.networkService.onNetworkStatusChanges
|
|
15499
|
-
.pipe(skip(1)
|
|
15575
|
+
.pipe(skip(1) // Olready done once, so we skip the first event
|
|
15576
|
+
)
|
|
15500
15577
|
.subscribe(type => this.configureCache(type !== 'none'));
|
|
15578
|
+
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, web: ${this.isWeb()}, downloader: ${this.canDownload}, fileOpener: ${this.canOpenFile}} in ${Date.now() - now}ms`);
|
|
15501
15579
|
// Update authentication type
|
|
15502
15580
|
this.configService.config
|
|
15503
15581
|
.pipe(map(config => config === null || config === void 0 ? void 0 : config.getProperty(CORE_CONFIG_OPTIONS.AUTH_TOKEN_TYPE)), filter(isNotNilOrBlank), distinctUntilChanged())
|
|
@@ -15514,6 +15592,14 @@ class PlatformService extends StartableService {
|
|
|
15514
15592
|
this.audioProvider.playStartupSound();
|
|
15515
15593
|
}, 1000);
|
|
15516
15594
|
}
|
|
15595
|
+
// Check if new version, every 1 min
|
|
15596
|
+
const checkIntervalMs = (this.environment.checkAppVersionIntervalInSeconds || 0) * 1000;
|
|
15597
|
+
if (this.isWeb() && this.environment.production && checkIntervalMs > 0) {
|
|
15598
|
+
(_a = this.checkAppVersionTimer) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
15599
|
+
this.checkAppVersionTimer = timer(checkIntervalMs, checkIntervalMs)
|
|
15600
|
+
.subscribe(_ => this.checkAppVersion({ silent: true, canReload: false /*do NOT auto reload, when app is started*/ }));
|
|
15601
|
+
this.registerSubscription(this.checkAppVersionTimer);
|
|
15602
|
+
}
|
|
15517
15603
|
}
|
|
15518
15604
|
catch (err) {
|
|
15519
15605
|
// Manage startup error
|
|
@@ -15635,6 +15721,74 @@ class PlatformService extends StartableService {
|
|
|
15635
15721
|
this.cache.setDefaultTTL(cacheTTL);
|
|
15636
15722
|
this.cache.setOfflineInvalidate(false); // Do not invalidate cache when offline
|
|
15637
15723
|
}
|
|
15724
|
+
checkAppVersion(opts) {
|
|
15725
|
+
var _a, _b, _c;
|
|
15726
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15727
|
+
if (this.networkService.offline || !this.isWeb())
|
|
15728
|
+
return; // Skip
|
|
15729
|
+
const silent = (opts === null || opts === void 0 ? void 0 : opts.silent) === true;
|
|
15730
|
+
const production = this.environment.production;
|
|
15731
|
+
const canAutoReload = !opts || opts.canReload !== false;
|
|
15732
|
+
if (!silent)
|
|
15733
|
+
console.info('[platform] Checking remote app version...');
|
|
15734
|
+
const actualVersion = this.environment.version;
|
|
15735
|
+
if (isNilOrBlank(actualVersion)) {
|
|
15736
|
+
console.error('[platform] Missing required value for \'environment.version\'. Cannot check remote app version.');
|
|
15737
|
+
(_a = this.checkAppVersionTimer) === null || _a === void 0 ? void 0 : _a.unsubscribe(); // Stop timer if exists
|
|
15738
|
+
return; // Skip
|
|
15739
|
+
}
|
|
15740
|
+
const peer = undefined; // location.origin + this.environment.baseUrl;
|
|
15741
|
+
const remoteVersion = yield this.networkService.getAppVersion(peer);
|
|
15742
|
+
if (isNilOrBlank(remoteVersion)) {
|
|
15743
|
+
if (production && !silent)
|
|
15744
|
+
console.error('[platform] Cannot load remote app version. Skipping version check');
|
|
15745
|
+
(_b = this.checkAppVersionTimer) === null || _b === void 0 ? void 0 : _b.unsubscribe(); // Stop timer if exists
|
|
15746
|
+
return;
|
|
15747
|
+
}
|
|
15748
|
+
if (VersionUtils.isCompatible(remoteVersion, actualVersion)) {
|
|
15749
|
+
if (!silent)
|
|
15750
|
+
console.info('[platform] Checking remote app version [OK]');
|
|
15751
|
+
return;
|
|
15752
|
+
}
|
|
15753
|
+
// If newer version exists
|
|
15754
|
+
let reloadPath = location.href.replace(/[&]?version=[0-9.]+/gi, ''); // Remove old version in query params
|
|
15755
|
+
reloadPath += (reloadPath.indexOf('?') === -1) ? '?' : '&'; // Add query param separator
|
|
15756
|
+
reloadPath += 'version=' + remoteVersion; // Add version (to avoid a reload infinite loop)
|
|
15757
|
+
// Already try to reload, but version still bad
|
|
15758
|
+
if (reloadPath === location.href) {
|
|
15759
|
+
if (canAutoReload)
|
|
15760
|
+
console.error(`[platform] Reloaded page failed, because version still mismatch! Please check version.appup file (expected app version: ${actualVersion})`);
|
|
15761
|
+
// Stop timer, to avoid infinite loop
|
|
15762
|
+
(_c = this.checkAppVersionTimer) === null || _c === void 0 ? void 0 : _c.unsubscribe();
|
|
15763
|
+
return;
|
|
15764
|
+
}
|
|
15765
|
+
console.warn(`[platform] More recent version detected (remote: ${remoteVersion}, actual: ${actualVersion}`);
|
|
15766
|
+
// Auto reload
|
|
15767
|
+
if (canAutoReload) {
|
|
15768
|
+
console.info('[platform] Will reloading at ' + reloadPath);
|
|
15769
|
+
location.href = reloadPath;
|
|
15770
|
+
// App stop
|
|
15771
|
+
}
|
|
15772
|
+
// Ask user to reload
|
|
15773
|
+
else {
|
|
15774
|
+
yield this.showToast({
|
|
15775
|
+
message: 'CONFIRM.RELOAD_APP',
|
|
15776
|
+
messageParams: { version: remoteVersion, name: this.environment.name },
|
|
15777
|
+
type: 'info', duration: -1,
|
|
15778
|
+
buttons: [
|
|
15779
|
+
// Reload button
|
|
15780
|
+
{ text: this.translate.instant('COMMON.BTN_RELOAD'),
|
|
15781
|
+
side: 'end',
|
|
15782
|
+
handler: () => {
|
|
15783
|
+
location.href = reloadPath;
|
|
15784
|
+
return true;
|
|
15785
|
+
}
|
|
15786
|
+
}
|
|
15787
|
+
]
|
|
15788
|
+
});
|
|
15789
|
+
}
|
|
15790
|
+
});
|
|
15791
|
+
}
|
|
15638
15792
|
storageReady() {
|
|
15639
15793
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15640
15794
|
console.info(`[platform] Starting storage...`);
|
|
@@ -15850,6 +16004,13 @@ class FileResponse {
|
|
|
15850
16004
|
this.statusText = (init === null || init === void 0 ? void 0 : init.statusText) || 'OK';
|
|
15851
16005
|
}
|
|
15852
16006
|
}
|
|
16007
|
+
function isProgressEvent(event) {
|
|
16008
|
+
return event.type === HttpEventType.UploadProgress
|
|
16009
|
+
|| event.type === HttpEventType.DownloadProgress;
|
|
16010
|
+
}
|
|
16011
|
+
function isResponseEvent(event) {
|
|
16012
|
+
return event.type === HttpEventType.Response;
|
|
16013
|
+
}
|
|
15853
16014
|
|
|
15854
16015
|
class UploadFileComponent {
|
|
15855
16016
|
constructor(cd, translate) {
|
|
@@ -15985,7 +16146,7 @@ class UploadFileComponent {
|
|
|
15985
16146
|
switchMap(file => this.uploadFn(file)
|
|
15986
16147
|
.pipe(map((event) => {
|
|
15987
16148
|
// Progress event
|
|
15988
|
-
if ((event
|
|
16149
|
+
if (isProgressEvent(event)) {
|
|
15989
16150
|
if (isNotNil(event.loaded) && event.loaded >= 0) {
|
|
15990
16151
|
file.progress = Math.min(1, event.loaded / (event.total || 1));
|
|
15991
16152
|
}
|
|
@@ -15993,15 +16154,20 @@ class UploadFileComponent {
|
|
|
15993
16154
|
file.progress = -1; // Indeterminate progression
|
|
15994
16155
|
}
|
|
15995
16156
|
}
|
|
16157
|
+
// User event
|
|
16158
|
+
else if (event.type === HttpEventType.User) {
|
|
16159
|
+
file.progress = -1; // Indeterminate progression
|
|
16160
|
+
}
|
|
15996
16161
|
// Response event
|
|
15997
|
-
else if (event
|
|
16162
|
+
else if (isResponseEvent(event)) {
|
|
15998
16163
|
file.progress = 1;
|
|
15999
16164
|
file.response = event;
|
|
16000
16165
|
console.debug(`[upload-file] ${file.name}: ${event.statusText || 'OK'}`, file.response);
|
|
16001
16166
|
}
|
|
16002
|
-
// Other events
|
|
16167
|
+
// Other events: ignore
|
|
16003
16168
|
else {
|
|
16004
|
-
|
|
16169
|
+
// DEBUG
|
|
16170
|
+
console.debug('[upload-file] Ignoring a file event: ', event);
|
|
16005
16171
|
}
|
|
16006
16172
|
return file;
|
|
16007
16173
|
}), catchError((err) => {
|
|
@@ -17810,7 +17976,7 @@ class AuthForm extends AppForm {
|
|
|
17810
17976
|
this.showPwd = false;
|
|
17811
17977
|
this.onCancel = new EventEmitter();
|
|
17812
17978
|
this.onSubmit = new EventEmitter();
|
|
17813
|
-
this.mobile =
|
|
17979
|
+
this.mobile = settings.mobile;
|
|
17814
17980
|
this.canWorkOffline = this.settings.hasOfflineFeature();
|
|
17815
17981
|
this._enable = true;
|
|
17816
17982
|
}
|
|
@@ -19872,10 +20038,10 @@ class AppInstallUpgradeCard {
|
|
|
19872
20038
|
}
|
|
19873
20039
|
getCompatibleInstallLinks(installLinks) {
|
|
19874
20040
|
// Cordova already running: not need to install
|
|
19875
|
-
if (this.platform.
|
|
20041
|
+
if (this.platform.isCordova())
|
|
19876
20042
|
return undefined;
|
|
19877
20043
|
// If mobile web: return all
|
|
19878
|
-
if (this.platform.
|
|
20044
|
+
if (this.platform.isMobileWeb()) {
|
|
19879
20045
|
return installLinks;
|
|
19880
20046
|
}
|
|
19881
20047
|
return undefined;
|
|
@@ -21038,8 +21204,10 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
21038
21204
|
listenChanges(id, opts) {
|
|
21039
21205
|
if (isNil(id))
|
|
21040
21206
|
throw Error('Missing argument \'id\' ');
|
|
21041
|
-
if (!this.subscriptions.listenChanges)
|
|
21042
|
-
|
|
21207
|
+
if (!this.subscriptions.listenChanges) {
|
|
21208
|
+
console.warn(`${this.constructor.name}.listenChanges() not implemented yet. Will empty observable`);
|
|
21209
|
+
return of();
|
|
21210
|
+
}
|
|
21043
21211
|
const variables = opts && opts.variables || {
|
|
21044
21212
|
id,
|
|
21045
21213
|
interval: toNumber(opts && opts.interval, 0) // no timer by default
|
|
@@ -26625,5 +26793,5 @@ CoreTestingModule.decorators = [
|
|
|
26625
26793
|
* Generated bundle index. Do not edit.
|
|
26626
26794
|
*/
|
|
26627
26795
|
|
|
26628
|
-
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, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, 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, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetPipe, 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, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, 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, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, 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, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh, AppIconComponent as ɵi, NumpadTestPage as ɵj, MatBadgeIconTestPage as ɵk, ToastTestingModule as ɵl, ToastTestingPage as ɵm };
|
|
26796
|
+
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, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, 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, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetPipe, 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, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, 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, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, 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, isProgressEvent, isResponseEvent, 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, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh, AppIconComponent as ɵi, NumpadTestPage as ɵj, MatBadgeIconTestPage as ɵk, ToastTestingModule as ɵl, ToastTestingPage as ɵm };
|
|
26629
26797
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|