@dignite-ng/expand.file-explorer 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/config/{src/enums/index.ts → enums/index.d.ts} +1 -1
  2. package/config/enums/route-names.d.ts +3 -0
  3. package/config/file-config.module.d.ts +8 -0
  4. package/config/index.d.ts +5 -0
  5. package/config/{src/providers/index.ts → providers/index.d.ts} +1 -1
  6. package/config/providers/route.provider.d.ts +8 -0
  7. package/config/{src/public-api.ts → public-api.d.ts} +3 -3
  8. package/esm2022/config/dignite-ng-expand.file-explorer-config.mjs +5 -0
  9. package/esm2022/config/enums/index.mjs +2 -0
  10. package/esm2022/config/enums/route-names.mjs +2 -0
  11. package/esm2022/config/file-config.module.mjs +19 -0
  12. package/esm2022/config/providers/index.mjs +2 -0
  13. package/esm2022/config/providers/route.provider.mjs +24 -0
  14. package/esm2022/config/public-api.mjs +4 -0
  15. package/esm2022/dignite-ng-expand.file-explorer.mjs +5 -0
  16. package/esm2022/lib/components/dome/file-dome.component.mjs +32 -0
  17. package/esm2022/lib/components/file-edit/file-edit.component.mjs +104 -0
  18. package/esm2022/lib/components/file-modal/file-modal.component.mjs +272 -0
  19. package/esm2022/lib/components/file-modal-tree/file-modal-tree.component.mjs +195 -0
  20. package/esm2022/lib/components/file-picker/file-picker.component.mjs +65 -0
  21. package/esm2022/lib/components/index.mjs +6 -0
  22. package/esm2022/lib/file-explorer-routing.module.mjs +25 -0
  23. package/esm2022/lib/file-explorer.module.mjs +88 -0
  24. package/esm2022/lib/previews/file-preview.component.mjs +100 -0
  25. package/esm2022/lib/previews/index.mjs +3 -0
  26. package/esm2022/lib/previews/models.mjs +92 -0
  27. package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +48 -0
  28. package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +3 -0
  29. package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +2 -0
  30. package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +60 -0
  31. package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +3 -0
  32. package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +2 -0
  33. package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +4 -0
  34. package/esm2022/lib/proxy/dignite/index.mjs +3 -0
  35. package/esm2022/lib/proxy/index.mjs +5 -0
  36. package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +3 -0
  37. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +2 -0
  38. package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +2 -0
  39. package/esm2022/lib/proxy/microsoft/extensions/index.mjs +3 -0
  40. package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +2 -0
  41. package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +2 -0
  42. package/esm2022/lib/proxy/microsoft/index.mjs +5 -0
  43. package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +2 -0
  44. package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +2 -0
  45. package/esm2022/lib/proxy/microsoft/net/http/index.mjs +3 -0
  46. package/esm2022/lib/proxy/microsoft/net/index.mjs +3 -0
  47. package/esm2022/lib/proxy/volo/abp/content/index.mjs +2 -0
  48. package/esm2022/lib/proxy/volo/abp/content/models.mjs +2 -0
  49. package/esm2022/lib/proxy/volo/abp/index.mjs +3 -0
  50. package/esm2022/lib/proxy/volo/index.mjs +3 -0
  51. package/esm2022/lib/services/file-api.service.mjs +66 -0
  52. package/esm2022/lib/services/index.mjs +2 -0
  53. package/esm2022/public-api.mjs +9 -0
  54. package/fesm2022/dignite-ng-expand.file-explorer-config.mjs +47 -0
  55. package/fesm2022/dignite-ng-expand.file-explorer-config.mjs.map +1 -0
  56. package/fesm2022/dignite-ng-expand.file-explorer.mjs +1169 -0
  57. package/fesm2022/dignite-ng-expand.file-explorer.mjs.map +1 -0
  58. package/index.d.ts +5 -0
  59. package/lib/components/dome/file-dome.component.d.ts +19 -0
  60. package/lib/components/file-edit/file-edit.component.d.ts +38 -0
  61. package/lib/components/file-modal/file-modal.component.d.ts +93 -0
  62. package/lib/components/file-modal-tree/file-modal-tree.component.d.ts +66 -0
  63. package/lib/components/file-picker/file-picker.component.d.ts +26 -0
  64. package/lib/components/index.d.ts +5 -0
  65. package/lib/file-explorer-routing.module.d.ts +7 -0
  66. package/lib/file-explorer.module.d.ts +19 -0
  67. package/lib/previews/file-preview.component.d.ts +47 -0
  68. package/lib/previews/index.d.ts +2 -0
  69. package/lib/previews/models.d.ts +5 -0
  70. package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +17 -0
  71. package/{src/lib/proxy/dignite/file-explorer/directories/models.ts → lib/proxy/dignite/file-explorer/directories/models.d.ts} +29 -35
  72. package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +20 -0
  73. package/lib/proxy/dignite/file-explorer/files/models.d.ts +50 -0
  74. package/{src/lib/proxy/microsoft/asp-net-core/mvc/models.ts → lib/proxy/microsoft/asp-net-core/mvc/models.d.ts} +10 -12
  75. package/lib/proxy/microsoft/extensions/primitives/models.d.ts +8 -0
  76. package/{src/lib/proxy/microsoft/net/http/headers/models.ts → lib/proxy/microsoft/net/http/headers/models.d.ts} +6 -7
  77. package/lib/proxy/volo/abp/content/models.d.ts +5 -0
  78. package/lib/services/file-api.service.d.ts +14 -0
  79. package/lib/services/index.d.ts +1 -0
  80. package/package.json +21 -2
  81. package/{src/public-api.ts → public-api.d.ts} +1 -5
  82. package/config/ng-package.json +0 -7
  83. package/config/src/enums/route-names.ts +0 -15
  84. package/config/src/file-config.module.ts +0 -12
  85. package/config/src/providers/route.provider.ts +0 -26
  86. package/ng-package.json +0 -7
  87. package/src/lib/components/dome/file-dome.component.html +0 -18
  88. package/src/lib/components/dome/file-dome.component.scss +0 -0
  89. package/src/lib/components/dome/file-dome.component.spec.ts +0 -21
  90. package/src/lib/components/dome/file-dome.component.ts +0 -33
  91. package/src/lib/components/file-edit/file-edit.component.html +0 -29
  92. package/src/lib/components/file-edit/file-edit.component.scss +0 -0
  93. package/src/lib/components/file-edit/file-edit.component.spec.ts +0 -21
  94. package/src/lib/components/file-edit/file-edit.component.ts +0 -98
  95. package/src/lib/components/file-modal/file-modal.component.html +0 -112
  96. package/src/lib/components/file-modal/file-modal.component.scss +0 -56
  97. package/src/lib/components/file-modal/file-modal.component.spec.ts +0 -21
  98. package/src/lib/components/file-modal/file-modal.component.ts +0 -284
  99. package/src/lib/components/file-modal-tree/file-modal-tree.component.html +0 -63
  100. package/src/lib/components/file-modal-tree/file-modal-tree.component.scss +0 -0
  101. package/src/lib/components/file-modal-tree/file-modal-tree.component.spec.ts +0 -21
  102. package/src/lib/components/file-modal-tree/file-modal-tree.component.ts +0 -207
  103. package/src/lib/components/file-picker/file-picker.component.html +0 -28
  104. package/src/lib/components/file-picker/file-picker.component.scss +0 -0
  105. package/src/lib/components/file-picker/file-picker.component.spec.ts +0 -21
  106. package/src/lib/components/file-picker/file-picker.component.ts +0 -58
  107. package/src/lib/components/index.ts +0 -5
  108. package/src/lib/file-explorer-routing.module.ts +0 -18
  109. package/src/lib/file-explorer.module.ts +0 -46
  110. package/src/lib/proxy/README.md +0 -17
  111. package/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +0 -65
  112. package/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts +0 -86
  113. package/src/lib/proxy/dignite/file-explorer/files/models.ts +0 -58
  114. package/src/lib/proxy/generate-proxy.json +0 -11810
  115. package/src/lib/proxy/microsoft/extensions/primitives/models.ts +0 -9
  116. package/src/lib/proxy/volo/abp/content/models.ts +0 -6
  117. package/src/lib/services/file-api.service.ts +0 -59
  118. package/src/lib/services/index.ts +0 -1
  119. package/tsconfig.lib.json +0 -14
  120. package/tsconfig.lib.prod.json +0 -10
  121. package/tsconfig.spec.json +0 -14
  122. /package/{src/lib/proxy/dignite/file-explorer/directories/index.ts → lib/proxy/dignite/file-explorer/directories/index.d.ts} +0 -0
  123. /package/{src/lib/proxy/dignite/file-explorer/files/index.ts → lib/proxy/dignite/file-explorer/files/index.d.ts} +0 -0
  124. /package/{src/lib/proxy/dignite/file-explorer/index.ts → lib/proxy/dignite/file-explorer/index.d.ts} +0 -0
  125. /package/{src/lib/proxy/dignite/index.ts → lib/proxy/dignite/index.d.ts} +0 -0
  126. /package/{src/lib/proxy/index.ts → lib/proxy/index.d.ts} +0 -0
  127. /package/{src/lib/proxy/microsoft/asp-net-core/index.ts → lib/proxy/microsoft/asp-net-core/index.d.ts} +0 -0
  128. /package/{src/lib/proxy/microsoft/asp-net-core/mvc/index.ts → lib/proxy/microsoft/asp-net-core/mvc/index.d.ts} +0 -0
  129. /package/{src/lib/proxy/microsoft/extensions/index.ts → lib/proxy/microsoft/extensions/index.d.ts} +0 -0
  130. /package/{src/lib/proxy/microsoft/extensions/primitives/index.ts → lib/proxy/microsoft/extensions/primitives/index.d.ts} +0 -0
  131. /package/{src/lib/proxy/microsoft/index.ts → lib/proxy/microsoft/index.d.ts} +0 -0
  132. /package/{src/lib/proxy/microsoft/net/http/headers/index.ts → lib/proxy/microsoft/net/http/headers/index.d.ts} +0 -0
  133. /package/{src/lib/proxy/microsoft/net/http/index.ts → lib/proxy/microsoft/net/http/index.d.ts} +0 -0
  134. /package/{src/lib/proxy/microsoft/net/index.ts → lib/proxy/microsoft/net/index.d.ts} +0 -0
  135. /package/{src/lib/proxy/volo/abp/content/index.ts → lib/proxy/volo/abp/content/index.d.ts} +0 -0
  136. /package/{src/lib/proxy/volo/abp/index.ts → lib/proxy/volo/abp/index.d.ts} +0 -0
  137. /package/{src/lib/proxy/volo/index.ts → lib/proxy/volo/index.d.ts} +0 -0
