@rs-pk/asset-management 1.0.27 → 1.0.29

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.
Files changed (57) hide show
  1. package/bundles/rs-pk-asset-management.umd.js +475 -89
  2. package/bundles/rs-pk-asset-management.umd.js.map +1 -1
  3. package/bundles/rs-pk-asset-management.umd.min.js +2 -2
  4. package/bundles/rs-pk-asset-management.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
  6. package/esm2015/lib/components/partial/asset-item/asset-item.component.js +6 -3
  7. package/esm2015/lib/components/partial/asset-list/asset-list.component.js +14 -6
  8. package/esm2015/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +2 -3
  9. package/esm2015/lib/components/partial/asset-wrapper/asset-wrapper.component.js +6 -10
  10. package/esm2015/lib/components/partial/file-list/file-list.component.js +1 -1
  11. package/esm2015/lib/components/partial/folder-item/folder-item.component.js +2 -2
  12. package/esm2015/lib/components/partial/folder-list/folder-list.component.js +33 -5
  13. package/esm2015/lib/components/partial/node-details/node-details.component.js +74 -13
  14. package/esm2015/lib/components/partial/node-tree/node-tree.component.js +164 -24
  15. package/esm2015/lib/components/partial/search-box/search-box.component.js +11 -6
  16. package/esm2015/lib/components/ui/modal/modal.component.js +1 -1
  17. package/esm2015/lib/datasources/node-tree.datasource.js +4 -3
  18. package/esm2015/lib/models/asset.model.js +15 -1
  19. package/esm2015/lib/models/index.js +2 -2
  20. package/esm2015/lib/services/asset.service.js +53 -11
  21. package/esm2015/lib/services/env-config.service.js +3 -1
  22. package/esm2015/lib/services/node-tree.service.js +27 -15
  23. package/esm5/lib/components/partial/asset-dialog/asset-dialog.component.js +1 -2
  24. package/esm5/lib/components/partial/asset-item/asset-item.component.js +6 -3
  25. package/esm5/lib/components/partial/asset-list/asset-list.component.js +14 -6
  26. package/esm5/lib/components/partial/asset-management-dialog/asset-management-dialog.component.js +2 -3
  27. package/esm5/lib/components/partial/asset-wrapper/asset-wrapper.component.js +6 -13
  28. package/esm5/lib/components/partial/file-list/file-list.component.js +1 -1
  29. package/esm5/lib/components/partial/folder-item/folder-item.component.js +2 -2
  30. package/esm5/lib/components/partial/folder-list/folder-list.component.js +40 -5
  31. package/esm5/lib/components/partial/node-details/node-details.component.js +92 -16
  32. package/esm5/lib/components/partial/node-tree/node-tree.component.js +202 -26
  33. package/esm5/lib/components/partial/search-box/search-box.component.js +11 -6
  34. package/esm5/lib/components/ui/modal/modal.component.js +1 -1
  35. package/esm5/lib/datasources/node-tree.datasource.js +5 -3
  36. package/esm5/lib/models/asset.model.js +15 -1
  37. package/esm5/lib/models/index.js +2 -2
  38. package/esm5/lib/services/asset.service.js +69 -12
  39. package/esm5/lib/services/env-config.service.js +3 -1
  40. package/esm5/lib/services/node-tree.service.js +38 -18
  41. package/fesm2015/rs-pk-asset-management.js +386 -79
  42. package/fesm2015/rs-pk-asset-management.js.map +1 -1
  43. package/fesm5/rs-pk-asset-management.js +477 -91
  44. package/fesm5/rs-pk-asset-management.js.map +1 -1
  45. package/lib/components/partial/asset-item/asset-item.component.d.ts +1 -0
  46. package/lib/components/partial/asset-list/asset-list.component.d.ts +1 -0
  47. package/lib/components/partial/asset-wrapper/asset-wrapper.component.d.ts +1 -1
  48. package/lib/components/partial/folder-list/folder-list.component.d.ts +8 -2
  49. package/lib/components/partial/node-details/node-details.component.d.ts +11 -0
  50. package/lib/components/partial/node-tree/node-tree.component.d.ts +21 -7
  51. package/lib/datasources/node-tree.datasource.d.ts +1 -1
  52. package/lib/models/asset.model.d.ts +7 -0
  53. package/lib/services/asset.service.d.ts +10 -3
  54. package/lib/services/env-config.service.d.ts +1 -0
  55. package/lib/services/node-tree.service.d.ts +7 -6
  56. package/package.json +3 -4
  57. package/rs-pk-asset-management.metadata.json +1 -1
@@ -1,7 +1,7 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/forms'), require('@angular/material/dialog'), require('@angular/material/button'), require('@angular/material/input'), require('@angular/material/icon'), require('@angular/material/tooltip'), require('@angular/material/tree'), require('@angular/material/paginator'), require('@angular/material/table'), require('@angular/material/progress-bar'), require('@angular/material/menu'), require('@angular/material/checkbox'), require('@angular/material/select'), require('@angular/material/progress-spinner'), require('@angular/common/http'), require('rxjs'), require('rxjs/internal/BehaviorSubject'), require('rxjs/operators'), require('rxjs/internal/Subject'), require('@angular/platform-browser'), require('@angular/material'), require('rxjs/internal/observable/of'), require('@angular/cdk/tree'), require('rxjs/internal/observable/combineLatest'), require('moment')) :
3
3
  typeof define === 'function' && define.amd ? define('@rs-pk/asset-management', ['exports', '@angular/core', '@angular/common', '@angular/forms', '@angular/material/dialog', '@angular/material/button', '@angular/material/input', '@angular/material/icon', '@angular/material/tooltip', '@angular/material/tree', '@angular/material/paginator', '@angular/material/table', '@angular/material/progress-bar', '@angular/material/menu', '@angular/material/checkbox', '@angular/material/select', '@angular/material/progress-spinner', '@angular/common/http', 'rxjs', 'rxjs/internal/BehaviorSubject', 'rxjs/operators', 'rxjs/internal/Subject', '@angular/platform-browser', '@angular/material', 'rxjs/internal/observable/of', '@angular/cdk/tree', 'rxjs/internal/observable/combineLatest', 'moment'], factory) :
