nuxeo-development-framework 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -63,7 +63,7 @@ import * as i2$3 from '@angular/material/list';
63
63
  import { MatListModule } from '@angular/material/list';
64
64
  import { Utils } from 'formiojs';
65
65
  import * as _ from 'lodash';
66
- import { filter, sortBy, each, unionWith, isEqual, cloneDeep, isNil } from 'lodash';
66
+ import { filter, sortBy, each, unionWith, isEqual, cloneDeep, isNil, union } from 'lodash';
67
67
  import * as i3$3 from '@angular/cdk/bidi';
68
68
  import * as i6$2 from '@angular/material/form-field';
69
69
  import { Cacheable, LocalStorageStrategy, CacheBuster } from 'ts-cacheable';
@@ -19327,7 +19327,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
19327
19327
  class IconService {
19328
19328
  constructor() { }
19329
19329
  getFileIcon(document, dataType) {
19330
- var _a;
19330
+ var _a, _b, _c, _d;
19331
19331
  let thumb = 'assets/drive-icons/genericfile.png';
19332
19332
  if (dataType === 'document') {
19333
19333
  try {
@@ -19359,7 +19359,7 @@ class IconService {
19359
19359
  //(document.contextParameters.thumbnail.url) ? document.contextParameters.thumbnail.url : 'assets/drive-icons/video.png';
19360
19360
  }
19361
19361
  else if ((document.properties.file || document.properties['file:content'])['mime-type'].includes('image')) {
19362
- thumb = (document.contextParameters.thumbnail) ? document.contextParameters.thumbnail.url : 'assets/drive-icons/photo.png';
19362
+ thumb = ((_b = document === null || document === void 0 ? void 0 : document.contextParameters) === null || _b === void 0 ? void 0 : _b.thumbnail) ? (_d = (_c = document === null || document === void 0 ? void 0 : document.contextParameters) === null || _c === void 0 ? void 0 : _c.thumbnail) === null || _d === void 0 ? void 0 : _d.url : 'assets/drive-icons/photo.png';
19363
19363
  }
19364
19364
  else if ((document.properties.file || document.properties['file:content'])['mime-type'].includes('zip')) {
19365
19365
  thumb = 'assets/drive-icons/zip.png';
@@ -19533,13 +19533,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
19533
19533
  }], ctorParameters: function () { return [{ type: i3.DatePipe }, { type: IconService }]; } });
19534
19534
 
19535
19535
  class MainfolderService {
19536
- constructor(nuxeoService, userPreference) {
19536
+ constructor(nuxeoService, appConfigService, userPreference) {
19537
19537
  this.nuxeoService = nuxeoService;
19538
+ this.appConfigService = appConfigService;
19538
19539
  this.userPreference = userPreference;
19540
+ this.localStoragKeys = this.appConfigService.myConfiguration.localStorageKey;
19539
19541
  }
19540
- fetchfileManager_mainFolderId() {
19542
+ fetchfileManager_mainFolderId(apiName) {
19541
19543
  return from(this.nuxeoService.nuxeoClient
19542
- .operation('AC_UA_GetFileManagerID')
19544
+ .operation(apiName ? apiName : 'AC_UA_GetFileManagerID')
19543
19545
  .execute({
19544
19546
  headers: {
19545
19547
  properties: 'file, dublincore, creator, driveroot, departmentspace',
@@ -19589,10 +19591,10 @@ class MainfolderService {
19589
19591
  return of(false);
19590
19592
  }));
19591
19593
  }
19592
- save_fileManagerObj_ToLocalStorage(reset = false) {
19594
+ save_fileManagerObj_ToLocalStorage(apiName = 'AC_UA_GetFileManagerID') {
19593
19595
  /*return this.userPreference.hasItem('fileManagerObj') && !reset
19594
19596
  ? of(true):*/
19595
- return this.fetchfileManager_mainFolderId().pipe(tap((res) => {
19597
+ return this.fetchfileManager_mainFolderId(apiName).pipe(tap((res) => {
19596
19598
  console.log('res: ', res);
19597
19599
  if (res) {
19598
19600
  this.fileManagerObj = {
@@ -19604,9 +19606,9 @@ class MainfolderService {
19604
19606
  return item;
19605
19607
  }),
19606
19608
  };
19607
- this.userPreference.set('fileManagerObj', JSON.stringify(this.fileManagerObj));
19609
+ this.userPreference.set(apiName ? this.localStoragKeys[apiName] : 'fileManagerObj', JSON.stringify(this.fileManagerObj));
19608
19610
  }
19609
- }), switchMap(value => of(this.get_fileManagerObj_FromLocalStorage())));
19611
+ }), switchMap(value => of(this.get_fileManagerObj_FromLocalStorage(apiName ? this.localStoragKeys[apiName] : 'fileManagerObj'))));
19610
19612
  }
19611
19613
  save_myfilesManagerObj_ToLocalStorage() {
19612
19614
  return this.userPreference.hasItem('myFilesManagerObj')
@@ -19649,9 +19651,9 @@ class MainfolderService {
19649
19651
  }
19650
19652
  }));
19651
19653
  }
19652
- get_fileManagerObj_FromLocalStorage() {
19653
- if (this.userPreference.hasItem('fileManagerObj')) {
19654
- return JSON.parse(this.userPreference.get('fileManagerObj'));
19654
+ get_fileManagerObj_FromLocalStorage(key) {
19655
+ if (this.userPreference.hasItem(key ? key : 'fileManagerObj')) {
19656
+ return JSON.parse(this.userPreference.get(key ? key : 'fileManagerObj'));
19655
19657
  }
19656
19658
  return null;
19657
19659
  }
@@ -19674,14 +19676,14 @@ class MainfolderService {
19674
19676
  return null;
19675
19677
  }
19676
19678
  }
19677
- MainfolderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: MainfolderService, deps: [{ token: NuxeoService$1 }, { token: UserPreferencesService$1 }], target: i0.ɵɵFactoryTarget.Injectable });
19679
+ MainfolderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: MainfolderService, deps: [{ token: NuxeoService$1 }, { token: AppConfigService }, { token: UserPreferencesService$1 }], target: i0.ɵɵFactoryTarget.Injectable });
19678
19680
  MainfolderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: MainfolderService, providedIn: 'root' });
19679
19681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: MainfolderService, decorators: [{
19680
19682
  type: Injectable,
19681
19683
  args: [{
19682
19684
  providedIn: 'root',
19683
19685
  }]
19684
- }], ctorParameters: function () { return [{ type: NuxeoService$1 }, { type: UserPreferencesService$1 }]; } });
19686
+ }], ctorParameters: function () { return [{ type: NuxeoService$1 }, { type: AppConfigService }, { type: UserPreferencesService$1 }]; } });
19685
19687
 
