@dignite-ng/expand.file-explorer 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/ng-package.json +7 -0
- package/config/{enums/index.d.ts → src/enums/index.ts} +1 -1
- package/config/src/enums/route-names.ts +15 -0
- package/config/src/file-config.module.ts +12 -0
- package/config/{providers/index.d.ts → src/providers/index.ts} +1 -1
- package/config/src/providers/route.provider.ts +26 -0
- package/config/{public-api.d.ts → src/public-api.ts} +3 -3
- package/ng-package.json +7 -0
- package/package.json +3 -27
- package/src/lib/components/dome/file-dome.component.html +18 -0
- package/src/lib/components/dome/file-dome.component.scss +0 -0
- package/src/lib/components/dome/file-dome.component.spec.ts +21 -0
- package/src/lib/components/dome/file-dome.component.ts +33 -0
- package/src/lib/components/file-edit/file-edit.component.html +29 -0
- package/src/lib/components/file-edit/file-edit.component.scss +0 -0
- package/src/lib/components/file-edit/file-edit.component.spec.ts +21 -0
- package/src/lib/components/file-edit/file-edit.component.ts +98 -0
- package/src/lib/components/file-modal/file-modal.component.html +112 -0
- package/src/lib/components/file-modal/file-modal.component.scss +56 -0
- package/src/lib/components/file-modal/file-modal.component.spec.ts +21 -0
- package/src/lib/components/file-modal/file-modal.component.ts +284 -0
- package/src/lib/components/file-modal-tree/file-modal-tree.component.html +63 -0
- package/src/lib/components/file-modal-tree/file-modal-tree.component.scss +0 -0
- package/src/lib/components/file-modal-tree/file-modal-tree.component.spec.ts +21 -0
- package/src/lib/components/file-modal-tree/file-modal-tree.component.ts +207 -0
- package/src/lib/components/file-picker/file-picker.component.html +28 -0
- package/src/lib/components/file-picker/file-picker.component.scss +0 -0
- package/src/lib/components/file-picker/file-picker.component.spec.ts +21 -0
- package/src/lib/components/file-picker/file-picker.component.ts +58 -0
- package/src/lib/components/index.ts +5 -0
- package/src/lib/file-explorer-routing.module.ts +18 -0
- package/src/lib/file-explorer.module.ts +46 -0
- package/src/lib/proxy/README.md +17 -0
- package/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts +65 -0
- package/{lib/proxy/dignite/file-explorer/directories/models.d.ts → src/lib/proxy/dignite/file-explorer/directories/models.ts} +35 -29
- package/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts +86 -0
- package/src/lib/proxy/dignite/file-explorer/files/models.ts +58 -0
- package/src/lib/proxy/generate-proxy.json +11810 -0
- package/{lib/proxy/microsoft/asp-net-core/mvc/models.d.ts → src/lib/proxy/microsoft/asp-net-core/mvc/models.ts} +12 -10
- package/src/lib/proxy/microsoft/extensions/primitives/models.ts +9 -0
- package/{lib/proxy/microsoft/net/http/headers/models.d.ts → src/lib/proxy/microsoft/net/http/headers/models.ts} +7 -6
- package/src/lib/proxy/volo/abp/content/models.ts +6 -0
- package/src/lib/services/file-api.service.ts +59 -0
- package/src/lib/services/index.ts +1 -0
- package/{public-api.d.ts → src/public-api.ts} +5 -0
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +14 -0
- package/config/enums/route-names.d.ts +0 -3
- package/config/file-config.module.d.ts +0 -8
- package/config/index.d.ts +0 -5
- package/config/providers/route.provider.d.ts +0 -8
- package/esm2022/config/dignite-ng-expand.file-explorer-config.mjs +0 -5
- package/esm2022/config/enums/index.mjs +0 -2
- package/esm2022/config/enums/route-names.mjs +0 -2
- package/esm2022/config/file-config.module.mjs +0 -19
- package/esm2022/config/providers/index.mjs +0 -2
- package/esm2022/config/providers/route.provider.mjs +0 -24
- package/esm2022/config/public-api.mjs +0 -4
- package/esm2022/dignite-ng-expand.file-explorer.mjs +0 -5
- package/esm2022/lib/components/dome/file-dome.component.mjs +0 -32
- package/esm2022/lib/components/file-edit/file-edit.component.mjs +0 -102
- package/esm2022/lib/components/file-modal/file-modal.component.mjs +0 -271
- package/esm2022/lib/components/file-modal-tree/file-modal-tree.component.mjs +0 -195
- package/esm2022/lib/components/file-picker/file-picker.component.mjs +0 -57
- package/esm2022/lib/components/index.mjs +0 -6
- package/esm2022/lib/file-explorer-routing.module.mjs +0 -25
- package/esm2022/lib/file-explorer.module.mjs +0 -83
- package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +0 -48
- package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +0 -3
- package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +0 -2
- package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +0 -60
- package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +0 -3
- package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +0 -2
- package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +0 -4
- package/esm2022/lib/proxy/dignite/index.mjs +0 -3
- package/esm2022/lib/proxy/index.mjs +0 -5
- package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +0 -3
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/extensions/index.mjs +0 -3
- package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/index.mjs +0 -5
- package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +0 -2
- package/esm2022/lib/proxy/microsoft/net/http/index.mjs +0 -3
- package/esm2022/lib/proxy/microsoft/net/index.mjs +0 -3
- package/esm2022/lib/proxy/volo/abp/content/index.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/content/models.mjs +0 -2
- package/esm2022/lib/proxy/volo/abp/index.mjs +0 -3
- package/esm2022/lib/proxy/volo/index.mjs +0 -3
- package/esm2022/lib/services/file-api.service.mjs +0 -66
- package/esm2022/lib/services/index.mjs +0 -2
- package/esm2022/public-api.mjs +0 -8
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs +0 -47
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs.map +0 -1
- package/fesm2022/dignite-ng-expand.file-explorer.mjs +0 -972
- package/fesm2022/dignite-ng-expand.file-explorer.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/components/dome/file-dome.component.d.ts +0 -19
- package/lib/components/file-edit/file-edit.component.d.ts +0 -38
- package/lib/components/file-modal/file-modal.component.d.ts +0 -93
- package/lib/components/file-modal-tree/file-modal-tree.component.d.ts +0 -66
- package/lib/components/file-picker/file-picker.component.d.ts +0 -23
- package/lib/components/index.d.ts +0 -5
- package/lib/file-explorer-routing.module.d.ts +0 -7
- package/lib/file-explorer.module.d.ts +0 -18
- package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +0 -17
- package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +0 -20
- package/lib/proxy/dignite/file-explorer/files/models.d.ts +0 -50
- package/lib/proxy/microsoft/extensions/primitives/models.d.ts +0 -8
- package/lib/proxy/volo/abp/content/models.d.ts +0 -5
- package/lib/services/file-api.service.d.ts +0 -14
- package/lib/services/index.d.ts +0 -1
- /package/{lib/proxy/dignite/file-explorer/directories/index.d.ts → src/lib/proxy/dignite/file-explorer/directories/index.ts} +0 -0
- /package/{lib/proxy/dignite/file-explorer/files/index.d.ts → src/lib/proxy/dignite/file-explorer/files/index.ts} +0 -0
- /package/{lib/proxy/dignite/file-explorer/index.d.ts → src/lib/proxy/dignite/file-explorer/index.ts} +0 -0
- /package/{lib/proxy/dignite/index.d.ts → src/lib/proxy/dignite/index.ts} +0 -0
- /package/{lib/proxy/index.d.ts → src/lib/proxy/index.ts} +0 -0
- /package/{lib/proxy/microsoft/asp-net-core/index.d.ts → src/lib/proxy/microsoft/asp-net-core/index.ts} +0 -0
- /package/{lib/proxy/microsoft/asp-net-core/mvc/index.d.ts → src/lib/proxy/microsoft/asp-net-core/mvc/index.ts} +0 -0
- /package/{lib/proxy/microsoft/extensions/index.d.ts → src/lib/proxy/microsoft/extensions/index.ts} +0 -0
- /package/{lib/proxy/microsoft/extensions/primitives/index.d.ts → src/lib/proxy/microsoft/extensions/primitives/index.ts} +0 -0
- /package/{lib/proxy/microsoft/index.d.ts → src/lib/proxy/microsoft/index.ts} +0 -0
- /package/{lib/proxy/microsoft/net/http/headers/index.d.ts → src/lib/proxy/microsoft/net/http/headers/index.ts} +0 -0
- /package/{lib/proxy/microsoft/net/http/index.d.ts → src/lib/proxy/microsoft/net/http/index.ts} +0 -0
- /package/{lib/proxy/microsoft/net/index.d.ts → src/lib/proxy/microsoft/net/index.ts} +0 -0
- /package/{lib/proxy/volo/abp/content/index.d.ts → src/lib/proxy/volo/abp/content/index.ts} +0 -0
- /package/{lib/proxy/volo/abp/index.d.ts → src/lib/proxy/volo/abp/index.ts} +0 -0
- /package/{lib/proxy/volo/index.d.ts → src/lib/proxy/volo/index.ts} +0 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import type { EntityTagHeaderValue } from '../../net/http/headers/models';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type { EntityTagHeaderValue } from '../../net/http/headers/models';
|
|
2
|
+
|
|
3
|
+
export interface ActionResult {
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface FileResult extends ActionResult {
|
|
7
|
+
contentType?: string;
|
|
8
|
+
fileDownloadName?: string;
|
|
9
|
+
lastModified?: string;
|
|
10
|
+
entityTag: EntityTagHeaderValue;
|
|
11
|
+
enableRangeProcessing: boolean;
|
|
12
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { StringSegment } from '../../../extensions/primitives/models';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { StringSegment } from '../../../extensions/primitives/models';
|
|
2
|
+
|
|
3
|
+
export interface EntityTagHeaderValue {
|
|
4
|
+
any: EntityTagHeaderValue;
|
|
5
|
+
tag: StringSegment;
|
|
6
|
+
isWeak: boolean;
|
|
7
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
@Injectable({
|
|
4
|
+
providedIn: 'root'
|
|
5
|
+
})
|
|
6
|
+
export class FileApiService {
|
|
7
|
+
|
|
8
|
+
constructor() { }
|
|
9
|
+
|
|
10
|
+
/**转换文件大小单位 输入k */
|
|
11
|
+
formatFileSize(bytes: any) {
|
|
12
|
+
const units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
|
|
13
|
+
let size = bytes;
|
|
14
|
+
let unitIndex = 0;
|
|
15
|
+
|
|
16
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
17
|
+
size /= 1024;
|
|
18
|
+
unitIndex++;
|
|
19
|
+
}
|
|
20
|
+
// 保留两位小数,四舍五入
|
|
21
|
+
size = size.toFixed(1)
|
|
22
|
+
return `${size} ${units[unitIndex]}`;
|
|
23
|
+
}
|
|
24
|
+
/**获取图片的本地连接 */
|
|
25
|
+
getImageLacolBase64Url(file: File) {
|
|
26
|
+
return new Promise((resolve, rejects) => {
|
|
27
|
+
const reader = new FileReader();
|
|
28
|
+
reader.readAsDataURL(file);
|
|
29
|
+
reader.onload = (e: any) => {
|
|
30
|
+
resolve(e.target.result)
|
|
31
|
+
};
|
|
32
|
+
reader.onerror = error => rejects(error);
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 深拷贝--方法
|
|
37
|
+
* $api.deepClone() */
|
|
38
|
+
deepClone(obj) {
|
|
39
|
+
if (typeof obj !== 'object' || obj === null) return obj;
|
|
40
|
+
const result = Array.isArray(obj) ? [] : {};
|
|
41
|
+
for (let key in obj) {
|
|
42
|
+
if (obj.hasOwnProperty(key)) {
|
|
43
|
+
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
|
44
|
+
if (obj[key] instanceof Date) {
|
|
45
|
+
result[key] = new Date(obj[key].getTime());
|
|
46
|
+
} else if (obj[key] instanceof RegExp) {
|
|
47
|
+
result[key] = new RegExp(obj[key]);
|
|
48
|
+
} else {
|
|
49
|
+
result[key] = this.deepClone(obj[key]);
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
result[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './file-api.service'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/lib",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"inlineSources": true,
|
|
9
|
+
"types": []
|
|
10
|
+
},
|
|
11
|
+
"exclude": [
|
|
12
|
+
"**/*.spec.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/spec",
|
|
6
|
+
"types": [
|
|
7
|
+
"jasmine"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"include": [
|
|
11
|
+
"**/*.spec.ts",
|
|
12
|
+
"**/*.d.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class FileConfigModule {
|
|
4
|
-
static forRoot(): ModuleWithProviders<FileConfigModule>;
|
|
5
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FileConfigModule, never>;
|
|
6
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<FileConfigModule, never, never, never>;
|
|
7
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<FileConfigModule>;
|
|
8
|
-
}
|
package/config/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { RoutesService } from '@abp/ng.core';
|
|
2
|
-
export declare const FILE_ROUTE_PROVIDERS: {
|
|
3
|
-
provide: import("@angular/core").InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
|
|
4
|
-
useFactory: typeof configureRoutes;
|
|
5
|
-
deps: (typeof RoutesService)[];
|
|
6
|
-
multi: boolean;
|
|
7
|
-
}[];
|
|
8
|
-
export declare function configureRoutes(routesService: RoutesService): () => void;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnbml0ZS1uZy1leHBhbmQuZmlsZS1leHBsb3Jlci1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL2NvbmZpZy9zcmMvZGlnbml0ZS1uZy1leHBhbmQuZmlsZS1leHBsb3Jlci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './route-names';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL2NvbmZpZy9zcmMvZW51bXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JvdXRlLW5hbWVzJztcclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL2NvbmZpZy9zcmMvZW51bXMvcm91dGUtbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIGVGaWxlUm91dGVOYW1lcyB7XHJcbiAgLy8gQ21zID0gJ0NtcycsXHJcbiAgLy8gRW50cmllcyA9ICdFbnRyaWVzJyxcclxuICAvLyBTZXR0aW5ncyA9IFwiU2V0dGluZ3NcIixcclxuICAvLyBGaWVsZHMgPSBcIkZpZWxkc1wiLFxyXG4gIC8vIFNpdGVzID0gXCJTaXRlc1wiLFxyXG4gIC8vIFNlY3Rpb25zID0gXCJTZWN0aW9uc1wiLFxyXG4gIC8vIENtcyA9ICflhoXlrrnnrqHnkIYnLFxyXG4gIC8vIEVudHJpZXMgPSAn5p2h55uuJyxcclxuICAvLyBTZXR0aW5ncyA9IFwi6K6+572uXCIsXHJcbiAgLy8gRmllbGRzID0gXCLlrZfmrrVcIixcclxuICAvLyBTaXRlcyA9IFwi56uZ54K5XCIsXHJcbiAgRmlsZVVwbG9hZERlbW8gPSBcIkZpbGUgVXBsb2FkIERlbW9cIixcclxuICBcclxufVxyXG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { FILE_ROUTE_PROVIDERS } from './providers/route.provider';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
class FileConfigModule {
|
|
5
|
-
static forRoot() {
|
|
6
|
-
return {
|
|
7
|
-
ngModule: FileConfigModule,
|
|
8
|
-
providers: [FILE_ROUTE_PROVIDERS],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FileConfigModule });
|
|
13
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileConfigModule });
|
|
14
|
-
}
|
|
15
|
-
export { FileConfigModule };
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileConfigModule, decorators: [{
|
|
17
|
-
type: NgModule
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jb25maWcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9jb25maWcvc3JjL2ZpbGUtY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFbEUsTUFDYSxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztTQUNsQyxDQUFDO0lBQ0osQ0FBQzt3R0FOVSxnQkFBZ0I7eUdBQWhCLGdCQUFnQjt5R0FBaEIsZ0JBQWdCOztTQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFENUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZJTEVfUk9VVEVfUFJPVklERVJTIH0gZnJvbSAnLi9wcm92aWRlcnMvcm91dGUucHJvdmlkZXInO1xyXG5cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIEZpbGVDb25maWdNb2R1bGUge1xyXG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RmlsZUNvbmZpZ01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IEZpbGVDb25maWdNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW0ZJTEVfUk9VVEVfUFJPVklERVJTXSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './route.provider';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL2NvbmZpZy9zcmMvcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JvdXRlLnByb3ZpZGVyJztcclxuIl19
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { RoutesService } from '@abp/ng.core';
|
|
2
|
-
import { APP_INITIALIZER } from '@angular/core';
|
|
3
|
-
export const FILE_ROUTE_PROVIDERS = [
|
|
4
|
-
{
|
|
5
|
-
provide: APP_INITIALIZER,
|
|
6
|
-
useFactory: configureRoutes,
|
|
7
|
-
deps: [RoutesService],
|
|
8
|
-
multi: true,
|
|
9
|
-
},
|
|
10
|
-
];
|
|
11
|
-
export function configureRoutes(routesService) {
|
|
12
|
-
return () => {
|
|
13
|
-
routesService.add([
|
|
14
|
-
{
|
|
15
|
-
path: '/file/file-dome',
|
|
16
|
-
name: "File Upload Demo" /* eFileRouteNames.FileUploadDemo */,
|
|
17
|
-
iconClass: 'fas fa fa-file-archive-o',
|
|
18
|
-
layout: "application" /* eLayoutType.application */,
|
|
19
|
-
order: 9,
|
|
20
|
-
},
|
|
21
|
-
]);
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9maWxlLWV4cGxvcmVyL2NvbmZpZy9zcmMvcHJvdmlkZXJzL3JvdXRlLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRztJQUNsQztRQUNFLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQixLQUFLLEVBQUUsSUFBSTtLQUNaO0NBQ0YsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQUMsYUFBNEI7SUFDMUQsT0FBTyxHQUFHLEVBQUU7UUFDVixhQUFhLENBQUMsR0FBRyxDQUFDO1lBQ2hCO2dCQUNFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLElBQUkseURBQStCO2dCQUNuQyxTQUFTLEVBQUUsMEJBQTBCO2dCQUNyQyxNQUFNLDZDQUF5QjtnQkFDL0IsS0FBSyxFQUFFLENBQUM7YUFDVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlTGF5b3V0VHlwZSwgUm91dGVzU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBlRmlsZVJvdXRlTmFtZXMgfSBmcm9tICcuLi9lbnVtcyc7XHJcblxyXG5leHBvcnQgY29uc3QgRklMRV9ST1VURV9QUk9WSURFUlMgPSBbXHJcbiAge1xyXG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxyXG4gICAgdXNlRmFjdG9yeTogY29uZmlndXJlUm91dGVzLFxyXG4gICAgZGVwczogW1JvdXRlc1NlcnZpY2VdLFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVSb3V0ZXMocm91dGVzU2VydmljZTogUm91dGVzU2VydmljZSkge1xyXG4gIHJldHVybiAoKSA9PiB7XHJcbiAgICByb3V0ZXNTZXJ2aWNlLmFkZChbXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiAnL2ZpbGUvZmlsZS1kb21lJyxcclxuICAgICAgICBuYW1lOmVGaWxlUm91dGVOYW1lcy5GaWxlVXBsb2FkRGVtbyxcclxuICAgICAgICBpY29uQ2xhc3M6ICdmYXMgZmEgZmEtZmlsZS1hcmNoaXZlLW8nLFxyXG4gICAgICAgIGxheW91dDogZUxheW91dFR5cGUuYXBwbGljYXRpb24sXHJcbiAgICAgICAgb3JkZXI6IDksXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './enums';
|
|
2
|
-
export * from './file-config.module';
|
|
3
|
-
export * from './providers';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvY29uZmlnL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudW1zJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLWNvbmZpZy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVycyc7XHJcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnbml0ZS1uZy1leHBhbmQuZmlsZS1leHBsb3Jlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2RpZ25pdGUtbmctZXhwYW5kLmZpbGUtZXhwbG9yZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../file-edit/file-edit.component";
|
|
4
|
-
import * as i2 from "../file-picker/file-picker.component";
|
|
5
|
-
class FileDomeComponent {
|
|
6
|
-
/**跟随表单提交--已提交的数据,或选择的数据源 */
|
|
7
|
-
fileSubmittedData = [];
|
|
8
|
-
/**跟随表单提交--待提交的数据
|
|
9
|
-
*
|
|
10
|
-
* @param 待上传的文件们
|
|
11
|
-
* @param 待删除已上传的文件们
|
|
12
|
-
*/
|
|
13
|
-
fileDataToBeSubmitted;
|
|
14
|
-
/**跟随表单提交--数据发生改变回调 */
|
|
15
|
-
fileDataChange(event) {
|
|
16
|
-
this.fileDataToBeSubmitted = event;
|
|
17
|
-
}
|
|
18
|
-
/**选择文件-弹窗的-已选定的文件 */
|
|
19
|
-
selectedFileGroup = [];
|
|
20
|
-
/**_selectedFile改变回调 */
|
|
21
|
-
_selectedFileChange(event) {
|
|
22
|
-
this.selectedFileGroup = event;
|
|
23
|
-
}
|
|
24
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDomeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileDomeComponent, selector: "fe-file-dome", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i1.FileEditComponent, selector: "fe-file-edit", inputs: ["multiple", "fileData", "limit"], outputs: ["fileDataChange"] }, { kind: "component", type: i2.FilePickerComponent, selector: "fe-file-picker", inputs: ["fileContainerName", "selectFormFile"], outputs: ["selectedFileChange"] }] });
|
|
26
|
-
}
|
|
27
|
-
export { FileDomeComponent };
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileDomeComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{ selector: 'fe-file-dome', template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-edit [(fileData)]=\"fileSubmittedData\" (fileDataChange)=\"fileDataChange($event)\"></fe-file-edit>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"card\">\r\n <div class=\"card-header py-2 border-bottom\">Send file stream with form</div>\r\n <div class=\"card-body\">\r\n <fe-file-picker [selectFormFile]=\"selectedFileGroup\" (selectedFileChange)=\"_selectedFileChange($event)\" ></fe-file-picker>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
31
|
-
}] });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1kb21lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2RvbWUvZmlsZS1kb21lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2RvbWUvZmlsZS1kb21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFMUMsTUFLYSxpQkFBaUI7SUFFNUIsNEJBQTRCO0lBQzVCLGlCQUFpQixHQUFVLEVBQUUsQ0FBQTtJQUU3Qjs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUs7SUFHMUIsc0JBQXNCO0lBQ3RCLGNBQWMsQ0FBQyxLQUFLO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUE7SUFDcEMsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixpQkFBaUIsR0FBTyxFQUFFLENBQUE7SUFFMUIsdUJBQXVCO0lBQ3ZCLG1CQUFtQixDQUFDLEtBQUs7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQTtJQUNoQyxDQUFDO3dHQXhCVSxpQkFBaUI7NEZBQWpCLGlCQUFpQixvRENQOUIscXlCQWlCTTs7U0RWTyxpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlLWZpbGUtZG9tZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWRvbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWRvbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRG9tZUNvbXBvbmVudCB7XG5cbiAgLyoq6Lef6ZqP6KGo5Y2V5o+Q5LqkLS3lt7Lmj5DkuqTnmoTmlbDmja7vvIzmiJbpgInmi6nnmoTmlbDmja7mupAgKi9cbiAgZmlsZVN1Ym1pdHRlZERhdGE6IGFueVtdID0gW11cblxuICAvKirot5/pmo/ooajljZXmj5DkuqQtLeW+heaPkOS6pOeahOaVsOaNrlxuICAgKiBcbiAgICogQHBhcmFtIOW+heS4iuS8oOeahOaWh+S7tuS7rFxuICAgKiBAcGFyYW0g5b6F5Yig6Zmk5bey5LiK5Lyg55qE5paH5Lu25LusXG4gICAqL1xuICBmaWxlRGF0YVRvQmVTdWJtaXR0ZWQ6IGFueVxuXG5cbiAgLyoq6Lef6ZqP6KGo5Y2V5o+Q5LqkLS3mlbDmja7lj5HnlJ/mlLnlj5jlm57osIMgKi9cbiAgZmlsZURhdGFDaGFuZ2UoZXZlbnQpIHtcbiAgICB0aGlzLmZpbGVEYXRhVG9CZVN1Ym1pdHRlZCA9IGV2ZW50XG4gIH1cblxuICAvKirpgInmi6nmlofku7Yt5by556qX55qELeW3sumAieWumueahOaWh+S7tiAqL1xuICBzZWxlY3RlZEZpbGVHcm91cDphbnlbXT1bXVxuXG4gIC8qKl9zZWxlY3RlZEZpbGXmlLnlj5jlm57osIMgKi9cbiAgX3NlbGVjdGVkRmlsZUNoYW5nZShldmVudCkge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlR3JvdXAgPSBldmVudFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB5LTIgYm9yZGVyLWJvdHRvbVwiPlNlbmQgZmlsZSBzdHJlYW0gd2l0aCBmb3JtPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxmZS1maWxlLWVkaXQgIFsoZmlsZURhdGEpXT1cImZpbGVTdWJtaXR0ZWREYXRhXCIgICAoZmlsZURhdGFDaGFuZ2UpPVwiZmlsZURhdGFDaGFuZ2UoJGV2ZW50KVwiPjwvZmUtZmlsZS1lZGl0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweS0yIGJvcmRlci1ib3R0b21cIj5TZW5kIGZpbGUgc3RyZWFtIHdpdGggZm9ybTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZmUtZmlsZS1waWNrZXIgIFtzZWxlY3RGb3JtRmlsZV09XCJzZWxlY3RlZEZpbGVHcm91cFwiIChzZWxlY3RlZEZpbGVDaGFuZ2UpPVwiX3NlbGVjdGVkRmlsZUNoYW5nZSgkZXZlbnQpXCIgPjwvZmUtZmlsZS1waWNrZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/file-api.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "@abp/ng.core";
|
|
6
|
-
class FileEditComponent {
|
|
7
|
-
_FileApiService;
|
|
8
|
-
constructor(_FileApiService) {
|
|
9
|
-
this._FileApiService = _FileApiService;
|
|
10
|
-
}
|
|
11
|
-
/**是否多选 */
|
|
12
|
-
_multiple = true;
|
|
13
|
-
set multiple(v) {
|
|
14
|
-
this._multiple = v;
|
|
15
|
-
if (v) { }
|
|
16
|
-
}
|
|
17
|
-
/**文件数据--已上传的数据 */
|
|
18
|
-
_fileData = [];
|
|
19
|
-
set fileData(v) {
|
|
20
|
-
this._fileData = v;
|
|
21
|
-
if (v.length > 0) {
|
|
22
|
-
this.getFileChange({ target: { files: v } });
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/** 跟随表单提交--已提交的数据,或选择的数据源--回调*/
|
|
26
|
-
fileDataChange = new EventEmitter();
|
|
27
|
-
/**文件大小限制
|
|
28
|
-
* @param 1mb
|
|
29
|
-
*/
|
|
30
|
-
sizeLimit = 1048576;
|
|
31
|
-
set limit(v) {
|
|
32
|
-
this.sizeLimit = v;
|
|
33
|
-
}
|
|
34
|
-
/**文件表格数据 */
|
|
35
|
-
filesTableData = [];
|
|
36
|
-
/** 待删除已上传的文件们*/
|
|
37
|
-
deleteTheUploadedFiles = [];
|
|
38
|
-
/**获取文件选择框的元素 */
|
|
39
|
-
fileEdit;
|
|
40
|
-
/**获取文件信息改变 */
|
|
41
|
-
async getFileChange(event) {
|
|
42
|
-
let files = new Array(...event.target.files);
|
|
43
|
-
/**需要等待setfileSizeUnits执行完后在执行其他方法--需要完善 */
|
|
44
|
-
await this.waitFileToAddTable(files);
|
|
45
|
-
this.fileHandling();
|
|
46
|
-
}
|
|
47
|
-
/**等待将文件数据加入到文件表格数据中 */
|
|
48
|
-
waitFileToAddTable(files) {
|
|
49
|
-
return new Promise(async (resolve, rejects) => {
|
|
50
|
-
this.filesTableData.push(...await this.setfileSizeUnits(files));
|
|
51
|
-
resolve(true);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**删除文件表格的项 */
|
|
55
|
-
deleteFileTableItem(index, item) {
|
|
56
|
-
this.filesTableData.splice(index, 1);
|
|
57
|
-
if (item.id) {
|
|
58
|
-
this.deleteTheUploadedFiles.push(item);
|
|
59
|
-
}
|
|
60
|
-
this.fileHandling();
|
|
61
|
-
}
|
|
62
|
-
/**文件处理-调用回调函数 */
|
|
63
|
-
fileHandling() {
|
|
64
|
-
let theFilesToBeUploaded = this.filesTableData.filter(el => !el.id);
|
|
65
|
-
//判断图片大小是否超过限制-用于判断表单是否允许提交
|
|
66
|
-
let isSubmit = !this.filesTableData.some(el => el.size > this.sizeLimit);
|
|
67
|
-
this.fileDataChange.emit({ theFilesToBeUploaded, deleteTheUploadedFiles: this.deleteTheUploadedFiles, isSubmit });
|
|
68
|
-
}
|
|
69
|
-
/**设置值文件大小单位/ */
|
|
70
|
-
async setfileSizeUnits(files) {
|
|
71
|
-
return new Promise((resolve, rejects) => {
|
|
72
|
-
let formattedFiles = [];
|
|
73
|
-
files.forEach(async (file) => {
|
|
74
|
-
file.fileSize = this._FileApiService.formatFileSize(file.size);
|
|
75
|
-
formattedFiles.push(file);
|
|
76
|
-
//设置选择图片的本地url
|
|
77
|
-
if (!file.src)
|
|
78
|
-
file.src = await this._FileApiService.getImageLacolBase64Url(file);
|
|
79
|
-
});
|
|
80
|
-
resolve(files);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileEditComponent, deps: [{ token: i1.FileApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FileEditComponent, selector: "fe-file-edit", inputs: { multiple: "multiple", fileData: "fileData", limit: "limit" }, outputs: { fileDataChange: "fileDataChange" }, viewQueries: [{ propertyName: "fileEdit", first: true, predicate: ["fileEdit"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"(change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">{{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
|
|
85
|
-
}
|
|
86
|
-
export { FileEditComponent };
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FileEditComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'fe-file-edit', template: "<div class=\"input-group mb-2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"(change)=\"getFileChange($event)\">\n</div>\n\n<table class=\"table\" *ngIf=\"filesTableData.length>0\">\n <thead>\n <tr>\n <th scope=\"col\">{{'FileExplorer::FileName' | abpLocalization}}</th>\n <th scope=\"col\">{{'FileExplorer::FileSize' | abpLocalization}}</th>\n <th scope=\"col\"></th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let item of filesTableData;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n <div class=\"form-text text-danger\" *ngIf=\"item.size > sizeLimit\">{{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}</div>\n </th>\n <td>{{item.fileSize}}</td>\n <td>\n <button class=\"btn btn-sm p-0 btn-light \" (click.stop)=\"deleteFileTableItem(i,item)\">\n <i class=\"fas fa-trash p-2\"></i>\n </button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>" }]
|
|
90
|
-
}], ctorParameters: function () { return [{ type: i1.FileApiService }]; }, propDecorators: { multiple: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], fileData: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], fileDataChange: [{
|
|
95
|
-
type: Output
|
|
96
|
-
}], limit: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], fileEdit: [{
|
|
99
|
-
type: ViewChild,
|
|
100
|
-
args: ['fileEdit', { static: true }]
|
|
101
|
-
}] } });
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1lZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZpbGUtZXhwbG9yZXIvc3JjL2xpYi9jb21wb25lbnRzL2ZpbGUtZWRpdC9maWxlLWVkaXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmlsZS1leHBsb3Jlci9zcmMvbGliL2NvbXBvbmVudHMvZmlsZS1lZGl0L2ZpbGUtZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFHOUYsTUFLYSxpQkFBaUI7SUFFbkI7SUFEVCxZQUNTLGVBQStCO1FBQS9CLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtJQUNwQyxDQUFDO0lBRUwsVUFBVTtJQUNWLFNBQVMsR0FBWSxJQUFJLENBQUE7SUFDekIsSUFDVyxRQUFRLENBQUMsQ0FBVTtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1osQ0FBQztJQUNELGtCQUFrQjtJQUNsQixTQUFTLEdBQVUsRUFBRSxDQUFBO0lBQ3JCLElBQ1csUUFBUSxDQUFDLENBQVE7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtTQUM3QztJQUNILENBQUM7SUFDRCxnQ0FBZ0M7SUFDdEIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUE7SUFFN0M7O01BRUU7SUFDRixTQUFTLEdBQVcsT0FB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UkNSOUIsb3dDQTRCUTs7U0RwQkssaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYztxR0FZYixRQUFRO3NCQURsQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFPSSxLQUFLO3NCQURmLEtBQUs7Z0JBV21DLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbGVBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsZS1hcGkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZlLWZpbGUtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLWVkaXQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlRWRpdENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBfRmlsZUFwaVNlcnZpY2U6IEZpbGVBcGlTZXJ2aWNlLFxuICApIHsgfVxuXG4gIC8qKuaYr+WQpuWkmumAiSAqL1xuICBfbXVsdGlwbGU6IGJvb2xlYW4gPSB0cnVlXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodjogYm9vbGVhbikge1xuICAgIHRoaXMuX211bHRpcGxlID0gdjtcbiAgICBpZiAodikgeyB9XG4gIH1cbiAgLyoq5paH5Lu25pWw5o2uLS3lt7LkuIrkvKDnmoTmlbDmja4gKi9cbiAgX2ZpbGVEYXRhOiBhbnlbXSA9IFtdXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZmlsZURhdGEodjogYW55W10pIHtcbiAgICB0aGlzLl9maWxlRGF0YSA9IHY7XG4gICAgaWYgKHYubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5nZXRGaWxlQ2hhbmdlKHsgdGFyZ2V0OiB7IGZpbGVzOiB2IH0gfSlcbiAgICB9XG4gIH1cbiAgLyoqIOi3n+maj+ihqOWNleaPkOS6pC0t5bey5o+Q5Lqk55qE5pWw5o2u77yM5oiW6YCJ5oup55qE5pWw5o2u5rqQLS3lm57osIMqL1xuICBAT3V0cHV0KCkgZmlsZURhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICAvKirmlofku7blpKflsI/pmZDliLYgXG4gICAqIEBwYXJhbSAxbWJcbiAgKi9cbiAgc2l6ZUxpbWl0OiBudW1iZXIgPSAxMDQ4NTc2XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGltaXQodjogbnVtYmVyKSB7XG4gICAgdGhpcy5zaXplTGltaXQgPSB2O1xuICB9XG5cbiAgLyoq5paH5Lu26KGo5qC85pWw5o2uICovXG4gIGZpbGVzVGFibGVEYXRhOiBhbnlbXSA9IFtdXG4gIC8qKiDlvoXliKDpmaTlt7LkuIrkvKDnmoTmlofku7bku6wqL1xuICBkZWxldGVUaGVVcGxvYWRlZEZpbGVzOiBhbnlbXSA9IFtdXG5cbiAgLyoq6I635Y+W5paH5Lu26YCJ5oup5qGG55qE5YWD57SgICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVFZGl0JywgeyBzdGF0aWM6IHRydWUgfSkgZmlsZUVkaXQ6IEVsZW1lbnRSZWY7XG5cblxuICAvKirojrflj5bmlofku7bkv6Hmga/mlLnlj5ggKi9cbiAgYXN5bmMgZ2V0RmlsZUNoYW5nZShldmVudCkge1xuICAgIGxldCBmaWxlcyA9IG5ldyBBcnJheSguLi5ldmVudC50YXJnZXQuZmlsZXMpXG4gICAgLyoq6ZyA6KaB562J5b6Fc2V0ZmlsZVNpemVVbml0c+aJp+ihjOWujOWQjuWcqOaJp+ihjOWFtuS7luaWueazlS0t6ZyA6KaB5a6M5ZaEICovXG4gICAgYXdhaXQgdGhpcy53YWl0RmlsZVRvQWRkVGFibGUoZmlsZXMpXG4gICAgdGhpcy5maWxlSGFuZGxpbmcoKVxuICB9XG5cbiAgLyoq562J5b6F5bCG5paH5Lu25pWw5o2u5Yqg5YWl5Yiw5paH5Lu26KGo5qC85pWw5o2u5LitICovXG4gIHdhaXRGaWxlVG9BZGRUYWJsZShmaWxlcykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5maWxlc1RhYmxlRGF0YS5wdXNoKC4uLmF3YWl0IHRoaXMuc2V0ZmlsZVNpemVVbml0cyhmaWxlcykpXG4gICAgICByZXNvbHZlKHRydWUpXG4gICAgfSlcbiAgfVxuXG4gIC8qKuWIoOmZpOaWh+S7tuihqOagvOeahOmhuSAqL1xuICBkZWxldGVGaWxlVGFibGVJdGVtKGluZGV4LCBpdGVtKSB7XG4gICAgdGhpcy5maWxlc1RhYmxlRGF0YS5zcGxpY2UoaW5kZXgsIDEpXG4gICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgIHRoaXMuZGVsZXRlVGhlVXBsb2FkZWRGaWxlcy5wdXNoKGl0ZW0pXG4gICAgfVxuICAgIHRoaXMuZmlsZUhhbmRsaW5nKClcbiAgfVxuXG4gIC8qKuaWh+S7tuWkhOeQhi3osIPnlKjlm57osIPlh73mlbAgKi9cbiAgZmlsZUhhbmRsaW5nKCkge1xuICAgIGxldCB0aGVGaWxlc1RvQmVVcGxvYWRlZCA9IHRoaXMuZmlsZXNUYWJsZURhdGEuZmlsdGVyKGVsID0+ICFlbC5pZClcbiAgICAvL+WIpOaWreWbvueJh+Wkp+Wwj+aYr+WQpui2hei/h+mZkOWIti3nlKjkuo7liKTmlq3ooajljZXmmK/lkKblhYHorrjmj5DkuqRcbiAgICBsZXQgaXNTdWJtaXQgPSAhdGhpcy5maWxlc1RhYmxlRGF0YS5zb21lKGVsID0+IGVsLnNpemUgPiB0aGlzLnNpemVMaW1pdCk7XG4gICAgdGhpcy5maWxlRGF0YUNoYW5nZS5lbWl0KHsgdGhlRmlsZXNUb0JlVXBsb2FkZWQsIGRlbGV0ZVRoZVVwbG9hZGVkRmlsZXM6IHRoaXMuZGVsZXRlVGhlVXBsb2FkZWRGaWxlcywgaXNTdWJtaXQgfSlcbiAgfVxuXG4gIC8qKuiuvue9ruWAvOaWh+S7tuWkp+Wwj+WNleS9jS8gKi9cbiAgYXN5bmMgc2V0ZmlsZVNpemVVbml0cyhmaWxlczogRmlsZVtdIHwgYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgbGV0IGZvcm1hdHRlZEZpbGVzID0gW11cbiAgICAgIGZpbGVzLmZvckVhY2goYXN5bmMgKGZpbGUpID0+IHtcbiAgICAgICAgZmlsZS5maWxlU2l6ZSA9IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSlcbiAgICAgICAgZm9ybWF0dGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICAvL+iuvue9rumAieaLqeWbvueJh+eahOacrOWcsHVybFxuICAgICAgICBpZiAoIWZpbGUuc3JjKSBmaWxlLnNyYyA9IGF3YWl0IHRoaXMuX0ZpbGVBcGlTZXJ2aWNlLmdldEltYWdlTGFjb2xCYXNlNjRVcmwoZmlsZSk7XG4gICAgICB9KTtcbiAgICAgIHJlc29sdmUoZmlsZXMpXG4gICAgfSlcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItMlwiPlxuICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgI2ZpbGVFZGl0IFttdWx0aXBsZV09XCJfbXVsdGlwbGVcIiBhY2NlcHQ9XCIuanBnLC5qcGVnLC5wbmcsLmdpZiwud2VicFwiKGNoYW5nZSk9XCJnZXRGaWxlQ2hhbmdlKCRldmVudClcIj5cbjwvZGl2PlxuXG48dGFibGUgY2xhc3M9XCJ0YWJsZVwiICpuZ0lmPVwiZmlsZXNUYWJsZURhdGEubGVuZ3RoPjBcIj5cbiAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0ZpbGVFeHBsb3Jlcjo6RmlsZU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snRmlsZUV4cGxvcmVyOjpGaWxlU2l6ZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj48L3RoPlxuICAgICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbGVzVGFibGVEYXRhO2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7aXRlbS5uYW1lfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiaXRlbS5zaXplID4gc2l6ZUxpbWl0XCI+e3snRmlsZUV4cGxvcmVyOjpFeGNlZWRzTWF4aW11bVNpemUnIHwgYWJwTG9jYWxpemF0aW9uOl9GaWxlQXBpU2VydmljZS5mb3JtYXRGaWxlU2l6ZShzaXplTGltaXQpfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0uZmlsZVNpemV9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBwLTAgYnRuLWxpZ2h0IFwiIChjbGljay5zdG9wKT1cImRlbGV0ZUZpbGVUYWJsZUl0ZW0oaSxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdHJhc2ggcC0yXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC90Ym9keT5cbjwvdGFibGU+Il19
|