@@ -1,112 +0,0 @@
1
- <abp-modal [(visible)]="ModalOpen" (visibleChange)="ModalVisibleChange($event)"
2
- [options]="{ size: 'xl', scrollable: false }">
3
- <ng-template #abpHeader>
4
- <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>
5
- </ng-template>
6
- <ng-template #abpBody>
7
- <div class="row file-explorer-modal-body file-modal">
8
- <div class="col-3" style="overflow: auto; height: calc(100vh - 240px)">
9
- <fe-file-modal-tree [theSelectedTreeNode]="_theSelectedTreeNode" (nodeClick)="_nodeClick($event)"
10
- [fileContainerName]="_fileContainerName"></fe-file-modal-tree>
11
- </div>
12
- <div class="col-9" style="height: calc(100vh - 240px)">
13
- <div class="mb-2 d-flex justify-content-between align-items-center">
14
- <div class="btn-link" role=button style="flex: 2" (click)="lookAllFile()">{{'FileExplorer::AllFiles' | abpLocalization}}</div>
15
- <div class="input-group form-file" style="flex: 2">
16
- <input type="file" class="form-control" #fileEdit [multiple]="_multiple" accept=".jpg,.jpeg,.png,.gif,.webp"
17
- (change)="getFileChange($event)" />
18
- </div>
19
- </div>
20
- <div>
21
- <ngx-datatable class="material container-height" [rows]="data.items" [list]="list" columnMode="flex"
22
- [columns]="columns" [headerHeight]="50" [footerHeight]="50" rowHeight="auto" [scrollbarV]="true"
23
- [virtualization]="false" [externalPaging]="true" [count]="data.totalCount" [selected]="selectedTable"
24
- [selectCheck]="selectCheck" [selectionType]="SelectionType.multiClick" (select)="onSelectTableItem($event)">
25
- <ngx-datatable-column [width]="50" prop="id" [sortable]="false" [canAutoResize]="false" [draggable]="false"
26
- [resizeable]="false">
27
- <ng-template ngx-datatable-header-template let-value="value" let-allRowsSelected="allRowsSelected"
28
- let-selectFn="selectFn">
29
- <input type="checkbox" class="form-check-input" [checked]="allRowsSelected"
30
- (change)="selectFn(!allRowsSelected)" />
31
- </ng-template>
32
- <ng-template ngx-datatable-cell-template let-row="row" let-value="value" let-isSelected="isSelected"
33
- let-onCheckboxChangeFn="onCheckboxChangeFn">
34
- <input type="checkbox" class="form-check-input" [checked]="selectedcheckbox(value)"
35
- (change)="onCheckboxChangeFn($event)" />
36
- </ng-template>
37
- </ngx-datatable-column>
38
- <ngx-datatable-column [name]="'FileExplorer::FileName' | abpLocalization" prop="name" [flexGrow]="4">
39
- <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
40
- {{ value }}
41
- </ng-template>
42
- </ngx-datatable-column>
43
- <ngx-datatable-column [name]="'FileExplorer::FileSize' | abpLocalization" prop="size" [flexGrow]="1.5">
44
- <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
45
- {{ _FileApiService.formatFileSize(value) }}
46
- </ng-template>
47
- </ngx-datatable-column>
48
- <ngx-datatable-column [name]="'FileExplorer::Directory' | abpLocalization" prop="cellName" [flexGrow]="1">
49
- <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
50
- {{ value }}
51
- </ng-template>
52
- </ngx-datatable-column>
53
- <ngx-datatable-column [name]="'FileExplorer::CreationTime' | abpLocalization" prop="creationTime" [flexGrow]="2">
54
- <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
55
- {{ value | date : 'YYYY/MM/dd HH:m:s' }}
56
- </ng-template>
57
- </ngx-datatable-column>
58
- <ngx-datatable-column [flexGrow]="1">
59
- <ng-template let-row="row" let-value="value" ngx-datatable-cell-template>
60
- <button class="btn btn-sm btn-light p-0" (click.stop)="deleteFile(row)">
61
- <i class="fas fa-trash text-primary p-2"></i>
62
- </button>
63
- </ng-template>
64
- </ngx-datatable-column>
65
- </ngx-datatable>
66
- </div>
67
- <div *ngIf="uploadPictureStatusList.length > 0"
68
- class="position-fixed bottom-0 end-0 shadow-lg file-status-modal border bg-white p-1 m-5"
69
- style="border-radius: 10px">
70
- <div class="card">
71
- <div class="card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom">
72
- <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>
73
- <button type="button" class="btn-close" aria-label="Close" (click.stop)="closeFileStatusModal()"></button>
74
- </div>
75
- <div class="card-body">
76
- <table class="table">
77
- <thead>
78
- <tr>
79
- <th scope="col">{{'FileExplorer::FileName' | abpLocalization}}</th>
80
- <th scope="col">{{'FileExplorer::FileSize' | abpLocalization}}</th>
81
- <th scope="col"></th>
82
- </tr>
83
- </thead>
84
- <tbody>
85
- <ng-container *ngFor="let item of uploadPictureStatusList; let i = index">
86
- <tr>
87
- <th scope="row">
88
- <div>{{ item.name }}</div>
89
- <div class="form-text text-danger" *ngIf="item.size > sizeLimit">
90
- {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}
91
- </div>
92
- </th>
93
- <td>{{ item.fileSize }}</td>
94
- <td>
95
- <i *ngIf="item.status == 1" class="fas fa-check text-primary"></i>
96
- <i *ngIf="item.status == 2" class="fas fa-times-circle text-danger"></i>
97
- </td>
98
- </tr>
99
- </ng-container>
100
- </tbody>
101
- </table>
102
- </div>
103
- </div>
104
- </div>
105
- </div>
106
- </div>
107
- </ng-template>
108
- <ng-template #abpFooter>
109
- <button type="button" class="btn btn-secondary" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>
110
- <abp-button iconClass="fa fa-check" (click)="modalSave()">{{'AbpUi::Save' | abpLocalization}}</abp-button>
111
- </ng-template>
112
- </abp-modal>
@@ -1,56 +0,0 @@
1
- ::ng-deep .file-modal {
2
- .container-height {
3
- height: calc(100vh - 240px - 44px);
4
- }
5
-
6
- .file-status-modal {
7
- background: #fff;
8
- }
9
-
10
- .file-status-modal {
11
- .card-body {
12
- max-height: 300px;
13
- overflow-y: auto;
14
- }
15
- }
16
-
17
- .ngx-datatable.material.single-selection .datatable-body-row.active,
18
- .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group,
19
- .ngx-datatable.material.multi-selection .datatable-body-row.active,
20
- .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group,
21
- .ngx-datatable.material.multi-click-selection .datatable-body-row.active,
22
- .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group {
23
- background-color: transparent !important;
24
- }
25
-
26
- .ant-tree {
27
- .ant-tree-node-content-wrapper {
28
- padding: 0;
29
-
30
- .custom-node {
31
- width: 100%;
32
-
33
- }
34
-
35
- .selected {
36
- background-color: var(--lpx-brand) !important;
37
-
38
- .btn {
39
- color: var(--lpx-navbar-color);
40
- }
41
- }
42
- }
43
-
44
- .ant-tree-node-content-wrapper.ant-tree-node-selected {
45
- background-color: transparent;
46
- }
47
-
48
- }
49
-
50
- .ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell,
51
- .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell {
52
- // width: inherit !important;
53
- overflow: initial;
54
- line-break: anywhere;
55
- }
56
- }
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { FileModalComponent } from './file-modal.component';
4
-
5
- describe('FileModalComponent', () => {
6
- let component: FileModalComponent;
7
- let fixture: ComponentFixture<FileModalComponent>;
8
-
9
- beforeEach(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [FileModalComponent]
12
- });
13
- fixture = TestBed.createComponent(FileModalComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });
@@ -1,284 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';
2
- import * as FileService from '../../proxy/dignite/file-explorer/files';
3
- import { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';
4
- import { PagedResultDto, ABP, ListService, Rest, RestService, LocalizationService, LIST_QUERY_DEBOUNCE_TIME } from '@abp/ng.core';
5
- import { FileDescriptorDto, GetFilesInput } from '../../proxy/dignite/file-explorer/files';
6
- import { FileApiService } from '../../services/file-api.service';
7
- import { SelectionType } from '@swimlane/ngx-datatable';
8
- var that
9
- @Component({
10
- selector: 'fe-file-modal',
11
- templateUrl: './file-modal.component.html',
12
- styleUrls: ['./file-modal.component.scss'],
13
- providers: [
14
- // [Required]
15
- ListService,
16
- // [Optional]
17
- // Provide this token if you want a different debounce time.
18
- // Default is 300. Cannot be 0. Any value below 100 is not recommended.
19
- { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },
20
- ]
21
- })
22
- export class FileModalComponent {
23
-
24
- constructor(
25
- private _FileService: FileService.FileDescriptorService,
26
- private toaster: ToasterService,
27
- public readonly list: ListService,
28
- public _FileApiService: FileApiService,
29
- private restService: RestService,
30
- private confirmation: ConfirmationService,
31
- private _LocalizationService: LocalizationService,
32
- ) {
33
- that = this
34
- }
35
-
36
- /**图片容器 */
37
- _fileContainerName: string
38
- @Input()
39
- public set fileContainerName(v: string) {
40
- if (v) {
41
- this._fileContainerName = v;
42
- this.loadData()
43
- }
44
- }
45
-
46
- /**是否多选 */
47
- _multiple: boolean = true
48
- @Input()
49
- public set multiple(v: boolean) {
50
- this._multiple = v;
51
- if (v) { }
52
- }
53
-
54
- /**文件大小限制
55
- * @param 1mb
56
- */
57
- sizeLimit: number = 1048576
58
- @Input()
59
- public set limit(v: number) {
60
- this.sizeLimit = v;
61
- }
62
- /**父组件传递的模态框状态 */
63
- @Input()
64
- public set visible(v: boolean) {
65
- this.ModalOpen = v;
66
- if (v) {
67
- this.loadData()
68
- }
69
- }
70
-
71
- /**模态框状态回调 */
72
- @Output() visibleChange = new EventEmitter()
73
-
74
-
75
-
76
- /**模态框-状态-是否打开 */
77
- ModalOpen: boolean = false
78
-
79
- /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */
80
- ModalBusy: boolean = false
81
-
82
-
83
-
84
- /**模态框-状态改变回调 */
85
- ModalVisibleChange(event) {
86
- if (!event) {
87
- this.visibleChange.emit(event)
88
- return
89
- }
90
- }
91
-
92
- /**模态框保存 */
93
- modalSave() {
94
- let selectedTablearr = this._FileApiService.deepClone(this.selectedTable)
95
- this.selectFilefn.emit(selectedTablearr)
96
-
97
- this.ModalVisibleChange(false)
98
- }
99
- /**dignite-file-modal-tree */
100
- /**选择的tree节点 */
101
- _theSelectedTreeNode: any = ''
102
-
103
- /**初始化数据 */
104
- loadData() {
105
- if (this.ModalOpen && this._fileContainerName) {
106
- this.hookToQuery()
107
- }
108
- }
109
-
110
- /**tree-节点选择 */
111
- _nodeClick(event) {
112
- this._theSelectedTreeNode = event
113
- this.list.get()
114
- }
115
-
116
- /**图片上传-要上传图片的状态文件列表 */
117
- uploadPictureStatusList: any[] = []
118
-
119
- /**图片上传-获取文件信息改变 */
120
- async getFileChange(event) {
121
- let files = new Array(...event.target.files)
122
- this.uploadPictureStatusList = files
123
- for (const file of files) {
124
- if (file.size > this.sizeLimit) {
125
- this.setuploadPictureStatus(file, 2)
126
- continue;
127
- }
128
- await this.uploadingFile(file).then(() => {
129
- this.setuploadPictureStatus(file, 1)
130
- this.list.get()
131
- }).catch(() => {
132
- this.setuploadPictureStatus(file, 2)
133
- }); // 等待每个文件上传完成
134
- }
135
- this.list.get()
136
- let isSubmit = !this.uploadPictureStatusList.some(el => el.status == 2);
137
- if (isSubmit) {
138
- // this.toaster.success("上传完成");
139
- setTimeout(() => {
140
- this.uploadPictureStatusList = []
141
- }, 6000)
142
- }
143
- }
144
-
145
- /**图片上传-设置uploadPictureStatusList的状态 */
146
- setuploadPictureStatus(file, type) {
147
- this.uploadPictureStatusList.map(el => {
148
- if (el == file) el.status = type
149
- })
150
- }
151
-
152
-
153
- /**图片上传-递归按顺序上传 */
154
- uploadingFile(file) {
155
- return new Promise((resolve, rejects) => {
156
- let formData = new FormData();
157
- formData.append('file', file, file.name);
158
- this.createFile({
159
- file: formData,
160
- containerName: this._fileContainerName,
161
- directoryId: this._theSelectedTreeNode?.key || '',
162
- entityId: ''
163
- }).subscribe(res => {
164
- resolve(true)
165
- }, (err) => {
166
- rejects(false)
167
- })
168
- })
169
- }
170
-
171
-
172
- /**文件表格-数据*/
173
- data: PagedResultDto<FileDescriptorDto> = {
174
- items: [],
175
- totalCount: 0,
176
- };
177
-
178
- /**文件表格-条件*/
179
- filters = {} as GetFilesInput;
180
-
181
- /**文件表格-表格自带选择类型 */
182
- SelectionType = SelectionType;
183
-
184
- /**文件表格-选择的表格数据项 */
185
- selectedTable = []
186
-
187
- /**已选定的文件 */
188
- @Input() selectPickerFile: any[]
189
-
190
- ngOnChanges(changes: SimpleChanges): void {
191
- //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.
192
- //Add '${implements OnChanges}' to the class.
193
- this.selectedTable = this._FileApiService.deepClone(this.selectPickerFile)
194
- }
195
- /**当前选择的table项 id */
196
- nowSelectId: any = ''
197
-
198
- /**选择文件回调 */
199
- // @Output() selectedFileChange = new EventEmitter<any[]>()
200
- @Output() selectFilefn = new EventEmitter<any[]>()
201
-
202
- /**文件表格-获取表格数据 */
203
- hookToQuery() {
204
- const getData = (query: ABP.PageQueryParams) => this._FileService.getList({
205
- ...query,
206
- ...this.filters,
207
- containerName: this._fileContainerName,
208
- directoryId: this._theSelectedTreeNode.key
209
- });
210
- const setData = (list: PagedResultDto<FileDescriptorDto>) => (this.data = list);
211
- this.list.hookToQuery(getData).subscribe(setData);
212
- }
213
-
214
- /**文件表格-查看所有分组的文件数据 */
215
- lookAllFile() {
216
- this._theSelectedTreeNode = ''
217
- this.list.get()
218
- }
219
-
220
- /**选择表格项 */
221
- onSelectTableItem({ selected }) {
222
- this.selectedTable = this._FileApiService.deepClone(selected)
223
- let selectedTablearr = this.removeDuplicatesById(this.selectedTable)
224
- if (selected.length > selectedTablearr.length) {
225
- selectedTablearr = selectedTablearr.filter(el => el.id !== this.nowSelectId)
226
- }
227
- this.selectedTable = selectedTablearr
228
- }
229
-
230
- /**删除数组中重复的项 */
231
- removeDuplicatesById(array) {
232
- const seenIds = {};
233
- return array.filter(item => {
234
- if (!seenIds[item.id]) {
235
- seenIds[item.id] = true;
236
- return true;
237
- }
238
- return false;
239
- });
240
- }
241
-
242
- /**一个布尔or函数,可用于检查是否要根据条件选择特定行。 */
243
- selectCheck = (row, column, value) => {
244
- this.nowSelectId = row.id
245
- return true;
246
- }
247
-
248
- /**判断row是否选中 */
249
- selectedcheckbox = (id) => {
250
- return this.selectedTable.some(el => el.id == id)
251
- }
252
-
253
-
254
-
255
- /**删除图片 */
256
- deleteFile(file) {
257
-
258
- this.confirmation
259
- .warn('', { key: '', defaultValue: this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`) })
260
- .subscribe((status: Confirmation.Status) => {
261
- if (status == 'confirm') {
262
- this._FileService.delete(file.id).subscribe(res => {
263
- this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));
264
- this.list.get()
265
- })
266
- }
267
- });
268
- }
269
-
270
- /**关闭文件状态弹窗 */
271
- closeFileStatusModal() {
272
- this.uploadPictureStatusList = []
273
- }
274
-
275
- /**创建图片的接口,代理中的file类型不匹配,切换为any类型 */
276
- createFile = (input: any, config?: Partial<Rest.Config>) =>
277
- this.restService.request<any, FileDescriptorDto>({
278
- method: 'POST',
279
- url: '/api/file-explorer/files',
280
- params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },
281
- body: input.file,
282
- },
283
- { apiName: 'FileExplorer', ...config });
284
- }
@@ -1,63 +0,0 @@
1
- <div class="card-header p-0 mb-1 d-flex justify-content-between align-items-center">
2
- <h6 class="h6 mb-0">{{'FileExplorer::MyDirectories' | abpLocalization}}</h6>
3
- <button type="button" class="btn btn-light btn-sm ms-2" (click.stop)="addDescriptorBtn()"><i
4
- class="fas fa-plus-circle" aria-hidden="true"></i></button>
5
- </div>
6
- <nz-tree [nzData]="fileGroupList" class="ng-zorro-antd-tree" nzDraggable nzBlockNode nzShowIcon
7
- [nzExpandedIcon]="multiExpandedIconTpl" (nzOnDrop)="nzEvent($event)" [nzBeforeDrop]="beforeDrop"
8
- (nzClick)="activeNode($event)" (nzExpandChange)="nzExpandChange($event)" [nzTreeTemplate]="nzTreeTemplate">
9
- <ng-template #nzTreeTemplate let-node let-origin="origin">
10
- <div class="custom-node d-inline-block ng-star-inserted dropdown" [title]="node.title">
11
- <div #dropdown="ngbDropdown" class="d-inline-block" ngbDropdown placement="bottom" container="body">
12
- <div class="btn-group" [class.selected]="isNodeSelected(node)">
13
- <button class="btn btn-sm p-0 px-1">{{ node.title }}</button>
14
- <button class="btn btn-sm p-0" (click)="handleClick($event)" ngbDropdownToggle
15
- [class.dropdown-toggle]="false" aria-hidden="true">
16
- <i class="fas fa-caret-down text-muted p-1"></i>
17
- </button>
18
- </div>
19
- <div ngbDropdownMenu>
20
- <button ngbDropdownItem
21
- (click.stop)="addDescriptorBtn(node)">{{'FileExplorer::NewDirectory' | abpLocalization}}</button>
22
- <button ngbDropdownItem
23
- (click.stop)="addDescriptorBtn(node,true)">{{'AbpUi::Edit' | abpLocalization}}</button>
24
- <button ngbDropdownItem
25
- (click.stop)="deleteDescriptorBtn(node)">{{'AbpUi::Delete' | abpLocalization}}</button>
26
- </div>
27
- </div>
28
- </div>
29
- </ng-template>
30
- <ng-template #multiExpandedIconTpl let-node let-origin="origin">
31
- <ng-container *ngIf="node.children.length > 0">
32
- <i [class]="node.isExpanded ? 'fas fa-caret-down' : 'fas fa-caret-right'"></i>
33
- </ng-container>
34
- </ng-template>
35
- </nz-tree>
36
-
37
-
38
- <abp-modal [(visible)]="ModalDescriptorOpen" [busy]="ModalDescriptorBusy"
39
- (visibleChange)="ModalDescriptorVisibleChange($event)">
40
- <ng-template #abpHeader>
41
- <h3>{{theNodeBeingEdited?('AbpUi::Edit' | abpLocalization):('FileExplorer::NewDirectory' | abpLocalization)}}</h3>
42
- </ng-template>
43
- <ng-template #abpBody>
44
- <ng-template #loaderRef>
45
- <div class="text-center"><i class="fa fa-pulse fa-spinner" aria-hidden="true"></i></div>
46
- </ng-template>
47
- <ng-container *ngIf="ModalDescriptorForm; else loaderRef">
48
- <form class="sites-modal-form" #myForm="ngForm" [formGroup]="ModalDescriptorForm"
49
- (ngSubmit)="createOrEditSave()">
50
- <button type="submit" #ModalFormDescriptorSubmit style="display: none"></button>
51
- <div class="mb-3">
52
- <label class="form-label">{{'FileExplorer::DirectoryName' | abpLocalization}}</label>
53
- <input type="email" class="form-control" formControlName="name">
54
- </div>
55
- </form>
56
- </ng-container>
57
- </ng-template>
58
- <ng-template #abpFooter>
59
- <button type="button" class="btn btn-secondary" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>
60
- <abp-button iconClass="fa fa-check"
61
- (click)="ModalFormDescriptorSubmit.nativeElement.click()">{{'AbpUi::Save' | abpLocalization}}</abp-button>
62
- </ng-template>
63
- </abp-modal>
@@ -1,21 +0,0 @@
1
- import { ComponentFixture, TestBed } from '@angular/core/testing';
2
-
3
- import { FileModalTreeComponent } from './file-modal-tree.component';
4
-
5
- describe('FileModalTreeComponent', () => {
6
- let component: FileModalTreeComponent;
7
- let fixture: ComponentFixture<FileModalTreeComponent>;
8
-
9
- beforeEach(() => {
10
- TestBed.configureTestingModule({
11
- declarations: [FileModalTreeComponent]
12
- });
13
- fixture = TestBed.createComponent(FileModalTreeComponent);
14
- component = fixture.componentInstance;
15
- fixture.detectChanges();
16
- });
17
-
18
- it('should create', () => {
19
- expect(component).toBeTruthy();
20
- });
21
- });