19686
19688
  class RecentlyViewedService {
19687
19689
  constructor(userPreference, callApiService) {
@@ -19753,12 +19755,14 @@ class FileManagerService {
19753
19755
  this.router = router;
19754
19756
  this.recentlyViewedService = recentlyViewedService;
19755
19757
  this.onRefreshingFileManger = new Subject();
19758
+ this.onRefreshClipboard = new EventEmitter();
19756
19759
  this.permissionsList = ['canDelete', 'canCreate', 'canDownload', 'canUpdate', 'canPublish', 'canPublishFolders', 'canGet', 'canCopy', 'canCopyFile', 'canDeleteFromSourceParent',
19757
19760
  'canRenameToSourceParent', 'setSynchronize', 'setUnSynchronize', 'canAddToQuickAccess', 'canShare', 'canRename', 'canMove', 'canMoveFile', 'lockOwnerIfLocked', 'notSecretFile', 'isUserSubscriberToFile', 'canSubscribe'];
19758
19761
  this.userPermittedTypes = [];
19759
19762
  this.userPermittedTypesTotalSize = -1;
19760
19763
  this.userPermittedFilesOnly = [];
19761
19764
  this.isArabic = false;
19765
+ this.clipboardPermissionList = ['canCopy', 'canMove'];
19762
19766
  // getTreeNodeChildren = (parent) => {
19763
19767
  // let params = {
19764
19768
  // queryParams: parent ? parent : '',
@@ -19795,6 +19799,7 @@ class FileManagerService {
19795
19799
  .toPromise();
19796
19800
  };
19797
19801
  this.setMyTableConfiguration();
19802
+ this.myPagesRootNames = this.appConfService.myConfiguration.myPagesRootsNames;
19798
19803
  this.langSubscription = this.translationService.isArabic$.subscribe(res => {
19799
19804
  this.isArabic = res;
19800
19805
  this.userPermittedTypes = this.sortingTypes(this.userPermittedTypes);
@@ -19810,6 +19815,53 @@ class FileManagerService {
19810
19815
  this.fields = this.allFilesConfig.fields;
19811
19816
  this.pageProvider = this.allFilesConfig.pageProvider;
19812
19817
  }
19818
+ // return accepted types for certain id
19819
+ getClipboardAcceptedTypes(id) {
19820
+ return from(this.nuxeoService.nuxeoClient
19821
+ .repository()
19822
+ .headers({
19823
+ "properties": "*",
19824
+ 'X-NXenrichers-document': 'accepted_children',
19825
+ })
19826
+ .fetch(id)).pipe(map((data) => {
19827
+ delete data._nuxeo;
19828
+ delete data._repository;
19829
+ return data;
19830
+ }), catchError((err) => {
19831
+ throw err;
19832
+ }));
19833
+ }
19834
+ getClipboardDocuments(docIds, sortObj) {
19835
+ return this.callApi.query({
19836
+ pageProvider: 'Documents_InList_PP',
19837
+ currentPageIndex: 0,
19838
+ offset: 0,
19839
+ pageSize: 15,
19840
+ system_uuid: JSON.stringify(docIds),
19841
+ sortBy: (sortObj) ? sortObj.sortBy : '',
19842
+ sortOrder: (sortObj) ? sortObj.sortOrder : ''
19843
+ }, {
19844
+ headers: {
19845
+ "X-NXproperties": "dublincore,file,dmsfolder,generaldocument",
19846
+ "enrichers-document": "thumbnail,permissions"
19847
+ }
19848
+ }).pipe(mergeMap((data) => from(data.entries).pipe(mergeMap(
19849
+ // this updates related to clipboard feature
19850
+ (item) => {
19851
+ item['isFile'] = this.checkIfDocumentIsFile(item);
19852
+ item['isSelected'] = false;
19853
+ const permissionsCalls = this.clipboardPermissionList.map(permission => {
19854
+ return this.permissionEvaluatorService.evaluateRule(permission, { entity: item });
19855
+ });
19856
+ return combineLatest(permissionsCalls);
19857
+ }, (original, detail) => {
19858
+ this.clipboardPermissionList.forEach((value, index) => {
19859
+ original[value] = detail[index];
19860
+ });
19861
+ }), toArray(), map(entry => ([...data.entries])))), catchError((err) => {
19862
+ throw err;
19863
+ }));
19864
+ }
19813
19865
  sortingTypes(types) {
19814
19866
  if (this.isArabic) {
19815
19867
  types = types.sort((item1, item2) => {
@@ -20024,10 +20076,11 @@ class FileManagerService {
20024
20076
  system_isTrashed: false,
20025
20077
  pageSize: 500
20026
20078
  };
20027
- return (id == 'root' ? of(this.mainFolderService.get_fileManagerObj_FromLocalStorage()) : this.callApi
20028
- .query(Object.assign({ pageProvider: this.pageProvider }, params), {
20029
- headers: this.headers,
20030
- }))
20079
+ return (id == 'root' ? of(this.mainFolderService.get_fileManagerObj_FromLocalStorage('fileManagerObj')) :
20080
+ id === 'workSpaceRoot' ? of(this.mainFolderService.get_fileManagerObj_FromLocalStorage('workSpaceFileMangerObj')) : this.callApi
20081
+ .query(Object.assign({ pageProvider: this.pageProvider }, params), {
20082
+ headers: this.headers,
20083
+ }))
20031
20084
  .pipe(map((data) => data.entries.map((item) => this.adapter.adaptIn(item, this.fields))), map((entries) => entries.map((item) => this.fileManagerAdapter.adapt(item))), mergeMap((entries) => from(entries).pipe(mergeMap((item) => {
20032
20085
  const permissionsCalls = this.permissionsList.map(permission => {
20033
20086
  return this.permissionEvaluatorService.evaluateRule(permission, { entity: item.entity });
@@ -20087,10 +20140,11 @@ class FileManagerService {
20087
20140
  currentPageIndex: 0,
20088
20141
  pageSize: 500,
20089
20142
  };
20090
- return (id == 'root' ? this.mainFolderService.save_fileManagerObj_ToLocalStorage(true) : this.callApi
20091
- .query(Object.assign({ pageProvider: 'PP_Document_Content_DB' }, params), {
20092
- headers: this.headers,
20093
- }))
20143
+ return (id == 'root' ? this.mainFolderService.save_fileManagerObj_ToLocalStorage('AC_UA_GetFileManagerID') :
20144
+ id == 'workSpaceRoot' ? this.mainFolderService.save_fileManagerObj_ToLocalStorage('AC_UA_GetSpaceID') : this.callApi
20145
+ .query(Object.assign({ pageProvider: 'PP_Document_Content_DB' }, params), {
20146
+ headers: this.headers,
20147
+ }))
20094
20148
  .pipe(map((data) => data.entries.map((item) => this.adapter.adaptIn(item, this.fields))), map((entries) => entries.map((item) => this.fileManagerAdapter.adapt(item))), mergeMap((entries) => from(entries).pipe(mergeMap((item) => {
20095
20149
  const permissionsCalls = this.permissionsList.map(permission => {
20096
20150
  return this.permissionEvaluatorService.evaluateRule(permission, { entity: item.entity });
@@ -21780,6 +21834,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
21780
21834
  }]
21781
21835
  }], ctorParameters: function () { return [{ type: NuxeoService$1 }, { type: i1$6.MatDialog }, { type: AdapterService }]; } });
21782
21836
 
21837
+ class DisplaySuitableIconComponent {
21838
+ constructor(iconService) {
21839
+ this.iconService = iconService;
21840
+ this.dataType = 'document';
21841
+ this.archive = false;
21842
+ }
21843
+ ngOnInit() {
21844
+ this.image = this.getFileIcon(this.data);
21845
+ }
21846
+ getFileIcon(document) {
21847
+ if (!this.archive)
21848
+ return this.iconService.getFileIcon(document, this.dataType);
21849
+ else
21850
+ return this.iconService.getArchivedDocumentIcon(document, this.dataType);
21851
+ }
21852
+ // used to recalculate icon when sorting in table ( when sorting component not rendered again so onint won't excuted )
21853
+ ngOnChanges() {
21854
+ this.image = this.getFileIcon(this.data);
21855
+ }
21856
+ }
21857
+ DisplaySuitableIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DisplaySuitableIconComponent, deps: [{ token: IconService }], target: i0.ɵɵFactoryTarget.Component });
21858
+ DisplaySuitableIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: { data: "data", size: "size", dataType: "dataType", archive: "archive" }, usesOnChanges: true, ngImport: i0, template: "<!-- <div *ngIf=\" data.type == 'Folder';else notFolder\">\r\n <div [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"'assets/drive-icons/folder.png'\" />\r\n </div>\r\n</div>\r\n<ng-template #notFolder>\r\n <div *ngIf=\"!data.properties.file; else file\">\r\n <img class=\"w-full\" [src]=\"'assets/drive-icons/generic.png'\" />\r\n </div>\r\n <ng-template #file>\r\n <div *ngIf=\"data.properties.file['mime-type'].includes('image');else noImage\" [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"data.contextParameters.thumbnail.url | secure | async\" />\r\n <ng-template #noImage>\r\n <mat-icon svgIcon=\"iconsmind:photo\" class=\"icon-size-6\"></mat-icon>\r\n </ng-template> \r\n </div>\r\n <div *ngIf=\" data.properties.file['mime-type'].includes('video');else noVideo\" [style.width]=\"size\">\r\n <figure class=\"hover-video w-full\">\r\n <img class=\"w-full\" [src]=\"data.contextParameters.thumbnail.url | secure | async\" />\r\n <figcaption>\r\n <mat-icon svgIcon=\"iconsmind:play_music\" class=\"icon-size-4\"></mat-icon>\r\n </figcaption>\r\n </figure>\r\n <ng-template #noVideo>\r\n <mat-icon svgIcon=\"iconsmind:video_2\" class=\"icon-size-6\"></mat-icon>\r\n </ng-template> \r\n </div>\r\n <div *ngIf=\" data.properties.file['mime-type'].includes('application')\">\r\n <mat-icon svgIcon=\"iconsmind:file\" class=\"icon-size-6\"></mat-icon>\r\n </div>\r\n </ng-template>\r\n</ng-template> -->\r\n\r\n\r\n<div [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"image\" />\r\n</div>", styles: [".hover-video{display:inline-block;margin:8px;max-width:100%;min-width:100%;overflow:hidden;position:relative;text-align:center}.hover-video *{box-sizing:border-box;transition:all .45s ease}.hover-video:before,.hover-video:after{position:absolute;top:0;bottom:0;left:0;right:0;content:\"\";transition:all .3s ease;z-index:1;opacity:0;transform:scaleY(2)}.hover-video video{vertical-align:top;max-width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hover-video figcaption{position:absolute;top:0;bottom:0;left:0;right:0;align-items:center;z-index:1;display:flex;flex-direction:column;justify-content:center;line-height:1.1em;opacity:0;z-index:2;transition-delay:.1s;font-size:24px;font-family:sans-serif;font-weight:400;letter-spacing:1px;text-transform:uppercase}.hover-video{transform:scale(1);opacity:1}.hover-video>video{opacity:.7}.hover-video figcaption{opacity:1}.hover-video:hover figcaption:hover{opacity:.5;background-color:#eaecee}\n"] });
21859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DisplaySuitableIconComponent, decorators: [{
21860
+ type: Component,
21861
+ args: [{
21862
+ selector: 'app-display-suitable-icon',
21863
+ templateUrl: './display-suitable-icon.component.html',
21864
+ styleUrls: ['./display-suitable-icon.component.scss']
21865
+ }]
21866
+ }], ctorParameters: function () { return [{ type: IconService }]; }, propDecorators: { data: [{
21867
+ type: Input,
21868
+ args: ['data']
21869
+ }], size: [{
21870
+ type: Input,
21871
+ args: ['size']
21872
+ }], dataType: [{
21873
+ type: Input
21874
+ }], archive: [{
21875
+ type: Input
21876
+ }] } });
21877
+
21783
21878
  class DynamicTabsComponent {
21784
21879
  constructor() {
21785
21880
  this.tabs = [];
@@ -22822,7 +22917,7 @@ class SidepanelComponent {
22822
22917
  }
22823
22918
  }
22824
22919
  SidepanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SidepanelComponent, deps: [{ token: i3.DatePipe }, { token: UserPreferencesService$1 }, { token: DialogMangmentService }, { token: DynamicFormService }, { token: DocumentsService }, { token: TagsApiService }, { token: TranslationService$1 }, { token: i1$6.MatDialog }, { token: SharedDocsService }], target: i0.ɵɵFactoryTarget.Component });
22825
- SidepanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: SidepanelComponent, selector: "app-sidepanel", inputs: { selectedItem: "selectedItem", menuOpen: "menuOpen", sourcePage: "sourcePage", allowAddAndBlock: "allowAddAndBlock" }, outputs: { onCloseSideMenu: "onCloseSideMenu" }, viewQueries: [{ propertyName: "detailsTemplate", first: true, predicate: ["detailsTemplate"], descendants: true, static: true }, { propertyName: "commentsTemplate", first: true, predicate: ["commentsTemplate"], descendants: true, static: true }, { propertyName: "activityTemplate", first: true, predicate: ["activityTemplate"], descendants: true, static: true }, { propertyName: "permissionsTemplate", first: true, predicate: ["permissionsTemplate"], descendants: true, static: true }, { propertyName: "filesTemplate", first: true, predicate: ["filesTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"side-menu-details\" SetRtl>\r\n <div class=\"h-full\" *ngIf=\"selectedItem && showDetails && !sideMenuLoading\">\r\n <div class=\"\">\r\n <div class=\"mb-3 px-5 py-1 w-100 flex border-b-2 items-center\">\r\n <title-with-icon class=\"-my-1.5\" [context]=\"selectedItem.entity\" [showTitle]=\"false\"></title-with-icon>\r\n\r\n <div class=\"justify-center flex flex-col flex-1 flex-grow-0 w-7/12\" *ngIf=\"!selectedItem.isDirectory\">\r\n <div class=\"text-base text-gray-500 font-bold truncate\"\r\n [title]=\"selectedItem.entity?.properties?.['file:content']?.['name']\"\r\n [alt]=\"selectedItem.entity?.properties?.['file:content']?.['name']\">\r\n {{selectedItem.entity?.properties?.['file:content']?.['name']}}\r\n </div>\r\n <div class=\"text-gray-500 text-sm\">\r\n {{((selectedItem.entity?.properties?.['file:content']?.['length']) / (1024 *\r\n 1024)).toFixed(2) }}\r\n MB\r\n </div>\r\n </div>\r\n <div class=\"\r\n d-flex\r\n items-center\r\n text-base text-gray-500\r\n font-bold\r\n \" *ngIf=\"selectedItem.isDirectory\">\r\n {{ selectedItem?.name }}\r\n </div>\r\n <ng-container *permission=\"{name: 'lockOwnerIfLocked', entity: selectedItem.entity}\">\r\n <mat-icon class=\"text-gray-500 cursor-pointer mx-3\"\r\n *permission=\"{name: 'canUpdate', entity: selectedItem.entity}\"\r\n matTooltip=\"{{ 'FOLDERS.UPDATE_DETAILS' | translate }}\"\r\n (click)=\"openUpdateFromSideMenu()\">edit</mat-icon>\r\n </ng-container>\r\n </div>\r\n <mat-icon class=\"close-icon text-gray-500\" (click)=\"closeDetailsMenu()\"\r\n [matTooltip]=\"'BUTTONS.CLOSE' | translate\">close</mat-icon>\r\n </div>\r\n <div class=\"dynamic-section\">\r\n <div class=\"mx-2 h-full\">\r\n <app-dynamic-tabs [tabs]=\"myTabs\"></app-dynamic-tabs>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"h-full font-bold d-flex justify-center items-center\" *ngIf=\"sideMenuLoading\">\r\n {{ \"loading\" | translate }}\r\n </div>\r\n</div>\r\n\r\n<!-- Comments -->\r\n<ng-template #commentsTemplate>\r\n <div class=\"overflow-auto h-full\">\r\n <app-comments-dashlet [correspondence]=\"sideMenuFileDetails\" [entityId]=\"selectedItem.entity.uid\"\r\n [showaddcomment]=\"true\" [row]=\"false\">\r\n </app-comments-dashlet>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- myLogFile -->\r\n<ng-template #activityTemplate>\r\n <!-- <cts-viewer-log [correspondence]=\"selectedItem.entity\"></cts-viewer-log> -->\r\n <div class=\"h-full mt-3\">\r\n <app-activities-log [documentId]=\"selectedItem.entity.uid\" [documentTitle]=\"selectedItem.entity.title\"\r\n [file]=\"sideMenuFileDetails\"></app-activities-log>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #permissionsTemplate>\r\n <div class=\"h-full overflow-auto px-2 mt-3\">\r\n <app-permissions [sourcePage]=\"sourcePage\"\r\n [allowAddAndBlock]=\"allowAddAndBlock\" [document]=\"sideMenuFileDetails\"\r\n [documentId]=\"selectedItem.entity.uid\"></app-permissions>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Files Tab -->\r\n<ng-template #filesTemplate>\r\n <div class=\"h-full overflow-auto px-2 mt-3\">\r\n <cts-versions [file]=\"selectedItem.entity\"></cts-versions>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Details -->\r\n<ng-template #detailsTemplate>\r\n <div class=\"pb-2 mt-3 h-full px-2 overflow-auto\">\r\n <div class=\"static-data\">\r\n <div class=\"mt-5\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.TITLE_ONLY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"dc:title\"] }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.DESCRIPTION_ONLY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"dc:description\"] }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.CREATED_AT\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{\r\n dynamicFormData[\"dc:created\"]\r\n | localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')\r\n }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.LAST_MODIFIED\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{\r\n dynamicFormData[\"dc:modified\"]\r\n | localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')\r\n }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"super-document-fields\">\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentSubject\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:documentSubject\"] ? dynamicFormData[\"gdoc:documentSubject\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentNumber\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:documentNumber\"] ? dynamicFormData[\"gdoc:documentNumber\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentReferenceNumber\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_REF_NUMBER\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\" dir=\"ltr\">\r\n {{ dynamicFormData[\"gdoc:documentReferenceNumber\"] ?\r\n dynamicFormData[\"gdoc:documentReferenceNumber\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:gDocumentDate\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_DATE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:gDocumentDate\"] ? (dynamicFormData[\"gdoc:gDocumentDate\"] |\r\n localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')) : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='(selectedItem.entity.category && selectedItem.entity.category !== {})'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.CATEGORY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.category && selectedItem.entity.category !== {}) ?\r\n (isArabic ? selectedItem.entity.category.arabicName : selectedItem.entity.category.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\"\r\n *ngIf='(selectedItem.entity.categoryType && selectedItem.entity.categoryType.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.CATEGORY_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.categoryType && selectedItem.entity.categoryType.arabicName) ?\r\n (isArabic ? selectedItem.entity.categoryType.arabicName :\r\n selectedItem.entity.categoryType.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf='(selectedItem.entity.mainTopic && selectedItem.entity.mainTopic.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.MAIN_TOPIC\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.mainTopic && selectedItem.entity.mainTopic.arabicName) ?\r\n (isArabic ? selectedItem.entity.mainTopic.arabicName :\r\n selectedItem.entity.mainTopic.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\"\r\n *ngIf='(selectedItem.entity.documentType && selectedItem.entity.documentType.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.documentType && selectedItem.entity.documentType.arabicName) ?\r\n (isArabic ? selectedItem.entity.documentType.arabicName :\r\n selectedItem.entity.documentType.englishTitle)\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:secrecyLevel\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.SCRECY_LEVEL\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ 'vocabulary.VOC_SecrecyLevel.' + dynamicFormData[\"gdoc:secrecyLevel\"] | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:importance\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.IMPORTANCE_LEVEL\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ 'vocabulary.VOC_Importance.' + dynamicFormData[\"gdoc:importance\"] | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='selectedItem.entity.department'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DEPARTMENT_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ selectedItem.entity.department ?\r\n (isArabic ? selectedItem.entity.department.arabicName :\r\n selectedItem.entity.department.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:departmentCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:departmentCode\"] ? dynamicFormData[\"gdoc:departmentCode\"] : '--'}}\r\n </div>\r\n </div> -->\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:agencyCategoryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.AGENCY_CATEGORY_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:agencyCategoryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:agencyCategoryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:agencyCategoryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:agencyNameCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.AGENCY_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:agencyNameCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:agencyNameCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:agencyNameCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:countryCategoryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.COUNTRY_CATEGORY_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:countryCategoryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:countryCategoryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:countryCategoryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:countryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.COUNTRY_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:countryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:countryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:countryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:remarks\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:remarks\"] ? dynamicFormData[\"gdoc:remarks\"] : '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.BY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm d-flex\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl\">\r\n <app-user [user]=\"dynamicFormData['dc:creator']\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"dynamicFormData['dc:contributors'].length > 0\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.CONTRUBITORS\" | translate }}\r\n </div>\r\n <div class=\"d-flex flex-wrap\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl mb-2\"\r\n *ngFor=\"let user of dynamicFormData['dc:contributors']\">\r\n <app-user [user]=\"user\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"sharedListUser.length > 0\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{\"share.shareWith\" | translate}}\r\n </div>\r\n <div class=\"d-flex flex-wrap\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl mb-2\" *ngFor=\"let user of sharedListUser\">\r\n <app-user [user]=\"user\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5\" *ngIf=\"dynamicForm && dynamicFormData\">\r\n <app-multiple-dynamic-form-viewer [form]=\"dynamicForm\"\r\n [data]=\"dynamicFormData\"></app-multiple-dynamic-form-viewer>\r\n </div>\r\n <div class=\"tags-wrappers relative px-0 py-3\">\r\n <cts-correspondence-tags [correspondence]=\"sideMenuFileDetails\" [customClass]=\"'tags-dms-wrapper'\"\r\n [useParams]=\"true\" [addCustomApiName]=\"'Services.TagDocument'\"\r\n [deleteCustomApiName]=\"'Services.UntagDocument'\">\r\n </cts-correspondence-tags>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [""], components: [{ type: i2$4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DynamicTabsComponent, selector: "app-dynamic-tabs", inputs: ["tabs", "selectedIndex"] }, { type: CommentsDashletComponent, selector: "app-comments-dashlet", inputs: ["entityId", "correspondence", "row", "showaddcomment", "showCommentActions"] }, { type: ActivitiesLogComponent, selector: "app-activities-log", inputs: ["documentId", "file", "documentTitle"], outputs: ["success"] }, { type: PermissionsComponent, selector: "app-permissions", inputs: ["documentId", "document", "allowAddAndBlock", "sourcePage"] }, { type: VersionsComponent, selector: "cts-versions", inputs: ["selectedVersion", "file", "actions"], outputs: ["handleActions"] }, { type: UserComponent, selector: "app-user", inputs: ["user", "type"] }, { type: MultipleDynamicFormViewerComponent, selector: "app-multiple-dynamic-form-viewer", inputs: ["form", "data"] }, { type: CorrespondenceTagsComponent, selector: "cts-correspondence-tags", inputs: ["correspondence", "customClass", "addCustomApiName", "deleteCustomApiName", "useParams", "accordionMode", "systemTags", "accordionOpen", "title"] }], directives: [{ type: SetRtlDirective, selector: "[SetRtl]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i3$3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "localizedDate": LocalizedDatePipe }, encapsulation: i0.ViewEncapsulation.None });
22920
+ SidepanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: SidepanelComponent, selector: "app-sidepanel", inputs: { selectedItem: "selectedItem", menuOpen: "menuOpen", sourcePage: "sourcePage", allowAddAndBlock: "allowAddAndBlock" }, outputs: { onCloseSideMenu: "onCloseSideMenu" }, viewQueries: [{ propertyName: "detailsTemplate", first: true, predicate: ["detailsTemplate"], descendants: true, static: true }, { propertyName: "commentsTemplate", first: true, predicate: ["commentsTemplate"], descendants: true, static: true }, { propertyName: "activityTemplate", first: true, predicate: ["activityTemplate"], descendants: true, static: true }, { propertyName: "permissionsTemplate", first: true, predicate: ["permissionsTemplate"], descendants: true, static: true }, { propertyName: "filesTemplate", first: true, predicate: ["filesTemplate"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"side-menu-details\" SetRtl>\r\n <div class=\"h-full\" *ngIf=\"selectedItem && showDetails && !sideMenuLoading\">\r\n <div class=\"\">\r\n <div class=\"mb-3 px-5 py-1 w-100 flex border-b-2 items-center\">\r\n <!-- <title-with-icon class=\"-my-1.5\" [context]=\"selectedItem.entity\" [showTitle]=\"false\"></title-with-icon> -->\r\n <app-display-suitable-icon [data]=\"selectedItem\" [size]=\"'40px'\"></app-display-suitable-icon>\r\n\r\n <div class=\"justify-center flex flex-col flex-1 flex-grow-0 w-7/12\" *ngIf=\"!selectedItem.isDirectory\">\r\n <div class=\"text-base text-gray-500 font-bold truncate\"\r\n [title]=\"selectedItem.entity?.properties?.['file:content']?.['name']\"\r\n [alt]=\"selectedItem.entity?.properties?.['file:content']?.['name']\">\r\n {{selectedItem.entity?.properties?.['file:content']?.['name']}}\r\n </div>\r\n <div class=\"text-gray-500 text-sm\">\r\n {{((selectedItem.entity?.properties?.['file:content']?.['length']) / (1024 *\r\n 1024)).toFixed(2) }}\r\n MB\r\n </div>\r\n </div>\r\n <div class=\"\r\n d-flex\r\n items-center\r\n text-base text-gray-500\r\n font-bold\r\n \" *ngIf=\"selectedItem.isDirectory\">\r\n {{ selectedItem?.name }}\r\n </div>\r\n <ng-container *permission=\"{name: 'lockOwnerIfLocked', entity: selectedItem.entity}\">\r\n <mat-icon class=\"text-gray-500 cursor-pointer mx-3\"\r\n *permission=\"{name: 'canUpdate', entity: selectedItem.entity}\"\r\n matTooltip=\"{{ 'FOLDERS.UPDATE_DETAILS' | translate }}\"\r\n (click)=\"openUpdateFromSideMenu()\">edit</mat-icon>\r\n </ng-container>\r\n </div>\r\n <mat-icon class=\"close-icon text-gray-500\" (click)=\"closeDetailsMenu()\"\r\n [matTooltip]=\"'BUTTONS.CLOSE' | translate\">close</mat-icon>\r\n </div>\r\n <div class=\"dynamic-section\">\r\n <div class=\"mx-2 h-full\">\r\n <app-dynamic-tabs [tabs]=\"myTabs\"></app-dynamic-tabs>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"h-full font-bold d-flex justify-center items-center\" *ngIf=\"sideMenuLoading\">\r\n {{ \"loading\" | translate }}\r\n </div>\r\n</div>\r\n\r\n<!-- Comments -->\r\n<ng-template #commentsTemplate>\r\n <div class=\"overflow-auto h-full\">\r\n <app-comments-dashlet [correspondence]=\"sideMenuFileDetails\" [entityId]=\"selectedItem.entity.uid\"\r\n [showaddcomment]=\"true\" [row]=\"false\">\r\n </app-comments-dashlet>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- myLogFile -->\r\n<ng-template #activityTemplate>\r\n <!-- <cts-viewer-log [correspondence]=\"selectedItem.entity\"></cts-viewer-log> -->\r\n <div class=\"h-full mt-3\">\r\n <app-activities-log [documentId]=\"selectedItem.entity.uid\" [documentTitle]=\"selectedItem.entity.title\"\r\n [file]=\"sideMenuFileDetails\"></app-activities-log>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #permissionsTemplate>\r\n <div class=\"h-full overflow-auto px-2 mt-3\">\r\n <app-permissions [sourcePage]=\"sourcePage\"\r\n [allowAddAndBlock]=\"allowAddAndBlock\" [document]=\"sideMenuFileDetails\"\r\n [documentId]=\"selectedItem.entity.uid\"></app-permissions>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Files Tab -->\r\n<ng-template #filesTemplate>\r\n <div class=\"h-full overflow-auto px-2 mt-3\">\r\n <cts-versions [file]=\"selectedItem.entity\"></cts-versions>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Details -->\r\n<ng-template #detailsTemplate>\r\n <div class=\"pb-2 mt-3 h-full px-2 overflow-auto\">\r\n <div class=\"static-data\">\r\n <div class=\"mt-5\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.TITLE_ONLY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"dc:title\"] }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.DESCRIPTION_ONLY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"dc:description\"] }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.CREATED_AT\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{\r\n dynamicFormData[\"dc:created\"]\r\n | localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')\r\n }}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.LAST_MODIFIED\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{\r\n dynamicFormData[\"dc:modified\"]\r\n | localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')\r\n }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"super-document-fields\">\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentSubject\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:documentSubject\"] ? dynamicFormData[\"gdoc:documentSubject\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentNumber\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:documentNumber\"] ? dynamicFormData[\"gdoc:documentNumber\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:documentReferenceNumber\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_REF_NUMBER\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\" dir=\"ltr\">\r\n {{ dynamicFormData[\"gdoc:documentReferenceNumber\"] ?\r\n dynamicFormData[\"gdoc:documentReferenceNumber\"] : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:gDocumentDate\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_DATE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:gDocumentDate\"] ? (dynamicFormData[\"gdoc:gDocumentDate\"] |\r\n localizedDate: \"dd MMMM yyyy\":(isArabic? 'ar-AR' : 'en-US')) : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='(selectedItem.entity.category && selectedItem.entity.category !== {})'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.CATEGORY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.category && selectedItem.entity.category !== {}) ?\r\n (isArabic ? selectedItem.entity.category.arabicName : selectedItem.entity.category.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\"\r\n *ngIf='(selectedItem.entity.categoryType && selectedItem.entity.categoryType.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.CATEGORY_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.categoryType && selectedItem.entity.categoryType.arabicName) ?\r\n (isArabic ? selectedItem.entity.categoryType.arabicName :\r\n selectedItem.entity.categoryType.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf='(selectedItem.entity.mainTopic && selectedItem.entity.mainTopic.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.MAIN_TOPIC\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.mainTopic && selectedItem.entity.mainTopic.arabicName) ?\r\n (isArabic ? selectedItem.entity.mainTopic.arabicName :\r\n selectedItem.entity.mainTopic.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\"\r\n *ngIf='(selectedItem.entity.documentType && selectedItem.entity.documentType.arabicName)'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DOCUMENT_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ (selectedItem.entity.documentType && selectedItem.entity.documentType.arabicName) ?\r\n (isArabic ? selectedItem.entity.documentType.arabicName :\r\n selectedItem.entity.documentType.englishTitle)\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:secrecyLevel\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.SCRECY_LEVEL\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ 'vocabulary.VOC_SecrecyLevel.' + dynamicFormData[\"gdoc:secrecyLevel\"] | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:importance\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.IMPORTANCE_LEVEL\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ 'vocabulary.VOC_Importance.' + dynamicFormData[\"gdoc:importance\"] | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='selectedItem.entity.department'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DEPARTMENT_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ selectedItem.entity.department ?\r\n (isArabic ? selectedItem.entity.department.arabicName :\r\n selectedItem.entity.department.englishName)\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <!-- <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:departmentCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:departmentCode\"] ? dynamicFormData[\"gdoc:departmentCode\"] : '--'}}\r\n </div>\r\n </div> -->\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:agencyCategoryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.AGENCY_CATEGORY_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:agencyCategoryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:agencyCategoryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:agencyCategoryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:agencyNameCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.AGENCY_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:agencyNameCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:agencyNameCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:agencyNameCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:countryCategoryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.COUNTRY_CATEGORY_CODE\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:countryCategoryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:countryCategoryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:countryCategoryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:countryCode\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.COUNTRY_NAME\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:countryCode\"] ?\r\n (isArabic ? dynamicFormData[\"gdoc:countryCode\"]['properties']['label_ar']\r\n : dynamicFormData[\"gdoc:countryCode\"]['properties']['label_en'])\r\n : '--'}}\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf='dynamicFormData[\"gdoc:remarks\"]'>\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm\">\r\n {{ dynamicFormData[\"gdoc:remarks\"] ? dynamicFormData[\"gdoc:remarks\"] : '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-3\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.BY\" | translate }}\r\n </div>\r\n <div class=\"text-gray-900 text-sm d-flex\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl\">\r\n <app-user [user]=\"dynamicFormData['dc:creator']\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"dynamicFormData['dc:contributors'].length > 0\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{ \"FOLDERS.CONTRUBITORS\" | translate }}\r\n </div>\r\n <div class=\"d-flex flex-wrap\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl mb-2\"\r\n *ngFor=\"let user of dynamicFormData['dc:contributors']\">\r\n <app-user [user]=\"user\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"sharedListUser.length > 0\">\r\n <div class=\"text-gray-500 font-bold text-base\">\r\n {{\"share.shareWith\" | translate}}\r\n </div>\r\n <div class=\"d-flex flex-wrap\">\r\n <div class=\"d-flex items-center bg-gray-100 rounded-xl mb-2\" *ngFor=\"let user of sharedListUser\">\r\n <app-user [user]=\"user\"></app-user>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-5\" *ngIf=\"dynamicForm && dynamicFormData\">\r\n <app-multiple-dynamic-form-viewer [form]=\"dynamicForm\"\r\n [data]=\"dynamicFormData\"></app-multiple-dynamic-form-viewer>\r\n </div>\r\n <div class=\"tags-wrappers relative px-0 py-3\">\r\n <cts-correspondence-tags [correspondence]=\"sideMenuFileDetails\" [customClass]=\"'tags-dms-wrapper'\"\r\n [useParams]=\"true\" [addCustomApiName]=\"'Services.TagDocument'\"\r\n [deleteCustomApiName]=\"'Services.UntagDocument'\">\r\n </cts-correspondence-tags>\r\n </div>\r\n </div>\r\n</ng-template>", styles: [""], components: [{ type: DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: ["data", "size", "dataType", "archive"] }, { type: i2$4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: DynamicTabsComponent, selector: "app-dynamic-tabs", inputs: ["tabs", "selectedIndex"] }, { type: CommentsDashletComponent, selector: "app-comments-dashlet", inputs: ["entityId", "correspondence", "row", "showaddcomment", "showCommentActions"] }, { type: ActivitiesLogComponent, selector: "app-activities-log", inputs: ["documentId", "file", "documentTitle"], outputs: ["success"] }, { type: PermissionsComponent, selector: "app-permissions", inputs: ["documentId", "document", "allowAddAndBlock", "sourcePage"] }, { type: VersionsComponent, selector: "cts-versions", inputs: ["selectedVersion", "file", "actions"], outputs: ["handleActions"] }, { type: UserComponent, selector: "app-user", inputs: ["user", "type"] }, { type: MultipleDynamicFormViewerComponent, selector: "app-multiple-dynamic-form-viewer", inputs: ["form", "data"] }, { type: CorrespondenceTagsComponent, selector: "cts-correspondence-tags", inputs: ["correspondence", "customClass", "addCustomApiName", "deleteCustomApiName", "useParams", "accordionMode", "systemTags", "accordionOpen", "title"] }], directives: [{ type: SetRtlDirective, selector: "[SetRtl]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i3$3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "localizedDate": LocalizedDatePipe }, encapsulation: i0.ViewEncapsulation.None });
22826
22921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: SidepanelComponent, decorators: [{
22827
22922
  type: Component,
22828
22923
  args: [{
@@ -23745,47 +23840,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
23745
23840
  args: ['environment']
23746
23841
  }] }, { type: NuxeoService$1 }, { type: DialogMangmentService }, { type: GlobalPdfTron }]; } });
23747
23842
 
23748
- class DisplaySuitableIconComponent {
23749
- constructor(iconService) {
23750
- this.iconService = iconService;
23751
- this.dataType = 'document';
23752
- this.archive = false;
23753
- }
23754
- ngOnInit() {
23755
- this.image = this.getFileIcon(this.data);
23756
- }
23757
- getFileIcon(document) {
23758
- if (!this.archive)
23759
- return this.iconService.getFileIcon(document, this.dataType);
23760
- else
23761
- return this.iconService.getArchivedDocumentIcon(document, this.dataType);
23762
- }
23763
- // used to recalculate icon when sorting in table ( when sorting component not rendered again so onint won't excuted )
23764
- ngOnChanges() {
23765
- this.image = this.getFileIcon(this.data);
23766
- }
23767
- }
23768
- DisplaySuitableIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DisplaySuitableIconComponent, deps: [{ token: IconService }], target: i0.ɵɵFactoryTarget.Component });
23769
- DisplaySuitableIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: { data: "data", size: "size", dataType: "dataType", archive: "archive" }, usesOnChanges: true, ngImport: i0, template: "<!-- <div *ngIf=\" data.type == 'Folder';else notFolder\">\r\n <div [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"'assets/drive-icons/folder.png'\" />\r\n </div>\r\n</div>\r\n<ng-template #notFolder>\r\n <div *ngIf=\"!data.properties.file; else file\">\r\n <img class=\"w-full\" [src]=\"'assets/drive-icons/generic.png'\" />\r\n </div>\r\n <ng-template #file>\r\n <div *ngIf=\"data.properties.file['mime-type'].includes('image');else noImage\" [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"data.contextParameters.thumbnail.url | secure | async\" />\r\n <ng-template #noImage>\r\n <mat-icon svgIcon=\"iconsmind:photo\" class=\"icon-size-6\"></mat-icon>\r\n </ng-template> \r\n </div>\r\n <div *ngIf=\" data.properties.file['mime-type'].includes('video');else noVideo\" [style.width]=\"size\">\r\n <figure class=\"hover-video w-full\">\r\n <img class=\"w-full\" [src]=\"data.contextParameters.thumbnail.url | secure | async\" />\r\n <figcaption>\r\n <mat-icon svgIcon=\"iconsmind:play_music\" class=\"icon-size-4\"></mat-icon>\r\n </figcaption>\r\n </figure>\r\n <ng-template #noVideo>\r\n <mat-icon svgIcon=\"iconsmind:video_2\" class=\"icon-size-6\"></mat-icon>\r\n </ng-template> \r\n </div>\r\n <div *ngIf=\" data.properties.file['mime-type'].includes('application')\">\r\n <mat-icon svgIcon=\"iconsmind:file\" class=\"icon-size-6\"></mat-icon>\r\n </div>\r\n </ng-template>\r\n</ng-template> -->\r\n\r\n\r\n<div [style.width]=\"size\">\r\n <img class=\"w-full\" [src]=\"image\" />\r\n</div>", styles: [".hover-video{display:inline-block;margin:8px;max-width:100%;min-width:100%;overflow:hidden;position:relative;text-align:center}.hover-video *{box-sizing:border-box;transition:all .45s ease}.hover-video:before,.hover-video:after{position:absolute;top:0;bottom:0;left:0;right:0;content:\"\";transition:all .3s ease;z-index:1;opacity:0;transform:scaleY(2)}.hover-video video{vertical-align:top;max-width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden}.hover-video figcaption{position:absolute;top:0;bottom:0;left:0;right:0;align-items:center;z-index:1;display:flex;flex-direction:column;justify-content:center;line-height:1.1em;opacity:0;z-index:2;transition-delay:.1s;font-size:24px;font-family:sans-serif;font-weight:400;letter-spacing:1px;text-transform:uppercase}.hover-video{transform:scale(1);opacity:1}.hover-video>video{opacity:.7}.hover-video figcaption{opacity:1}.hover-video:hover figcaption:hover{opacity:.5;background-color:#eaecee}\n"] });
23770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: DisplaySuitableIconComponent, decorators: [{
23771
- type: Component,
23772
- args: [{
23773
- selector: 'app-display-suitable-icon',
23774
- templateUrl: './display-suitable-icon.component.html',
23775
- styleUrls: ['./display-suitable-icon.component.scss']
23776
- }]
23777
- }], ctorParameters: function () { return [{ type: IconService }]; }, propDecorators: { data: [{
23778
- type: Input,
23779
- args: ['data']
23780
- }], size: [{
23781
- type: Input,
23782
- args: ['size']
23783
- }], dataType: [{
23784
- type: Input
23785
- }], archive: [{
23786
- type: Input
23787
- }] } });
23788
-
23789
23843
  class AttachmentItemComponent {
23790
23844
  constructor(translationService) {
23791
23845
  this.translationService = translationService;
@@ -25094,7 +25148,7 @@ class ScanModalComponent {
25094
25148
  }
25095
25149
  }
25096
25150
  ScanModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanModalComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$6.MatDialogRef }, { token: UploadManagmentService }, { token: DialogMangmentService }, { token: FileManagerService }, { token: CustomToastrService }, { token: i6.FormBuilder }, { token: DynamicFormService }, { token: DateHelperService }, { token: AdapterService }, { token: TranslationService$1 }, { token: NuxeoService$1 }, { token: UserService }, { token: AppConfigService }, { token: 'environment' }, { token: DocumentScanService }], target: i0.ɵɵFactoryTarget.Component });
25097
- ScanModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ScanModalComponent, selector: "app-scan-modal", ngImport: i0, template: "<div class=\"scanner-modal-body relative h-full\">\r\n <!-- -->\r\n <!-- tabs -->\r\n <div\r\n class=\"scanner-tabs d-flex justify-around items-center border-b-2 border-gray-200 mb-5 text-gray-900 text-lg\"\r\n >\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('scan')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'scan' }\"\r\n >\r\n {{\"CREATE.SCAN\" | translate}}\r\n </div>\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('form')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'form' }\"\r\n >\r\n {{\"CREATE.DETAILS\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"tabs-body-wrapper\">\r\n <!-- uploader indicator loading -->\r\n <div\r\n class=\"upload-loader mx-2\"\r\n *ngIf=\"uploadMangmentService.uploadedFilesStatus.uploadInProgress\"\r\n >\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- scanner -->\r\n <div class=\"\" [ngClass]=\"{ 'd-none': activeTab === 'form' }\">\r\n <app-document-scan\r\n [hideUploadButton]=\"true\"\r\n [useStoredFile]=\"true\"\r\n ></app-document-scan>\r\n </div>\r\n\r\n <!-- forms and properties -->\r\n <div\r\n class=\"forms-section\"\r\n [ngClass]=\"{ 'd-none': activeTab === 'scan' }\"\r\n >\r\n <div class=\"w-2/3\">\r\n <div class=\"mb-5\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.FILE_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-base text-gray-900\">\r\n {{ isArabic ? fileType.arabicText : fileType.englishText }}\r\n </div>\r\n </div>\r\n <div class=\"file-fields mt-3\" SetRtl>\r\n <form [formGroup]=\"fileForm\" *ngIf=\"fileForm\">\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.TITLE\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"title\"\r\n placeholder=\" {{ 'CREATE.TITLE' | translate }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DESCRIPTION\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"description\"\r\n placeholder=\" {{\r\n 'CREATE.DESCRIPTION' | translate\r\n }}\"\r\n />\r\n </div>\r\n\r\n <!------------------ new statis form ---------------------------->\r\n <div *ngIf=\"usingExtraFields\">\r\n \r\n <app-dynamic-fields-renderer [form]=\"fileForm\" [agencyNameFilter]=\"agencyNameFilter\" [countryNameFilter]=\"countryNameFilter\"></app-dynamic-fields-renderer>\r\n\r\n <!-- <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"subject\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_SUBJECT' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"documentNumber\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_NUMBER' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <cts-dynamic-form-hijri-dateitem\r\n formControlName=\"gdocumentDate\"\r\n label=\"CREATE.DOCUMENT_DATE\"\r\n >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.SCRECY_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_SecrecyLevel'\"\r\n formControlName=\"secrecyLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.IMPORTANCE_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_Importance'\"\r\n formControlName=\"importanceLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <app-dynamic-form-department\r\n formControlName=\"departmentCode\"\r\n [placeholder]=\"'please select department'\"\r\n [pp_departmentNestedTree]=\"\r\n 'PP_OS_Departments'\r\n \"\r\n [pp_departmentTree]=\"'PP_OS_Departments'\"\r\n [customPrefix]=\"'osdept'\"\r\n [customParentProperty]=\"\r\n 'osdepartment_parentDepartmentCode'\r\n \"\r\n [useCustomAddEditAction]=\"true\"\r\n >\r\n </app-dynamic-form-department>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyCategoryCode\"\r\n [vocbularyId]=\"'VOC_AgencyCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyName\"\r\n [vocbularyId]=\"'VOC_Agency'\"\r\n [filter]=\"agencyNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryCategoryCode\"\r\n [vocbularyId]=\"'VOC_CountryCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryName\"\r\n [vocbularyId]=\"'VOC_Country'\"\r\n [filter]=\"countryNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"remarks\"\r\n placeholder=\" {{\r\n 'CREATE.REMARKS' | translate\r\n }}\"\r\n />\r\n </div> -->\r\n </div>\r\n\r\n <!-- ----------------------------------------------------------- -->\r\n </form>\r\n <!-- *ngIf=\"\" -->\r\n <div\r\n class=\"dynamic-part -mx-4\"\r\n *ngIf=\"selectedFile.dynamicForm && showRenderer\"\r\n >\r\n <app-dynamic-form\r\n [form]=\"selectedFile.dynamicForm\"\r\n [data]=\"temporaryDyanmicData\"\r\n (change)=\"ondynamicFormChange($event)\"\r\n ></app-dynamic-form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- actions and buttons -->\r\n <div\r\n class=\"w-full d-flex justify-between scanner-actions-wrapper absolute bottom-0\"\r\n >\r\n <div class=\"flex\">\r\n <button class=\"cancelation-button\" (click)=\"closeDialog()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n <button class=\"cancelation-button mx-2\" (click)=\"minimizDialog()\">\r\n {{ \"BUTTONS.MINIMIZED\" | translate }}\r\n </button>\r\n </div>\r\n\r\n <!-- -->\r\n <div class=\"d-flex\">\r\n <!-- <button\r\n *ngIf=\"creationFailed\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n (click)=\"createDocument()\"\r\n class=\"submission-button\"\r\n >\r\n {{ \"BUTTONS.TRY_AGAIN\" | translate }}\r\n </button> -->\r\n <button\r\n (click)=\"createDocument()\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n class=\"submission-button\"\r\n >\r\n {{ uploadMangmentService.scanCreationFailed ? (\"BUTTONS.TRY_AGAIN\" | translate) : (\"BUTTONS.CREATE\" | translate) }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".forms-section{display:flex;justify-content:center}.tabs-body-wrapper{height:calc(100% - 125px);overflow-y:auto;overflow-x:hidden}\n"], components: [{ type: ScanComponent, selector: "app-document-scan", inputs: ["useStoredFile", "hideUploadButton"], outputs: ["file"] }, { type: DynamicFieldsRendererComponent, selector: "app-dynamic-fields-renderer", inputs: ["form", "agencyNameFilter", "countryNameFilter", "fields"] }, { type: DynamicFormComponent, selector: "app-dynamic-form", inputs: ["form", "data", "readOnly"], outputs: ["change"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SetRtlDirective, selector: "[SetRtl]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i1$1.TranslatePipe } });
25151
+ ScanModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ScanModalComponent, selector: "app-scan-modal", ngImport: i0, template: "<div class=\"scanner-modal-body relative h-full\">\r\n <!-- -->\r\n <!-- tabs -->\r\n <div\r\n class=\"scanner-tabs d-flex justify-around items-center border-b-2 border-gray-200 mb-5 text-gray-900 text-lg\"\r\n >\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('scan')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'scan' }\"\r\n >\r\n {{\"CREATE.SCAN\" | translate}}\r\n </div>\r\n <div\r\n class=\"scanner-single-tab cursor-pointer w-1/2 text-center py-2 border-gray-900 hover:bg-gray-100\"\r\n (click)=\"changTabTo('form')\"\r\n [ngClass]=\"{ 'font-bold border-b-4': activeTab === 'form' }\"\r\n >\r\n {{\"CREATE.DETAILS\" | translate}}\r\n </div>\r\n </div>\r\n <div class=\"tabs-body-wrapper\">\r\n <!-- uploader indicator loading -->\r\n <div\r\n class=\"upload-loader mx-2\"\r\n *ngIf=\"uploadMangmentService.uploadedFilesStatus.uploadInProgress\"\r\n >\r\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n </div>\r\n\r\n <!-- scanner -->\r\n <div class=\"\" [ngClass]=\"{ 'd-none': activeTab === 'form' }\">\r\n <app-document-scan\r\n [hideUploadButton]=\"true\"\r\n [useStoredFile]=\"true\"\r\n ></app-document-scan>\r\n </div>\r\n\r\n <!-- forms and properties -->\r\n <div\r\n class=\"forms-section\"\r\n [ngClass]=\"{ 'd-none': activeTab === 'scan' }\"\r\n >\r\n <div class=\"w-2/3\">\r\n <div class=\"mb-5\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.FILE_TYPE\" | translate }}\r\n </div>\r\n <div class=\"text-base text-gray-900\">\r\n {{ isArabic ? fileType.arabicText : fileType.englishText }}\r\n </div>\r\n </div>\r\n <div class=\"file-fields mt-3\" SetRtl>\r\n <form [formGroup]=\"fileForm\" *ngIf=\"fileForm\">\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.TITLE\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"title\"\r\n placeholder=\" {{ 'CREATE.TITLE' | translate }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DESCRIPTION\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"description\"\r\n placeholder=\" {{\r\n 'CREATE.DESCRIPTION' | translate\r\n }}\"\r\n />\r\n </div>\r\n\r\n <!------------------ new statis form ---------------------------->\r\n <div *ngIf=\"usingExtraFields\">\r\n \r\n <app-dynamic-fields-renderer [form]=\"fileForm\" [agencyNameFilter]=\"agencyNameFilter\" [countryNameFilter]=\"countryNameFilter\"></app-dynamic-fields-renderer>\r\n\r\n <!-- <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_SUBJECT\" | translate\r\n }}<span class=\"text-red-500\">*</span>\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"subject\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_SUBJECT' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DOCUMENT_NUMBER\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"documentNumber\"\r\n placeholder=\" {{\r\n 'CREATE.DOCUMENT_NUMBER' | translate\r\n }}\"\r\n />\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <cts-dynamic-form-hijri-dateitem\r\n formControlName=\"gdocumentDate\"\r\n label=\"CREATE.DOCUMENT_DATE\"\r\n >\r\n </cts-dynamic-form-hijri-dateitem>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.SCRECY_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_SecrecyLevel'\"\r\n formControlName=\"secrecyLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n <div class=\"single-field mb-3\">\r\n <app-dynamic-form-vocabulary-item\r\n [label]=\"'CREATE.IMPORTANCE_LEVEL'\"\r\n [bindLabel]=\"'label'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n [vocabularyType]=\"'VOC_Importance'\"\r\n formControlName=\"importanceLevel\"\r\n >\r\n </app-dynamic-form-vocabulary-item>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.DEPARTMENT_CODE\" | translate }}\r\n </div>\r\n <app-dynamic-form-department\r\n formControlName=\"departmentCode\"\r\n [placeholder]=\"'please select department'\"\r\n [pp_departmentNestedTree]=\"\r\n 'PP_OS_Departments'\r\n \"\r\n [pp_departmentTree]=\"'PP_OS_Departments'\"\r\n [customPrefix]=\"'osdept'\"\r\n [customParentProperty]=\"\r\n 'osdepartment_parentDepartmentCode'\r\n \"\r\n [useCustomAddEditAction]=\"true\"\r\n >\r\n </app-dynamic-form-department>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyCategoryCode\"\r\n [vocbularyId]=\"'VOC_AgencyCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.AGENCY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"agencyName\"\r\n [vocbularyId]=\"'VOC_Agency'\"\r\n [filter]=\"agencyNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_CATEGORY_CODE'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryCategoryCode\"\r\n [vocbularyId]=\"'VOC_CountryCategory'\"\r\n [useFilter]=\"false\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <app-translated-vocabulary-select\r\n [label]=\"'CREATE.COUNTRY_NAME'\"\r\n [arbBindLabel]=\"'label_ar'\"\r\n [engBindLabel]=\"'label_en'\"\r\n [bindValue]=\"'id'\"\r\n placeholder=\"{{\r\n 'VOCABULARY.SELECT_ITEM' | translate\r\n }}\"\r\n [multiple]=\"false\"\r\n [searchable]=\"true\"\r\n [closeOnSelect]=\"true\"\r\n [hideSelectedItems]=\"false\"\r\n formControlName=\"countryName\"\r\n [vocbularyId]=\"'VOC_Country'\"\r\n [filter]=\"countryNameFilter\"\r\n [useFilter]=\"true\"\r\n >\r\n </app-translated-vocabulary-select>\r\n </div>\r\n\r\n <div class=\"single-field mb-3\">\r\n <div class=\"label-style\">\r\n {{ \"CREATE.REMARKS\" | translate }}\r\n </div>\r\n <input\r\n class=\"field-style\"\r\n formControlName=\"remarks\"\r\n placeholder=\" {{\r\n 'CREATE.REMARKS' | translate\r\n }}\"\r\n />\r\n </div> -->\r\n </div>\r\n\r\n <!-- ----------------------------------------------------------- -->\r\n </form>\r\n <!-- *ngIf=\"\" -->\r\n <div\r\n class=\"dynamic-part -mx-4\"\r\n *ngIf=\"selectedFile.dynamicForm && showRenderer\"\r\n >\r\n <app-dynamic-form\r\n [form]=\"selectedFile.dynamicForm\"\r\n [data]=\"temporaryDyanmicData\"\r\n (change)=\"ondynamicFormChange($event)\"\r\n ></app-dynamic-form>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- actions and buttons -->\r\n <div\r\n class=\"w-full d-flex justify-between scanner-actions-wrapper absolute bottom-0\"\r\n >\r\n <div class=\"flex\">\r\n <button class=\"cancelation-button\" (click)=\"closeDialog()\">\r\n {{ \"BUTTONS.CANCEL\" | translate }}\r\n </button>\r\n <button class=\"cancelation-button mx-2\" (click)=\"minimizDialog()\">\r\n {{ \"BUTTONS.MINIMIZED\" | translate }}\r\n </button>\r\n </div>\r\n\r\n <!-- -->\r\n <div class=\"d-flex\">\r\n <!-- <button\r\n *ngIf=\"creationFailed\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n (click)=\"createDocument()\"\r\n class=\"submission-button\"\r\n >\r\n {{ \"BUTTONS.TRY_AGAIN\" | translate }}\r\n </button> -->\r\n <button\r\n (click)=\"createDocument()\"\r\n [disabled]=\"\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n \"\r\n [ngClass]=\"{\r\n 'opacity-30 cursor-not-allowed':\r\n scannerUploadButton.disabled ||\r\n !selectedFile.dynamicData.valid ||\r\n fileForm.invalid\r\n }\"\r\n class=\"submission-button\"\r\n >\r\n {{ uploadMangmentService.scanCreationFailed ? (\"BUTTONS.TRY_AGAIN\" | translate) : (\"BUTTONS.CREATE\" | translate) }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".forms-section{display:flex;justify-content:center}.tabs-body-wrapper{height:calc(100% - 125px);overflow-y:auto;overflow-x:hidden}\n"], components: [{ type: i4$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: ScanComponent, selector: "app-document-scan", inputs: ["useStoredFile", "hideUploadButton"], outputs: ["file"] }, { type: DynamicFieldsRendererComponent, selector: "app-dynamic-fields-renderer", inputs: ["form", "agencyNameFilter", "countryNameFilter", "fields"] }, { type: DynamicFormComponent, selector: "app-dynamic-form", inputs: ["form", "data", "readOnly"], outputs: ["change"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: SetRtlDirective, selector: "[SetRtl]" }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i1$1.TranslatePipe } });
25098
25152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ScanModalComponent, decorators: [{
25099
25153
  type: Component,
25100
25154
  args: [{
@@ -25517,6 +25571,256 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
25517
25571
  }]
25518
25572
  }] });
