@dignite-ng/expand.file-explorer 0.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.
- package/README.md +24 -0
- package/config/enums/index.d.ts +1 -0
- package/config/enums/route-names.d.ts +3 -0
- package/config/file-config.module.d.ts +8 -0
- package/config/index.d.ts +5 -0
- package/config/providers/index.d.ts +1 -0
- package/config/providers/route.provider.d.ts +8 -0
- package/config/public-api.d.ts +3 -0
- package/esm2022/config/dignite-ng-expand.file-explorer-config.mjs +5 -0
- package/esm2022/config/enums/index.mjs +2 -0
- package/esm2022/config/enums/route-names.mjs +2 -0
- package/esm2022/config/file-config.module.mjs +19 -0
- package/esm2022/config/providers/index.mjs +2 -0
- package/esm2022/config/providers/route.provider.mjs +24 -0
- package/esm2022/config/public-api.mjs +4 -0
- package/esm2022/dignite-ng-expand.file-explorer.mjs +5 -0
- package/esm2022/lib/components/dome/file-dome.component.mjs +32 -0
- package/esm2022/lib/components/file-edit/file-edit.component.mjs +102 -0
- package/esm2022/lib/components/file-modal/file-modal.component.mjs +271 -0
- package/esm2022/lib/components/file-modal-tree/file-modal-tree.component.mjs +195 -0
- package/esm2022/lib/components/file-picker/file-picker.component.mjs +57 -0
- package/esm2022/lib/components/index.mjs +6 -0
- package/esm2022/lib/file-explorer-routing.module.mjs +25 -0
- package/esm2022/lib/file-explorer.module.mjs +83 -0
- package/esm2022/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.mjs +48 -0
- package/esm2022/lib/proxy/dignite/file-explorer/directories/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/file-explorer/directories/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/file-explorer/files/file-descriptor.service.mjs +60 -0
- package/esm2022/lib/proxy/dignite/file-explorer/files/index.mjs +3 -0
- package/esm2022/lib/proxy/dignite/file-explorer/files/models.mjs +2 -0
- package/esm2022/lib/proxy/dignite/file-explorer/index.mjs +4 -0
- package/esm2022/lib/proxy/dignite/index.mjs +3 -0
- package/esm2022/lib/proxy/index.mjs +5 -0
- package/esm2022/lib/proxy/microsoft/asp-net-core/index.mjs +3 -0
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/index.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/asp-net-core/mvc/models.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/extensions/index.mjs +3 -0
- package/esm2022/lib/proxy/microsoft/extensions/primitives/index.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/extensions/primitives/models.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/index.mjs +5 -0
- package/esm2022/lib/proxy/microsoft/net/http/headers/index.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/net/http/headers/models.mjs +2 -0
- package/esm2022/lib/proxy/microsoft/net/http/index.mjs +3 -0
- package/esm2022/lib/proxy/microsoft/net/index.mjs +3 -0
- package/esm2022/lib/proxy/volo/abp/content/index.mjs +2 -0
- package/esm2022/lib/proxy/volo/abp/content/models.mjs +2 -0
- package/esm2022/lib/proxy/volo/abp/index.mjs +3 -0
- package/esm2022/lib/proxy/volo/index.mjs +3 -0
- package/esm2022/lib/services/file-api.service.mjs +66 -0
- package/esm2022/lib/services/index.mjs +2 -0
- package/esm2022/public-api.mjs +8 -0
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs +47 -0
- package/fesm2022/dignite-ng-expand.file-explorer-config.mjs.map +1 -0
- package/fesm2022/dignite-ng-expand.file-explorer.mjs +972 -0
- package/fesm2022/dignite-ng-expand.file-explorer.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/dome/file-dome.component.d.ts +19 -0
- package/lib/components/file-edit/file-edit.component.d.ts +38 -0
- package/lib/components/file-modal/file-modal.component.d.ts +93 -0
- package/lib/components/file-modal-tree/file-modal-tree.component.d.ts +66 -0
- package/lib/components/file-picker/file-picker.component.d.ts +23 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/file-explorer-routing.module.d.ts +7 -0
- package/lib/file-explorer.module.d.ts +18 -0
- package/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.d.ts +17 -0
- package/lib/proxy/dignite/file-explorer/directories/index.d.ts +2 -0
- package/lib/proxy/dignite/file-explorer/directories/models.d.ts +29 -0
- package/lib/proxy/dignite/file-explorer/files/file-descriptor.service.d.ts +20 -0
- package/lib/proxy/dignite/file-explorer/files/index.d.ts +2 -0
- package/lib/proxy/dignite/file-explorer/files/models.d.ts +50 -0
- package/lib/proxy/dignite/file-explorer/index.d.ts +3 -0
- package/lib/proxy/dignite/index.d.ts +2 -0
- package/lib/proxy/index.d.ts +4 -0
- package/lib/proxy/microsoft/asp-net-core/index.d.ts +2 -0
- package/lib/proxy/microsoft/asp-net-core/mvc/index.d.ts +1 -0
- package/lib/proxy/microsoft/asp-net-core/mvc/models.d.ts +10 -0
- package/lib/proxy/microsoft/extensions/index.d.ts +2 -0
- package/lib/proxy/microsoft/extensions/primitives/index.d.ts +1 -0
- package/lib/proxy/microsoft/extensions/primitives/models.d.ts +8 -0
- package/lib/proxy/microsoft/index.d.ts +4 -0
- package/lib/proxy/microsoft/net/http/headers/index.d.ts +1 -0
- package/lib/proxy/microsoft/net/http/headers/models.d.ts +6 -0
- package/lib/proxy/microsoft/net/http/index.d.ts +2 -0
- package/lib/proxy/microsoft/net/index.d.ts +2 -0
- package/lib/proxy/volo/abp/content/index.d.ts +1 -0
- package/lib/proxy/volo/abp/content/models.d.ts +5 -0
- package/lib/proxy/volo/abp/index.d.ts +2 -0
- package/lib/proxy/volo/index.d.ts +2 -0
- package/lib/services/file-api.service.d.ts +14 -0
- package/lib/services/index.d.ts +1 -0
- package/package.json +40 -0
- package/public-api.d.ts +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dignite-ng-expand.file-explorer.mjs","sources":["../../../projects/file-explorer/src/lib/services/file-api.service.ts","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.ts","../../../projects/file-explorer/src/lib/components/file-edit/file-edit.component.html","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/files/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/proxy/dignite/file-explorer/directories/file-descriptor.service.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.ts","../../../projects/file-explorer/src/lib/components/file-modal-tree/file-modal-tree.component.html","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.ts","../../../projects/file-explorer/src/lib/components/file-modal/file-modal.component.html","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.ts","../../../projects/file-explorer/src/lib/components/file-picker/file-picker.component.html","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.ts","../../../projects/file-explorer/src/lib/components/dome/file-dome.component.html","../../../projects/file-explorer/src/lib/file-explorer-routing.module.ts","../../../projects/file-explorer/src/lib/file-explorer.module.ts","../../../projects/file-explorer/src/public-api.ts","../../../projects/file-explorer/src/dignite-ng-expand.file-explorer.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileApiService {\n\n constructor() { }\n\n /**转换文件大小单位 输入k */\n formatFileSize(bytes: any) {\n const units = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n // 保留两位小数,四舍五入\n size = size.toFixed(1)\n return `${size} ${units[unitIndex]}`;\n }\n /**获取图片的本地连接 */\n getImageLacolBase64Url(file: File) {\n return new Promise((resolve, rejects) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = error => rejects(error);\n })\n }\n /**\n * 深拷贝--方法\n * $api.deepClone() */\n deepClone(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n const result = Array.isArray(obj) ? [] : {};\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n if (obj[key] instanceof Date) {\n result[key] = new Date(obj[key].getTime());\n } else if (obj[key] instanceof RegExp) {\n result[key] = new RegExp(obj[key]);\n } else {\n result[key] = this.deepClone(obj[key]);\n }\n } else {\n result[key] = obj[key];\n }\n }\n }\n return result;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss']\n})\nexport class FileEditComponent {\n constructor(\n public _FileApiService: FileApiService,\n ) { }\n\n /**是否多选 */\n _multiple: boolean = true\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n /**文件数据--已上传的数据 */\n _fileData: any[] = []\n @Input()\n public set fileData(v: any[]) {\n this._fileData = v;\n if (v.length > 0) {\n this.getFileChange({ target: { files: v } })\n }\n }\n /** 跟随表单提交--已提交的数据,或选择的数据源--回调*/\n @Output() fileDataChange = new EventEmitter()\n\n /**文件大小限制 \n * @param 1mb\n */\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n\n /**文件表格数据 */\n filesTableData: any[] = []\n /** 待删除已上传的文件们*/\n deleteTheUploadedFiles: any[] = []\n\n /**获取文件选择框的元素 */\n @ViewChild('fileEdit', { static: true }) fileEdit: ElementRef;\n\n\n /**获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n /**需要等待setfileSizeUnits执行完后在执行其他方法--需要完善 */\n await this.waitFileToAddTable(files)\n this.fileHandling()\n }\n\n /**等待将文件数据加入到文件表格数据中 */\n waitFileToAddTable(files) {\n return new Promise(async (resolve, rejects) => {\n this.filesTableData.push(...await this.setfileSizeUnits(files))\n resolve(true)\n })\n }\n\n /**删除文件表格的项 */\n deleteFileTableItem(index, item) {\n this.filesTableData.splice(index, 1)\n if (item.id) {\n this.deleteTheUploadedFiles.push(item)\n }\n this.fileHandling()\n }\n\n /**文件处理-调用回调函数 */\n fileHandling() {\n let theFilesToBeUploaded = this.filesTableData.filter(el => !el.id)\n //判断图片大小是否超过限制-用于判断表单是否允许提交\n let isSubmit = !this.filesTableData.some(el => el.size > this.sizeLimit);\n this.fileDataChange.emit({ theFilesToBeUploaded, deleteTheUploadedFiles: this.deleteTheUploadedFiles, isSubmit })\n }\n\n /**设置值文件大小单位/ */\n async setfileSizeUnits(files: File[] | any[]): Promise<any> {\n return new Promise((resolve, rejects) => {\n let formattedFiles = []\n files.forEach(async (file) => {\n file.fileSize = this._FileApiService.formatFileSize(file.size)\n formattedFiles.push(file)\n //设置选择图片的本地url\n if (!file.src) file.src = await this._FileApiService.getImageLacolBase64Url(file);\n });\n resolve(files)\n })\n }\n\n}\n","<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>","import type { CreateFileInput, FileContainerConfigurationDto, FileDescriptorDto, GetFilesInput, ImageResizeInput, UpdateFileInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\nimport type { FileResult } from '../../../microsoft/asp-net-core/mvc/models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\r\n body: input.file,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n download = (containerName: string, blobName: string, fileName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileResult>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/download/${containerName}/${blobName}`,\r\n params: { fileName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/files/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getFileContainerConfiguration = (containerName: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileContainerConfigurationDto>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files/configuration',\r\n params: { containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetFilesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<FileDescriptorDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/files',\r\n params: { containerName: input.containerName, directoryId: input.directoryId, creatorId: input.creatorId, filter: input.filter, entityId: input.entityId, sorting: input.sorting, skipCount: input.skipCount, maxResultCount: input.maxResultCount },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getStream = (containerName: string, blobName: string, imageResize?: ImageResizeInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, Blob>({\r\n method: 'GET',\r\n responseType: 'blob',\r\n url: `/api/file-explorer/files/${containerName}/${blobName}`,\r\n params: { width: imageResize.width, height: imageResize.height },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateFileInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, FileDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/files/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import type { CreateDirectoryInput, DirectoryDescriptorDto, DirectoryDescriptorInfoDto, GetDirectoriesInput, MoveDirectoryInput, UpdateDirectoryInput } from './models';\r\nimport { RestService, Rest } from '@abp/ng.core';\r\nimport type { PagedResultDto } from '@abp/ng.core';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileDescriptorService {\r\n apiName = 'FileExplorer';\r\n \r\n\r\n create = (input: CreateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'POST',\r\n url: '/api/file-explorer/directories',\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n delete = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, void>({\r\n method: 'DELETE',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n get = (id: string, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'GET',\r\n url: `/api/file-explorer/directories/${id}`,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n getList = (input: GetDirectoriesInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, PagedResultDto<DirectoryDescriptorInfoDto>>({\r\n method: 'GET',\r\n url: '/api/file-explorer/directories',\r\n params: { containerName: input.containerName },\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n move = (id: string, input: MoveDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}/move`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n \r\n\r\n update = (id: string, input: UpdateDirectoryInput, config?: Partial<Rest.Config>) =>\r\n this.restService.request<any, DirectoryDescriptorDto>({\r\n method: 'PUT',\r\n url: `/api/file-explorer/directories/${id}`,\r\n body: input,\r\n },\r\n { apiName: this.apiName,...config });\r\n\r\n constructor(private restService: RestService) {}\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NzFormatEmitEvent } from 'ng-zorro-antd/tree';\nimport * as DescriptorService from '../../proxy/dignite/file-explorer/directories';\nimport { ToasterService } from '@abp/ng.theme.shared';\nimport { NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';\nimport { of } from 'rxjs';\nimport { FileApiService } from '../../services/file-api.service';\nimport { LocalizationService } from '@abp/ng.core';\nvar that;\n@Component({\n selector: 'fe-file-modal-tree',\n templateUrl: './file-modal-tree.component.html',\n styleUrls: ['./file-modal-tree.component.scss']\n})\nexport class FileModalTreeComponent {\n constructor(\n private _DescriptorService: DescriptorService.FileDescriptorService,\n private fb: FormBuilder,\n private toaster: ToasterService,\n public _FileApiService: FileApiService,\n public _LocalizationService: LocalizationService,\n ) {\n that = this\n }\n\n /**文件分组列表 */\n fileGroupList: any[] = [];\n\n /**选择的tree节点 */\n _theSelectedTreeNode: any = '';\n @Input()\n public set theSelectedTreeNode(v: any) {\n this._theSelectedTreeNode = v;\n if (v.length > 0) {\n this.loadData()\n }\n }\n\n /**正在编辑的节点 */\n theNodeBeingEdited: any = '';\n\n /**已展开的节点 */\n anExpandedNode: any[] = [];\n\n /**图片容器 */\n _fileContainerName: string;\n\n /**tree节点选择回调 */\n @Output() nodeClick = new EventEmitter();\n\n\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n handleClick = (event) => event.stopPropagation();\n\n loadData() {\n if (this._fileContainerName) {\n this.getFileGroupList()\n }\n }\n\n\n /**获取文件分组 */\n getFileGroupList() {\n this._DescriptorService.getList({\n containerName: this._fileContainerName,\n }).subscribe(async (res) => {\n this.fileGroupList = await this.setTheValueOfTheNodeRecursively(res.items)\n })\n }\n \n /**递归设置节点的值 */\n setTheValueOfTheNodeRecursively(array: any[]): any {\n return new Promise((reslove, rejects) => {\n array.forEach((el) => {\n el.title = el.name\n el.key = el.id\n el.expanded = this.anExpandedNode.includes(el.key)\n if (el.children.length > 0) {\n this.setTheValueOfTheNodeRecursively(el.children)\n }\n })\n reslove(array)\n })\n }\n\n /**tree-拖拽 */\n nzEvent(event: NzFormatEmitEvent): void {\n }\n\n /**tree-拖拽 -验证*/\n beforeDrop(arg: NzFormatBeforeDropEvent) {\n if (arg.pos === 0 || arg.pos === 1) {\n that._DescriptorService.move(arg.dragNode.key, {\n \"parentId\": arg.pos === 1 ? (arg.node.parentNode?.key||'') : arg.node.key,\n \"order\": arg.pos === 1 ? arg.node.origin.order + 1 : arg.node.origin.children.length + 1\n }).subscribe(res => {\n // that.toaster.success(\"拖拽完成\");\n that.getFileGroupList()\n })\n return of(true)\n } else {\n return of(false);\n }\n }\n\n /**tree--选择节点 */\n activeNode(event) {\n this._theSelectedTreeNode = event.node\n this.nodeClick.emit(event.node)\n }\n\n /**判断节点是否选中 */\n isNodeSelected = (el) => el.key === this._theSelectedTreeNode?.key\n\n /**点击展开树节点图标触发 */\n nzExpandChange(event) {\n let anExpandedNode = this.anExpandedNode\n if (anExpandedNode.includes(event.node.key)) {\n anExpandedNode = anExpandedNode.filter(key => key !== event.node.key)\n } else {\n anExpandedNode.push(event.node.key)\n }\n this.anExpandedNode = anExpandedNode\n }\n\n\n /**增加分组 */\n addDescriptorBtn(items: any = '', edit = false) {\n this.ModalDescriptorOpen = true\n this.ModalDescriptorForm = this.fb.group({\n containerName: [this._fileContainerName || '', Validators.required],\n name: ['', Validators.required],\n parentId: [items?.key || '', Validators.required],\n })\n /**编辑 */\n if (edit) {\n this.theNodeBeingEdited = items.origin\n this.ModalDescriptorForm.patchValue({\n name: items.origin.name\n })\n }\n }\n\n /**删除分组 */\n deleteDescriptorBtn(node) {\n this._DescriptorService.delete(node.key).subscribe(res => {\n // this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));\n this.ModalDescriptorOpen = false\n if (this.theNodeBeingEdited.key == node.key) this.theNodeBeingEdited = ''\n this.getFileGroupList()\n })\n }\n\n \n\n /**分组 */\n /**模态框-状态-是否打开 */\n ModalDescriptorOpen: boolean = false\n\n /**模态框-descriptor-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalDescriptorBusy: boolean = false\n\n /**模态框-descriptor-表单 */\n ModalDescriptorForm: FormGroup | undefined;\n \n /**模态框-descriptor-表单--控件模板-动态赋值表单控件 */\n @ViewChild('ModalFormDescriptorSubmit', { static: false }) ModalFormDescriptorSubmit: ElementRef;\n\n /**模态框-descriptor-状态改变回调 */\n ModalDescriptorVisibleChange(event) {\n if (!event) {\n this.ModalDescriptorForm = undefined\n this.theNodeBeingEdited = ''\n return\n }\n }\n\n /**f分组模态框保存 */\n createOrEditSave() {\n let input = this.ModalDescriptorForm.value\n if (this.theNodeBeingEdited) {\n this._DescriptorService.update(this.theNodeBeingEdited.key, input).subscribe(res => {\n // this.toaster.success(\"保存成功\");\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n return\n }\n this._DescriptorService.create(input).subscribe(res => {\n // this.toaster.success(\"保存成功\");\n this.ModalDescriptorOpen = false\n this.getFileGroupList()\n })\n }\n\n\n\n\n}\n","<div class=\"card-header p-0 mb-1 d-flex justify-content-between align-items-center\">\n <h6 class=\"h6 mb-0\">{{'FileExplorer::MyDirectories' | abpLocalization}}</h6>\n <button type=\"button\" class=\"btn btn-light btn-sm ms-2\" (click.stop)=\"addDescriptorBtn()\"><i\n class=\"fas fa-plus-circle\" aria-hidden=\"true\"></i></button>\n</div>\n<nz-tree [nzData]=\"fileGroupList\" class=\"ng-zorro-antd-tree\" nzDraggable nzBlockNode nzShowIcon\n [nzExpandedIcon]=\"multiExpandedIconTpl\" (nzOnDrop)=\"nzEvent($event)\" [nzBeforeDrop]=\"beforeDrop\"\n (nzClick)=\"activeNode($event)\" (nzExpandChange)=\"nzExpandChange($event)\" [nzTreeTemplate]=\"nzTreeTemplate\">\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div class=\"custom-node d-inline-block ng-star-inserted dropdown\" [title]=\"node.title\">\n <div #dropdown=\"ngbDropdown\" class=\"d-inline-block\" ngbDropdown placement=\"bottom\" container=\"body\">\n <div class=\"btn-group\" [class.selected]=\"isNodeSelected(node)\">\n <button class=\"btn btn-sm p-0 px-1\">{{ node.title }}</button>\n <button class=\"btn btn-sm p-0\" (click)=\"handleClick($event)\" ngbDropdownToggle\n [class.dropdown-toggle]=\"false\" aria-hidden=\"true\">\n <i class=\"fas fa-caret-down text-muted p-1\"></i>\n </button>\n </div>\n <div ngbDropdownMenu>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node)\">{{'FileExplorer::NewDirectory' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"addDescriptorBtn(node,true)\">{{'AbpUi::Edit' | abpLocalization}}</button>\n <button ngbDropdownItem\n (click.stop)=\"deleteDescriptorBtn(node)\">{{'AbpUi::Delete' | abpLocalization}}</button>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <ng-container *ngIf=\"node.children.length > 0\">\n <i [class]=\"node.isExpanded ? 'fas fa-caret-down' : 'fas fa-caret-right'\"></i>\n </ng-container>\n </ng-template>\n</nz-tree>\n\n\n<abp-modal [(visible)]=\"ModalDescriptorOpen\" [busy]=\"ModalDescriptorBusy\"\n (visibleChange)=\"ModalDescriptorVisibleChange($event)\">\n <ng-template #abpHeader>\n <h3>{{theNodeBeingEdited?('AbpUi::Edit' | abpLocalization):('FileExplorer::NewDirectory' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"ModalDescriptorForm; else loaderRef\">\n <form class=\"sites-modal-form\" #myForm=\"ngForm\" [formGroup]=\"ModalDescriptorForm\"\n (ngSubmit)=\"createOrEditSave()\">\n <button type=\"submit\" #ModalFormDescriptorSubmit style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'FileExplorer::DirectoryName' | abpLocalization}}</label>\n <input type=\"email\" class=\"form-control\" formControlName=\"name\">\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\"\n (click)=\"ModalFormDescriptorSubmit.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport * as FileService from '../../proxy/dignite/file-explorer/files';\nimport { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';\nimport { PagedResultDto, ABP, ListService, Rest, RestService, LocalizationService, LIST_QUERY_DEBOUNCE_TIME } from '@abp/ng.core';\nimport { FileDescriptorDto, GetFilesInput } from '../../proxy/dignite/file-explorer/files';\nimport { FileApiService } from '../../services/file-api.service';\nimport { SelectionType } from '@swimlane/ngx-datatable';\nvar that\n@Component({\n selector: 'fe-file-modal',\n templateUrl: './file-modal.component.html',\n styleUrls: ['./file-modal.component.scss'],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ]\n})\nexport class FileModalComponent {\n\n constructor(\n private _FileService: FileService.FileDescriptorService,\n private toaster: ToasterService,\n public readonly list: ListService,\n public _FileApiService: FileApiService,\n private restService: RestService,\n private confirmation: ConfirmationService,\n private _LocalizationService: LocalizationService,\n ) {\n that = this\n }\n\n /**图片容器 */\n _fileContainerName: string\n @Input()\n public set fileContainerName(v: string) {\n if (v) {\n this._fileContainerName = v;\n this.loadData()\n }\n }\n\n /**是否多选 */\n _multiple: boolean = true\n @Input()\n public set multiple(v: boolean) {\n this._multiple = v;\n if (v) { }\n }\n\n /**文件大小限制 \n* @param 1mb\n*/\n sizeLimit: number = 1048576\n @Input()\n public set limit(v: number) {\n this.sizeLimit = v;\n }\n /**父组件传递的模态框状态 */\n @Input()\n public set visible(v: boolean) {\n this.ModalOpen = v;\n if (v) {\n this.loadData()\n }\n }\n\n /**模态框状态回调 */\n @Output() visibleChange = new EventEmitter()\n\n\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */\n ModalBusy: boolean = false\n\n\n\n /**模态框-状态改变回调 */\n ModalVisibleChange(event) {\n if (!event) {\n this.visibleChange.emit(event)\n return\n }\n }\n\n /**模态框保存 */\n modalSave() {\n let selectedTablearr = this._FileApiService.deepClone(this.selectedTable)\n this.selectFilefn.emit(selectedTablearr)\n\n this.ModalVisibleChange(false)\n }\n /**dignite-file-modal-tree */\n /**选择的tree节点 */\n _theSelectedTreeNode: any = ''\n\n /**初始化数据 */\n loadData() {\n if (this.ModalOpen && this._fileContainerName) {\n this.hookToQuery()\n }\n }\n\n /**tree-节点选择 */\n _nodeClick(event) {\n this._theSelectedTreeNode = event\n this.list.get()\n }\n\n /**图片上传-要上传图片的状态文件列表 */\n uploadPictureStatusList: any[] = []\n\n /**图片上传-获取文件信息改变 */\n async getFileChange(event) {\n let files = new Array(...event.target.files)\n this.uploadPictureStatusList = files\n for (const file of files) {\n if (file.size > this.sizeLimit) {\n this.setuploadPictureStatus(file, 2)\n continue;\n }\n await this.uploadingFile(file).then(() => {\n this.setuploadPictureStatus(file, 1)\n this.list.get()\n }).catch(() => {\n this.setuploadPictureStatus(file, 2)\n }); // 等待每个文件上传完成 \n }\n this.list.get()\n let isSubmit = !this.uploadPictureStatusList.some(el => el.status == 2);\n if (isSubmit) {\n // this.toaster.success(\"上传完成\");\n setTimeout(() => {\n this.uploadPictureStatusList = []\n }, 6000)\n }\n }\n\n /**图片上传-设置uploadPictureStatusList的状态 */\n setuploadPictureStatus(file, type) {\n this.uploadPictureStatusList.map(el => {\n if (el == file) el.status = type\n })\n }\n\n\n /**图片上传-递归按顺序上传 */\n uploadingFile(file) {\n return new Promise((resolve, rejects) => {\n let formData = new FormData();\n formData.append('file', file, file.name);\n this.createFile({\n file: formData,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode?.key || '',\n entityId: ''\n }).subscribe(res => {\n resolve(true)\n }, (err) => {\n rejects(false)\n })\n })\n }\n\n\n /**文件表格-数据*/\n data: PagedResultDto<FileDescriptorDto> = {\n items: [],\n totalCount: 0,\n };\n\n /**文件表格-条件*/\n filters = {} as GetFilesInput;\n\n /**文件表格-表格自带选择类型 */\n SelectionType = SelectionType;\n\n /**文件表格-选择的表格数据项 */\n selectedTable = []\n\n /**已选定的文件 */\n @Input() selectPickerFile: any[]\n\n ngOnChanges(changes: SimpleChanges): void {\n //Called before any other lifecycle hook. Use it to inject dependencies, but avoid any serious work here.\n //Add '${implements OnChanges}' to the class.\n this.selectedTable = this._FileApiService.deepClone(this.selectPickerFile)\n }\n /**当前选择的table项 id */\n nowSelectId: any = ''\n\n /**选择文件回调 */\n // @Output() selectedFileChange = new EventEmitter<any[]>()\n @Output() selectFilefn = new EventEmitter<any[]>()\n\n /**文件表格-获取表格数据 */\n hookToQuery() {\n const getData = (query: ABP.PageQueryParams) => this._FileService.getList({\n ...query,\n ...this.filters,\n containerName: this._fileContainerName,\n directoryId: this._theSelectedTreeNode.key\n });\n const setData = (list: PagedResultDto<FileDescriptorDto>) => (this.data = list);\n this.list.hookToQuery(getData).subscribe(setData);\n }\n\n /**文件表格-查看所有分组的文件数据 */\n lookAllFile() {\n this._theSelectedTreeNode = ''\n this.list.get()\n }\n\n /**选择表格项 */\n onSelectTableItem({ selected }) {\n this.selectedTable = this._FileApiService.deepClone(selected)\n let selectedTablearr = this.removeDuplicatesById(this.selectedTable)\n if (selected.length > selectedTablearr.length) {\n selectedTablearr = selectedTablearr.filter(el => el.id !== this.nowSelectId)\n }\n this.selectedTable = selectedTablearr\n }\n\n /**删除数组中重复的项 */\n removeDuplicatesById(array) {\n const seenIds = {};\n return array.filter(item => {\n if (!seenIds[item.id]) {\n seenIds[item.id] = true;\n return true;\n }\n return false;\n });\n }\n\n /**一个布尔or函数,可用于检查是否要根据条件选择特定行。 */\n selectCheck = (row, column, value) => {\n this.nowSelectId = row.id\n return true;\n }\n\n /**判断row是否选中 */\n selectedcheckbox = (id) => {\n return this.selectedTable.some(el => el.id == id)\n }\n\n\n\n /**删除图片 */\n deleteFile(file) {\n\n this.confirmation\n .warn('', { key: '', defaultValue: this._LocalizationService.instant(`AbpUi::ItemWillBeDeletedMessage`) })\n .subscribe((status: Confirmation.Status) => {\n if (status == 'confirm') {\n this._FileService.delete(file.id).subscribe(res => {\n this.toaster.success(this._LocalizationService.instant(`AbpUi::SuccessfullyDeleted`));\n this.list.get()\n })\n }\n });\n }\n\n /**关闭文件状态弹窗 */\n closeFileStatusModal() {\n this.uploadPictureStatusList = []\n }\n\n /**创建图片的接口,代理中的file类型不匹配,切换为any类型 */\n createFile = (input: any, config?: Partial<Rest.Config>) =>\n this.restService.request<any, FileDescriptorDto>({\n method: 'POST',\n url: '/api/file-explorer/files',\n params: { containerName: input.containerName, cellName: input.cellName, directoryId: input.directoryId, entityId: input.entityId },\n body: input.file,\n },\n { apiName: 'FileExplorer', ...config });\n}\n","<abp-modal [(visible)]=\"ModalOpen\" (visibleChange)=\"ModalVisibleChange($event)\"\n [options]=\"{ size: 'xl', scrollable: false }\">\n <ng-template #abpHeader>\n <h3>{{'FileExplorer::FileExplorer' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <div class=\"row file-explorer-modal-body file-modal\">\n <div class=\"col-3\" style=\"overflow: auto; height: calc(100vh - 240px)\">\n <fe-file-modal-tree [theSelectedTreeNode]=\"_theSelectedTreeNode\" (nodeClick)=\"_nodeClick($event)\"\n [fileContainerName]=\"_fileContainerName\"></fe-file-modal-tree>\n </div>\n <div class=\"col-9\" style=\"height: calc(100vh - 240px)\">\n <div class=\"mb-2 d-flex justify-content-between align-items-center\">\n <div class=\"btn-link\" role=button style=\"flex: 2\" (click)=\"lookAllFile()\">{{'FileExplorer::AllFiles' | abpLocalization}}</div>\n <div class=\"input-group form-file\" style=\"flex: 2\">\n <input type=\"file\" class=\"form-control\" #fileEdit [multiple]=\"_multiple\" accept=\".jpg,.jpeg,.png,.gif,.webp\"\n (change)=\"getFileChange($event)\" />\n </div>\n </div>\n <div>\n <ngx-datatable class=\"material container-height\" [rows]=\"data.items\" [list]=\"list\" columnMode=\"flex\"\n [columns]=\"columns\" [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [scrollbarV]=\"true\"\n [virtualization]=\"false\" [externalPaging]=\"true\" [count]=\"data.totalCount\" [selected]=\"selectedTable\"\n [selectCheck]=\"selectCheck\" [selectionType]=\"SelectionType.multiClick\" (select)=\"onSelectTableItem($event)\">\n <ngx-datatable-column [width]=\"50\" prop=\"id\" [sortable]=\"false\" [canAutoResize]=\"false\" [draggable]=\"false\"\n [resizeable]=\"false\">\n <ng-template ngx-datatable-header-template let-value=\"value\" let-allRowsSelected=\"allRowsSelected\"\n let-selectFn=\"selectFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"allRowsSelected\"\n (change)=\"selectFn(!allRowsSelected)\" />\n </ng-template>\n <ng-template ngx-datatable-cell-template let-row=\"row\" let-value=\"value\" let-isSelected=\"isSelected\"\n let-onCheckboxChangeFn=\"onCheckboxChangeFn\">\n <input type=\"checkbox\" class=\"form-check-input\" [checked]=\"selectedcheckbox(value)\"\n (change)=\"onCheckboxChangeFn($event)\" />\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileName' | abpLocalization\" prop=\"name\" [flexGrow]=\"4\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::FileSize' | abpLocalization\" prop=\"size\" [flexGrow]=\"1.5\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ _FileApiService.formatFileSize(value) }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::Directory' | abpLocalization\" prop=\"cellName\" [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [name]=\"'FileExplorer::CreationTime' | abpLocalization\" prop=\"creationTime\" [flexGrow]=\"2\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n {{ value | date : 'YYYY/MM/dd HH:m:s' }}\n </ng-template>\n </ngx-datatable-column>\n <ngx-datatable-column [flexGrow]=\"1\">\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\n <button class=\"btn btn-sm btn-light p-0\" (click.stop)=\"deleteFile(row)\">\n <i class=\"fas fa-trash text-primary p-2\"></i>\n </button>\n </ng-template>\n </ngx-datatable-column>\n </ngx-datatable>\n </div>\n <div *ngIf=\"uploadPictureStatusList.length > 0\"\n class=\"position-fixed bottom-0 end-0 shadow-lg file-status-modal border bg-white p-1 m-5\"\n style=\"border-radius: 10px\">\n <div class=\"card\">\n <div class=\"card-header d-flex align-items-center justify-content-between p-0 py-1 border-bottom\">\n <div>{{'FileExplorer::UploadFiles' | abpLocalization}}</div>\n <button type=\"button\" class=\"btn-close\" aria-label=\"Close\" (click.stop)=\"closeFileStatusModal()\"></button>\n </div>\n <div class=\"card-body\">\n <table class=\"table\">\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 uploadPictureStatusList; 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\">\n {{'FileExplorer::ExceedsMaximumSize' | abpLocalization:_FileApiService.formatFileSize(sizeLimit)}}\n </div>\n </th>\n <td>{{ item.fileSize }}</td>\n <td>\n <i *ngIf=\"item.status == 1\" class=\"fas fa-check text-primary\"></i>\n <i *ngIf=\"item.status == 2\" class=\"fas fa-times-circle text-danger\"></i>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"modalSave()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FileApiService } from '../../services/file-api.service';\n\n@Component({\n selector: 'fe-file-picker',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss']\n})\nexport class FilePickerComponent implements OnChanges{\n\n\n constructor(\n private _FileApiService: FileApiService,\n ) {\n }\n\n\n /**图片容器 */\n _fileContainerName: string = 'images'\n @Input()\n public set fileContainerName(v: string) {\n this._fileContainerName = v;\n }\n\n /**已选定的文件 */\n @Input() selectFormFile:any[]\n \n ngOnChanges(changes: SimpleChanges): void {\n let selectFormFilengOnChanges=changes.selectFormFile['currentValue']\n if(selectFormFilengOnChanges.length>0){\n this._fileShowTable=selectFormFilengOnChanges\n }\n }\n\n @Output() selectedFileChange = new EventEmitter()\n\n _fileShowTable: any[] = []\n\n /**表格选择的文件回调 */\n _selectFilefn(event: any[]) {\n let _fileShowTable= this._FileApiService.deepClone(event)\n this._fileShowTable =_fileShowTable\n this.selectFormFile=_fileShowTable\n this.selectedFileChange.emit(_fileShowTable)\n }\n\n /**模态框-状态-是否打开 */\n ModalOpen: boolean = false\n\n /**删除文件表格项 */\n deleteFileTableItem(i, file) {\n this._fileShowTable.splice(i, 1)\n this.selectFormFile=this._fileShowTable\n this.selectedFileChange.emit([])\n this.selectedFileChange.emit(this.selectFormFile)\n }\n\n}\n","<button class=\"btn btn-sm btn-primary ms-2\" type=\"button\" (click.stop)=\"ModalOpen = true\">{{'FileExplorer::SelectFile' | abpLocalization}}</button>\n<fe-file-modal [(visible)]=\"ModalOpen\" [selectPickerFile]=\"selectFormFile\" (selectFilefn)=\"_selectFilefn($event)\" [fileContainerName]=\"_fileContainerName\"></fe-file-modal>\n<table class=\"table\" *ngIf=\"_fileShowTable.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 _fileShowTable;let i =index\">\n <tr>\n <th scope=\"row\">\n <div>{{item.name}}</div>\n </th>\n <td >{{_FileApiService.formatFileSize(item.size)}}</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>\n\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fe-file-dome',\n templateUrl: './file-dome.component.html',\n styleUrls: ['./file-dome.component.scss']\n})\nexport class FileDomeComponent {\n\n /**跟随表单提交--已提交的数据,或选择的数据源 */\n fileSubmittedData: any[] = []\n\n /**跟随表单提交--待提交的数据\n * \n * @param 待上传的文件们\n * @param 待删除已上传的文件们\n */\n fileDataToBeSubmitted: any\n\n\n /**跟随表单提交--数据发生改变回调 */\n fileDataChange(event) {\n this.fileDataToBeSubmitted = event\n }\n\n /**选择文件-弹窗的-已选定的文件 */\n selectedFileGroup:any[]=[]\n\n /**_selectedFile改变回调 */\n _selectedFileChange(event) {\n this.selectedFileGroup = event\n }\n}\n","<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>","import { NgModule } from '@angular/core';\nimport { Router, RouterModule, Routes } from '@angular/router';\nimport { FileDomeComponent } from './components/dome/file-dome.component';\n\nconst routes: Routes = [\n {\n path: 'file-dome',\n component: FileDomeComponent\n},\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class FileExplorerRoutingModule { \n \n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, LIST_QUERY_DEBOUNCE_TIME, ListService } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NzTreeModule } from 'ng-zorro-antd/tree';\nimport { NgxValidateCoreModule } from '@ngx-validate/core';\nimport { FileExplorerRoutingModule } from './file-explorer-routing.module';\nimport { FileEditComponent, FilePickerComponent, FileModalComponent, FileModalTreeComponent, FileDomeComponent } from './components';\n@NgModule({\n declarations: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent,\n ],\n imports: [\n FormsModule,\n CoreModule,\n ThemeSharedModule,\n ReactiveFormsModule,\n NgbDropdownModule,\n NzTreeModule,\n NgxValidateCoreModule,\n FileExplorerRoutingModule,\n ],\n exports: [\n FileEditComponent,\n FilePickerComponent,\n FileModalComponent,\n FileModalTreeComponent,\n FileDomeComponent\n ],\n providers: [\n // [Required]\n ListService,\n // [Optional]\n // Provide this token if you want a different debounce time.\n // Default is 300. Cannot be 0. Any value below 100 is not recommended.\n { provide: LIST_QUERY_DEBOUNCE_TIME, useValue: 500 },\n ],\n})\nexport class FileExplorerModule {\n\n}\n","/*\n * Public API Surface of file-explorer\n */\n\n\nexport * from './lib/file-explorer.module';\nexport * from './lib/components';\nexport * from './lib/services';\nexport * from './lib/proxy';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FileApiService","i1","FileDescriptorService","that","i1.FileDescriptorService","i2","i3","i4.FileApiService","i5","i6","i7.FileModalTreeComponent","i4.FileModalComponent","i1.FileEditComponent","i2.FilePickerComponent"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class FileDomeComponent {
|
|
3
|
+
/**跟随表单提交--已提交的数据,或选择的数据源 */
|
|
4
|
+
fileSubmittedData: any[];
|
|
5
|
+
/**跟随表单提交--待提交的数据
|
|
6
|
+
*
|
|
7
|
+
* @param 待上传的文件们
|
|
8
|
+
* @param 待删除已上传的文件们
|
|
9
|
+
*/
|
|
10
|
+
fileDataToBeSubmitted: any;
|
|
11
|
+
/**跟随表单提交--数据发生改变回调 */
|
|
12
|
+
fileDataChange(event: any): void;
|
|
13
|
+
/**选择文件-弹窗的-已选定的文件 */
|
|
14
|
+
selectedFileGroup: any[];
|
|
15
|
+
/**_selectedFile改变回调 */
|
|
16
|
+
_selectedFileChange(event: any): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileDomeComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileDomeComponent, "fe-file-dome", never, {}, {}, never, never, false, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { FileApiService } from '../../services/file-api.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class FileEditComponent {
|
|
5
|
+
_FileApiService: FileApiService;
|
|
6
|
+
constructor(_FileApiService: FileApiService);
|
|
7
|
+
/**是否多选 */
|
|
8
|
+
_multiple: boolean;
|
|
9
|
+
set multiple(v: boolean);
|
|
10
|
+
/**文件数据--已上传的数据 */
|
|
11
|
+
_fileData: any[];
|
|
12
|
+
set fileData(v: any[]);
|
|
13
|
+
/** 跟随表单提交--已提交的数据,或选择的数据源--回调*/
|
|
14
|
+
fileDataChange: EventEmitter<any>;
|
|
15
|
+
/**文件大小限制
|
|
16
|
+
* @param 1mb
|
|
17
|
+
*/
|
|
18
|
+
sizeLimit: number;
|
|
19
|
+
set limit(v: number);
|
|
20
|
+
/**文件表格数据 */
|
|
21
|
+
filesTableData: any[];
|
|
22
|
+
/** 待删除已上传的文件们*/
|
|
23
|
+
deleteTheUploadedFiles: any[];
|
|
24
|
+
/**获取文件选择框的元素 */
|
|
25
|
+
fileEdit: ElementRef;
|
|
26
|
+
/**获取文件信息改变 */
|
|
27
|
+
getFileChange(event: any): Promise<void>;
|
|
28
|
+
/**等待将文件数据加入到文件表格数据中 */
|
|
29
|
+
waitFileToAddTable(files: any): Promise<unknown>;
|
|
30
|
+
/**删除文件表格的项 */
|
|
31
|
+
deleteFileTableItem(index: any, item: any): void;
|
|
32
|
+
/**文件处理-调用回调函数 */
|
|
33
|
+
fileHandling(): void;
|
|
34
|
+
/**设置值文件大小单位/ */
|
|
35
|
+
setfileSizeUnits(files: File[] | any[]): Promise<any>;
|
|
36
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileEditComponent, never>;
|
|
37
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileEditComponent, "fe-file-edit", never, { "multiple": { "alias": "multiple"; "required": false; }; "fileData": { "alias": "fileData"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; }, { "fileDataChange": "fileDataChange"; }, never, never, false, never>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { EventEmitter, SimpleChanges } from '@angular/core';
|
|
2
|
+
import * as FileService from '../../proxy/dignite/file-explorer/files';
|
|
3
|
+
import { ConfirmationService, ToasterService } from '@abp/ng.theme.shared';
|
|
4
|
+
import { PagedResultDto, ListService, Rest, RestService, LocalizationService } from '@abp/ng.core';
|
|
5
|
+
import { FileDescriptorDto } from '../../proxy/dignite/file-explorer/files';
|
|
6
|
+
import { FileApiService } from '../../services/file-api.service';
|
|
7
|
+
import { SelectionType } from '@swimlane/ngx-datatable';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export declare class FileModalComponent {
|
|
10
|
+
private _FileService;
|
|
11
|
+
private toaster;
|
|
12
|
+
readonly list: ListService;
|
|
13
|
+
_FileApiService: FileApiService;
|
|
14
|
+
private restService;
|
|
15
|
+
private confirmation;
|
|
16
|
+
private _LocalizationService;
|
|
17
|
+
constructor(_FileService: FileService.FileDescriptorService, toaster: ToasterService, list: ListService, _FileApiService: FileApiService, restService: RestService, confirmation: ConfirmationService, _LocalizationService: LocalizationService);
|
|
18
|
+
/**图片容器 */
|
|
19
|
+
_fileContainerName: string;
|
|
20
|
+
set fileContainerName(v: string);
|
|
21
|
+
/**是否多选 */
|
|
22
|
+
_multiple: boolean;
|
|
23
|
+
set multiple(v: boolean);
|
|
24
|
+
/**文件大小限制
|
|
25
|
+
* @param 1mb
|
|
26
|
+
*/
|
|
27
|
+
sizeLimit: number;
|
|
28
|
+
set limit(v: number);
|
|
29
|
+
/**父组件传递的模态框状态 */
|
|
30
|
+
set visible(v: boolean);
|
|
31
|
+
/**模态框状态回调 */
|
|
32
|
+
visibleChange: EventEmitter<any>;
|
|
33
|
+
/**模态框-状态-是否打开 */
|
|
34
|
+
ModalOpen: boolean;
|
|
35
|
+
/**模态框-繁忙状态-用于确定模态的繁忙状态是否为真 */
|
|
36
|
+
ModalBusy: boolean;
|
|
37
|
+
/**模态框-状态改变回调 */
|
|
38
|
+
ModalVisibleChange(event: any): void;
|
|
39
|
+
/**模态框保存 */
|
|
40
|
+
modalSave(): void;
|
|
41
|
+
/**dignite-file-modal-tree */
|
|
42
|
+
/**选择的tree节点 */
|
|
43
|
+
_theSelectedTreeNode: any;
|
|
44
|
+
/**初始化数据 */
|
|
45
|
+
loadData(): void;
|
|
46
|
+
/**tree-节点选择 */
|
|
47
|
+
_nodeClick(event: any): void;
|
|
48
|
+
/**图片上传-要上传图片的状态文件列表 */
|
|
49
|
+
uploadPictureStatusList: any[];
|
|
50
|
+
/**图片上传-获取文件信息改变 */
|
|
51
|
+
getFileChange(event: any): Promise<void>;
|
|
52
|
+
/**图片上传-设置uploadPictureStatusList的状态 */
|
|
53
|
+
setuploadPictureStatus(file: any, type: any): void;
|
|
54
|
+
/**图片上传-递归按顺序上传 */
|
|
55
|
+
uploadingFile(file: any): Promise<unknown>;
|
|
56
|
+
/**文件表格-数据*/
|
|
57
|
+
data: PagedResultDto<FileDescriptorDto>;
|
|
58
|
+
/**文件表格-条件*/
|
|
59
|
+
filters: FileService.GetFilesInput;
|
|
60
|
+
/**文件表格-表格自带选择类型 */
|
|
61
|
+
SelectionType: typeof SelectionType;
|
|
62
|
+
/**文件表格-选择的表格数据项 */
|
|
63
|
+
selectedTable: any[];
|
|
64
|
+
/**已选定的文件 */
|
|
65
|
+
selectPickerFile: any[];
|
|
66
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
67
|
+
/**当前选择的table项 id */
|
|
68
|
+
nowSelectId: any;
|
|
69
|
+
/**选择文件回调 */
|
|
70
|
+
selectFilefn: EventEmitter<any[]>;
|
|
71
|
+
/**文件表格-获取表格数据 */
|
|
72
|
+
hookToQuery(): void;
|
|
73
|
+
/**文件表格-查看所有分组的文件数据 */
|
|
74
|
+
lookAllFile(): void;
|
|
75
|
+
/**选择表格项 */
|
|
76
|
+
onSelectTableItem({ selected }: {
|
|
77
|
+
selected: any;
|
|
78
|
+
}): void;
|
|
79
|
+
/**删除数组中重复的项 */
|
|
80
|
+
removeDuplicatesById(array: any): any;
|
|
81
|
+
/**一个布尔or函数,可用于检查是否要根据条件选择特定行。 */
|
|
82
|
+
selectCheck: (row: any, column: any, value: any) => boolean;
|
|
83
|
+
/**判断row是否选中 */
|
|
84
|
+
selectedcheckbox: (id: any) => boolean;
|
|
85
|
+
/**删除图片 */
|
|
86
|
+
deleteFile(file: any): void;
|
|
87
|
+
/**关闭文件状态弹窗 */
|
|
88
|
+
closeFileStatusModal(): void;
|
|
89
|
+
/**创建图片的接口,代理中的file类型不匹配,切换为any类型 */
|
|
90
|
+
createFile: (input: any, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileService.FileDescriptorDto>;
|
|
91
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileModalComponent, never>;
|
|
92
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileModalComponent, "fe-file-modal", never, { "fileContainerName": { "alias": "fileContainerName"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; "selectPickerFile": { "alias": "selectPickerFile"; "required": false; }; }, { "visibleChange": "visibleChange"; "selectFilefn": "selectFilefn"; }, never, never, false, never>;
|
|
93
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
+
import { NzFormatEmitEvent } from 'ng-zorro-antd/tree';
|
|
4
|
+
import * as DescriptorService from '../../proxy/dignite/file-explorer/directories';
|
|
5
|
+
import { ToasterService } from '@abp/ng.theme.shared';
|
|
6
|
+
import { NzFormatBeforeDropEvent } from 'ng-zorro-antd/tree';
|
|
7
|
+
import { FileApiService } from '../../services/file-api.service';
|
|
8
|
+
import { LocalizationService } from '@abp/ng.core';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
export declare class FileModalTreeComponent {
|
|
11
|
+
private _DescriptorService;
|
|
12
|
+
private fb;
|
|
13
|
+
private toaster;
|
|
14
|
+
_FileApiService: FileApiService;
|
|
15
|
+
_LocalizationService: LocalizationService;
|
|
16
|
+
constructor(_DescriptorService: DescriptorService.FileDescriptorService, fb: FormBuilder, toaster: ToasterService, _FileApiService: FileApiService, _LocalizationService: LocalizationService);
|
|
17
|
+
/**文件分组列表 */
|
|
18
|
+
fileGroupList: any[];
|
|
19
|
+
/**选择的tree节点 */
|
|
20
|
+
_theSelectedTreeNode: any;
|
|
21
|
+
set theSelectedTreeNode(v: any);
|
|
22
|
+
/**正在编辑的节点 */
|
|
23
|
+
theNodeBeingEdited: any;
|
|
24
|
+
/**已展开的节点 */
|
|
25
|
+
anExpandedNode: any[];
|
|
26
|
+
/**图片容器 */
|
|
27
|
+
_fileContainerName: string;
|
|
28
|
+
/**tree节点选择回调 */
|
|
29
|
+
nodeClick: EventEmitter<any>;
|
|
30
|
+
set fileContainerName(v: string);
|
|
31
|
+
handleClick: (event: any) => any;
|
|
32
|
+
loadData(): void;
|
|
33
|
+
/**获取文件分组 */
|
|
34
|
+
getFileGroupList(): void;
|
|
35
|
+
/**递归设置节点的值 */
|
|
36
|
+
setTheValueOfTheNodeRecursively(array: any[]): any;
|
|
37
|
+
/**tree-拖拽 */
|
|
38
|
+
nzEvent(event: NzFormatEmitEvent): void;
|
|
39
|
+
/**tree-拖拽 -验证*/
|
|
40
|
+
beforeDrop(arg: NzFormatBeforeDropEvent): import("rxjs").Observable<boolean>;
|
|
41
|
+
/**tree--选择节点 */
|
|
42
|
+
activeNode(event: any): void;
|
|
43
|
+
/**判断节点是否选中 */
|
|
44
|
+
isNodeSelected: (el: any) => boolean;
|
|
45
|
+
/**点击展开树节点图标触发 */
|
|
46
|
+
nzExpandChange(event: any): void;
|
|
47
|
+
/**增加分组 */
|
|
48
|
+
addDescriptorBtn(items?: any, edit?: boolean): void;
|
|
49
|
+
/**删除分组 */
|
|
50
|
+
deleteDescriptorBtn(node: any): void;
|
|
51
|
+
/**分组 */
|
|
52
|
+
/**模态框-状态-是否打开 */
|
|
53
|
+
ModalDescriptorOpen: boolean;
|
|
54
|
+
/**模态框-descriptor-繁忙状态-用于确定模态的繁忙状态是否为真 */
|
|
55
|
+
ModalDescriptorBusy: boolean;
|
|
56
|
+
/**模态框-descriptor-表单 */
|
|
57
|
+
ModalDescriptorForm: FormGroup | undefined;
|
|
58
|
+
/**模态框-descriptor-表单--控件模板-动态赋值表单控件 */
|
|
59
|
+
ModalFormDescriptorSubmit: ElementRef;
|
|
60
|
+
/**模态框-descriptor-状态改变回调 */
|
|
61
|
+
ModalDescriptorVisibleChange(event: any): void;
|
|
62
|
+
/**f分组模态框保存 */
|
|
63
|
+
createOrEditSave(): void;
|
|
64
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileModalTreeComponent, never>;
|
|
65
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FileModalTreeComponent, "fe-file-modal-tree", never, { "theSelectedTreeNode": { "alias": "theSelectedTreeNode"; "required": false; }; "fileContainerName": { "alias": "fileContainerName"; "required": false; }; }, { "nodeClick": "nodeClick"; }, never, never, false, never>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { FileApiService } from '../../services/file-api.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class FilePickerComponent implements OnChanges {
|
|
5
|
+
private _FileApiService;
|
|
6
|
+
constructor(_FileApiService: FileApiService);
|
|
7
|
+
/**图片容器 */
|
|
8
|
+
_fileContainerName: string;
|
|
9
|
+
set fileContainerName(v: string);
|
|
10
|
+
/**已选定的文件 */
|
|
11
|
+
selectFormFile: any[];
|
|
12
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
13
|
+
selectedFileChange: EventEmitter<any>;
|
|
14
|
+
_fileShowTable: any[];
|
|
15
|
+
/**表格选择的文件回调 */
|
|
16
|
+
_selectFilefn(event: any[]): void;
|
|
17
|
+
/**模态框-状态-是否打开 */
|
|
18
|
+
ModalOpen: boolean;
|
|
19
|
+
/**删除文件表格项 */
|
|
20
|
+
deleteFileTableItem(i: any, file: any): void;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilePickerComponent, never>;
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilePickerComponent, "fe-file-picker", never, { "fileContainerName": { "alias": "fileContainerName"; "required": false; }; "selectFormFile": { "alias": "selectFormFile"; "required": false; }; }, { "selectedFileChange": "selectedFileChange"; }, never, never, false, never>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "@angular/router";
|
|
3
|
+
export declare class FileExplorerRoutingModule {
|
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileExplorerRoutingModule, never>;
|
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FileExplorerRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
|
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<FileExplorerRoutingModule>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./components/file-edit/file-edit.component";
|
|
3
|
+
import * as i2 from "./components/file-picker/file-picker.component";
|
|
4
|
+
import * as i3 from "./components/file-modal/file-modal.component";
|
|
5
|
+
import * as i4 from "./components/file-modal-tree/file-modal-tree.component";
|
|
6
|
+
import * as i5 from "./components/dome/file-dome.component";
|
|
7
|
+
import * as i6 from "@angular/forms";
|
|
8
|
+
import * as i7 from "@abp/ng.core";
|
|
9
|
+
import * as i8 from "@abp/ng.theme.shared";
|
|
10
|
+
import * as i9 from "@ng-bootstrap/ng-bootstrap";
|
|
11
|
+
import * as i10 from "ng-zorro-antd/tree";
|
|
12
|
+
import * as i11 from "@ngx-validate/core";
|
|
13
|
+
import * as i12 from "./file-explorer-routing.module";
|
|
14
|
+
export declare class FileExplorerModule {
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileExplorerModule, never>;
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FileExplorerModule, [typeof i1.FileEditComponent, typeof i2.FilePickerComponent, typeof i3.FileModalComponent, typeof i4.FileModalTreeComponent, typeof i5.FileDomeComponent], [typeof i6.FormsModule, typeof i7.CoreModule, typeof i8.ThemeSharedModule, typeof i6.ReactiveFormsModule, typeof i9.NgbDropdownModule, typeof i10.NzTreeModule, typeof i11.NgxValidateCoreModule, typeof i12.FileExplorerRoutingModule], [typeof i1.FileEditComponent, typeof i2.FilePickerComponent, typeof i3.FileModalComponent, typeof i4.FileModalTreeComponent, typeof i5.FileDomeComponent]>;
|
|
17
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<FileExplorerModule>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CreateDirectoryInput, DirectoryDescriptorDto, DirectoryDescriptorInfoDto, GetDirectoriesInput, MoveDirectoryInput, UpdateDirectoryInput } from './models';
|
|
2
|
+
import { RestService, Rest } from '@abp/ng.core';
|
|
3
|
+
import type { PagedResultDto } from '@abp/ng.core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class FileDescriptorService {
|
|
6
|
+
private restService;
|
|
7
|
+
apiName: string;
|
|
8
|
+
create: (input: CreateDirectoryInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<DirectoryDescriptorDto>;
|
|
9
|
+
delete: (id: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<void>;
|
|
10
|
+
get: (id: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<DirectoryDescriptorDto>;
|
|
11
|
+
getList: (input: GetDirectoriesInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<PagedResultDto<DirectoryDescriptorInfoDto>>;
|
|
12
|
+
move: (id: string, input: MoveDirectoryInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<DirectoryDescriptorDto>;
|
|
13
|
+
update: (id: string, input: UpdateDirectoryInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<DirectoryDescriptorDto>;
|
|
14
|
+
constructor(restService: RestService);
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileDescriptorService, never>;
|
|
16
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FileDescriptorService>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ExtensibleAuditedEntityDto, ExtensibleEntityDto } from '@abp/ng.core';
|
|
2
|
+
export interface CreateDirectoryInput {
|
|
3
|
+
containerName: string;
|
|
4
|
+
name: string;
|
|
5
|
+
parentId?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DirectoryDescriptorDto extends ExtensibleAuditedEntityDto<string> {
|
|
8
|
+
containerName?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
parentId?: string;
|
|
11
|
+
order: number;
|
|
12
|
+
}
|
|
13
|
+
export interface DirectoryDescriptorInfoDto extends ExtensibleEntityDto<string> {
|
|
14
|
+
containerName?: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
parentId?: string;
|
|
17
|
+
order: number;
|
|
18
|
+
children: DirectoryDescriptorInfoDto[];
|
|
19
|
+
}
|
|
20
|
+
export interface GetDirectoriesInput {
|
|
21
|
+
containerName: string;
|
|
22
|
+
}
|
|
23
|
+
export interface MoveDirectoryInput {
|
|
24
|
+
parentId?: string;
|
|
25
|
+
order: number;
|
|
26
|
+
}
|
|
27
|
+
export interface UpdateDirectoryInput {
|
|
28
|
+
name: string;
|
|
29
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CreateFileInput, FileContainerConfigurationDto, FileDescriptorDto, GetFilesInput, ImageResizeInput, UpdateFileInput } from './models';
|
|
2
|
+
import { RestService, Rest } from '@abp/ng.core';
|
|
3
|
+
import type { PagedResultDto } from '@abp/ng.core';
|
|
4
|
+
import type { FileResult } from '../../../microsoft/asp-net-core/mvc/models';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class FileDescriptorService {
|
|
7
|
+
private restService;
|
|
8
|
+
apiName: string;
|
|
9
|
+
create: (input: CreateFileInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileDescriptorDto>;
|
|
10
|
+
delete: (id: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<void>;
|
|
11
|
+
download: (containerName: string, blobName: string, fileName: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileResult>;
|
|
12
|
+
get: (id: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileDescriptorDto>;
|
|
13
|
+
getFileContainerConfiguration: (containerName: string, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileContainerConfigurationDto>;
|
|
14
|
+
getList: (input: GetFilesInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<PagedResultDto<FileDescriptorDto>>;
|
|
15
|
+
getStream: (containerName: string, blobName: string, imageResize?: ImageResizeInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<Blob>;
|
|
16
|
+
update: (id: string, input: UpdateFileInput, config?: Partial<Rest.Config>) => import("rxjs").Observable<FileDescriptorDto>;
|
|
17
|
+
constructor(restService: RestService);
|
|
18
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FileDescriptorService, never>;
|
|
19
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FileDescriptorService>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IRemoteStreamContent } from '../../../volo/abp/content/models';
|
|
2
|
+
import type { CreationAuditedEntityDto, PagedAndSortedResultRequestDto } from '@abp/ng.core';
|
|
3
|
+
export interface CreateFileInput {
|
|
4
|
+
containerName: string;
|
|
5
|
+
cellName?: string;
|
|
6
|
+
directoryId?: string;
|
|
7
|
+
entityId?: string;
|
|
8
|
+
file: IRemoteStreamContent;
|
|
9
|
+
}
|
|
10
|
+
export interface FileCellDto {
|
|
11
|
+
name?: string;
|
|
12
|
+
displayName?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface FileContainerConfigurationDto {
|
|
15
|
+
maxBlobSize: number;
|
|
16
|
+
allowedFileTypeNames: string[];
|
|
17
|
+
fileCells: FileCellDto[];
|
|
18
|
+
createDirectoryPermissionName?: string;
|
|
19
|
+
createFilePermissionName?: string;
|
|
20
|
+
updateFilePermissionName?: string;
|
|
21
|
+
deleteFilePermissionName?: string;
|
|
22
|
+
getFilePermissionName?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface FileDescriptorDto extends CreationAuditedEntityDto<string> {
|
|
25
|
+
entityId?: string;
|
|
26
|
+
containerName?: string;
|
|
27
|
+
blobName?: string;
|
|
28
|
+
cellName?: string;
|
|
29
|
+
directoryId?: string;
|
|
30
|
+
size: number;
|
|
31
|
+
name?: string;
|
|
32
|
+
mimeType?: string;
|
|
33
|
+
url?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface GetFilesInput extends PagedAndSortedResultRequestDto {
|
|
36
|
+
containerName: string;
|
|
37
|
+
directoryId?: string;
|
|
38
|
+
creatorId?: string;
|
|
39
|
+
filter?: string;
|
|
40
|
+
entityId?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ImageResizeInput {
|
|
43
|
+
width?: number;
|
|
44
|
+
height?: number;
|
|
45
|
+
}
|
|
46
|
+
export interface UpdateFileInput {
|
|
47
|
+
cellName?: string;
|
|
48
|
+
directoryId?: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
}
|