4
- (global = global || self, factory((global['rs-pk'] = global['rs-pk'] || {}, global['rs-pk']['asset-management'] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.material.dialog, global.ng.material.button, global.ng.material.input, global.ng.material.icon, global.ng.material.tooltip, global.ng.material.tree, global.ng.material.paginator, global.ng.material.table, global.ng.material['progress-bar'], global.ng.material.menu, global.ng.material.checkbox, global.ng.material.select, global.ng.material['progress-spinner'], global.ng.common.http, global.rxjs, global.rxjs['internal/BehaviorSubject'], global.rxjs.operators, global.rxjs['internal/Subject'], global.ng.platformBrowser, global.ng.material, global.rxjs['internal/observable/of'], global.ng.cdk.tree, global.rxjs['internal/observable/combineLatest'], global.moment_));
4
+ (global = global || self, factory((global['rs-pk'] = global['rs-pk'] || {}, global['rs-pk']['asset-management'] = {}), global.ng.core, global.ng.common, global.ng.forms, global.ng.material.dialog, global.ng.material.button, global.ng.material.input, global.ng.material.icon, global.ng.material.tooltip, global.ng.material.tree, global.ng.material.paginator, global.ng.material.table, global.ng.material.progressBar, global.ng.material.menu, global.ng.material.checkbox, global.ng.material.select, global.ng.material.progressSpinner, global.ng.common.http, global.rxjs, global.rxjs['internal/BehaviorSubject'], global.rxjs.operators, global.rxjs['internal/Subject'], global.ng.platformBrowser, global.ng.material, global.rxjs['internal/observable/of'], global.ng.cdk.tree, global.rxjs['internal/observable/combineLatest'], global.moment_));
5
5
  }(this, (function (exports, core, common, forms, dialog, button, input, icon, tooltip, tree, paginator, table, progressBar, menu, checkbox, select$1, progressSpinner, http, rxjs, BehaviorSubject, operators, Subject, platformBrowser, material, of, tree$1, combineLatest, moment_) { 'use strict';
6
6
 
7
7
  /*! *****************************************************************************
@@ -268,6 +268,10 @@
268
268
  IAssetByIdPayload.prototype.assetId;
269
269
  /** @type {?|undefined} */
270
270
  IAssetByIdPayload.prototype.isFilter;
271
+ /** @type {?|undefined} */
272
+ IAssetByIdPayload.prototype.pageIndex;
273
+ /** @type {?|undefined} */
274
+ IAssetByIdPayload.prototype.pageSize;
271
275
  }
272
276
  /**
273
277
  * @record
@@ -276,6 +280,8 @@
276
280
  if (false) {
277
281
  /** @type {?|undefined} */
278
282
  IInitialFolderTreeOptions.prototype.dispatchRootId;
283
+ /** @type {?|undefined} */
284
+ IInitialFolderTreeOptions.prototype.pageSize;
279
285
  }
280
286
  var AssetModel = /** @class */ (function () {
281
287
  function AssetModel() {
@@ -337,6 +343,8 @@
337
343
  AssetModel.prototype.HaveChildren;
338
344
  /** @type {?} */
339
345
  AssetModel.prototype.ParentId;
346
+ /** @type {?} */
347
+ AssetModel.prototype.Children;
340
348
  }
341
349
  var FolderTreeModel = /** @class */ (function (_super) {
342
350
  __extends(FolderTreeModel, _super);
@@ -386,6 +394,12 @@
386
394
  BackgroudProcessingStatus[BackgroudProcessingStatus.InProcessing] = 'InProcessing';
387
395
  BackgroudProcessingStatus[BackgroudProcessingStatus.Processed] = 'Processed';
388
396
  BackgroudProcessingStatus[BackgroudProcessingStatus.Failed] = 'Failed';
397
+ /** @type {?} */
398
+ var MAX_FOLDER_TREE_SIZE = 10;
399
+ /** @type {?} */
400
+ var DEFAULT_FOLDER_TREE_INDEX = 0;
401
+ /** @type {?} */
402
+ var ROOT_ASSET_ID = 'ROOT';
389
403
 
390
404
  /**
391
405
  * @fileoverview added by tsickle
@@ -632,6 +646,8 @@
632
646
  AMConfig.prototype.asset2Url;
633
647
  /** @type {?|undefined} */
634
648
  AMConfig.prototype.requestHeader;
649
+ /** @type {?|undefined} */
650
+ AMConfig.prototype.pageFolderSize;
635
651
  }
636
652
  /** @type {?} */
637
653
  var AM_CONFIG = new core.InjectionToken('asset.man.config.angular');
@@ -704,6 +720,18 @@
704
720
  this.baseUrl = this._env.asset2Url;
705
721
  this.initOptionFiles();
706
722
  }
723
+ Object.defineProperty(AssetService.prototype, "AMConfig", {
724
+ get: /**
725
+ * @return {?}
726
+ */
727
+ function () {
728
+ return {
729
+ pageFolderSize: this._env.pageFolderSize
730
+ };
731
+ },
732
+ enumerable: true,
733
+ configurable: true
734
+ });
707
735
  /**
708
736
  * @private
709
737
  * @return {?}
@@ -716,6 +744,8 @@
716
744
  this.keyword = '';
717
745
  this.pageSize = 12;
718
746
  this.pageIndex = 0;
747
+ this.pageFolderSize = this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE;
748
+ this.pageFolderIndex = 0;
719
749
  this.folderTotal = 0;
720
750
  this.fileTotal = 0;
721
751
  this.sortBy = SortFilesBy.MODIFIED_DATE;
@@ -754,16 +784,17 @@
754
784
  };
755
785
  /**
756
786
  * @param {?} folders
757
- * @param {?=} folderTotal
787
+ * @param {?=} pagination
758
788
  * @return {?}
759
789
  */
760
790
  AssetService.prototype.setFolderList = /**
761
791
  * @param {?} folders
762
- * @param {?=} folderTotal
792
+ * @param {?=} pagination
763
793
  * @return {?}
764
794
  */
765
- function (folders, folderTotal) {
766
- this.folderTotal = folderTotal || 0;
795
+ function (folders, pagination) {
796
+ this.setFolderTreePagination(pagination);
797
+ this.setFolderPagination(pagination);
767
798
  this.folderList$.next(folders);
768
799
  };
769
800
  /**
@@ -778,15 +809,17 @@
778
809
  /**
779
810
  * @param {?} assets
780
811
  * @param {?=} pagination
812
+ * @param {?=} totalFile
781
813
  * @return {?}
782
814
  */
783
815
  AssetService.prototype.setAssetList = /**
784
816
  * @param {?} assets
785
817
  * @param {?=} pagination
818
+ * @param {?=} totalFile
786
819
  * @return {?}
787
820
  */
788
- function (assets, pagination) {
789
- this.setPagination(pagination);
821
+ function (assets, pagination, totalFile) {
822
+ this.setPagination(pagination, totalFile);
790
823
  this.assetList$.next(assets);
791
824
  };
792
825
  /**
@@ -812,20 +845,52 @@
812
845
  /**
813
846
  * @private
814
847
  * @param {?} pagination
848
+ * @param {?} totalFile
815
849
  * @return {?}
816
850
  */
817
851
  AssetService.prototype.setPagination = /**
818
852
  * @private
819
853
  * @param {?} pagination
854
+ * @param {?} totalFile
820
855
  * @return {?}
821
856
  */
822
- function (pagination) {
857
+ function (pagination, totalFile) {
823
858
  if (pagination) {
824
- this.fileTotal = pagination.Total;
859
+ this.fileTotal = totalFile || 0;
825
860
  this.pageIndex = pagination.PageIndex;
826
861
  this.pageSize = pagination.PageSize;
827
862
  }
828
863
  };
864
+ /**
865
+ * @private
866
+ * @param {?} pagination
867
+ * @return {?}
868
+ */
869
+ AssetService.prototype.setFolderPagination = /**
870
+ * @private
871
+ * @param {?} pagination
872
+ * @return {?}
873
+ */
874
+ function (pagination) {
875
+ if (pagination) {
876
+ this.folderTotal = pagination.Total;
877
+ this.pageFolderIndex = pagination.PageIndex;
878
+ this.pageFolderSize = pagination.PageSize;
879
+ }
880
+ };
881
+ /**
882
+ * @param {?} pagination
883
+ * @return {?}
884
+ */
885
+ AssetService.prototype.setFolderTreePagination = /**
886
+ * @param {?} pagination
887
+ * @return {?}
888
+ */
889
+ function (pagination) {
890
+ if (pagination) {
891
+ this.folderTotal = pagination.Total;
892
+ }
893
+ };
829
894
  /**
830
895
  * @param {?} assetId
831
896
  * @return {?}
@@ -848,11 +913,15 @@
848
913
  * @return {?}
849
914
  */
850
915
  function (_a) {
851
- var assetId = _a.assetId, _b = _a.isFilter, isFilter = _b === void 0 ? true : _b;
916
+ var assetId = _a.assetId, _b = _a.isFilter, isFilter = _b === void 0 ? true : _b, _c = _a.pageIndex, pageIndex = _c === void 0 ? DEFAULT_FOLDER_TREE_INDEX : _c, _d = _a.pageSize, pageSize = _d === void 0 ? this._env.pageFolderSize || MAX_FOLDER_TREE_SIZE : _d;
852
917
  /** @type {?} */
853
918
  var url = this.baseUrl + "/File/GetChildren";
854
919
  /** @type {?} */
855
- var params = new http.HttpParams().set('getAll', 'true').set('isFolder', 'true');
920
+ var params = new http.HttpParams()
921
+ .set('getAll', 'true')
922
+ .set('isFolder', 'true')
923
+ .set('pageSize', "" + pageSize)
924
+ .set('pageIndex', "" + pageIndex);
856
925
  if (assetId) {
857
926
  params = params.set('assetId', assetId);
858
927
  }
@@ -929,6 +998,10 @@
929
998
  /** @type {?} */
930
999
  AssetService.prototype.pageIndex;
931
1000
  /** @type {?} */
1001
+ AssetService.prototype.pageFolderSize;
1002
+ /** @type {?} */
1003
+ AssetService.prototype.pageFolderIndex;
1004
+ /** @type {?} */
932
1005
  AssetService.prototype.folderTotal;
933
1006
  /** @type {?} */
934
1007
  AssetService.prototype.fileTotal;
@@ -1291,21 +1364,25 @@
1291
1364
  /**
1292
1365
  * @private
1293
1366
  * @param {?} id
1367
+ * @param {?=} pageSize
1294
1368
  * @return {?}
1295
1369
  */
1296
1370
  NodeTreeService.prototype.fetchChildrenFolder = /**
1297
1371
  * @private
1298
1372
  * @param {?} id
1373
+ * @param {?=} pageSize
1299
1374
  * @return {?}
1300
1375
  */
1301
- function (id) {
1376
+ function (id, pageSize) {
1302
1377
  return __awaiter(this, void 0, void 0, function () {
1303
1378
  var result, err_1;
1304
1379
  return __generator(this, function (_a) {
1305
1380
  switch (_a.label) {
1306
1381
  case 0:
1307
1382
  _a.trys.push([0, 2, , 3]);
1308
- return [4 /*yield*/, this.assetService.getChildrenFolders({ assetId: id, isFilter: false }).toPromise()];
1383
+ return [4 /*yield*/, this.assetService
1384
+ .getChildrenFolders({ assetId: id, isFilter: false, pageSize: pageSize || this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE })
1385
+ .toPromise()];
1309
1386
  case 1:
1310
1387
  result = _a.sent();
1311
1388
  if (result) {
@@ -1332,19 +1409,19 @@
1332
1409
  * @return {?}
1333
1410
  */
1334
1411
  function (_a) {
1335
- var dispatchRootId = _a.dispatchRootId;
1412
+ var dispatchRootId = _a.dispatchRootId, _b = _a.pageSize, pageSize = _b === void 0 ? this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE : _b;
1336
1413
  return __awaiter(this, void 0, void 0, function () {
1337
1414
  var result, initData;
1338
1415
  var _this = this;
1339
- return __generator(this, function (_b) {
1340
- switch (_b.label) {
1416
+ return __generator(this, function (_c) {
1417
+ switch (_c.label) {
1341
1418
  case 0:
1342
1419
  if (dispatchRootId) {
1343
1420
  this.loading$.next(true);
1344
1421
  }
1345
- return [4 /*yield*/, this.assetService.getChildrenFolders({ isFilter: false }).toPromise()];
1422
+ return [4 /*yield*/, this.assetService.getChildrenFolders({ isFilter: false, pageIndex: 0, pageSize: pageSize }).toPromise()];
1346
1423
  case 1:
1347
- result = _b.sent();
1424
+ result = _c.sent();
1348
1425
  if (!result) {
1349
1426
  return [2 /*return*/];
1350
1427
  }
@@ -1363,7 +1440,7 @@
1363
1440
  * @param {?} folder
1364
1441
  * @return {?}
1365
1442
  */
1366
- function (folder) { return new DynamicFlatNode(folder, 0, _this.isExpandable(folder)); }));
1443
+ function (folder) { return _this.getDynamicFlatNode(folder, 0); }));
1367
1444
  this.initialData$.next(initData);
1368
1445
  if (dispatchRootId) {
1369
1446
  this.loading$.next(false);
@@ -1375,17 +1452,33 @@
1375
1452
  };
1376
1453
  /**
1377
1454
  * @param {?} node
1455
+ * @param {?=} level
1456
+ * @return {?}
1457
+ */
1458
+ NodeTreeService.prototype.getDynamicFlatNode = /**
1459
+ * @param {?} node
1460
+ * @param {?=} level
1461
+ * @return {?}
1462
+ */
1463
+ function (node, level) {
1464
+ if (level === void 0) { level = 0; }
1465
+ return new DynamicFlatNode(node, level, this.isExpandable(node));
1466
+ };
1467
+ /**
1468
+ * @param {?} node
1469
+ * @param {?=} pageSize
1378
1470
  * @return {?}
1379
1471
  */
1380
1472
  NodeTreeService.prototype.getChildren = /**
1381
1473
  * @param {?} node
1474
+ * @param {?=} pageSize
1382
1475
  * @return {?}
1383
1476
  */
1384
- function (node) {
1477
+ function (node, pageSize) {
1385
1478
  return __awaiter(this, void 0, void 0, function () {
1386
1479
  return __generator(this, function (_a) {
1387
1480
  switch (_a.label) {
1388
- case 0: return [4 /*yield*/, this.fetchChildrenFolder(node.AssetId)];
1481
+ case 0: return [4 /*yield*/, this.fetchChildrenFolder(node.AssetId, pageSize)];
1389
1482
  case 1: return [2 /*return*/, _a.sent()];
1390
1483
  }
1391
1484
  });
@@ -1400,7 +1493,7 @@
1400
1493
  * @return {?}
1401
1494
  */
1402
1495
  function (node) {
1403
- return node.HaveChildren;
1496
+ return Boolean(node.HaveChildren);
1404
1497
  };
1405
1498
  /** Add asset to stored data */
1406
1499
  /**
@@ -1876,7 +1969,6 @@
1876
1969
  */
1877
1970
  function () {
1878
1971
  var _this = this;
1879
- console.log('Assest Management Dialog', this.data);
1880
1972
  this.initDialogConfig(this.data);
1881
1973
  select((/**
1882
1974
  * @param {?} state
@@ -1942,7 +2034,7 @@
1942
2034
  AssetManagementDialogComponent.decorators = [
1943
2035
  { type: core.Component, args: [{
1944
2036
  selector: 'lib-asset-management-dialog',
1945
- template: "<lib-modal heading=\"Asset management\" [customHeader]=\"true\">\n <ng-container subtitle>\n <lib-breadcrumb></lib-breadcrumb>\n </ng-container>\n <ng-container headerActions>\n <lib-search-box></lib-search-box>\n </ng-container>\n <ng-container content>\n <lib-asset-wrapper \n [header]=\"false\"\n [hasModifyPermission]=\"data.permission.modify\"\n [hasAccessPermission]=\"data.permission.access\"\n [hasArchivePermission]=\"data.permission.archive\"\n ></lib-asset-wrapper>\n </ng-container>\n <ng-container actions>\n <div class=\"asset-management-dialog__footer\">\n <div class=\"selected-assets\">\n <ng-container *ngIf=\"data?.limit\">\n <span>Selected{{' '}}</span>\n <span class=\"count\" [ngClass]=\"{'error': selectedAssets?.length && disabled}\">\n {{selectedAssets?.length}}/{{data?.limit}}\n </span>\n <span>\n {{data?.limit > 1 ? \"assets\": \"asset\"}}\n </span>\n </ng-container>\n\n </div>\n <div>\n <button mat-raised-button mat-dialog-close>Cancel</button>\n <button mat-raised-button color=\"primary\" (click)=\"selectAssets()\" [disabled]=\"disabled\">Done</button>\n </div>\n </div>\n </ng-container>\n</lib-modal>",
2037
+ template: "<lib-modal heading=\"Asset management\" [customHeader]=\"true\">\n <ng-container subtitle>\n <lib-breadcrumb></lib-breadcrumb>\n </ng-container>\n <ng-container headerActions>\n <lib-search-box></lib-search-box>\n </ng-container>\n <ng-container content>\n <lib-asset-wrapper\n [header]=\"false\"\n [isDialog]=\"true\"\n [hasModifyPermission]=\"data.permission.modify\"\n [hasAccessPermission]=\"data.permission.access\"\n [hasArchivePermission]=\"data.permission.archive\"\n ></lib-asset-wrapper>\n </ng-container>\n <ng-container actions>\n <div class=\"asset-management-dialog__footer\">\n <div class=\"selected-assets\">\n <ng-container *ngIf=\"data?.limit\">\n <span>Selected{{' '}}</span>\n <span class=\"count\" [ngClass]=\"{'error': selectedAssets?.length && disabled}\">\n {{selectedAssets?.length}}/{{data?.limit}}\n </span>\n <span>\n {{data?.limit > 1 ? \"assets\": \"asset\"}}\n </span>\n </ng-container>\n </div>\n <div>\n <button mat-raised-button mat-dialog-close>Cancel</button>\n <button mat-raised-button color=\"primary\" (click)=\"selectAssets()\" [disabled]=\"disabled\">Done</button>\n </div>\n </div>\n </ng-container>\n</lib-modal>",
1946
2038
  styles: [":host::ng-deep .asset-management-dialog__footer{display:flex;width:100%;align-items:center;justify-content:space-between}:host::ng-deep .asset-management-dialog__footer .selected-assets{font-size:14px;color:#979797}:host::ng-deep .asset-management-dialog__footer .selected-assets .count{color:#000}:host::ng-deep .asset-management-dialog__footer .selected-assets .error{color:#f44336}"]
1947
2039
  }] }
1948
2040
  ];
@@ -2367,7 +2459,7 @@
2367
2459
  { type: core.Component, args: [{
2368
2460
  selector: 'lib-modal',
2369
2461
  template: "<h4 mat-dialog-title *ngIf=\"!customHeader; else customHeaderTemplate\">\n <div class=\"lib-modal--title\" [title]=\"heading\">\n {{ heading }}\n </div>\n <div class=\"lib-modal--close\">\n <mat-icon mat-dialog-close>close</mat-icon>\n </div>\n</h4>\n<ng-template #customHeaderTemplate>\n <h4 mat-dialog-title>\n <div class=\"lib-modal--custom-title\">\n <span>\n {{ heading }}\n </span>\n <div class=\"lib-modal--custom-subtitle\">\n <ng-content select=\"[subtitle]\"></ng-content>\n </div>\n </div>\n <div class=\"lib-modal--header-actions\">\n <ng-content select=\"[headerActions]\"></ng-content>\n </div>\n <mat-icon mat-dialog-close class=\"mat-dialog-close\">close</mat-icon>\n </h4>\n</ng-template>\n<mat-dialog-content class=\"custom-scrollbar\">\n <ng-content select=\"[content]\"></ng-content>\n</mat-dialog-content>\n<mat-dialog-actions>\n <ng-content select=\"[actions]\"></ng-content>\n</mat-dialog-actions>\n",
2370
- styles: [":host::ng-deep{display:flex;flex-direction:column;min-height:150px;position:relative}:host::ng-deep .mat-dialog-title{padding-bottom:24px;margin:0;display:flex;justify-content:space-between;font-size:24px;line-height:1;gap:10px}:host::ng-deep .mat-dialog-title mat-icon{cursor:pointer}:host::ng-deep .lib-modal--custom-title,:host::ng-deep .lib-modal--title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .lib-modal--custom-subtitle{margin-top:5px}:host::ng-deep .lib-modal--header-actions{display:flex;align-items:center;gap:10px}:host::ng-deep mat-dialog-content{flex:1;padding:0 24px}:host::ng-deep mat-dialog-actions{padding-top:24px;padding-bottom:0;display:flex;justify-content:flex-end;min-height:auto;margin-bottom:0}:host::ng-deep mat-dialog-actions .mat-button-base+.mat-button-base{margin-left:20px}:host::ng-deep .mat-error{margin-top:5px;font-size:14px}:host::ng-deep .no-wrap{white-space:nowrap}:host::ng-deep input,:host::ng-deep textarea{width:100%;padding:10px;border:1px solid #d8d8d8;border-radius:5px;color:#000;margin-top:0;resize:none}::ng-deep .lib-dialog--small{width:400px!important}::ng-deep .lib-dialog--small .file__name{word-break:break-word}::ng-deep .lib-dialog--small .mat-button-base{min-width:70px}::ng-deep .lib-dialog--small .loading{padding:0 5px}::ng-deep .lib-dialog--small .loading .mat-button-wrapper{display:flex;width:100%;justify-content:center;align-items:center}::ng-deep .lib-dialog--small .loading .mat-spinner{margin-right:10px}::ng-deep .lib-dialog--medium{max-width:1200px!important;width:90%!important}::ng-deep .lib-dialog--medium .mat-dialog-content{border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow-x:hidden}::ng-deep .lib-dialog--large{max-width:1200px!important;width:90vw!important}::ng-deep .lib-dialog--large .mat-dialog-title{padding-bottom:12px;position:relative}::ng-deep .lib-dialog--large .mat-dialog-title .mat-dialog-close{position:absolute;right:-22px;top:-22px}::ng-deep .lib-dialog--large .mat-dialog-content{min-height:70vh;border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;padding:0}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body{max-height:calc(70vh - 2px)!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .node-tree{height:calc(70vh - 2px)!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .asset-list__item{min-width:25%!important}@media only screen and (max-width:768px){::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body{max-height:none!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .node-tree{height:-webkit-max-content!important;height:-moz-max-content!important;height:max-content!important}}::ng-deep .lib-dialog--large .mat-dialog-actions{padding:12px 0;margin-bottom:-24px!important}"]
2462
+ styles: [":host::ng-deep{display:flex;flex-direction:column;min-height:150px;position:relative}:host::ng-deep .mat-dialog-title{padding-bottom:24px;margin:0;display:flex;justify-content:space-between;font-size:24px;line-height:1;gap:10px}:host::ng-deep .mat-dialog-title mat-icon{cursor:pointer}:host::ng-deep .lib-modal--custom-title,:host::ng-deep .lib-modal--title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .lib-modal--custom-subtitle{margin-top:5px}:host::ng-deep .lib-modal--header-actions{display:flex;align-items:center;gap:10px}:host::ng-deep mat-dialog-content{flex:1;padding:0 24px}:host::ng-deep mat-dialog-actions{padding-top:24px;padding-bottom:0;display:flex;justify-content:flex-end;min-height:auto;margin-bottom:0}:host::ng-deep mat-dialog-actions .mat-button-base+.mat-button-base{margin-left:20px}:host::ng-deep .mat-error{margin-top:5px;font-size:14px}:host::ng-deep .no-wrap{white-space:nowrap}:host::ng-deep input,:host::ng-deep textarea{width:100%;padding:10px;border:1px solid #d8d8d8;border-radius:5px;color:#000;margin-top:0;resize:none}::ng-deep .lib-dialog--small{width:400px!important}::ng-deep .lib-dialog--small .file__name{word-break:break-word}::ng-deep .lib-dialog--small .mat-button-base{min-width:70px}::ng-deep .lib-dialog--small .loading{padding:0 5px}::ng-deep .lib-dialog--small .loading .mat-button-wrapper{display:flex;width:100%;justify-content:center;align-items:center}::ng-deep .lib-dialog--small .loading .mat-spinner{margin-right:10px}::ng-deep .lib-dialog--medium{max-width:1200px!important;width:90%!important}::ng-deep .lib-dialog--medium .mat-dialog-content{border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;overflow-x:hidden}::ng-deep .lib-dialog--large{max-width:1200px!important;width:90vw!important}::ng-deep .lib-dialog--large .mat-dialog-title{padding-bottom:12px;position:relative}::ng-deep .lib-dialog--large .mat-dialog-title .mat-dialog-close{position:absolute;right:-22px;top:-22px}::ng-deep .lib-dialog--large .mat-dialog-content{min-height:70vh;border-top:1px solid #d8d8d8;border-bottom:1px solid #d8d8d8;padding:0}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body{max-height:calc(70vh - 2px)!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .node-tree{height:calc(70vh - 2px)!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .asset-list__item{min-width:25%!important}@media only screen and (max-width:768px){::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body{max-height:none!important}::ng-deep .lib-dialog--large .mat-dialog-content .asset-wrapper .asset-body .node-tree{height:-moz-max-content!important;height:max-content!important}}::ng-deep .lib-dialog--large .mat-dialog-actions{padding:12px 0;margin-bottom:-24px!important}"]
2371
2463
  }] }
2372
2464
  ];
2373
2465
  /** @nocollapse */
@@ -2720,7 +2812,7 @@
2720
2812
  { type: core.Component, args: [{
2721
2813
  selector: 'lib-file-list',
2722
2814
  template: "<div class=\"file-list__heading\">\n <div class=\"file-list__info\">\n <h4 class=\"file-list__info--title\">\n <span *ngIf=\"!uploadAssetsService.errorLength\">\n {{\n uploadAssetsService?.getFiles?.length -\n uploadAssetsService.errorLength\n }}\n {{ uploadAssetsService?.getFiles?.length > 1 ? 'assets' : 'asset' }}\n ready to upload\n </span>\n <span *ngIf=\"uploadAssetsService.errorLength\">\n {{ uploadAssetsService.errorLength }}\n {{ uploadAssetsService.errorLength > 1 ? 'assets' : 'asset' }}\n invalid, please remove it before upload</span\n >\n </h4>\n <div class=\"file-list__info--desc\">\n Manage the assets before adding them to the Media Library\n </div>\n </div>\n <lib-input-file\n [acceptTypes]=\"uploadAssetsService?.supportedTypes?.join(', ')\"\n (onFileChange)=\"onFileChange($event)\"\n color=\"primary\"\n >\n <span>Add new assets</span>\n </lib-input-file>\n</div>\n<div class=\"file-list\">\n <lib-file-item\n *ngFor=\"let file of uploadAssetsService?.getFiles; let i = index\"\n [file]=\"file\"\n (checkError)=\"onEmitError()\"\n (fileRemove)=\"onDelFile(i)\"\n (fileChange)=\"onChangeName($event, i)\"\n ></lib-file-item>\n</div>\n",
2723
- styles: [":host::ng-deep .file-list{padding-top:15px}:host::ng-deep .file-list__heading{display:flex;justify-content:space-between;align-items:center;padding-top:15px;padding-bottom:15px;position:-webkit-sticky;position:sticky;top:0;background-color:#fff}:host::ng-deep .file-list__info--title{font-size:16px;margin-bottom:5px;color:#000}:host::ng-deep lib-file-item{margin-bottom:20px}"]
2815
+ styles: [":host::ng-deep .file-list{padding-top:15px}:host::ng-deep .file-list__heading{display:flex;justify-content:space-between;align-items:center;padding-top:15px;padding-bottom:15px;position:sticky;top:0;background-color:#fff}:host::ng-deep .file-list__info--title{font-size:16px;margin-bottom:5px;color:#000}:host::ng-deep lib-file-item{margin-bottom:20px}"]
2724
2816
  }] }
2725
2817
  ];
2726
2818
  /** @nocollapse */
@@ -3541,7 +3633,7 @@
3541
3633
  FolderItemComponent.decorators = [
3542
3634
  { type: core.Component, args: [{
3543
3635
  selector: 'lib-folder-item',
3544
- template: "<div class=\"folder\" (dblclick)=\"openFolder()\">\n <mat-icon class=\"folder__icon\">folder</mat-icon>\n <span class=\"folder__name\" [matTooltip]=\"folder.OriginalFileName\">\n {{ folder.OriginalFileName }}\n </span>\n <mat-icon class=\"folder__action\" [matMenuTriggerFor]=\"menu\"\n >more_vert</mat-icon\n >\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"renameFolder()\" [disabled]=\"!hasModifyPermission\">\n <mat-icon>edit_outline</mat-icon> <span>Rename</span>\n </button>\n <button mat-menu-item (click)=\"deleteFolder()\" [disabled]=\"!hasArchivePermission\">\n <mat-icon color=\"warn\">delete_outline</mat-icon> <span>Delete</span>\n </button>\n</mat-menu>\n",
3636
+ template: "<div class=\"folder\" (dblclick)=\"openFolder()\">\n <mat-icon class=\"folder__icon\">folder</mat-icon>\n <span class=\"folder__name\" [matTooltip]=\"folder.OriginalFileName\">\n {{ folder.OriginalFileName }}\n </span>\n <mat-icon class=\"folder__action\" [matMenuTriggerFor]=\"menu\"\n >more_vert</mat-icon\n >\n</div>\n<mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"renameFolder()\" [disabled]=\"!hasModifyPermission\">\n <mat-icon>edit_outline</mat-icon> <span>Rename</span>\n </button>\n <button mat-menu-item (click)=\"deleteFolder()\" [disabled]=\"!hasArchivePermission\">\n <mat-icon color=\"warn\">delete_outline</mat-icon> <span>Delete</span>\n </button>\n</mat-menu>",
3545
3637
  styles: [":host::ng-deep .folder{width:180px;height:50px;display:flex;position:relative;align-items:center;padding:5px 20px 5px 10px;border-radius:10px;cursor:pointer;transition:.3s}:host::ng-deep .folder:hover{background-color:#f1f1f1}:host::ng-deep .folder:hover .folder__action{display:block}:host::ng-deep .folder__icon{display:flex;align-items:center;color:#6fc0ff;font-size:38px;margin-right:20px}:host::ng-deep .folder__name{font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .folder__action{display:none;right:0;position:absolute;color:#979797;transition:.3s}:host::ng-deep .folder__action:hover{color:#000}"]
3546
3638
  }] }
3547
3639
  ];
@@ -3588,10 +3680,24 @@
3588
3680
  this.hasModifyPermission = true;
3589
3681
  this.hasAccessPermission = true;
3590
3682
  this.hasArchivePermission = true;
3683
+ this.onPageChange = new core.EventEmitter();
3591
3684
  this.loading = false;
3592
3685
  this.unsubscribe$ = new Subject.Subject();
3593
3686
  this.bindSubscriber();
3594
3687
  }
3688
+ /**
3689
+ * @return {?}
3690
+ */
3691
+ FolderListComponent.prototype.ngOnChanges = /**
3692
+ * @return {?}
3693
+ */
3694
+ function () {
3695
+ if (this.paginator && this.pagination) {
3696
+ this.paginator.pageIndex = this.pagination.pageIndex;
3697
+ this.paginator.pageSize = this.pagination.pageSize;
3698
+ this.paginator.length = this.pagination.length;
3699
+ }
3700
+ };
3595
3701
  /**
3596
3702
  * @return {?}
3597
3703
  */
@@ -3609,6 +3715,17 @@
3609
3715
  this.unsubscribe$.next();
3610
3716
  this.unsubscribe$.complete();
3611
3717
  };
3718
+ /**
3719
+ * @param {?=} event
3720
+ * @return {?}
3721
+ */
3722
+ FolderListComponent.prototype.pageChange = /**
3723
+ * @param {?=} event
3724
+ * @return {?}
3725
+ */
3726
+ function (event) {
3727
+ this.onPageChange.emit(event);
3728
+ };
3612
3729
  /**
3613
3730
  * @private
3614
3731
  * @return {?}
@@ -3636,8 +3753,8 @@
3636
3753
  FolderListComponent.decorators = [
3637
3754
  { type: core.Component, args: [{
3638
3755
  selector: 'lib-folder-list',
3639
- template: "<div class=\"folder-container\">\n <h6>Folders</h6>\n <div class=\"folder-list custom-scrollbar\">\n <lib-folder-item\n *ngFor=\"let folder of folders\"\n [folder]=\"folder\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-item>\n </div>\n <div class=\"folder-empty\" *ngIf=\"folders && !folders.length\">\n <span>This folder is empty.</span>\n </div>\n</div>\n",
3640
- styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:nowrap;overflow:auto;padding-bottom:10px}:host::ng-deep .folder-container .folder-empty{text-align:center;color:#979797;font-size:14px}"]
3756
+ template: "<div class=\"folder-container\">\n <h6>Folders</h6>\n <div class=\"folder-list custom-scrollbar\">\n <lib-folder-item\n *ngFor=\"let folder of folders\"\n [folder]=\"folder\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-item>\n </div>\n <div class=\"folder-empty\" *ngIf=\"folders && !folders.length\">\n <span>This folder is empty.</span>\n </div>\n <div [hidden]=\"!folders?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[10, 20, 50, 100]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>",
3757
+ styles: [":host::ng-deep .folder-container h6{color:#979797}:host::ng-deep .folder-container .folder-list{display:flex;flex-wrap:wrap;overflow:auto;padding-bottom:10px;max-height:320px}:host::ng-deep .folder-container .folder-empty{text-align:center;color:#979797;font-size:14px}"]
3641
3758
  }] }
3642
3759
  ];
3643
3760
  /** @nocollapse */
@@ -3646,7 +3763,10 @@
3646
3763
  hasModifyPermission: [{ type: core.Input }],
3647
3764
  hasAccessPermission: [{ type: core.Input }],
3648
3765
  hasArchivePermission: [{ type: core.Input }],
3649
- folders: [{ type: core.Input }]
3766
+ paginator: [{ type: core.ViewChild, args: [material.MatPaginator, { static: true },] }],
3767
+ folders: [{ type: core.Input }],
3768
+ pagination: [{ type: core.Input }],
3769
+ onPageChange: [{ type: core.Output }]
3650
3770
  };
3651
3771
  return FolderListComponent;
3652
3772
  }());
@@ -3658,8 +3778,14 @@
3658
3778
  /** @type {?} */
3659
3779
  FolderListComponent.prototype.hasArchivePermission;
3660
3780
  /** @type {?} */
3781
+ FolderListComponent.prototype.paginator;
3782
+ /** @type {?} */
3661
3783
  FolderListComponent.prototype.folders;
3662
3784
  /** @type {?} */
3785
+ FolderListComponent.prototype.pagination;
3786
+ /** @type {?} */
3787
+ FolderListComponent.prototype.onPageChange;
3788
+ /** @type {?} */
3663
3789
  FolderListComponent.prototype.loading;
3664
3790
  /**
3665
3791
  * @type {?}
@@ -3865,9 +3991,14 @@
3865
3991
  * @return {?}
3866
3992
  */
3867
3993
  function (res) {
3868
- _this.assetService.setAssetList(res.Data.Children, res.Meta);
3869
- }))
3870
- .add((/**
3994
+ /** @type {?} */
3995
+ var pagination = res && res.Meta || {};
3996
+ /** @type {?} */
3997
+ var assets = res && res.Data && res.Data.Children || [];
3998
+ /** @type {?} */
3999
+ var totalFile = res && res.Data && res.Data.TotalFile || 0;
4000
+ _this.assetService.setAssetList(assets, pagination, totalFile);
4001
+ })).add((/**
3871
4002
  * @return {?}
3872
4003
  */
3873
4004
  function () {
@@ -3916,8 +4047,8 @@
3916
4047
  AssetListComponent.decorators = [
3917
4048
  { type: core.Component, args: [{
3918
4049
  selector: 'lib-asset-list',
3919
- template: "<div class=\"asset-container\">\n <div class=\"asset-heading\">\n <h6 class=\"asset-heading__title\">Files</h6>\n <lib-sort-items\n [hidden]=\"!assets?.length\"\n class=\"asset-heading__sort\"\n ></lib-sort-items>\n </div>\n <ng-container *ngIf=\"assets && !assets.length; else assetsTemplate\">\n <div class=\"asset-empty\">\n <span>This asset is empty.</span>\n </div>\n </ng-container>\n <ng-template #assetsTemplate>\n <div class=\"asset-list\">\n <lib-asset-item\n class=\"asset-list__item\"\n *ngFor=\"let asset of assets\"\n [asset]=\"asset\"\n (selectAsset)=\"onSelectAsset($event)\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n >\n </lib-asset-item>\n </div>\n </ng-template>\n <div [hidden]=\"!assets?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[12, 24, 60, 120]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>\n",
3920
- styles: [":host::ng-deep .asset-container .asset-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}:host::ng-deep .asset-container .asset-heading__title{margin-bottom:0;color:#979797}:host::ng-deep .asset-container .asset-list{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;margin:0 -5px}:host::ng-deep .asset-container .asset-list__item{width:25%}@media only screen and (max-width:1200px){:host::ng-deep .asset-container .asset-list__item{width:calc(100% / 3)}}@media only screen and (max-width:960px){:host::ng-deep .asset-container .asset-list__item{width:50%}}:host::ng-deep .asset-container .asset-empty{text-align:center;color:#979797;font-size:14px}"]
4050
+ template: "<div class=\"asset-container\">\n <div class=\"asset-heading\">\n <h6 class=\"asset-heading__title\">Files</h6>\n <lib-sort-items\n [hidden]=\"!assets?.length\"\n class=\"asset-heading__sort\"\n ></lib-sort-items>\n </div>\n <ng-container *ngIf=\"assets && !assets.length; else assetsTemplate\">\n <div class=\"asset-empty\">\n <span>This asset is empty.</span>\n </div>\n </ng-container>\n <ng-template #assetsTemplate>\n <div class=\"asset-list\">\n <lib-asset-item\n class=\"asset-list__item\"\n *ngFor=\"let asset of assets\"\n [asset]=\"asset\"\n [isDialog]=\"isDialog\"\n (selectAsset)=\"onSelectAsset($event)\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n >\n </lib-asset-item>\n </div>\n </ng-template>\n <div [hidden]=\"!assets?.length\">\n <mat-paginator\n #paginator\n [pageSizeOptions]=\"[12, 24, 60, 120]\"\n (page)=\"pageChange($event)\"\n [showFirstLastButtons]=\"true\"\n >\n </mat-paginator>\n </div>\n</div>\n",
4051
+ styles: [":host::ng-deep .asset-container .asset-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}:host::ng-deep .asset-container .asset-heading__title{margin-bottom:0;color:#979797}:host::ng-deep .asset-container .asset-list{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;margin:0 -5px}:host::ng-deep .asset-container .asset-list__item{width:25%}@media only screen and (max-width:1200px){:host::ng-deep .asset-container .asset-list__item{width:33.3333333333%}}@media only screen and (max-width:960px){:host::ng-deep .asset-container .asset-list__item{width:50%}}:host::ng-deep .asset-container .asset-empty{text-align:center;color:#979797;font-size:14px}"]
3921
4052
  }] }
3922
4053
  ];
3923
4054
  /** @nocollapse */
@@ -3926,6 +4057,7 @@
3926
4057
  { type: AssetManagementService }
3927
4058
  ]; };
3928
4059
  AssetListComponent.propDecorators = {
4060
+ isDialog: [{ type: core.Input }],
3929
4061
  hasModifyPermission: [{ type: core.Input }],
3930
4062
  hasAccessPermission: [{ type: core.Input }],
3931
4063
  hasArchivePermission: [{ type: core.Input }],
@@ -3935,6 +4067,8 @@
3935
4067
  return AssetListComponent;
3936
4068
  }());
3937
4069
  if (false) {
4070
+ /** @type {?} */
4071
+ AssetListComponent.prototype.isDialog;
3938
4072
  /** @type {?} */
3939
4073
  AssetListComponent.prototype.hasModifyPermission;
3940
4074
  /** @type {?} */
@@ -4088,7 +4222,6 @@
4088
4222
  * @return {?}
4089
4223
  */
4090
4224
  function () {
4091
- console.log('data test', this.data.permission);
4092
4225
  this.uploadAssetsService.supportedSize = this.assetsService.maxSize * 1024 * 1024;
4093
4226
  this.linkDownload = this._env.asset2Url + "/File/Download/" + this.data.assetId;
4094
4227
  this.getAssetDetail();
@@ -4722,8 +4855,8 @@
4722
4855
  AssetItemComponent.decorators = [
4723
4856
  { type: core.Component, args: [{
4724
4857
  selector: 'lib-asset-item',
4725
- template: "<div class=\"asset-wrapper\">\n <div class=\"asset-content\">\n <div class=\"asset-content__header\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.Processed\">\n <button class=\"asset-content__header--button\" mat-raised-button (click)=\"onChange()\">\n <mat-checkbox\n class=\"checkbox\"\n [checked]=\"checkSelectedAsset\"\n ></mat-checkbox>\n </button>\n <button\n class=\"asset-content__header--button edit-button\"\n mat-raised-button\n (click)=\"editAsset()\"\n >\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n <div class=\"asset-content__body\">\n <ng-container [ngSwitch]=\"asset.FileType\">\n <ng-container *ngSwitchCase=\"fileType.IMAGE\">\n <img\n class=\"image\"\n [src]=\"asset.UrlThumbnail\"\n [alt]=\"asset.OriginalFileName\"\n *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"\n />\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\n <span class=\"processing-txt\">Uploading...</span>\n </div>\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <mat-icon class=\"icon-img\">error_outline</mat-icon>\n <div class=\"failed-group\">\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"failed-txt mx-1\">or</span>\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"fileType.DOCUMENT\">\n <img [src]=\"base64PNG[asset.Extension] || base64PNG.default\" [alt]=\"asset.OriginalFileName\" class=\"file\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\"/>\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <mat-icon class=\"icon\">cloud_upload</mat-icon>\n <span class=\"processing-txt\">Uploading...</span>\n </div>\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <mat-icon class=\"icon-doc\">error_outline</mat-icon>\n <div class=\"failed-group\">\n <span style=\"color: #f44336; font-weight: 300; font-size: 12px;\">Failed to upload the file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"btn-custom-upload\" (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"failed-txt mx-1\">or</span>\n <button class=\"btn-custom-failed\" (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"asset-content__footer\">\n <div\n class=\"asset-content__footer--info\"\n [ngClass]=\"{\n 'file-type__document': asset.FileType === fileType.DOCUMENT\n }\"\n >\n <p\n class=\"name\"\n [matTooltip]=\"asset.OriginalFileNameWithoutExtension\"\n matTooltipClass=\"width-auto\"\n >\n {{ asset.OriginalFileNameWithoutExtension }}\n </p>\n <p class=\"info\">\n <span class=\"extension\">{{ asset.Extension }}</span>\n <span\n *ngIf=\"\n asset.FileType === fileType.IMAGE && asset?.Extension !== 'svg'\n \"\n >\n - {{ asset.Width }}x{{ asset.Height }}</span\n >\n <span *ngIf=\"asset.Size\"> - {{ asset.Size }}</span>\n </p>\n </div>\n <div class=\"asset-content__footer--file-type\">\n <span>{{ asset.FileType }}</span>\n </div>\n </div>\n </div>\n</div>\n",
4726
- styles: [":host::ng-deep .asset-wrapper{padding:5px}:host::ng-deep .asset-wrapper .asset-content{overflow:hidden;position:relative;border-radius:10px;border:1px solid #d8d8d8;font-size:14px;transition:.3s cubic-bezier(.25,.8,.25,1)}:host::ng-deep .asset-wrapper .asset-content:hover{box-shadow:0 0 8px rgba(0,0,0,.17),0 0 0 rgba(0,0,0,.06)}:host::ng-deep .asset-wrapper .asset-content__header{position:absolute;z-index:1;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:14px}:host::ng-deep .asset-wrapper .asset-content__header--button{width:30px;height:30px;min-width:30px;display:flex;align-items:center;justify-content:center;text-align:center;color:rgba(0,0,0,.65);background:rgba(255,255,255,.6)}:host::ng-deep .asset-wrapper .asset-content__header--button:hover{background:#fff}:host::ng-deep .asset-wrapper .asset-content__header--button.edit-button{transition:.3s cubic-bezier(.25,.8,.25,1);opacity:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-icon{font-size:22px}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox{pointer-events:none;display:flex;align-items:center}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout{display:block;margin:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout .mat-checkbox-frame{color:#767676}:host::ng-deep .asset-wrapper .asset-content__body{padding-bottom:66.66%;background:#f1f1f1;position:relative}:host::ng-deep .asset-wrapper .asset-content__body img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host::ng-deep .asset-wrapper .asset-content__body img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .asset-wrapper .asset-content__body img.file{width:75%;height:75%}:host::ng-deep .asset-wrapper .asset-content__body .processing{background-color:#f1f1f1;width:100%;height:100%}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon{position:absolute;top:30%;left:42%;font-size:35px}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-img{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .icon-doc{position:absolute;top:30%;left:42%;font-size:35px;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-txt{position:absolute;top:55%;left:35%}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-image{width:27px;height:27px;-o-object-fit:contain;object-fit:contain}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-group{position:absolute;top:55%;left:20%}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group{position:absolute;top:70%;left:10%;font-size:12px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .failed-txt{color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload{font-size:9px;border:0;color:#fff;background-color:#ffc107;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed{font-size:9px;border:0;color:#fff;background-color:#f44336;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-failed:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-custom-upload:hover{opacity:.8}:host::ng-deep .asset-wrapper .asset-content__footer{display:flex;align-items:center;justify-content:space-between;padding:5px 8px}:host::ng-deep .asset-wrapper .asset-content__footer--info{max-width:calc(100% - 50px)}:host::ng-deep .asset-wrapper .asset-content__footer--info p{margin:0;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .asset-wrapper .asset-content__footer--info .info{font-size:12px;color:#979797}:host::ng-deep .asset-wrapper .asset-content__footer--info .info .extension{text-transform:uppercase}:host::ng-deep .asset-wrapper .asset-content__footer--info.file-type__document{max-width:calc(100% - 70px)}:host::ng-deep .asset-wrapper .asset-content__footer--file-type{border-radius:5px;background-color:#d8d8d8;padding:2px 6px;font-size:12px}:host::ng-deep .asset-wrapper .asset-content:hover .edit-button{opacity:1!important}"]
4858
+ template: "<div class=\"asset-wrapper\">\n <div class=\"asset-content\">\n <div class=\"asset-content__header\">\n <button class=\"asset-content__header--button\"\n *ngIf=\"(asset?.BackgroudProcessingStatus === backgroundProcessingNum.Processed) || (asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing)\"\n mat-raised-button (click)=\"onChange()\">\n <mat-checkbox class=\"checkbox\" [checked]=\"checkSelectedAsset\"></mat-checkbox>\n </button>\n <button class=\"asset-content__header--button edit-button\"\n *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.Processed\" mat-raised-button\n (click)=\"editAsset()\">\n <mat-icon>edit</mat-icon>\n </button>\n </div>\n <div class=\"asset-content__body\">\n <ng-container [ngSwitch]=\"asset.FileType\">\n <ng-container *ngSwitchCase=\"fileType.IMAGE\">\n <img class=\"image\" [src]=\"asset.UrlThumbnail\" [alt]=\"asset.OriginalFileName\"\n *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\" />\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <div class=\"upload-group\">\n <div>\n <mat-icon class=\"processing-icon\"\n [ngClass]=\"{ 'processing-icon-dialog': isDialog }\">cloud_upload</mat-icon>\n </div>\n <div>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }}\">Uploading...</span>\n </div>\n </div>\n </div>\n\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <div class=\"failed-group\">\n <div>\n <mat-icon class=\"processing-icon\"\n [ngClass]=\"{ 'processing-icon-dialog': isDialog }\">error_outline</mat-icon>\n </div>\n <div>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }}\">Failed to upload the\n file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"{{ isDialog ? 'btn-upload-dialog' : 'btn-upload' }}\"\n (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }} mx-1\">or</span>\n <button class=\"{{ isDialog ? 'btn-failed-dialog' : 'btn-failed' }}\"\n (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"fileType.DOCUMENT\">\n <img [src]=\"base64PNG[asset.Extension] || base64PNG.default\" [alt]=\"asset.OriginalFileName\" class=\"file\"\n *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Processed\" />\n <!-- In Processing -->\n <div class=\"processing\" *ngIf=\"asset?.BackgroudProcessingStatus === backgroundProcessingNum.InProcessing\">\n <div class=\"upload-group\">\n <div>\n <mat-icon class=\"processing-icon\"\n [ngClass]=\"{ 'processing-icon-dialog': isDialog }\">cloud_upload</mat-icon>\n </div>\n <div>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }}\">Uploading...</span>\n </div>\n </div>\n </div>\n\n <!-- Failed -->\n <div class=\"processing\" *ngIf=\"asset.BackgroudProcessingStatus === backgroundProcessingNum.Failed\">\n <div class=\"failed-group\">\n <mat-icon class=\"processing-icon\"\n [ngClass]=\"{ 'processing-icon-dialog': isDialog }\">error_outline</mat-icon>\n <div>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }}\">Failed to upload the\n file</span>\n </div>\n <div class=\"btn-failed-group\">\n <button class=\"{{ isDialog ? 'btn-upload-dialog' : 'btn-upload' }}\"\n (click)=\"onUploadAgain(asset)\">Delete and update again</button>\n <span class=\"{{ isDialog ? 'processing-txt-dialog' : 'processing-txt' }} mx-1\">or</span>\n <button class=\"{{ isDialog ? 'btn-failed-dialog' : 'btn-failed' }}\"\n (click)=\"onDelete(asset)\">Delete</button>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <div class=\"asset-content__footer\">\n <div class=\"asset-content__footer--info\" [ngClass]=\"{\n 'file-type__document': asset.FileType === fileType.DOCUMENT\n }\">\n <p class=\"name\" [matTooltip]=\"asset.OriginalFileNameWithoutExtension\" matTooltipClass=\"width-auto\">\n {{ asset.OriginalFileNameWithoutExtension }}\n </p>\n <p class=\"info\">\n <span class=\"extension\">{{ asset.Extension }}</span>\n <span *ngIf=\"\n asset.FileType === fileType.IMAGE && asset?.Extension !== 'svg'\n \">\n - {{ asset.Width }}x{{ asset.Height }}</span>\n <span *ngIf=\"asset.Size\"> - {{ asset.Size }}</span>\n </p>\n </div>\n <div class=\"asset-content__footer--file-type\">\n <span>{{ asset.FileType }}</span>\n </div>\n </div>\n </div>\n</div>",
4859
+ styles: [":host::ng-deep .asset-wrapper{padding:5px}:host::ng-deep .asset-wrapper .asset-content{overflow:hidden;position:relative;border-radius:10px;border:1px solid #d8d8d8;font-size:14px;transition:.3s cubic-bezier(.25,.8,.25,1)}:host::ng-deep .asset-wrapper .asset-content:hover{box-shadow:0 0 8px rgba(0,0,0,.17),0 0 0 rgba(0,0,0,.06)}:host::ng-deep .asset-wrapper .asset-content__header{position:absolute;z-index:1;top:0;left:0;width:100%;display:flex;justify-content:space-between;padding:14px}:host::ng-deep .asset-wrapper .asset-content__header--button{width:30px;height:30px;min-width:30px;display:flex;align-items:center;justify-content:center;text-align:center;color:rgba(0,0,0,.65);background:rgba(255,255,255,.6)}:host::ng-deep .asset-wrapper .asset-content__header--button:hover{background:#fff}:host::ng-deep .asset-wrapper .asset-content__header--button.edit-button{transition:.3s cubic-bezier(.25,.8,.25,1);opacity:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-icon{font-size:22px}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox{pointer-events:none;display:flex;align-items:center}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout{display:block;margin:0}:host::ng-deep .asset-wrapper .asset-content__header--button .mat-checkbox .mat-checkbox-layout .mat-checkbox-frame{color:#767676}:host::ng-deep .asset-wrapper .asset-content__body{padding-bottom:66.66%;background:#f1f1f1;position:relative}:host::ng-deep .asset-wrapper .asset-content__body img{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host::ng-deep .asset-wrapper .asset-content__body img.image{background-image:url(data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAUABQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/ivFPFOf+EjvxzjbBgdv+PeDp+OfxzSt4q18AkageASB9ntu3OM+Vn8c5rsdG0fT9d06DVdUgN1f3XmefP5ksO/ypXhj/dwvHGu2ONF+VF3bQSM0AeYUV7IPCWgjgWRA/wCvi4P85SaKAPGm5Vh7H+VeyeERjQLEDoPP/WeQ/wAzRRQB0tFFFAH/2Q==)}:host::ng-deep .asset-wrapper .asset-content__body img.file{width:75%;height:75%}:host::ng-deep .asset-wrapper .asset-content__body .processing{background-color:#f1f1f1;width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-icon{font-size:35px;height:35px;width:35px}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-txt{font-size:17px}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-icon-dialog{font-size:24px;height:24px;width:24px}:host::ng-deep .asset-wrapper .asset-content__body .processing .processing-txt-dialog{font-size:13px}:host::ng-deep .asset-wrapper .asset-content__body .processing .upload-group{text-align:center}:host::ng-deep .asset-wrapper .asset-content__body .processing .failed-group{text-align:center;color:#f44336}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group{margin-top:7px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-upload{font-size:13px;padding:5px;border:0;color:#fff;background-color:#ffc107;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-failed{font-size:13px;padding:5px;border:0;color:#fff;background-color:#f44336;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-upload-dialog{font-size:9px;border:0;color:#fff;background-color:#ffc107;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-failed-dialog{font-size:9px;border:0;color:#fff;background-color:#f44336;border-radius:3px}:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-failed-dialog:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-failed:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-upload-dialog:hover,:host::ng-deep .asset-wrapper .asset-content__body .processing .btn-failed-group .btn-upload:hover{opacity:.8}:host::ng-deep .asset-wrapper .asset-content__footer{display:flex;align-items:center;justify-content:space-between;padding:5px 8px}:host::ng-deep .asset-wrapper .asset-content__footer--info{max-width:calc(100% - 50px)}:host::ng-deep .asset-wrapper .asset-content__footer--info p{margin:0;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .asset-wrapper .asset-content__footer--info .info{font-size:12px;color:#979797}:host::ng-deep .asset-wrapper .asset-content__footer--info .info .extension{text-transform:uppercase}:host::ng-deep .asset-wrapper .asset-content__footer--info.file-type__document{max-width:calc(100% - 70px)}:host::ng-deep .asset-wrapper .asset-content__footer--file-type{border-radius:5px;background-color:#d8d8d8;padding:2px 6px;font-size:12px}:host::ng-deep .asset-wrapper .asset-content:hover .edit-button{opacity:1!important}"]
4727
4860
  }] }
4728
4861
  ];
4729
4862
  /** @nocollapse */
@@ -4735,6 +4868,7 @@
4735
4868
  { type: core.ChangeDetectorRef }
4736
4869
  ]; };
4737
4870
  AssetItemComponent.propDecorators = {
4871
+ isDialog: [{ type: core.Input }],
4738
4872
  hasModifyPermission: [{ type: core.Input }],
4739
4873
  hasAccessPermission: [{ type: core.Input }],
4740
4874
  hasArchivePermission: [{ type: core.Input }],
@@ -4744,6 +4878,8 @@
4744
4878
  return AssetItemComponent;
4745
4879
  }());
4746
4880
  if (false) {
4881
+ /** @type {?} */
4882
+ AssetItemComponent.prototype.isDialog;
4747
4883
  /** @type {?} */
4748
4884
  AssetItemComponent.prototype.hasModifyPermission;
4749
4885
  /** @type {?} */
@@ -4967,14 +5103,16 @@
4967
5103
  /**
4968
5104
  * Reload the node, remove from display list
4969
5105
  * @param {?} node
5106
+ * @param {?=} pageSize
4970
5107
  * @return {?}
4971
5108
  */
4972
5109
  NodeTreeDataSource.prototype.reloadNode = /**
4973
5110
  * Reload the node, remove from display list
4974
5111
  * @param {?} node
5112
+ * @param {?=} pageSize
4975
5113
  * @return {?}
4976
5114
  */
4977
- function (node) {
5115
+ function (node, pageSize) {
4978
5116
  return __awaiter(this, void 0, void 0, function () {
4979
5117
  var _a, newNode, index, count, i, nodes;
4980
5118
  var _this = this;
@@ -4984,7 +5122,7 @@
4984
5122
  if (!node) {
4985
5123
  return [2 /*return*/];
4986
5124
  }
4987
- return [4 /*yield*/, this._database.getChildren(node.item)];
5125
+ return [4 /*yield*/, this._database.getChildren(node.item, pageSize)];
4988
5126
  case 1:
4989
5127
  newNode = _b.sent();
4990
5128
  index = this.data.indexOf(node);
@@ -5039,13 +5177,17 @@
5039
5177
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5040
5178
  */
5041
5179
  var NodeTreeComponent = /** @class */ (function () {
5042
- function NodeTreeComponent(nodeTreeService, svc, changeDetectorRef) {
5180
+ function NodeTreeComponent(assetService, nodeTreeService, svc, changeDetectorRef) {
5181
+ this.assetService = assetService;
5043
5182
  this.nodeTreeService = nodeTreeService;
5044
5183
  this.svc = svc;
5045
5184
  this.changeDetectorRef = changeDetectorRef;
5185
+ this.ROOT_ASSET_ID = ROOT_ASSET_ID;
5046
5186
  this.isRoot = false;
5047
5187
  this.homeLoading = false;
5048
5188
  this.loading = false;
5189
+ this.loadingMoreList = {};
5190
+ this.folderChildrenMap = new Map();
5049
5191
  this.unsubscribe$ = new rxjs.Subject();
5050
5192
  this.getLevel = (/**
5051
5193
  * @param {?} node
@@ -5066,6 +5208,21 @@
5066
5208
  this.treeControl = new tree$1.FlatTreeControl(this.getLevel, this.isExpandable);
5067
5209
  this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);
5068
5210
  }
5211
+ Object.defineProperty(NodeTreeComponent.prototype, "folderTreeMeta", {
5212
+ get: /**
5213
+ * @return {?}
5214
+ */
5215
+ function () {
5216
+ /** @type {?} */
5217
+ var rootFolder = this.folderChildrenMap.get(ROOT_ASSET_ID);
5218
+ return {
5219
+ length: rootFolder ? rootFolder.size : 0,
5220
+ total: this.nodeTreeService.rootFolder ? this.nodeTreeService.rootFolder.TotalFolder || "0" : 0,
5221
+ };
5222
+ },
5223
+ enumerable: true,
5224
+ configurable: true
5225
+ });
5069
5226
  /**
5070
5227
  * @return {?}
5071
5228
  */
@@ -5097,6 +5254,32 @@
5097
5254
  });
5098
5255
  });
5099
5256
  };
5257
+ /**
5258
+ * @param {?} id
5259
+ * @return {?}
5260
+ */
5261
+ NodeTreeComponent.prototype.getFolderChildrenSize = /**
5262
+ * @param {?} id
5263
+ * @return {?}
5264
+ */
5265
+ function (id) {
5266
+ /** @type {?} */
5267
+ var children = this.folderChildrenMap.get(id);
5268
+ return children ? children.size : 0;
5269
+ };
5270
+ /**
5271
+ * @param {?} node
5272
+ * @return {?}
5273
+ */
5274
+ NodeTreeComponent.prototype.canLoadMore = /**
5275
+ * @param {?} node
5276
+ * @return {?}
5277
+ */
5278
+ function (node) {
5279
+ /** @type {?} */
5280
+ var size = this.getFolderChildrenSize(node.item.AssetId);
5281
+ return size < node.item.TotalFolder;
5282
+ };
5100
5283
  /**
5101
5284
  * @private
5102
5285
  * @return {?}
@@ -5107,9 +5290,7 @@
5107
5290
  */
5108
5291
  function () {
5109
5292
  var _this = this;
5110
- this.nodeTreeService.loading$
5111
- .pipe(operators.takeUntil(this.unsubscribe$), operators.distinctUntilChanged())
5112
- .subscribe((/**
5293
+ this.nodeTreeService.loading$.pipe(operators.takeUntil(this.unsubscribe$), operators.distinctUntilChanged()).subscribe((/**
5113
5294
  * @param {?} loading
5114
5295
  * @return {?}
5115
5296
  */
@@ -5117,9 +5298,7 @@
5117
5298
  _this.homeLoading = loading;
5118
5299
  _this.changeDetectorRef.detectChanges();
5119
5300
  }));
5120
- this.nodeTreeService.initialData$
5121
- .pipe(operators.takeUntil(this.unsubscribe$), operators.distinctUntilChanged())
5122
- .subscribe((/**
5301
+ this.nodeTreeService.initialData$.pipe(operators.takeUntil(this.unsubscribe$), operators.distinctUntilChanged()).subscribe((/**
5123
5302
  * @param {?} data
5124
5303
  * @return {?}
5125
5304
  */
@@ -5134,14 +5313,13 @@
5134
5313
  function (node) { return _this.nodeTreeService.addNode(node.item, null); }));
5135
5314
  _this.changeDetectorRef.detectChanges();
5136
5315
  }));
5137
- this.dataSource.dataChange
5138
- .pipe(operators.takeUntil(this.unsubscribe$))
5139
- .subscribe((/**
5316
+ this.dataSource.dataChange.pipe(operators.takeUntil(this.unsubscribe$)).subscribe((/**
5140
5317
  * @param {?} data
5141
5318
  * @return {?}
5142
5319
  */
5143
5320
  function (data) {
5144
5321
  if (data && data.length) {
5322
+ _this.handleDatasourceChange(data);
5145
5323
  _this.changeDetectorRef.detectChanges();
5146
5324
  }
5147
5325
  }));
@@ -5198,6 +5376,42 @@
5198
5376
  });
5199
5377
  }); }));
5200
5378
  };
5379
+ /**
5380
+ * @private
5381
+ * @param {?=} data
5382
+ * @return {?}
5383
+ */
5384
+ NodeTreeComponent.prototype.handleDatasourceChange = /**
5385
+ * @private
5386
+ * @param {?=} data
5387
+ * @return {?}
5388
+ */
5389
+ function (data) {
5390
+ var _this = this;
5391
+ if (data === void 0) { data = []; }
5392
+ if (!data || !data.length)
5393
+ return;
5394
+ /** @type {?} */
5395
+ var maps = new Map();
5396
+ maps.set(ROOT_ASSET_ID, new Map());
5397
+ data.forEach((/**
5398
+ * @param {?} node
5399
+ * @return {?}
5400
+ */
5401
+ function (node) {
5402
+ /** @type {?} */
5403
+ var nodeId = node.item.AssetId;
5404
+ /** @type {?} */
5405
+ var parent = _this.getParent(node);
5406
+ /** @type {?} */
5407
+ var parentId = parent ? parent.item.AssetId : ROOT_ASSET_ID;
5408
+ if (!maps.has(parentId)) {
5409
+ maps.set(parentId, new Map());
5410
+ }
5411
+ maps.get(parentId).set(nodeId, node);
5412
+ }));
5413
+ this.folderChildrenMap = maps;
5414
+ };
5201
5415
  /**
5202
5416
  * @param {?} node
5203
5417
  * @return {?}
@@ -5248,6 +5462,69 @@
5248
5462
  });
5249
5463
  }
5250
5464
  };
5465
+ /**
5466
+ * @param {?=} node
5467
+ * @return {?}
5468
+ */
5469
+ NodeTreeComponent.prototype.loadMoreFolder = /**
5470
+ * @param {?=} node
5471
+ * @return {?}
5472
+ */
5473
+ function (node) {
5474
+ return __awaiter(this, void 0, void 0, function () {
5475
+ var id, children, itemsPerPage, result, assetChildren, index, nodes, updatedData, error_1;
5476
+ var _this = this;
5477
+ return __generator(this, function (_a) {
5478
+ switch (_a.label) {
5479
+ case 0:
5480
+ id = node ? node.item.AssetId : ROOT_ASSET_ID;
5481
+ _a.label = 1;
5482
+ case 1:
5483
+ _a.trys.push([1, 3, , 4]);
5484
+ this.setLoadingMore(id, true);
5485
+ children = this.folderChildrenMap.get(id);
5486
+ itemsPerPage = this.assetService.AMConfig.pageFolderSize || MAX_FOLDER_TREE_SIZE;
5487
+ return [4 /*yield*/, this.assetService
5488
+ .getChildrenFolders({
5489
+ assetId: id === ROOT_ASSET_ID ? null : id,
5490
+ isFilter: false,
5491
+ pageIndex: Math.round((children ? children.size : 0) / itemsPerPage),
5492
+ })
5493
+ .toPromise()];
5494
+ case 2:
5495
+ result = _a.sent();
5496
+ assetChildren = result.Data.Children || [];
5497
+ // Handle datasource
5498
+ index = this.dataSource.data.indexOf(node);
5499
+ nodes = assetChildren.map((/**
5500
+ * @param {?} folder
5501
+ * @return {?}
5502
+ */
5503
+ function (folder) {
5504
+ _this.nodeTreeService.addNode(folder, id);
5505
+ return _this.nodeTreeService.getDynamicFlatNode(folder, node ? node.level + 1 : 0);
5506
+ }));
5507
+ if (id !== ROOT_ASSET_ID) {
5508
+ updatedData = this.dataSource.data.slice();
5509
+ updatedData.splice.apply(updatedData, __spread([index + 1, 0], nodes));
5510
+ this.dataSource.data = updatedData;
5511
+ }
5512
+ else {
5513
+ this.dataSource.data = __spread(this.dataSource.data, nodes);
5514
+ }
5515
+ this.setLoadingMore(id, false);
5516
+ this.changeDetectorRef.detectChanges();
5517
+ return [3 /*break*/, 4];
5518
+ case 3:
5519
+ error_1 = _a.sent();
5520
+ console.log("Load more folder error", error_1);
5521
+ this.setLoadingMore(id, false);
5522
+ return [3 /*break*/, 4];
5523
+ case 4: return [2 /*return*/];
5524
+ }
5525
+ });
5526
+ });
5527
+ };
5251
5528
  /**
5252
5529
  * @param {?} node
5253
5530
  * @return {?}
@@ -5321,7 +5598,7 @@
5321
5598
  */
5322
5599
  function (id) {
5323
5600
  return __awaiter(this, void 0, void 0, function () {
5324
- var node, parent_1, updatedNode, updatedNode;
5601
+ var node, parent_1, children, updatedNode, rootFolder, updatedNode;
5325
5602
  return __generator(this, function (_a) {
5326
5603
  switch (_a.label) {
5327
5604
  case 0:
@@ -5333,28 +5610,39 @@
5333
5610
  if (!node) return [3 /*break*/, 8];
5334
5611
  parent_1 = this.getParent(node);
5335
5612
  if (!parent_1) return [3 /*break*/, 4];
5336
- return [4 /*yield*/, this.dataSource.reloadNode(parent_1)];
5613
+ // Reload parent folder (get children and expand it again)
5614
+ children = this.folderChildrenMap.get(parent_1.item.AssetId);
5615
+ return [4 /*yield*/, this.dataSource.reloadNode(parent_1, children.size)];
5337
5616
  case 1:
5338
5617
  _a.sent();
5339
5618
  updatedNode = this.getNodeById(id);
5340
5619
  if (!updatedNode) return [3 /*break*/, 3];
5620
+ // TODO
5341
5621
  return [4 /*yield*/, this.treeControl.expand(updatedNode)];
5342
5622
  case 2:
5623
+ // TODO
5343
5624
  _a.sent();
5344
5625
  _a.label = 3;
5345
5626
  case 3: return [3 /*break*/, 7];
5346
- case 4: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5627
+ case 4:
5628
+ rootFolder = this.folderChildrenMap.get(ROOT_ASSET_ID);
5629
+ return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false, pageSize: rootFolder.size })];
5347
5630
  case 5:
5348
5631
  _a.sent();
5349
5632
  updatedNode = this.getNodeById(id);
5350
5633
  if (!updatedNode) return [3 /*break*/, 7];
5634
+ // TODO
5351
5635
  return [4 /*yield*/, this.treeControl.expand(updatedNode)];
5352
5636
  case 6:
5637
+ // TODO
5353
5638
  _a.sent();
5354
5639
  _a.label = 7;
5355
5640
  case 7: return [3 /*break*/, 10];
5356
- case 8: return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5641
+ case 8:
5642
+ // Reload root folder
5643
+ return [4 /*yield*/, this.nodeTreeService.initialData({ dispatchRootId: false })];
5357
5644
  case 9:
5645
+ // Reload root folder
5358
5646
  _a.sent();
5359
5647
  _a.label = 10;
5360
5648
  case 10:
@@ -5364,6 +5652,21 @@
5364
5652
  });
5365
5653
  });
5366
5654
  };
5655
+ /**
5656
+ * @private
5657
+ * @param {?} id
5658
+ * @param {?} value
5659
+ * @return {?}
5660
+ */
5661
+ NodeTreeComponent.prototype.setLoadingMore = /**
5662
+ * @private
5663
+ * @param {?} id
5664
+ * @param {?} value
5665
+ * @return {?}
5666
+ */
5667
+ function (id, value) {
5668
+ this.loadingMoreList[id] = value;
5669
+ };
5367
5670
  /**
5368
5671
  * @return {?}
5369
5672
  */
@@ -5378,13 +5681,14 @@
5378
5681
  };
5379
5682
  NodeTreeComponent.decorators = [
5380
5683
  { type: core.Component, args: [{
5381
- selector: 'lib-node-tree',
5382
- template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n (click)=\"selectNode(node)\"\n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n </mat-tree>\n</div>",
5383
- styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:-ms-grid;display:grid;grid-auto-rows:-webkit-max-content;grid-auto-rows:max-content}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
5684
+ selector: "lib-node-tree",
5685
+ template: "<div class=\"node custom-scrollbar node-tree\">\n <div class=\"node__home\" (click)=\"backToHome()\" [ngClass]=\"{ active: isRoot,\n disabled: loading || homeLoading}\">\n <mat-icon *ngIf=\"!homeLoading\">home</mat-icon>\n <mat-spinner *ngIf=\"homeLoading\" [diameter]=\"20\"\n class=\"node__home--loading\"></mat-spinner>\n <span>Home</span>\n </div>\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\"\n class=\"node__item\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding\n [ngClass]=\"{ active: checked(node),disabled: loading || node.isLoading }\"\n (click)=\"selectNode(node)\">\n <button mat-icon-button disabled class=\"node__item--pading\"></button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\" *ngIf=\"node.item?.TotalFolder ||\n node.item?.TotalFile\">\n <small *ngIf=\"node.item?.TotalFolder\">{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </mat-tree-node>\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding \n [ngClass]=\"{ active: checked(node), disabled: loading || node.isLoading\n }\">\n <div class=\"d-flex align-items-center\" (click)=\"selectNode(node)\">\n <button mat-icon-button [attr.aria-label]=\"'Toggle ' +\n node.item.OriginalFileName\" matTreeNodeToggle\n [disabled]=\"node.isLoading\">\n <mat-icon *ngIf=\"!node.isLoading\" class=\"mat-icon-rtl-mirror\">\n {{ treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n <mat-spinner *ngIf=\"node.isLoading\" [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </button>\n <div class=\"node__item--info\" [style.maxWidth.px]=\"width -50\">\n <mat-icon class=\"folder-icon\">folder</mat-icon>\n <div class=\"node-name\">\n <span>\n {{ node.item.OriginalFileName }}\n </span>\n <span class=\"node-summary\">\n <small *ngIf=\"node.item?.TotalFolder\"><ng-container *ngIf=\"treeControl.isExpanded(node)\"><b>{{getFolderChildrenSize(node.item.AssetId)}}</b>/</ng-container>{{ node.item?.TotalFolder}}\n {{node.item?.TotalFolder> 1 ?\n 'folders':'folder'}}</small>\n <small *ngIf=\"node.item?.TotalFolder && node.item?.TotalFile\">,\n </small>\n <small *ngIf=\"node.item?.TotalFile\">{{ node.item?.TotalFile}}\n {{node.item?.TotalFile> 1 ?\n 'files':'file'}}</small>\n </span>\n </div>\n </div>\n </div>\n <ng-container *ngIf=\"treeControl.isExpanded(node)\"> \n <div *ngIf=\"!!loadingMoreList[node.item.AssetId]\" class=\"mx-2\" [style.minWidth.px]=\"40\">\n <mat-spinner [diameter]=\"20\"\n class=\"node__item--loading\"></mat-spinner>\n </div>\n <button *ngIf=\"!loadingMoreList[node.item.AssetId] && canLoadMore(node)\" matTooltip=\"Load More\" class=\"mx-2\" mat-icon-button (click)=\"loadMoreFolder(node)\" [disabled]=\"loadingMoreList[node.item.AssetId] || homeLoading || loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#5f6368\"><path d=\"m482-200 114-113-114-113-42 42 43 43q-28 1-54.5-9T381-381q-20-20-30.5-46T340-479q0-17 4.5-34t12.5-33l-44-44q-17 25-25 53t-8 57q0 38 15 75t44 66q29 29 65 43.5t74 15.5l-38 38 42 42Zm165-170q17-25 25-53t8-57q0-38-14.5-75.5T622-622q-29-29-65.5-43T482-679l38-39-42-42-114 113 114 113 42-42-44-44q27 0 55 10.5t48 30.5q20 20 30.5 46t10.5 52q0 17-4.5 34T603-414l44 44ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n </button>\n </ng-container>\n </mat-tree-node>\n </mat-tree>\n <div class=\"p-2 d-flex flex-column align-items-center justify-content-center\" *ngIf=\"folderTreeMeta.length\">\n <button mat-raised-button *ngIf=\"folderTreeMeta.length !== folderTreeMeta.total\" (click)=\"loadMoreFolder()\" [disabled]=\"loadingMoreList[ROOT_ASSET_ID] || loading || homeLoading\">\n <div class=\"d-flex align-items-center\">\n <mat-spinner [diameter]=\"20\" *ngIf=\"loadingMoreList[ROOT_ASSET_ID]\"></mat-spinner>\n <mat-icon *ngIf=\"!loadingMoreList[ROOT_ASSET_ID]\">expand_more</mat-icon>\n <div class=\"ml-2\">Load More</div>\n </div>\n </button>\n <div class=\"mt-2\" [style.fontSize.px]=\"13\"><b>{{ folderTreeMeta.length }}</b> of <b>{{ folderTreeMeta.total }} folders</b></div>\n </div>\n</div>",
5686
+ styles: [":host::ng-deep .node{overflow-x:hidden;height:100%;display:grid;grid-auto-rows:max-content}:host::ng-deep .node-tree{max-height:max(800px,90vh);overflow-y:auto}:host::ng-deep .node__home{padding:8px 10px;display:flex;align-items:center;height:44px}:host::ng-deep .node__home .mat-icon{color:#979797;margin-right:15px;margin-bottom:10px;font-size:32px}:host::ng-deep .node__home .node__home--loading{margin-right:19px}:host::ng-deep .node__item--loading{margin-left:10px}:host::ng-deep .node__item--info{display:flex;align-items:center}:host::ng-deep .node__item--info .folder-icon{display:flex;align-items:center;color:#6fc0ff;font-size:32px;margin-right:20px}:host::ng-deep .node__item--info .node-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host::ng-deep .node__item--info .node-name .node-summary{margin-top:-5px;color:#979797}:host::ng-deep .node .mat-tree{width:-moz-max-content!important;width:max-content!important;min-width:100%}:host::ng-deep .node .mat-tree .mat-tree-node{padding:5px 0;min-height:44px}:host::ng-deep .node .mat-tree .mat-tree-node .node__item--pading{height:20px}:host::ng-deep .node .mat-tree-node:hover,:host::ng-deep .node .node__home{transition:.3s;cursor:pointer}:host::ng-deep .node .mat-tree-node:hover:hover,:host::ng-deep .node .node__home:hover{background-color:#e8e8e8}:host::ng-deep .node .active{background-color:#f0f0f0}:host::ng-deep .node .disabled{pointer-events:none}"]
5384
5687
  }] }
5385
5688
  ];
5386
5689
  /** @nocollapse */
5387
5690
  NodeTreeComponent.ctorParameters = function () { return [
5691
+ { type: AssetService },
5388
5692
  { type: NodeTreeService },
5389
5693
  { type: AssetManagementService },
5390
5694
  { type: core.ChangeDetectorRef }
@@ -5398,6 +5702,8 @@
5398
5702
  /** @type {?} */
5399
5703
  NodeTreeComponent.prototype.width;
5400
5704
  /** @type {?} */
5705
+ NodeTreeComponent.prototype.ROOT_ASSET_ID;
5706
+ /** @type {?} */
5401
5707
  NodeTreeComponent.prototype.currentFolderId;
5402
5708
  /** @type {?} */
5403
5709
  NodeTreeComponent.prototype.isRoot;
@@ -5406,9 +5712,13 @@
5406
5712
  /** @type {?} */
5407
5713
  NodeTreeComponent.prototype.loading;
5408
5714
  /** @type {?} */
5715
+ NodeTreeComponent.prototype.loadingMoreList;
5716
+ /** @type {?} */
5409
5717
  NodeTreeComponent.prototype.treeControl;
5410
5718
  /** @type {?} */
5411
5719
  NodeTreeComponent.prototype.dataSource;
5720
+ /** @type {?} */
5721
+ NodeTreeComponent.prototype.folderChildrenMap;
5412
5722
  /**
5413
5723
  * @type {?}
5414
5724
  * @private
@@ -5420,6 +5730,8 @@
5420
5730
  NodeTreeComponent.prototype.isExpandable;
5421
5731
  /** @type {?} */
5422
5732
  NodeTreeComponent.prototype.hasChild;
5733
+ /** @type {?} */
5734
+ NodeTreeComponent.prototype.assetService;
5423
5735
  /**
5424
5736
  * @type {?}
5425
5737
  * @private
@@ -5685,11 +5997,16 @@
5685
5997
  * @return {?}
5686
5998
  */
5687
5999
  function (_a) {
5688
- var _b = __read(_a, 2), folders = _b[0], assets = _b[1];
5689
- _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
5690
- _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
5691
- }))
5692
- .add((/**
6000
+ var _b = __read(_a, 2), folders = _b[0], assetsRes = _b[1];
6001
+ /** @type {?} */
6002
+ var pagination = assetsRes && assetsRes.Meta || {};
6003
+ /** @type {?} */
6004
+ var assets = assetsRes && assetsRes.Data && assetsRes.Data.Children || [];
6005
+ /** @type {?} */
6006
+ var totalFile = assetsRes && assetsRes.Data && assetsRes.Data.TotalFile || 0;
6007
+ _this.assetService.setFolderList(folders.Data, { Total: folders.Data.TotalFolder });
6008
+ _this.assetService.setAssetList(assets, pagination, totalFile);
6009
+ })).add((/**
5693
6010
  * @return {?}
5694
6011
  */
5695
6012
  function () {
@@ -5859,19 +6176,9 @@
5859
6176
  this.hasArchivePermission = true;
5860
6177
  this.assets = new core.EventEmitter();
5861
6178
  this.unsubscribe$ = new Subject.Subject();
5862
- this.nodeTreeMinWidth = 250;
6179
+ this.nodeTreeMinWidth = 300;
5863
6180
  this.nodeTreeMaxWidth = 700;
5864
6181
  }
5865
- /**
5866
- * @return {?}
5867
- */
5868
- AssetWrapperComponent.prototype.ngOnChanges = /**
5869
- * @return {?}
5870
- */
5871
- function () {
5872
- console.log('modify', this.hasModifyPermission);
5873
- console.log('archive', this.hasArchivePermission);
5874
- };
5875
6182
  /**
5876
6183
  * @return {?}
5877
6184
  */
@@ -5931,7 +6238,7 @@
5931
6238
  AssetWrapperComponent.decorators = [
5932
6239
  { type: core.Component, args: [{
5933
6240
  selector: 'lib-asset-wrapper',
5934
- template: "<div class=\"asset-wrapper\">\n <div class=\"asset-header\" *ngIf=\"header\">\n <div class=\"asset-header__left asset-header__title\" #title>\n <lib-breadcrumb></lib-breadcrumb>\n </div>\n <div class=\"asset-header__right asset-header__actions\" #actions>\n <lib-search-box></lib-search-box>\n </div>\n </div>\n <div class=\"asset-body\">\n <lib-drag-to-resize (resizeCompleted)=\"onResize($event)\" class=\"asset-body__node-tree\" [minWidth]=\"nodeTreeMinWidth\" [maxWidth]=\"nodeTreeMaxWidth\">\n <lib-node-tree [width]=\"nodeTreeWidth\"></lib-node-tree>\n </lib-drag-to-resize>\n <lib-node-details \n class=\"asset-body__node-details\" \n [style.maxWidth]=\"nodeDetailsWidth\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-node-details>\n </div>\n</div>",
6241
+ template: "<div class=\"asset-wrapper\">\n <div class=\"asset-header\" *ngIf=\"header\">\n <div class=\"asset-header__left asset-header__title\" #title>\n <lib-breadcrumb></lib-breadcrumb>\n </div>\n <div class=\"asset-header__right asset-header__actions\" #actions>\n <lib-search-box></lib-search-box>\n </div>\n </div>\n <div class=\"asset-body\">\n <lib-drag-to-resize (resizeCompleted)=\"onResize($event)\" class=\"asset-body__node-tree\" [minWidth]=\"nodeTreeMinWidth\" [maxWidth]=\"nodeTreeMaxWidth\">\n <lib-node-tree [width]=\"nodeTreeWidth\"></lib-node-tree>\n </lib-drag-to-resize>\n <lib-node-details \n class=\"asset-body__node-details\"\n [isDialog]=\"isDialog\"\n [style.maxWidth]=\"nodeDetailsWidth\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-node-details>\n </div>\n</div>",
5935
6242
  styles: [":host::ng-deep .mat-dialog-title{padding:24px}:host::ng-deep .mat-dialog-title .lib-modal--close{padding:10px;position:absolute;top:10px;right:10px;z-index:1}:host::ng-deep .mat-dialog-actions{padding-left:24px;padding-right:24px}:host::ng-deep .asset-wrapper{display:flex;flex-direction:column;height:100%;width:100%;overflow-x:hidden}:host::ng-deep .asset-wrapper .asset-header{display:flex;padding:20px 15px;border-bottom:1px solid #d8d8d8;justify-content:space-between;align-items:center}:host::ng-deep .asset-wrapper .asset-body{display:flex;align-items:stretch}:host::ng-deep .asset-wrapper .asset-body__node-tree{border-right:1px solid #d8d8d8}:host::ng-deep .asset-wrapper .asset-body__node-details{flex:1}@media screen and (max-width:768px){:host::ng-deep .asset-wrapper .asset-header{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:10px}:host::ng-deep .asset-wrapper .asset-body{flex-direction:column;justify-content:flex-start}:host::ng-deep .asset-wrapper .asset-body__node-tree{width:100%}:host::ng-deep .asset-wrapper .asset-body__node-details{max-width:100%!important}}::ng-deep .mat-tooltip.width-auto{max-width:100%!important}"]
5936
6243
  }] }
5937
6244
  ];
@@ -5941,6 +6248,7 @@
5941
6248
  ]; };
5942
6249
  AssetWrapperComponent.propDecorators = {
5943
6250
  header: [{ type: core.Input }],
6251
+ isDialog: [{ type: core.Input }],
5944
6252
  hasModifyPermission: [{ type: core.Input }],
5945
6253
  hasAccessPermission: [{ type: core.Input }],
5946
6254
  hasArchivePermission: [{ type: core.Input }],
@@ -5952,6 +6260,8 @@
5952
6260
  /** @type {?} */
5953
6261
  AssetWrapperComponent.prototype.header;
5954
6262
  /** @type {?} */
6263
+ AssetWrapperComponent.prototype.isDialog;
6264
+ /** @type {?} */
5955
6265
  AssetWrapperComponent.prototype.hasModifyPermission;
5956
6266
  /** @type {?} */
5957
6267
  AssetWrapperComponent.prototype.hasAccessPermission;
@@ -6246,23 +6556,24 @@
6246
6556
  type: ActionTypes.SET_GLOBAL_LOADING,
6247
6557
  payload: true,
6248
6558
  });
6559
+ var _a = this.getFolderPagePagination(), pageIndex = _a.pageIndex, pageSize = _a.pageSize;
6249
6560
  this.assetService
6250
- .getChildrenFolders({ assetId: id })
6561
+ .getChildrenFolders({ assetId: id, pageIndex: pageIndex, pageSize: pageSize })
6251
6562
  .pipe(operators.takeUntil(this.unsubscribe$))
6252
6563
  .subscribe((/**
6253
6564
  * @param {?} res
6254
6565
  * @return {?}
6255
6566
  */
6256
6567
  function (res) {
6257
- _this.assetService.setFolderList(res.Data, res.Meta.Total);
6258
- if (res.Data && res.Data.Children) {
6259
- res.Data.Children.forEach((/**
6568
+ var Data = res.Data;
6569
+ var Children = Data.Children;
6570
+ _this.setFolderList(res);
6571
+ if (Children) {
6572
+ Children.forEach((/**
6260
6573
  * @param {?} node
6261
6574
  * @return {?}
6262
6575
  */
6263
- function (node) {
6264
- return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId);
6265
- }));
6576
+ function (node) { return _this.nodeTreeService.addNode(node, _this.currentFolder.AssetId); }));
6266
6577
  }
6267
6578
  }))