25519
25573
 
25574
+ class ClipboardComponent {
25575
+ constructor(fileManagerService, userService, customToastrService, userPreferenceService) {
25576
+ this.fileManagerService = fileManagerService;
25577
+ this.userService = userService;
25578
+ this.customToastrService = customToastrService;
25579
+ this.userPreferenceService = userPreferenceService;
25580
+ this.onClipboardClose = new EventEmitter();
25581
+ this.onRefreshFolderTree = new EventEmitter();
25582
+ this.clipboardItems = []; // array of id to items in clipboard
25583
+ this.preventedGroups = [];
25584
+ this.clipboardDocments = []; // array of documents with full details of items in clipboard
25585
+ this.enableCopy = false;
25586
+ this.enableMove = false;
25587
+ this.clipboardLoading = false;
25588
+ this.documentSelectedInClipboard = [];
25589
+ }
25590
+ ngOnInit() {
25591
+ this.refreshClipSubscription = this.fileManagerService.onRefreshClipboard.subscribe(res => {
25592
+ this.openClipboard();
25593
+ });
25594
+ this.openClipboard();
25595
+ }
25596
+ ngOnDestroy() {
25597
+ this.refreshClipSubscription ? this.refreshClipSubscription.unsubscribe() : null;
25598
+ }
25599
+ closeClipboard() {
25600
+ this.onClipboardClose.emit();
25601
+ this.clipboardDocments = [];
25602
+ }
25603
+ openClipboard() {
25604
+ this.enableCopy = false;
25605
+ this.enableMove = false;
25606
+ this.clipboardLoading = true;
25607
+ if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
25608
+ // get accepted childerns for my current folder
25609
+ // if (this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid]) {
25610
+ // this.myTargetFolderAcceptedChildrens = this.subtypesService.storedSubtypes[this.myCurrecntFolderData.entity.uid];
25611
+ // } else {
25612
+ this.fileManagerService.getClipboardAcceptedTypes(this.myCurrecntFolderData.entity.uid).subscribe(res => {
25613
+ this.myTargetFolderAcceptedChildrens = res;
25614
+ }, error => {
25615
+ this.clipboardLoading = false;
25616
+ this.clipboardDocments = [];
25617
+ });
25618
+ // }
25619
+ }
25620
+ if (this.clipboardItems.length > 0) {
25621
+ this.fileManagerService.getClipboardDocuments(this.clipboardItems).subscribe(res => {
25622
+ res.map(document => {
25623
+ document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canCopy);
25624
+ document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && this.checkIfNotTheSameParent(document) && document.canMove);
25625
+ });
25626
+ this.clipboardDocments = res;
25627
+ console.log(this.clipboardDocments);
25628
+ this.clipboardLoading = false;
25629
+ });
25630
+ }
25631
+ else {
25632
+ this.clipboardDocments = [];
25633
+ this.clipboardLoading = false;
25634
+ }
25635
+ }
25636
+ // prevent copying or moving the file to its same place since it is prevented
25637
+ // prevent copying or moving the folder inside it self
25638
+ checkIfNotTheSameParent(document) {
25639
+ // let directory = this.getCurrentDirectory();
25640
+ if (document.parentRef !== this.directory.dataItem.id && document.uid !== this.directory.dataItem.id) {
25641
+ return true;
25642
+ }
25643
+ else {
25644
+ return false;
25645
+ }
25646
+ }
25647
+ deletefromClipboard(document) {
25648
+ let myindex = -1;
25649
+ this.clipboardItems.map((id, index) => {
25650
+ if (document.uid === id) {
25651
+ myindex = index;
25652
+ }
25653
+ });
25654
+ this.clipboardItems.splice(myindex, 1);
25655
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', "TOASTER.removed_from_clipboard");
25656
+ // let directory = this.getCurrentDirectory();
25657
+ // let id =
25658
+ // directory.dataItem === undefined
25659
+ // ? this.mainFolder
25660
+ // : this.getCurrentFolderId(directory);
25661
+ // this.reinitializeFolderTree(id, directory);
25662
+ this.onRefreshFolderTree.emit();
25663
+ this.openClipboard();
25664
+ this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
25665
+ }
25666
+ // function to check if i can perform action on that target folder or not
25667
+ canPerformActionInsideTarget(document) {
25668
+ var _a;
25669
+ //check if target is 'other' type folder or dms folder
25670
+ if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] === '08112021' && !this.checkIfInPreventedGroups(this.myCurrecntFolderData.entity.path)) {
25671
+ // if my folder is from type others and not in prevented groups
25672
+ return true;
25673
+ }
25674
+ else if (this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] && this.myCurrecntFolderData.entity.properties['dmsfolder:documentTypeCode'] !== '08112021') {
25675
+ //if my folder has code and was not other type folder then check for accepted chilrdrn for that folder to contain this file type
25676
+ if (document.isFile === 'File') {
25677
+ if (this.myTargetFolderAcceptedChildrens.contextParameters &&
25678
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
25679
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children.indexOf(document.properties['gdoc:documentTypeCode']) > -1) {
25680
+ return true;
25681
+ }
25682
+ else {
25683
+ return false;
25684
+ }
25685
+ }
25686
+ else {
25687
+ if (this.myTargetFolderAcceptedChildrens.contextParameters &&
25688
+ this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children && Array.isArray(this.myTargetFolderAcceptedChildrens.contextParameters.accepted_children) &&
25689
+ ((_a = this.myTargetFolderAcceptedChildrens.contextParameters) === null || _a === void 0 ? void 0 : _a.accepted_children.indexOf(document.properties['dmsfolder:documentTypeCode'])) > -1) {
25690
+ return true;
25691
+ }
25692
+ else {
25693
+ return false;
25694
+ }
25695
+ }
25696
+ }
25697
+ else {
25698
+ // prevent action to this target
25699
+ return false;
25700
+ }
25701
+ }
25702
+ // function to check if this path not belong to group that is prevented from creating folder of type others
25703
+ checkIfInPreventedGroups(path) {
25704
+ // if in prevented froup rturn true else return false
25705
+ console.log(path);
25706
+ let myDepartment = this.userService.getUserDepartmentFromPath(path);
25707
+ let exist = this.preventedGroups.indexOf(myDepartment) > -1 ? true : false;
25708
+ return exist;
25709
+ }
25710
+ copyFromInsideClipboard() {
25711
+ let clipboardSelectedItems = [];
25712
+ let clipboardSelectedItemsLength = 0;
25713
+ // seperate selected items in seperate array
25714
+ this.clipboardDocments.map((doc, index) => {
25715
+ // can't copy file in the same place it exist and can't copy folder inside it self
25716
+ if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
25717
+ clipboardSelectedItems.push(doc.uid);
25718
+ }
25719
+ });
25720
+ if (clipboardSelectedItems.length > 0) {
25721
+ this.clipboardLoading = true;
25722
+ // this.currentPath = '';
25723
+ this.fileManagerService
25724
+ .copyTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
25725
+ .subscribe((res) => {
25726
+ // remove selected items from clipboard after action is done
25727
+ this.removeItemsAfterActionDone(clipboardSelectedItems);
25728
+ this.clipboardLoading = false;
25729
+ this.onClipboardClose.emit();
25730
+ this.onRefreshFolderTree.emit();
25731
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_COPIED');
25732
+ }, (err) => {
25733
+ this.clipboardLoading = false;
25734
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_ERROR');
25735
+ });
25736
+ }
25737
+ else {
25738
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_COPIED_DESTINATION_ERROR');
25739
+ }
25740
+ }
25741
+ moveFromInsideClipboard() {
25742
+ let clipboardSelectedItems = [];
25743
+ let clipboardSelectedItemsLength = 0;
25744
+ // seperate selected items in seperate array
25745
+ this.clipboardDocments.map((doc, index) => {
25746
+ // can't move file in the same place it exist and can't move folder inside it self
25747
+ if (doc.isSelected && doc.parentRef !== this.directory.dataItem.id && doc.uid !== this.directory.dataItem.id) {
25748
+ clipboardSelectedItems.push(doc.uid);
25749
+ }
25750
+ });
25751
+ if (clipboardSelectedItems.length > 0) {
25752
+ this.clipboardLoading = true;
25753
+ this.fileManagerService
25754
+ .moveTo({ id: this.directory.dataItem.id, name: this.directory.dataItem.name }, clipboardSelectedItems.toString())
25755
+ .subscribe((res) => {
25756
+ // remove selected items from clipboard after action is done
25757
+ this.removeItemsAfterActionDone(clipboardSelectedItems);
25758
+ this.clipboardLoading = false;
25759
+ this.onClipboardClose.emit();
25760
+ this.onRefreshFolderTree.emit();
25761
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', 'TOASTER.DOCUMENT_MOVED');
25762
+ }, (err) => {
25763
+ this.clipboardLoading = false;
25764
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_ERROR');
25765
+ });
25766
+ }
25767
+ else
25768
+ this.customToastrService.show('error', 'TOASTER.ERROR', 'TOASTER.DOCUMENT_MOVED_DESTINATION_ERROR');
25769
+ }
25770
+ removeItemsAfterActionDone(selectedItems) {
25771
+ this.clipboardItems = this.clipboardItems.filter(function (el) {
25772
+ return !selectedItems.includes(el);
25773
+ });
25774
+ this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
25775
+ }
25776
+ checking() {
25777
+ this.enableCopy = false;
25778
+ this.enableMove = false;
25779
+ this.documentSelectedInClipboard = [];
25780
+ // console.log(this.clipboardDocments);
25781
+ this.clipboardDocments.map(document => {
25782
+ // wokring with only selected documents
25783
+ if (document.isSelected === true) {
25784
+ // document['canCopyToTarget'] = (this.canPerformActionInsideTarget(document) && document.canCopy);
25785
+ // document['canMoveToTarget'] = (this.canPerformActionInsideTarget(document) && document.canMove)
25786
+ this.documentSelectedInClipboard.push(document);
25787
+ }
25788
+ });
25789
+ if (this.documentSelectedInClipboard.length > 0) {
25790
+ this.enableCopy = this.documentSelectedInClipboard.every(item => {
25791
+ return item.canCopyToTarget === true;
25792
+ });
25793
+ this.enableMove = this.documentSelectedInClipboard.every(item => {
25794
+ return item.canMoveToTarget === true;
25795
+ });
25796
+ }
25797
+ console.log(this.documentSelectedInClipboard);
25798
+ }
25799
+ }
25800
+ ClipboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, deps: [{ token: FileManagerService }, { token: UserService }, { token: CustomToastrService }, { token: UserPreferencesService$1 }], target: i0.ɵɵFactoryTarget.Component });
25801
+ ClipboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: ClipboardComponent, selector: "lib-clipboard", inputs: { clipboardItems: "clipboardItems", myCurrecntFolderData: "myCurrecntFolderData", preventedGroups: "preventedGroups", directory: "directory" }, outputs: { onClipboardClose: "onClipboardClose", onRefreshFolderTree: "onRefreshFolderTree" }, ngImport: i0, template: "<div class=\"clipboard-side-section relative\">\n\n <div class=\"p-3 h-full\">\n <div class=\"clipboard-header flex justify-between items-center border-b-2\">\n <span class=\"flex text-gray-500 font-bold items-center\">\n <span class=\"text-4xl bi bi-clipboard\"></span>\n <span class=\"mx-2 text-xl\">{{'clipboard' | translate}}</span>\n </span>\n <mat-icon class=\"close-icon text-gray-500 cursor-pointer\" (click)=\"closeClipboard()\"\n [matTooltip]=\"'BUTTONS.CLOSE' | translate\">close</mat-icon>\n </div>\n <!-- <div class=\"h-full font-bold d-flex justify-center items-center\" *ngIf=\"clipboardLoading\">\n {{ \"loading\" | translate }}\n </div> -->\n <div class=\"w-full h-px bg-gray-200 mb-3\" *ngIf=\"clipboardLoading\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n <div class=\"clipboard-content flex flex-col justify-between items-between\">\n <div class=\"h-full flex justify-center items-center text-gray-500\"\n *ngIf=\"clipboardDocments.length === 0\">{{'no_clipboard_items' | translate}}</div>\n\n <div class=\"px-2 h-5/6 overflow-y-auto\" *ngIf=\"clipboardDocments.length > 0\">\n <div class=\"border-b-2\" *ngFor=\"let document of clipboardDocments\">\n <div class=\"py-1 w-82 flex items-center justify-between\">\n <div class=\"flex items-center w-5/6\">\n <mat-checkbox [(ngModel)]=\"document.isSelected\" (change)=\"checking()\"> </mat-checkbox>\n <div class=\"flex w-full\">\n <!-- <title-with-icon class=\"w-1/6 -my-1.5\" [context]=\"document\"\n [showTitle]=\"false\"></title-with-icon> -->\n <app-display-suitable-icon class=\"mx-1\" [data]=\"document\" [size]=\"'40px'\"></app-display-suitable-icon>\n\n <!-- -->\n <div *ngIf=\"document.isFile === 'File'\"\n class=\"justify-center flex flex-col flex-1 flex-grow-0 w-5/6\">\n <div class=\"text-base text-gray-500 font-bold truncate\"\n [title]=\"document.properties?.['file:content']?.['name']\"\n [alt]=\"document.properties?.['file:content']?.['name']\">\n {{document['title']}}\n </div>\n <div class=\"text-gray-500 text-sm text-nowrap\">\n {{((document.properties?.['file:content']?.['length']) / (1024 *\n 1024)).toFixed(2) }}\n MB\n </div>\n </div>\n <div class=\"\n d-flex\n items-center\n text-base text-gray-500\n font-bold\n \" *ngIf=\"document.isFile === 'Folder'\">\n {{ document?.title }}\n </div>\n </div>\n </div>\n <span [matTooltip]=\"'BUTTONS.REMOVE_CLIPBOARD' | translate\"\n class=\"cursor-pointer w-5 h-5 rounded-full border-2 flex justify-center items-center border-gray-500 \"\n (click)=\"deletefromClipboard(document)\">\n <span class=\"text-gray-500 bi bi-x text-lg flex items-center\"></span>\n </span>\n </div>\n <div class=\"text-md text-gray-500 text-center my-2\">\n <span *ngIf=\"document.canCopyToTarget && !document.canMoveToTarget\">{{'can_copy_only' |\n translate}}</span>\n <span *ngIf=\"!document.canCopyToTarget && document.canMoveToTarget\">{{'can_move_only' |\n translate}}</span>\n <span *ngIf=\"document.canCopyToTarget && document.canMoveToTarget\">{{'can_copy_and_move' |\n translate}}</span>\n <span\n *ngIf=\"!document.canCopyToTarget && !document.canMoveToTarget\">{{'can_not_copy_and_move'\n | translate}}</span>\n </div>\n </div>\n\n </div>\n <div class=\"h-1/6 flex w-full justify-center items-center\">\n <button class=\"submission-button mx-2\" [disabled]=\"!enableCopy\"\n (click)=\"copyFromInsideClipboard()\">{{'BUTTONS.COPY' | translate}}</button>\n <button class=\"submission-button mx-2\" [disabled]=\"!enableMove\"\n (click)=\"moveFromInsideClipboard()\">{{'BUTTONS.MOVE' | translate}}</button>\n </div>\n </div>\n </div>\n\n <div class=\"bg-transparent absolute top-0 bottom-0 left-0 right-0 \" *ngIf=\"clipboardLoading\">\n\n </div>\n</div>", styles: [".clipboard-side-section{width:0px;overflow-x:hidden;height:91vh;background-color:#fff;overflow:hidden;border:1px solid lightgray;z-index:999;transition:.1s ease-in-out;border-bottom:none}.clipboard-side-section .clipboard-header{height:60px}.clipboard-side-section .clipboard-content{height:calc(100% - 60px)}\n"], components: [{ type: i2$4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "mode", "value", "bufferValue"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: DisplaySuitableIconComponent, selector: "app-display-suitable-icon", inputs: ["data", "size", "dataType", "archive"] }], directives: [{ type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i1$1.TranslatePipe }, encapsulation: i0.ViewEncapsulation.None });
25802
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: ClipboardComponent, decorators: [{
25803
+ type: Component,
25804
+ args: [{
25805
+ selector: 'lib-clipboard',
25806
+ templateUrl: './clipboard.component.html',
25807
+ styleUrls: ['./clipboard.component.scss'],
25808
+ encapsulation: ViewEncapsulation.None
25809
+ }]
25810
+ }], ctorParameters: function () { return [{ type: FileManagerService }, { type: UserService }, { type: CustomToastrService }, { type: UserPreferencesService$1 }]; }, propDecorators: { onClipboardClose: [{
25811
+ type: Output
25812
+ }], onRefreshFolderTree: [{
25813
+ type: Output
25814
+ }], clipboardItems: [{
25815
+ type: Input
25816
+ }], myCurrecntFolderData: [{
25817
+ type: Input
25818
+ }], preventedGroups: [{
25819
+ type: Input
25820
+ }], directory: [{
25821
+ type: Input
25822
+ }] } });
25823
+
25520
25824
  class FileMangerModule {
25521
25825
  }
