@sumaris-net/ngx-components 1.2.4 → 1.2.8
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 +33 -21
- 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 +4 -0
- package/esm2015/src/app/core/install/install-upgrade-card.component.js +7 -6
- package/esm2015/src/app/core/services/platform.service.js +20 -14
- package/fesm2015/sumaris-net.ngx-components.js +25 -18
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/core/services/platform.service.d.ts +3 -4
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -80,7 +80,6 @@ import { CacheService, CacheModule } from 'ionic-cache';
|
|
|
80
80
|
import * as i6 from 'ionic-cache/dist/cache.service';
|
|
81
81
|
import * as i9 from '@ionic-native/network/ngx/index';
|
|
82
82
|
import * as i10 from '@ionic-native/splash-screen/ngx/index';
|
|
83
|
-
import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
|
|
84
83
|
import { StatusBar } from '@ionic-native/status-bar/ngx';
|
|
85
84
|
import * as i2$4 from '@angular/cdk/platform';
|
|
86
85
|
import { Platform as Platform$1 } from '@angular/cdk/platform';
|
|
@@ -102,7 +101,6 @@ import * as i14 from '@ionic-native/status-bar/ngx/index';
|
|
|
102
101
|
import * as i15 from '@ionic-native/keyboard/ngx/index';
|
|
103
102
|
import * as i17 from '@ionic-native/in-app-browser/ngx/index';
|
|
104
103
|
import * as i18 from '@ionic-native/downloader/ngx/index';
|
|
105
|
-
import * as i19 from '@awesome-cordova-plugins/file-opener/ngx/index';
|
|
106
104
|
import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
|
|
107
105
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
108
106
|
import { NgxJdenticonModule } from 'ngx-jdenticon';
|
|
@@ -14590,7 +14588,7 @@ ConfigService.ctorParameters = () => [
|
|
|
14590
14588
|
|
|
14591
14589
|
const moment$2 = momentImported;
|
|
14592
14590
|
class PlatformService extends StartableService {
|
|
14593
|
-
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader
|
|
14591
|
+
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
|
|
14594
14592
|
super(platform);
|
|
14595
14593
|
this.platform = platform;
|
|
14596
14594
|
this.cdkPlatform = cdkPlatform;
|
|
@@ -14611,7 +14609,6 @@ class PlatformService extends StartableService {
|
|
|
14611
14609
|
this.splashScreen = splashScreen;
|
|
14612
14610
|
this.browser = browser;
|
|
14613
14611
|
this.downloader = downloader;
|
|
14614
|
-
this.fileOpener = fileOpener;
|
|
14615
14612
|
this._downloadingJobs = new Map();
|
|
14616
14613
|
this._debug = !environment.production;
|
|
14617
14614
|
if (this._debug)
|
|
@@ -14636,6 +14633,9 @@ class PlatformService extends StartableService {
|
|
|
14636
14633
|
get canDownload() {
|
|
14637
14634
|
return isNotNil(this.downloader);
|
|
14638
14635
|
}
|
|
14636
|
+
get canOpenFile() {
|
|
14637
|
+
return false;
|
|
14638
|
+
}
|
|
14639
14639
|
width() {
|
|
14640
14640
|
return this.platform.width();
|
|
14641
14641
|
}
|
|
@@ -14671,7 +14671,7 @@ class PlatformService extends StartableService {
|
|
|
14671
14671
|
this.networkService.ready(),
|
|
14672
14672
|
this.audioProvider.ready()
|
|
14673
14673
|
]);
|
|
14674
|
-
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, touchUi: ${this.touchUi}, downloader: ${this.canDownload}} in ${Date.now() - now}ms`);
|
|
14674
|
+
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, touchUi: ${this.touchUi}, downloader: ${this.canDownload}, fileOpener: ${this.canOpenFile}} in ${Date.now() - now}ms`);
|
|
14675
14675
|
// Update cache configuration when network changed
|
|
14676
14676
|
this.networkService.onNetworkStatusChanges
|
|
14677
14677
|
.pipe(skip(1)) // Skip the first event (behavior subject send event immediately)
|
|
@@ -14708,10 +14708,6 @@ class PlatformService extends StartableService {
|
|
|
14708
14708
|
window.open(url, target, features, replace);
|
|
14709
14709
|
}
|
|
14710
14710
|
}
|
|
14711
|
-
openFile(filePath, fileMimeType) {
|
|
14712
|
-
console.debug(`[platform] Opening file: ${filePath} (${fileMimeType}) ...`);
|
|
14713
|
-
return this.fileOpener.open(filePath, fileMimeType);
|
|
14714
|
-
}
|
|
14715
14711
|
getDownloadingJob(uri) {
|
|
14716
14712
|
return this._downloadingJobs.get(uri);
|
|
14717
14713
|
}
|
|
@@ -14745,11 +14741,22 @@ class PlatformService extends StartableService {
|
|
|
14745
14741
|
// Fallback (if not Android and Cordova): opening the URI using the browser
|
|
14746
14742
|
// TODO: find a way to download under iOS (see https://www.c-sharpcorner.com/article/how-to-download-a-file-using-file-transfer-plugin-in-ionic-3/)
|
|
14747
14743
|
else {
|
|
14748
|
-
console.warn('[platform] Cannot use
|
|
14744
|
+
console.warn('[platform] Cannot use Cordova downloader plugin: using browser open()');
|
|
14749
14745
|
this.open(request.uri, '_system', 'location=no', true);
|
|
14750
14746
|
return of();
|
|
14751
14747
|
}
|
|
14752
14748
|
}
|
|
14749
|
+
openFile(filePath, fileMimeType) {
|
|
14750
|
+
console.debug(`[platform] Opening file: ${filePath} (${fileMimeType}) ...`);
|
|
14751
|
+
//if (this.fileOpener) {
|
|
14752
|
+
// return this.fileOpener.open(filePath, fileMimeType);
|
|
14753
|
+
// }
|
|
14754
|
+
//else {
|
|
14755
|
+
console.warn('[platform] Cannot use Cordova FileOpener plugin: using browser open()');
|
|
14756
|
+
this.open(filePath, '_system', 'location=no', true);
|
|
14757
|
+
return Promise.resolve();
|
|
14758
|
+
//}
|
|
14759
|
+
}
|
|
14753
14760
|
/* -- protected methods -- */
|
|
14754
14761
|
configureCordovaPlugins(mobile) {
|
|
14755
14762
|
console.info('[platform] Configuring Cordova plugins...');
|
|
@@ -14926,7 +14933,7 @@ class PlatformService extends StartableService {
|
|
|
14926
14933
|
});
|
|
14927
14934
|
}
|
|
14928
14935
|
}
|
|
14929
|
-
PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8), i0.ɵɵinject(i18.Downloader, 8)
|
|
14936
|
+
PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8), i0.ɵɵinject(i18.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
|
|
14930
14937
|
PlatformService.decorators = [
|
|
14931
14938
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14932
14939
|
];
|
|
@@ -14949,8 +14956,7 @@ PlatformService.ctorParameters = () => [
|
|
|
14949
14956
|
{ type: Keyboard, decorators: [{ type: Optional }] },
|
|
14950
14957
|
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
14951
14958
|
{ type: InAppBrowser, decorators: [{ type: Optional }] },
|
|
14952
|
-
{ type: Downloader, decorators: [{ type: Optional }] }
|
|
14953
|
-
{ type: FileOpener, decorators: [{ type: Optional }] }
|
|
14959
|
+
{ type: Downloader, decorators: [{ type: Optional }] }
|
|
14954
14960
|
];
|
|
14955
14961
|
|
|
14956
14962
|
class AppHelpModal {
|
|
@@ -18982,7 +18988,8 @@ class AppInstallUpgradeCard {
|
|
|
18982
18988
|
mimeType: link.mimeType
|
|
18983
18989
|
}))
|
|
18984
18990
|
.then((location) => {
|
|
18985
|
-
|
|
18991
|
+
if (this.platform.canOpenFile)
|
|
18992
|
+
link.location = location;
|
|
18986
18993
|
link.downloading = false;
|
|
18987
18994
|
})
|
|
18988
18995
|
.catch(() => link.downloading = false)
|
|
@@ -18991,12 +18998,12 @@ class AppInstallUpgradeCard {
|
|
|
18991
18998
|
}
|
|
18992
18999
|
openFile(event, link) {
|
|
18993
19000
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18994
|
-
if (!link || !link.location) {
|
|
18995
|
-
console.error('[install-upgrade-card] Missing required argument \'link.location\'');
|
|
19001
|
+
if (!link || !link.location || !link.mimeType) {
|
|
19002
|
+
console.error('[install-upgrade-card] Missing required argument \'link.location\' or \'link.mimeType\'');
|
|
18996
19003
|
return; // Skip
|
|
18997
19004
|
}
|
|
18998
19005
|
try {
|
|
18999
|
-
yield this.platform.openFile(link.location,
|
|
19006
|
+
yield this.platform.openFile(link.location, link.mimeType);
|
|
19000
19007
|
}
|
|
19001
19008
|
catch (err) {
|
|
19002
19009
|
console.error('[install-upgrade-card] Cannot open file: ' + (err && err.message || err), err);
|
|
@@ -19251,7 +19258,7 @@ class AppInstallUpgradeCard {
|
|
|
19251
19258
|
AppInstallUpgradeCard.decorators = [
|
|
19252
19259
|
{ type: Component, args: [{
|
|
19253
19260
|
selector: 'app-install-upgrade-card',
|
|
19254
|
-
template: "\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && upgradeLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of upgradeLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Update offline feature card-->\n<ion-card *ngIf=\"showUpdateOfflineFeature && !loading && !offline\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h4>\n <b [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE'| translate\"></b>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"onUpdateOfflineModeClick.emit($event)\">\n <span translate>NETWORK.BTN_UPDATE</span>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Display a download button, depending on the link URL, and the device platform -->\n<ng-template #downloadButton let-link>\n\n <ng-container *ngIf=\"link.filename; else redirectButton\">\n\n <ng-container *ngIf=\"canDownload; else webDownloadButton\">\n <!-- Download using platform -->\n <ion-button (click)=\"download($event, asLink(link))\"\n *ngIf=\"!link.location; else openButton\"\n [disabled]=\"downloading\"\n color=\"tertiary\" class=\"ion-float-end\">\n <ion-icon slot=\"start\" *ngIf=\"!downloading\" name=\"download\"></ion-icon>\n <ion-spinner slot=\"start\" class=\"ion-no-padding\" *ngIf=\"link.downloading\"></ion-spinner>\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Open APK button -->\n <ng-template #openButton>\n <ion-button *ngIf=\"link.location\"\n (click)=\"openFile($event, link)\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_INSTALL</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web download button -->\n <ng-template #webDownloadButton>\n <ion-button [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n</ng-template>\n\n\n<!-- Waiting spinner -->\n<ng-template #waitingSpinner>\n <ion-spinner color=\"light\"></ion-spinner>\n</ng-template>\n",
|
|
19261
|
+
template: "\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && upgradeLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of upgradeLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Update offline feature card-->\n<ion-card *ngIf=\"showUpdateOfflineFeature && !loading && !offline\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h4>\n <b [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE'| translate\"></b>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"onUpdateOfflineModeClick.emit($event)\">\n <span translate>NETWORK.BTN_UPDATE</span>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Display a download button, depending on the link URL, and the device platform -->\n<ng-template #downloadButton let-link>\n\n <ng-container *ngIf=\"link.filename; else redirectButton\">\n\n <ng-container *ngIf=\"canDownload; else webDownloadButton\">\n <!-- Download using platform -->\n <ion-button (click)=\"download($event, asLink(link))\"\n *ngIf=\"!link.location; else openButton\"\n [disabled]=\"link.downloading\"\n color=\"tertiary\" class=\"ion-float-end\">\n <ion-icon slot=\"start\" *ngIf=\"!link.downloading\" name=\"download\"></ion-icon>\n <ion-spinner slot=\"start\" class=\"ion-no-padding\" *ngIf=\"link.downloading\"></ion-spinner>\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Open APK button -->\n <ng-template #openButton>\n <ion-button *ngIf=\"link.location\"\n (click)=\"openFile($event, link)\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_INSTALL</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web download button -->\n <ng-template #webDownloadButton>\n <ion-button [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n</ng-template>\n\n\n<!-- Waiting spinner -->\n<ng-template #waitingSpinner>\n <ion-spinner color=\"light\"></ion-spinner>\n</ng-template>\n",
|
|
19255
19262
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
19256
19263
|
animations: [slideUpDownAnimation],
|
|
19257
19264
|
styles: ["ion-text small{font-size:85%}"]
|