6268
6579
  .add((/**
@@ -6275,6 +6586,23 @@
6275
6586
  });
6276
6587
  }));
6277
6588
  };
6589
+ /**
6590
+ * @private
6591
+ * @param {?} res
6592
+ * @return {?}
6593
+ */
6594
+ NodeDetailsComponent.prototype.setFolderList = /**
6595
+ * @private
6596
+ * @param {?} res
6597
+ * @return {?}
6598
+ */
6599
+ function (res) {
6600
+ var Data = res.Data, Meta = res.Meta;
6601
+ var TotalFolder = Data.TotalFolder;
6602
+ var PageIndex = Meta.PageIndex, PageSize = Meta.PageSize;
6603
+ this.assetService.setFolderList(Data, { Total: TotalFolder, PageIndex: PageIndex, PageSize: PageSize });
6604
+ this.setFolderPagination({ length: TotalFolder, pageIndex: PageIndex, pageSize: PageSize });
6605
+ };
6278
6606
  /**
6279
6607
  * @private
6280
6608
  * @param {?} id
@@ -6291,8 +6619,9 @@
6291
6619
  type: ActionTypes.SET_GLOBAL_LOADING,
6292
6620
  payload: true,
6293
6621
  });
6622
+ var _a = this.getFolderPagePagination(), pageIndex = _a.pageIndex, pageSize = _a.pageSize;
6294
6623
  combineLatest.combineLatest([
6295
- this.assetService.getChildrenFolders({ assetId: id }),
6624
+ this.assetService.getChildrenFolders({ assetId: id, pageIndex: pageIndex, pageSize: pageSize }),
6296
6625
  this.assetService.getChildrenAssets({
6297
6626
  assetId: id,
6298
6627
  }),
@@ -6303,11 +6632,17 @@
6303
6632
  * @return {?}
6304
6633
  */
6305
6634
  function (_a) {
6306
- var _b = __read(_a, 2), folders = _b[0], assets = _b[1];
6307
- _this.assetService.setFolderList(folders.Data, folders.Meta.Total);
6308
- _this.assetService.setAssetList(assets.Data.Children, assets.Meta);
6309
- if (folders.Data && folders.Data.Children) {
6310
- folders.Data.Children.forEach((/**
6635
+ var _b = __read(_a, 2), foldersRes = _b[0], assetsRes = _b[1];
6636
+ /** @type {?} */
6637
+ var pagination = assetsRes && assetsRes.Meta || {};
6638
+ /** @type {?} */
6639
+ var assets = assetsRes && assetsRes.Data && assetsRes.Data.Children || [];
6640
+ /** @type {?} */
6641
+ var totalFile = assetsRes && assetsRes.Data && assetsRes.Data.TotalFile || 0;
6642
+ _this.setFolderList(foldersRes);
6643
+ _this.assetService.setAssetList(assets, pagination, totalFile);
6644
+ if (foldersRes.Data && foldersRes.Data.Children) {
6645
+ foldersRes.Data.Children.forEach((/**
6311
6646
  * @param {?} node
6312
6647
  * @return {?}
6313
6648
  */
@@ -6326,6 +6661,52 @@
6326
6661
  });
6327
6662
  }));
6328
6663
  };
6664
+ /**
6665
+ * @return {?}
6666
+ */
6667
+ NodeDetailsComponent.prototype.getFolderPagePagination = /**
6668
+ * @return {?}
6669
+ */
6670
+ function () {
6671
+ return {
6672
+ pageIndex: this.assetService.pageFolderIndex,
6673
+ pageSize: this.assetService.pageFolderSize,
6674
+ length: this.assetService.folderTotal,
6675
+ };
6676
+ };
6677
+ /**
6678
+ * @param {?} event
6679
+ * @return {?}
6680
+ */
6681
+ NodeDetailsComponent.prototype.onFolderPageChange = /**
6682
+ * @param {?} event
6683
+ * @return {?}
6684
+ */
6685
+ function (event) {
6686
+ this.assetService.pageFolderIndex = event.pageIndex;
6687
+ this.assetService.pageFolderSize = event.pageSize;
6688
+ this.fetchFolder(this.currentFolder.AssetId);
6689
+ };
6690
+ /**
6691
+ * @private
6692
+ * @param {?} pagination
6693
+ * @return {?}
6694
+ */
6695
+ NodeDetailsComponent.prototype.setFolderPagination = /**
6696
+ * @private
6697
+ * @param {?} pagination
6698
+ * @return {?}
6699
+ */
6700
+ function (pagination) {
6701
+ if (!pagination)
6702
+ return;
6703
+ var length = pagination.length, pageIndex = pagination.pageIndex, pageSize = pagination.pageSize;
6704
+ this.folderPagination = {
6705
+ pageIndex: pageIndex,
6706
+ pageSize: pageSize,
6707
+ length: length
6708
+ };
6709
+ };
6329
6710
  Object.defineProperty(NodeDetailsComponent.prototype, "noResults", {
6330
6711
  get: /**
6331
6712
  * @return {?}
@@ -6359,8 +6740,8 @@
6359
6740
  NodeDetailsComponent.decorators = [
6360
6741
  { type: core.Component, args: [{
6361
6742
  selector: 'lib-node-details',
6362
- template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
6363
- styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:-webkit-sticky;position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
6743
+ template: "<div class=\"node-details custom-scrollbar\">\n <div class=\"node-header\">\n <mat-progress-bar [style.visibility]=\"(loading$ | async) ? 'visible' : 'hidden'\" mode=\"indeterminate\">\n </mat-progress-bar>\n <div class=\"node-header-content\">\n <div class=\"node-header-content__left\">\n <H5 class=\"node-header-content__left--title\">\n <ng-container *ngIf=\"assetService?.keyword\">\n Search results for <span>{{ assetService?.keyword }}</span> in\n </ng-container>\n {{ currentFolder?.OriginalFileName }}\n </H5>\n <p *ngIf=\"!noResults\" class=\"node-header-content__left--subtitle\">\n {{ assetService?.folderTotal }}\n {{ assetService?.folderTotal > 1 ? 'folders' : 'folder' }},\n {{ assetService?.fileTotal }}\n {{ assetService?.fileTotal > 1 ? 'files': 'file' }}\n </p>\n </div>\n <div class=\"node-header-content__right\">\n <div class=\"button-wrapper\">\n <button mat-raised-button [disabled]=\"!selectedAssets?.length || !hasArchivePermission\" (click)=\"deleteAssets()\" color=\"warn\">\n <span>{{selectedAssets?.length > 1 ? 'Delete assets' : 'Delete asset'}}</span>\n <span *ngIf=\"selectedAssets?.length\" class=\"count\">({{ selectedAssets.length }})</span>\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"openUploadDialog()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Upload asset\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"addFolder()\" [disabled]=\"!currentFolder?.AssetId || !hasModifyPermission\">\n Add folder\n </button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"node-body\">\n <lib-search-not-found *ngIf=\"noResults; else contentAsset\"></lib-search-not-found>\n <ng-template #contentAsset>\n <lib-folder-list\n class=\"node-body__section\"\n [folders]=\"currentFolder?.Children\"\n [pagination]=\"folderPagination\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n (onPageChange)=\"onFolderPageChange($event)\"\n ></lib-folder-list>\n <lib-asset-list\n [assets]=\"assets\"\n [isDialog]=\"isDialog\"\n [hasModifyPermission]=\"hasModifyPermission\"\n [hasAccessPermission]=\"hasAccessPermission\"\n [hasArchivePermission]=\"hasArchivePermission\"\n ></lib-asset-list>\n </ng-template>\n </div>\n</div>",
6744
+ styles: [":host::ng-deep .node-details{max-height:100%;overflow-y:auto}:host::ng-deep .node-details .node-header{position:sticky;top:0;background-color:#fff;z-index:20}:host::ng-deep .node-details .node-header-content{padding:10px 20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}:host::ng-deep .node-details .node-header-content__left--title{margin-bottom:5px}:host::ng-deep .node-details .node-header-content__left--title span{color:#fb3458}:host::ng-deep .node-details .node-header-content__left--subtitle{margin:0;color:#979797;font-size:14px}:host::ng-deep .node-details .node-header-content__right{flex:1}:host::ng-deep .node-details .node-header-content__right .button-wrapper{display:flex;gap:15px;justify-content:flex-end}:host::ng-deep .node-details .node-header-content__right .button-wrapper .count{margin-left:3px}:host::ng-deep .node-details .node-body{padding:0 20px}:host::ng-deep .node-details .node-body__section{display:block;margin-bottom:15px}"]
6364
6745
  }] }
6365
6746
  ];
6366
6747
  /** @nocollapse */
@@ -6372,6 +6753,7 @@
6372
6753
  { type: core.ChangeDetectorRef }
6373
6754
  ]; };
6374
6755
  NodeDetailsComponent.propDecorators = {
6756
+ isDialog: [{ type: core.Input }],
6375
6757
  hasModifyPermission: [{ type: core.Input }],
6376
6758
  hasAccessPermission: [{ type: core.Input }],
6377
6759
  hasArchivePermission: [{ type: core.Input }]
@@ -6379,6 +6761,8 @@
6379
6761
  return NodeDetailsComponent;
6380
6762
  }());
6381
6763
  if (false) {
6764
+ /** @type {?} */
6765
+ NodeDetailsComponent.prototype.isDialog;
6382
6766
  /** @type {?} */
6383
6767
  NodeDetailsComponent.prototype.hasModifyPermission;
6384
6768
  /** @type {?} */
@@ -6391,6 +6775,8 @@
6391
6775
  */
6392
6776
  NodeDetailsComponent.prototype.unsubscribe$;
6393
6777
  /** @type {?} */
6778
+ NodeDetailsComponent.prototype.folderPagination;
6779
+ /** @type {?} */
6394
6780
  NodeDetailsComponent.prototype.selectedAssets;
6395
6781
  /** @type {?} */
6396
6782
  NodeDetailsComponent.prototype.loading$;