25522
25826
  FileMangerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FileMangerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -25536,7 +25840,8 @@ FileMangerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
25536
25840
  ScanModalComponent,
25537
25841
  ShareDialogComponent,
25538
25842
  TemplateModalComponent,
25539
- UpdateModalComponent], imports: [CommonModule,
25843
+ UpdateModalComponent,
25844
+ ClipboardComponent], imports: [CommonModule,
25540
25845
  MatIconModule,
25541
25846
  DynamicFormModule,
25542
25847
  FormsModule,
@@ -25574,7 +25879,11 @@ FileMangerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
25574
25879
  UserModule,
25575
25880
  MutipleDynamicFormViewerModule,
25576
25881
  BrowserTransferStateModule,
25577
- AttachmentModalModule], exports: [SidepanelComponent,
25882
+ AttachmentModalModule,
25883
+ FormsModule,
25884
+ DisplaySuitableIconModule,
25885
+ MatProgressBarModule,
25886
+ MatCheckboxModule], exports: [SidepanelComponent,
25578
25887
  CopyComponent,
25579
25888
  DeleteComponent,
25580
25889
  MoveComponent,
@@ -25598,7 +25907,8 @@ FileMangerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
25598
25907
  DxTemplateModule,
25599
25908
  DxTextBoxModule,
25600
25909
  DxFormModule,
25601
- DxTreeViewModule] });
25910
+ DxTreeViewModule,
25911
+ ClipboardComponent] });
25602
25912
  FileMangerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0, type: FileMangerModule, imports: [[
25603
25913
  CommonModule,
25604
25914
  MatIconModule,
@@ -25638,7 +25948,11 @@ FileMangerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
25638
25948
  UserModule,
25639
25949
  MutipleDynamicFormViewerModule,
25640
25950
  BrowserTransferStateModule,
25641
- AttachmentModalModule
25951
+ AttachmentModalModule,
25952
+ FormsModule,
25953
+ DisplaySuitableIconModule,
25954
+ MatProgressBarModule,
25955
+ MatCheckboxModule
25642
25956
  ], DxPopupModule,
25643
25957
  DxScrollViewModule,
25644
25958
  DxiToolbarItemModule,
@@ -25667,7 +25981,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
25667
25981
  ScanModalComponent,
25668
25982
  ShareDialogComponent,
25669
25983
  TemplateModalComponent,
25670
- UpdateModalComponent
25984
+ UpdateModalComponent,
25985
+ ClipboardComponent
25671
25986
  ],
