@sumaris-net/ngx-components 1.11.7 → 1.11.10

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.
@@ -18002,8 +18002,8 @@
18002
18002
  UploadFileComponent.prototype.deleteFile = function (index) {
18003
18003
  return __awaiter(this, void 0, void 0, function () {
18004
18004
  var file, deleted, err_1;
18005
- return __generator(this, function (_d) {
18006
- switch (_d.label) {
18005
+ return __generator(this, function (_b) {
18006
+ switch (_b.label) {
18007
18007
  case 0:
18008
18008
  file = this.files[index];
18009
18009
  if (!(file.progress === 1 && this.deleteFn)) return [3 /*break*/, 6];
@@ -18011,18 +18011,18 @@
18011
18011
  console.warn("[upload-file] This file already deleting");
18012
18012
  return [2 /*return*/];
18013
18013
  }
18014
- _d.label = 1;
18014
+ _b.label = 1;
18015
18015
  case 1:
18016
- _d.trys.push([1, 3, 4, 5]);
18016
+ _b.trys.push([1, 3, 4, 5]);
18017
18017
  file.deleting = true;
18018
18018
  return [4 /*yield*/, this.deleteFn(file)];
18019
18019
  case 2:
18020
- deleted = _d.sent();
18020
+ deleted = _b.sent();
18021
18021
  if (!deleted)
18022
18022
  return [2 /*return*/];
18023
18023
  return [3 /*break*/, 5];
18024
18024
  case 3:
18025
- err_1 = _d.sent();
18025
+ err_1 = _b.sent();
18026
18026
  console.error(err_1 && err_1.message || err_1);
18027
18027
  return [2 /*return*/];
18028
18028
  case 4:
@@ -18039,7 +18039,7 @@
18039
18039
  console.warn("[upload-file] Cannot remove this file while uploading");
18040
18040
  return [2 /*return*/];
18041
18041
  }
18042
- _d.label = 7;
18042
+ _b.label = 7;
18043
18043
  case 7:
18044
18044
  this.files.splice(index, 1);
18045
18045
  this.cd.markForCheck();
@@ -18054,7 +18054,7 @@
18054
18054
  * @param files (Files List)
18055
18055
  */
18056
18056
  UploadFileComponent.prototype.prepareFilesList = function (files) {
18057
- var _d;
18057
+ var _b;
18058
18058
  var items;
18059
18059
  if (files instanceof FileList) {
18060
18060
  items = [];
@@ -18066,7 +18066,7 @@
18066
18066
  else {
18067
18067
  items = files;
18068
18068
  }
18069
- (_d = this.files).push.apply(_d, __spread(items));
18069
+ (_b = this.files).push.apply(_b, __spread(items));
18070
18070
  this.fileDropEl.nativeElement.value = '';
18071
18071
  // Start upload
18072
18072
  if (this.instantUpload) {
@@ -18080,7 +18080,7 @@
18080
18080
  return __awaiter(this, void 0, void 0, function () {
18081
18081
  var $processingFileCountChange, $changes, jobs;
18082
18082
  var _this = this;
18083
- return __generator(this, function (_d) {
18083
+ return __generator(this, function (_b) {
18084
18084
  if (!files) {
18085
18085
  console.info('[upload-file] Uploading all files...');
18086
18086
  files = this.files;
@@ -18117,20 +18117,20 @@
18117
18117
  // Start uploading
18118
18118
  operators.switchMap(function (file) { return _this.uploadFn(file)
18119
18119
  .pipe(operators.map(function (event) {
18120
- var _a, _b, _c;
18121
18120
  // Progress event
18122
18121
  if ((event === null || event === void 0 ? void 0 : event.type) === i2$1.HttpEventType.UploadProgress || event.type === i2$1.HttpEventType.User) {
18123
- var total = event.total || 1;
18124
- var loaded = event.loaded || 0;
18125
- file.progress = Math.min(1, loaded / total);
18122
+ if (isNotNil(event.loaded) && event.loaded >= 0) {
18123
+ file.progress = Math.min(1, event.loaded / (event.total || 1));
18124
+ }
18125
+ else {
18126
+ file.progress = -1; // Indeterminate progression
18127
+ }
18126
18128
  }
18127
18129
  // Response event
18128
18130
  else if (event instanceof i2$1.HttpResponse || event instanceof FileResponse) {
18129
- file.result = event.body;
18130
18131
  file.progress = 1;
18131
- var message = ((_a = file.result) === null || _a === void 0 ? void 0 : _a.message) || event.statusText || 'OK';
18132
- console.debug("[upload-file] " + file.name + ": " + message
18133
- + (((_b = file.result) === null || _b === void 0 ? void 0 : _b.finalName) ? " (finalName: " + ((_c = file.result) === null || _c === void 0 ? void 0 : _c.finalName) + ")" : ''));
18132
+ file.response = event;
18133
+ console.debug("[upload-file] " + file.name + ": " + (event.statusText || 'OK'), file.response);
18134
18134
  }
18135
18135
  // Other events
18136
18136
  else {
@@ -18162,7 +18162,7 @@
18162
18162
  UploadFileComponent.decorators = [
18163
18163
  { type: i0.Component, args: [{
18164
18164
  selector: 'app-upload-file',
18165
- template: "<div *ngIf=\"!uniqueFile || files.length === 0\"\n class=\"container\"\n appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n multiple\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\">file_upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <div *ngFor=\"let file of files; index as i\"\n class=\"single-file\"\n [class.deleting]=\"file.deleting\">\n <mat-icon>description</mat-icon>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file.name }}\n </h4>\n <p class=\"size\">\n {{ file.size | fileSize }}\n </p>\n <ion-progress-bar *ngIf=\"!file.error\"\n [value]=\"file.progress||0\"\n [type]=\"file.deleting ? 'indeterminate' : 'determinate'\"></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!(file.progress) || file.error\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n</div>\n",
18165
+ template: "<div *ngIf=\"!uniqueFile || files.length === 0\"\n class=\"container\"\n appDragAndDrop (fileDropped)=\"onFileDropped($event)\">\n <input\n type=\"file\"\n #fileDropRef\n id=\"fileDropRef\"\n multiple\n [accept]=\"fileExtension\"\n (change)=\"fileBrowseHandler($any($event.target).files)\"\n />\n <mat-icon style=\"font-size: xx-large\" color=\"accent\">file_upload</mat-icon>\n <ion-label\n [innerHTML]=\"\n 'FILE.UPLOAD.DRAG_AND_DROP' | translate: { extension: !fileExtension ? '' : ' (' + fileExtension + ')' }\n \"\n ></ion-label>\n <ion-button>{{ 'FILE.UPLOAD.BROWSE' | translate }}</ion-button>\n</div>\n<div class=\"files-list\">\n <div *ngFor=\"let file of files; index as i\"\n class=\"single-file\"\n [class.deleting]=\"file.deleting\">\n <mat-icon>description</mat-icon>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file.name }}\n </h4>\n <p class=\"size\">\n {{ file.size | fileSize }}\n </p>\n <ion-progress-bar *ngIf=\"!file.error\"\n [value]=\"file.progress||0\"\n [type]=\"(file.deleting || file.progress === -1) ? 'indeterminate' : 'determinate'\"></ion-progress-bar>\n <ion-label *ngIf=\"file.error\" color=\"danger\" [innerHTML]=\"file.error | translate\"></ion-label>\n </div>\n <!-- remote from list (before importation) -->\n <button *ngIf=\"!(file.progress) || file.error\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n <!-- delete file (remotely - after importation) -->\n <button *ngIf=\"file.progress === 1 && !!deleteFn && !file.deleting\" mat-icon-button (click)=\"deleteFile(i)\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n</div>\n",
18166
18166
  styles: [".container{width:calc(100% - 3rem);min-height:200px;padding:2rem;text-align:center;border:1px dashed #979797;position:relative;margin:1.5rem}.container input{opacity:0;position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;cursor:pointer}.container ion-label{display:block;font-size:20px;font-weight:600;color:#38424c}.container label{display:inline-block;color:#fff;width:183px;height:44px;border-radius:21.5px;background-color:#db202f;padding:8px 16px}.fileover{-webkit-animation:shake 1s;animation:shake 1s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.files-list{max-height:300px;overflow:auto}.files-list .single-file{display:flex;flex-grow:1;padding:.5rem;justify-content:space-between;align-items:center;border:1px dashed #979797;margin-bottom:1rem}.files-list .single-file.deleting .name{color:grey!important;font-style:italic!important}.files-list .single-file .name{font-size:14px;font-weight:500;color:#353f4a;margin:0}.files-list .single-file .size{font-size:12px;font-weight:500;color:#a4a4a4;margin:0 0 .25rem}.files-list .single-file .info{width:100%}@-webkit-keyframes shake{0%{transform:translate(1px,1px) rotate(0deg)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0deg)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0deg)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0deg)}to{transform:translate(1px,-2px) rotate(-1deg)}}@keyframes shake{0%{transform:translate(1px,1px) rotate(0deg)}10%{transform:translate(-1px,-2px) rotate(-1deg)}20%{transform:translate(-3px) rotate(1deg)}30%{transform:translate(3px,2px) rotate(0deg)}40%{transform:translate(1px,-1px) rotate(1deg)}50%{transform:translate(-1px,2px) rotate(-1deg)}60%{transform:translate(-3px,1px) rotate(0deg)}70%{transform:translate(3px,1px) rotate(-1deg)}80%{transform:translate(-1px,-1px) rotate(1deg)}90%{transform:translate(1px,2px) rotate(0deg)}to{transform:translate(1px,-2px) rotate(-1deg)}}"]
18167
18167
  },] }
18168
18168
  ];
@@ -18250,10 +18250,10 @@
18250
18250
  errors.forEach(function (error) { return console.error(error); });
18251
18251
  throw { message: 'FILE.UPLOAD.ERROR' };
18252
18252
  }
18253
- // return filenames
18253
+ // return files
18254
18254
  return [4 /*yield*/, this.popoverController.dismiss(files)];
18255
18255
  case 5:
18256
- // return filenames
18256
+ // return files
18257
18257
  _a.sent();
18258
18258
  return [3 /*break*/, 7];
18259
18259
  case 6:
@@ -29981,30 +29981,15 @@
29981
29981
  }
29982
29982
  UploadFileTestingPage.prototype.showPopover = function (event, opts) {
29983
29983
  return __awaiter(this, void 0, void 0, function () {
29984
- var modal, data;
29984
+ var data, filenames;
29985
29985
  var _this = this;
29986
- return __generator(this, function (_a) {
29987
- switch (_a.label) {
29988
- case 0: return [4 /*yield*/, this.popoverController.create({
29989
- component: UploadFilePopover,
29990
- componentProps: Object.assign({ title: 'modalTitle', uploadFn: function (file) { return _this.uploadFile(file); }, deleteFn: function (file) { return _this.deleteFile(file); } }, opts),
29991
- backdropDismiss: false,
29992
- keyboardClose: false,
29993
- event: event,
29994
- translucent: true,
29995
- cssClass: 'popover-large',
29996
- })];
29986
+ return __generator(this, function (_c) {
29987
+ switch (_c.label) {
29988
+ case 0: return [4 /*yield*/, FilesUtils.showUploadPopover(this.popoverController, event, Object.assign({ uploadFn: function (file) { return _this.uploadFile(file); }, deleteFn: function (file) { return _this.deleteFile(file); } }, opts))];
29997
29989
  case 1:
29998
- modal = _a.sent();
29999
- return [4 /*yield*/, modal.present()];
30000
- case 2:
30001
- _a.sent();
30002
- return [4 /*yield*/, modal.onDidDismiss()];
30003
- case 3:
30004
- data = (_a.sent()).data;
30005
- if (data) {
30006
- console.info('Popover result: ', data);
30007
- }
29990
+ data = (_c.sent()).data;
29991
+ filenames = (data || []).map(function (file) { var _a, _b; return (_b = (_a = file.response) === null || _a === void 0 ? void 0 : _a.body) === null || _b === void 0 ? void 0 : _b.finalName; });
29992
+ console.info('Popover result: ', filenames);
30008
29993
  return [2 /*return*/];
30009
29994
  }
30010
29995
  });
@@ -30023,7 +30008,8 @@
30023
30008
  loaded += loadStep;
30024
30009
  // Return progression
30025
30010
  if (loaded < file.size) {
30026
- return { type: i2$1.HttpEventType.UploadProgress, total: file.size, loaded: loaded };
30011
+ //return {type: HttpEventType.UploadProgress, total: file.size, loaded };
30012
+ return { type: i2$1.HttpEventType.UploadProgress, loaded: -1 };
30027
30013
  }
30028
30014
  // Stop the timer
30029
30015
  setTimeout(function () { return $stop.next(); }, 100);
@@ -30033,13 +30019,13 @@
30033
30019
  };
30034
30020
  UploadFileTestingPage.prototype.deleteFile = function (file) {
30035
30021
  return __awaiter(this, void 0, void 0, function () {
30036
- return __generator(this, function (_a) {
30037
- switch (_a.label) {
30022
+ return __generator(this, function (_c) {
30023
+ switch (_c.label) {
30038
30024
  case 0:
30039
30025
  console.info('[testing] Simulate remote deletion... (waiting 2s)');
30040
30026
  return [4 /*yield*/, sleep(2000)];
30041
30027
  case 1:
30042
- _a.sent();
30028
+ _c.sent();
30043
30029
  return [2 /*return*/, true];
30044
30030
  }
30045
30031
  });