25672
25987
  imports: [
25673
25988
  CommonModule,
@@ -25708,7 +26023,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
25708
26023
  UserModule,
25709
26024
  MutipleDynamicFormViewerModule,
25710
26025
  BrowserTransferStateModule,
25711
- AttachmentModalModule
26026
+ AttachmentModalModule,
26027
+ FormsModule,
26028
+ DisplaySuitableIconModule,
26029
+ MatProgressBarModule,
26030
+ MatCheckboxModule
25712
26031
  ],
25713
26032
  exports: [
25714
26033
  SidepanelComponent,
@@ -25735,7 +26054,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
25735
26054
  DxTemplateModule,
25736
26055
  DxTextBoxModule,
25737
26056
  DxFormModule,
25738
- DxTreeViewModule
26057
+ DxTreeViewModule,
26058
+ ClipboardComponent
25739
26059
  ]
25740
26060
  }]
25741
26061
  }] });
@@ -25776,6 +26096,9 @@ class FileManagerAbstract {
25776
26096
  this.lastFolderTrackId = null;
25777
26097
  this.itemToDisplay = {};
25778
26098
  this.tempSave = null;
26099
+ this.clipboardItems = []; // array of id to items in clipboard
26100
+ this.showClipboard = false;
26101
+ this.showDgdaClipboard = false; // flage related to dgda clipboard
25779
26102
  this.cancelButton = {
25780
26103
  text: this.isArabic ? 'إلغاء' : 'Cancel',
25781
26104
  onClick: () => {
@@ -25950,6 +26273,25 @@ class FileManagerAbstract {
25950
26273
  disableClose: true,
25951
26274
  });
25952
26275
  };
26276
+ this.addToClipboard = () => {
26277
+ let selectedItemsIds = this.selectedItems.split(',');
26278
+ let directory = this.getCurrentDirectory();
26279
+ let id = directory.dataItem === undefined
26280
+ ? this.mainFolder
26281
+ : this.getCurrentFolderId(directory);
26282
+ if (selectedItemsIds.length === 1 && this.clipboardItems.length > 0 && this.clipboardItems.indexOf(selectedItemsIds[0]) > -1) {
26283
+ this.customToastrService.show('error', 'TOASTER.ERROR', "TOASTER.item_already_added");
26284
+ }
26285
+ else {
26286
+ this.clipboardItems = union(this.clipboardItems, selectedItemsIds);
26287
+ this.userPreferenceService.set('clipboardItems', JSON.stringify(this.clipboardItems));
26288
+ this.customToastrService.show('success', 'TOASTER.SUCCESS', "TOASTER.added_to_clipboard");
26289
+ this.reinitializeFolderTree(id, directory);
26290
+ this.fileManagerService.onRefreshClipboard.emit();
26291
+ this.showClipboard = true;
26292
+ console.log(this.clipboardItems);
26293
+ }
26294
+ };
25953
26295
  // -------------------------------------------------------------------------------------------------------------------------------------
25954
26296
  this.customizeIcon = (fileSystemItem) => {
25955
26297
  var _a, _b, _c;
@@ -26322,6 +26664,8 @@ class FileManagerAbstract {
26322
26664
  // if (this.showDetails) {
26323
26665
  // this.sideMenuLoading = true;
26324
26666
  // }
26667
+ this.showClipboard = false;
26668
+ this.showDgdaClipboard = false;
26325
26669
  this.myFileMangerInstance = e.component;
26326
26670
  this.currentDirectory = this.getCurrentDirectory();
26327
26671
  let selectedItem = this.fileManager.instance.getSelectedItems();
@@ -26414,6 +26758,8 @@ class FileManagerAbstract {
26414
26758
  onItemClicked(e) {
26415
26759
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
26416
26760
  return __awaiter(this, void 0, void 0, function* () {
26761
+ this.showClipboard = false; // close clipboard if navigated to any place
26762
+ this.showDgdaClipboard = false;
26417
26763
  this.selectedFolderPath = (_a = e.directory.dataItem) === null || _a === void 0 ? void 0 : _a.entity.path;
26418
26764
  if (e.directory.dataItem === undefined) {
26419
26765
  if (this.mainFolder === 'sharedDocumentsRoot') {
@@ -26676,7 +27022,8 @@ class FileManagerAbstract {
26676
27022
  }
26677
27023
  openSideMenuDetails() {
26678
27024
  this.showDetails = true;
26679
- // this.sideMenuLoading = false;
27025
+ this.showClipboard = false;
27026
+ this.showDgdaClipboard = false;
26680
27027
  }
26681
27028
  closeSideMenu() {
26682
27029
  this.showDetails = false;
@@ -26942,5 +27289,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImpor
26942
27289
  * Generated bundle index. Do not edit.
26943
27290
  */
26944
27291
 
26945
- export { ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AvatarComponent, AvatarModule, BooleanViewerComponent, ButtonComponent, CallApiService, CardComponent, CardModule, ChartDataService, ClickOutsideDirective, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, ContentActionType, CopyComponent, CoreModule, CorrespondenceRelationComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomDocumentViewerComponent, CustomPpViewerComponent, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DialogMangmentService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicSingleChartComponent, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicViewModule, EXTENSION_JSONS, EvaluatorsService, ExtensionLoaderService, ExtensionService, FileManagerAbstract, FileManagerAdapter, FileManagerService, FileMangerModule, FileSizePipe, FilterComponent, FilterModule, FolderModalComponent, FormBuilderService, GlobalPdfTron, GregorianDatepickerComponent, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, IconService, InitializationService, ItemListComponent, Lang$1 as Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService$1 as LocalStoragService, LocalizedDatePipe, MY_MOMENT_FORMATS, MainfolderService, MomentDateAdapter, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NgxHijriGregorianDatepickerModule, NoDataComponent, NotificationItemComponent, NotificationOptionsComponent, NotificationsButtonComponent, NotificationsListComponent, NotificationsModule, NotificationsService, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoService$1 as NuxeoService, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PublishDialogComponent, PublishingDocumentService, ReadMoreComponent, RecentlyViewedService, RenameComponent, RolesService$1 as RolesService, SafeHtmlPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SingleActivityComponent, SpinnerComponent, TRANSLATION_PROVIDER$1 as TRANSLATION_PROVIDER, TableComponent, TableModule, TagsApiService, TemplateModalComponent, TimeAgoPipe, TransferDocComponent, TranslateLoaderService, TranslationService$1 as TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues$1 as UserPreferenceValues, UserPreferencesService$1 as UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getValue, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, sortByOrder };
27292
+ export { ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AvatarComponent, AvatarModule, BooleanViewerComponent, ButtonComponent, CallApiService, CardComponent, CardModule, ChartDataService, ClickOutsideDirective, ClipboardComponent, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, ContentActionType, CopyComponent, CoreModule, CorrespondenceRelationComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomDocumentViewerComponent, CustomPpViewerComponent, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DialogMangmentService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicSingleChartComponent, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicViewModule, EXTENSION_JSONS, EvaluatorsService, ExtensionLoaderService, ExtensionService, FileManagerAbstract, FileManagerAdapter, FileManagerService, FileMangerModule, FileSizePipe, FilterComponent, FilterModule, FolderModalComponent, FormBuilderService, GlobalPdfTron, GregorianDatepickerComponent, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, IconService, InitializationService, ItemListComponent, Lang$1 as Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService$1 as LocalStoragService, LocalizedDatePipe, MY_MOMENT_FORMATS, MainfolderService, MomentDateAdapter, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NgxHijriGregorianDatepickerModule, NoDataComponent, NotificationItemComponent, NotificationOptionsComponent, NotificationsButtonComponent, NotificationsListComponent, NotificationsModule, NotificationsService, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoService$1 as NuxeoService, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PublishDialogComponent, PublishingDocumentService, ReadMoreComponent, RecentlyViewedService, RenameComponent, RolesService$1 as RolesService, SafeHtmlPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SingleActivityComponent, SpinnerComponent, TRANSLATION_PROVIDER$1 as TRANSLATION_PROVIDER, TableComponent, TableModule, TagsApiService, TemplateModalComponent, TimeAgoPipe, TransferDocComponent, TranslateLoaderService, TranslationService$1 as TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues$1 as UserPreferenceValues, UserPreferencesService$1 as UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getValue, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, sortByOrder };
26946
27293
  //# sourceMappingURL=nuxeo-development-framework.js.map