@acorex-platform/module-document-management-client 0.0.21
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/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-LQjccofO.mjs +7849 -0
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-LQjccofO.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-attachment-view-skeleton.component-CEC9HdMa.mjs +27 -0
- package/fesm2022/acorex-platform-module-document-management-client-attachment-view-skeleton.component-CEC9HdMa.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-CBpWl_FH.mjs +36 -0
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-CBpWl_FH.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +313 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-Deduhl99.mjs +250 -0
- package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-Deduhl99.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view-skeleton.component-wZG913_E.mjs +27 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view-skeleton.component-wZG913_E.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Bv5JFRtL.mjs +30 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Bv5JFRtL.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-DTEIhPcT.mjs +35 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-DTEIhPcT.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-link-dialog.component-DXwE55QU.mjs +68 -0
- package/fesm2022/acorex-platform-module-document-management-client-link-dialog.component-DXwE55QU.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view-skeleton.component-C3-7rgTu.mjs +27 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view-skeleton.component-C3-7rgTu.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-_r7VP4i8.mjs +30 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-_r7VP4i8.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-BbMZf6zo.mjs +96 -0
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-BbMZf6zo.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-share-dialog.component-D0D75M7u.mjs +143 -0
- package/fesm2022/acorex-platform-module-document-management-client-share-dialog.component-D0D75M7u.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-share-email-dialog.component-CTP-r-4w.mjs +54 -0
- package/fesm2022/acorex-platform-module-document-management-client-share-email-dialog.component-CTP-r-4w.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Dskk_B96.mjs +27 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Dskk_B96.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-RMDX74O9.mjs +30 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-RMDX74O9.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DQW2VZJH.mjs +27 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-DQW2VZJH.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-BT6fRWVH.mjs +35 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-BT6fRWVH.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-upload-document.command-CFFOw4gM.mjs +88 -0
- package/fesm2022/acorex-platform-module-document-management-client-upload-document.command-CFFOw4gM.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client.mjs +3 -0
- package/fesm2022/acorex-platform-module-document-management-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-document-management-client-contracts.d.ts +375 -0
- package/types/acorex-platform-module-document-management-client.d.ts +2401 -0
|
@@ -0,0 +1,2401 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Injector, Type, OnInit, OnDestroy } from '@angular/core';
|
|
3
|
+
import * as i1 from '@acorex/core/file';
|
|
4
|
+
import { AXFileService } from '@acorex/core/file';
|
|
5
|
+
import * as i3 from '@acorex-platform/framework-client/layout/widget-core';
|
|
6
|
+
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
7
|
+
import * as _acorex_platform_framework_client_themes_shared from '@acorex-platform/framework-client/themes/shared';
|
|
8
|
+
import * as _ngrx_signals from '@ngrx/signals';
|
|
9
|
+
import * as _acorex_components_menu from '@acorex/components/menu';
|
|
10
|
+
import { AXContextMenuComponent, AXContextMenuItemsClickEvent, AXMenuItem } from '@acorex/components/menu';
|
|
11
|
+
import * as dist_libs_framework_client_types_acorex_platform_framework_client_common from 'dist/libs/framework/client/types/acorex-platform-framework-client-common';
|
|
12
|
+
import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
|
|
13
|
+
import { AXPFileListItem, AXPPlatformScope, AXPFilterQuery, AXPQueryRequest, AXPActionMenuItem, AXPExpression, AXPBackButton, AXPBreadcrumbItem, AXPExecuteCommand, AXPFilterDefinition, AXPContextChangeEvent, AXPWidgetNode, AXPStatusProvider, AXPStatusDefinition, AXPStatusTransition, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';
|
|
14
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
15
|
+
import * as _acorex_platform_framework_client_layout_entity from '@acorex-platform/framework-client/layout/entity';
|
|
16
|
+
import { AXPEntityService, AXPEntityActionPlugin } from '@acorex-platform/framework-client/layout/entity';
|
|
17
|
+
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
18
|
+
import { AXDialogService } from '@acorex/components/dialog';
|
|
19
|
+
import { AXPopupService } from '@acorex/components/popup';
|
|
20
|
+
import * as _acorex_platform_framework_client_common from '@acorex-platform/framework-client/common';
|
|
21
|
+
import { AXPFileStorageService, AXPFileTypeProviderService, AXPFilterOperatorMiddlewareService, AXPFileType, AXPFileTypeInfoProvider, AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex-platform/framework-client/common';
|
|
22
|
+
import { AXPLayoutBuilderService, AXPDialogRef } from '@acorex-platform/framework-client/layout/builder';
|
|
23
|
+
import { AXPFileViewerService, AXPPageComponentProvider, AXPPageComponentDefinition } from '@acorex-platform/framework-client/layout/components';
|
|
24
|
+
import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
|
|
25
|
+
import { AXPHookService, AXPDeviceService } from '@acorex-platform/framework-client/core';
|
|
26
|
+
import { AXMDocumentDocDto, AXMDocumentInheritanceType, AXMDocumentManagementFolderEntityModel, AXMDocumentDto, AXMDocumentManagementFolderCreateDto, AXMDocumentShortcutEntityModel } from '@acorex-platform/module-document-management-client/contracts';
|
|
27
|
+
import * as _acorex_platform_module_document_management_client from '@acorex-platform/module-document-management-client';
|
|
28
|
+
import { AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';
|
|
29
|
+
import { AXValueChangedEvent, AXDataSource } from '@acorex/cdk/common';
|
|
30
|
+
import { ActivatedRoute } from '@angular/router';
|
|
31
|
+
import { AXPWidgetConfig } from '@acorex-platform/framework-shared/widget-core';
|
|
32
|
+
export { AXM_DOCUMENT_EXPIRATION_NEAR_DAYS, toDocumentExpirationDate } from '@acorex-platform/module-document-management-contracts';
|
|
33
|
+
|
|
34
|
+
declare class AXMDriveChooseModule {
|
|
35
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDriveChooseModule, never>;
|
|
36
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMDriveChooseModule, never, never, never>;
|
|
37
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMDriveChooseModule>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Registers the document-management file-type catalog on {@link AXP_FILE_TYPE_INFO_PROVIDER}.
|
|
42
|
+
* {@link AXFileModule.forRoot()} keeps {@link AXFileService} / validation rules for uploads.
|
|
43
|
+
*/
|
|
44
|
+
declare class AXMFileTypeModule {
|
|
45
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFileTypeModule, never>;
|
|
46
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMFileTypeModule, never, [typeof i1.AXFileModule], [typeof i1.AXFileModule]>;
|
|
47
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMFileTypeModule>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
declare class AXMDocumentManagementModule {
|
|
51
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentManagementModule, never>;
|
|
52
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMDocumentManagementModule, never, [typeof AXMDriveChooseModule, typeof AXMFileTypeModule, typeof i3.AXPWidgetCoreModule], never>;
|
|
53
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMDocumentManagementModule>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
interface AXMDocumentExplorerNode {
|
|
57
|
+
id: string;
|
|
58
|
+
name: string;
|
|
59
|
+
description?: string;
|
|
60
|
+
type: 'file' | 'folder';
|
|
61
|
+
parentId: string | null;
|
|
62
|
+
storageType: 'physical' | 'virtual' | 'shortcut';
|
|
63
|
+
children?: AXMDocumentExplorerNode[];
|
|
64
|
+
childrenCount?: number;
|
|
65
|
+
/** Direct documents in this folder (denormalized; not nested folders). */
|
|
66
|
+
itemsCount?: number;
|
|
67
|
+
/** Subtree expired documents (this folder + nested folders; denormalized). */
|
|
68
|
+
expiredItemsCount?: number;
|
|
69
|
+
/** Subtree near-expiry documents (this folder + nested folders; denormalized). */
|
|
70
|
+
nearExpiryItemsCount?: number;
|
|
71
|
+
size: number;
|
|
72
|
+
modifiedAt?: Date;
|
|
73
|
+
createdAt?: Date;
|
|
74
|
+
expirationDate?: Date;
|
|
75
|
+
fileId?: AXPFileListItem | string;
|
|
76
|
+
documentTypes: AXMNodeType[];
|
|
77
|
+
/**
|
|
78
|
+
* Indicates this node is a shortcut (alias) that points to another document or folder.
|
|
79
|
+
*/
|
|
80
|
+
isShortcut?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Target document id for shortcut nodes that point to a document.
|
|
83
|
+
*/
|
|
84
|
+
targetDocumentId?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Target folder id for shortcut nodes that point to a folder.
|
|
87
|
+
*/
|
|
88
|
+
targetFolderId?: string;
|
|
89
|
+
/** System folders (e.g. provisioned document-type folders) cannot be deleted or moved. */
|
|
90
|
+
isSystem?: boolean;
|
|
91
|
+
/** Raw metadata form value (key-value or group-keyed). Used by detail panel to display metadata. */
|
|
92
|
+
metaDataForm?: Record<string, unknown>;
|
|
93
|
+
/** @deprecated Use metaDataForm; kept for backward compatibility. */
|
|
94
|
+
meta?: {
|
|
95
|
+
id: string;
|
|
96
|
+
title: string;
|
|
97
|
+
}[];
|
|
98
|
+
inherit?: AXMDocumentInheritanceType;
|
|
99
|
+
/** Folder accent color (hex), from entity `color`. */
|
|
100
|
+
color?: string;
|
|
101
|
+
}
|
|
102
|
+
interface AXMNodeType extends AXMDocumentDocDto {
|
|
103
|
+
}
|
|
104
|
+
type AXPDocumentExplorerViewMode = 'large-tiles' | 'small-tiles' | 'list' | 'details' | 'large-icons' | 'attachment' | 'small-icons';
|
|
105
|
+
type AXMDocumentExplorerBrowseMode = 'file' | 'folder';
|
|
106
|
+
type AXMDocumentSelectionMode = 'single' | 'multiple' | 'none';
|
|
107
|
+
type CreateFolderDto = Partial<Omit<AXMDocumentManagementFolderEntityModel, 'id'>>;
|
|
108
|
+
type UpdateFolderDto = Partial<Omit<AXMDocumentManagementFolderEntityModel, 'id'>>;
|
|
109
|
+
type CreateFileDto = Omit<AXMDocumentDto, 'id'>;
|
|
110
|
+
type UpdateFileDto = Partial<Omit<AXMDocumentDto, 'id'>>;
|
|
111
|
+
/** Parsed metadata field info extracted from document type definitions. */
|
|
112
|
+
interface AXMMetadataFieldInfo {
|
|
113
|
+
name: string;
|
|
114
|
+
title: string;
|
|
115
|
+
widgetType: string;
|
|
116
|
+
widgetPath: string;
|
|
117
|
+
widgetOptions?: Record<string, unknown>;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Breadcrumb segment returned by the combined drive contents endpoint. */
|
|
121
|
+
type AXMDriveFolderPathSegment = Pick<AXMDocumentManagementFolderEntityModel, 'id' | 'title' | 'parentId' | 'color'>;
|
|
122
|
+
/**
|
|
123
|
+
* Combined response for one drive navigation: folder with one level of children + shortcuts,
|
|
124
|
+
* breadcrumb path from the scope root and the resolved scope root id.
|
|
125
|
+
*/
|
|
126
|
+
interface AXMDriveContentsDto {
|
|
127
|
+
folder: AXMDocumentManagementFolderEntityModel;
|
|
128
|
+
path: AXMDriveFolderPathSegment[];
|
|
129
|
+
scopeRootId: string;
|
|
130
|
+
}
|
|
131
|
+
declare abstract class AXPDocumentManagementService {
|
|
132
|
+
/**
|
|
133
|
+
* Gets the root folder for the given scope.
|
|
134
|
+
* Backend resolves tenant/user from request context (security: client sends only scope).
|
|
135
|
+
*/
|
|
136
|
+
abstract getRoot(scope: AXPPlatformScope): Promise<AXMDocumentManagementFolderEntityModel>;
|
|
137
|
+
/**
|
|
138
|
+
* Single round-trip for one drive navigation: resolves the folder (or scope root when
|
|
139
|
+
* `folderId` is omitted), one level of children, shortcuts and the breadcrumb path.
|
|
140
|
+
*/
|
|
141
|
+
abstract getDriveContents(scope: AXPPlatformScope, folderId?: string): Promise<AXMDriveContentsDto>;
|
|
142
|
+
/**
|
|
143
|
+
* Gets (or creates) the folder bound to the given entity record.
|
|
144
|
+
* Used by the document/EDMS plugin when viewing an entity single: loads the folder for that record.
|
|
145
|
+
* @param refType Entity type (e.g. "content-management.promotion")
|
|
146
|
+
* @param refId Entity record id
|
|
147
|
+
* @returns The folder for this entity record
|
|
148
|
+
*/
|
|
149
|
+
abstract getRootByEntityRef(refType: string, refId: string): Promise<AXMDocumentManagementFolderEntityModel>;
|
|
150
|
+
abstract getDocumentPath(documentId: string, stopFolderId?: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
151
|
+
/**
|
|
152
|
+
* Searches files under a folder tree.
|
|
153
|
+
* `options.metadataFilters` may include the reserved `__quickSearch__` marker; the server routes
|
|
154
|
+
* that to entity full-text search and applies other clauses against `metaDataForm`.
|
|
155
|
+
* Optional `documentTypeIds` narrows by document type. `searchTerm` (or quick-search) matches
|
|
156
|
+
* document name/title/description via full-text.
|
|
157
|
+
*/
|
|
158
|
+
abstract searchFiles(searchTerm: string, rootFolderId: string, options?: {
|
|
159
|
+
metadataFilters?: AXPFilterQuery[];
|
|
160
|
+
documentTypeIds?: string[];
|
|
161
|
+
}): Promise<AXMDocumentDto[]>;
|
|
162
|
+
abstract findManyDocuments(ids: string[]): Promise<AXMDocumentDto[]>;
|
|
163
|
+
/**
|
|
164
|
+
* Returns how many documents are already past their expiration date (tenant-scoped).
|
|
165
|
+
* Used by the Company Documents menu badge.
|
|
166
|
+
*/
|
|
167
|
+
abstract getExpiredDocumentCount(): Promise<number>;
|
|
168
|
+
abstract getFolderPath(folderId: string, stopFolderId?: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
169
|
+
abstract searchFolders(searchTerm: string, rootFolderId: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
170
|
+
abstract getDocumentTypeByName(name: string): Promise<AXMDocumentDocDto>;
|
|
171
|
+
/**
|
|
172
|
+
* Collects unique metadata field definitions across document types.
|
|
173
|
+
* When `documentTypeIds` is omitted, the backend aggregates all types.
|
|
174
|
+
* When `documentTypeIds` is an empty array, an empty list is returned (no types selected).
|
|
175
|
+
* Otherwise only fields from the given document types are included (deduplicated by name).
|
|
176
|
+
*/
|
|
177
|
+
abstract getUniqueMetadataDefinitions(documentTypeIds?: string[]): Promise<AXMMetadataFieldInfo[]>;
|
|
178
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDocumentManagementService, never>;
|
|
179
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDocumentManagementService>;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
interface AttachmentOptions {
|
|
183
|
+
multiple?: boolean;
|
|
184
|
+
folderId?: string;
|
|
185
|
+
entityId?: string;
|
|
186
|
+
entityRecordId?: string;
|
|
187
|
+
scope?: AXPPlatformScope;
|
|
188
|
+
}
|
|
189
|
+
interface UpdateAttachmentOptions {
|
|
190
|
+
entityId?: string;
|
|
191
|
+
entityRecordId?: string;
|
|
192
|
+
folderId?: string;
|
|
193
|
+
scope?: AXPPlatformScope;
|
|
194
|
+
}
|
|
195
|
+
declare class DocumentAttachmentsService {
|
|
196
|
+
private readonly fileChooserService;
|
|
197
|
+
private readonly fileService;
|
|
198
|
+
private readonly entityService;
|
|
199
|
+
private readonly documentTypeService;
|
|
200
|
+
private readonly documentData;
|
|
201
|
+
private readonly documentDialog;
|
|
202
|
+
private readonly translateService;
|
|
203
|
+
attachFile(fileType: string | AXMDocumentDocDto, options?: AttachmentOptions): Promise<boolean>;
|
|
204
|
+
updateAttachedFile(fileId: string, options?: UpdateAttachmentOptions): Promise<boolean>;
|
|
205
|
+
/**
|
|
206
|
+
* Upload a new version for an existing document. Lets user choose a new file, edit metadata, and updates the document
|
|
207
|
+
* with incremented version number while keeping the same document identity.
|
|
208
|
+
*/
|
|
209
|
+
uploadNewVersion(fileId: string, options?: {
|
|
210
|
+
scope?: AXPPlatformScope;
|
|
211
|
+
}): Promise<boolean>;
|
|
212
|
+
private validateAttachmentOptions;
|
|
213
|
+
private resolveFileType;
|
|
214
|
+
private chooseFileListItems;
|
|
215
|
+
private handlePopupResult;
|
|
216
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DocumentAttachmentsService, never>;
|
|
217
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DocumentAttachmentsService>;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Contract for document drive service. Inject this token; implementation is provided by the module.
|
|
222
|
+
*/
|
|
223
|
+
declare abstract class AXMDocumentManagerService {
|
|
224
|
+
abstract scope(scope: AXPPlatformScope): ScopedDriveService;
|
|
225
|
+
abstract getRoot(scope: AXPPlatformScope): Promise<{
|
|
226
|
+
path: AXMDocumentExplorerNode[];
|
|
227
|
+
result: AXMDocumentExplorerNode;
|
|
228
|
+
/** Root folder id resolved for the scope (used to detect out-of-scope folders). */
|
|
229
|
+
scopeRootId?: string;
|
|
230
|
+
}>;
|
|
231
|
+
/**
|
|
232
|
+
* Gets (or creates) the folder for the given entity record and returns it as explorer root.
|
|
233
|
+
* Used by the document plugin when viewing an entity single.
|
|
234
|
+
*/
|
|
235
|
+
abstract getRootByEntityRef(refType: string, refId: string): Promise<{
|
|
236
|
+
path: AXMDocumentExplorerNode[];
|
|
237
|
+
result: AXMDocumentExplorerNode;
|
|
238
|
+
}>;
|
|
239
|
+
abstract getFolder(scope: AXPPlatformScope, folderId: string, options?: {
|
|
240
|
+
/** When opening a direct child, extend this path instead of calling the path API. */
|
|
241
|
+
parentPath?: AXMDocumentExplorerNode[];
|
|
242
|
+
parentFolderId?: string;
|
|
243
|
+
}): Promise<{
|
|
244
|
+
path: AXMDocumentExplorerNode[];
|
|
245
|
+
result: AXMDocumentExplorerNode;
|
|
246
|
+
/** Root folder id resolved for the scope (used to detect out-of-scope folders). */
|
|
247
|
+
scopeRootId?: string;
|
|
248
|
+
}>;
|
|
249
|
+
abstract createFolder(data: AXMDocumentManagementFolderCreateDto): Promise<AXMDocumentExplorerNode>;
|
|
250
|
+
abstract updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode>;
|
|
251
|
+
abstract deleteFolder(folderId: string): Promise<void>;
|
|
252
|
+
abstract getAvailableSpace(): Promise<number>;
|
|
253
|
+
abstract createFile(data: CreateFileDto): Promise<AXMDocumentExplorerNode>;
|
|
254
|
+
abstract updateFile(fileId: string, data: UpdateFileDto): Promise<AXMDocumentExplorerNode>;
|
|
255
|
+
abstract deleteFile(fileId: string): Promise<void>;
|
|
256
|
+
abstract deleteNodes(nodeIds: AXMDocumentExplorerNode[]): Promise<void>;
|
|
257
|
+
abstract copy(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode>;
|
|
258
|
+
/** Creates a shortcut to a document or folder in the given folder. */
|
|
259
|
+
abstract createShortcut(targetId: string, targetType: 'file' | 'folder', folderId: string, options?: {
|
|
260
|
+
nameOverride?: string;
|
|
261
|
+
}): Promise<AXMDocumentExplorerNode>;
|
|
262
|
+
/** Deletes a shortcut by its node id (shortcut entity id). */
|
|
263
|
+
abstract deleteShortcut(shortcutId: string): Promise<void>;
|
|
264
|
+
/**
|
|
265
|
+
* Opens the drive folder picker and creates a shortcut to the given node in the selected folder.
|
|
266
|
+
* Returns true if a shortcut was created, false if cancelled.
|
|
267
|
+
*/
|
|
268
|
+
abstract createShortcutWithPicker(node: AXMDocumentExplorerNode, scope: AXPPlatformScope): Promise<boolean>;
|
|
269
|
+
abstract showCreateFolderDialog(parentId?: string, options?: {
|
|
270
|
+
allowedDocumentTypeNames?: string[];
|
|
271
|
+
}): Promise<AXMDocumentExplorerNode | null>;
|
|
272
|
+
abstract getDocumentTypesByNames(names: string[]): Promise<AXMNodeType[]>;
|
|
273
|
+
abstract showDeleteNodesDialog(nodeIds: AXMDocumentExplorerNode[]): Promise<boolean>;
|
|
274
|
+
abstract showRenamePopup(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode | undefined>;
|
|
275
|
+
abstract searchFolders(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
276
|
+
folderId?: string;
|
|
277
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
278
|
+
abstract searchFiles(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
279
|
+
folderId?: string;
|
|
280
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
281
|
+
abstract searchNodes(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
282
|
+
folderId?: string;
|
|
283
|
+
metadataFilters?: AXPFilterQuery[];
|
|
284
|
+
documentTypeIds?: string[];
|
|
285
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
286
|
+
/** Collects unique metadata fields; pass ids to limit to those document types. */
|
|
287
|
+
abstract getUniqueMetadataFields(documentTypeIds?: string[]): Promise<AXMMetadataFieldInfo[]>;
|
|
288
|
+
abstract showChooseFileDialog(root: string): Promise<AXMDocumentExplorerNode[]>;
|
|
289
|
+
abstract moveTo(options: {
|
|
290
|
+
node: AXMDocumentExplorerNode;
|
|
291
|
+
scope?: AXPPlatformScope;
|
|
292
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
293
|
+
multiple?: boolean;
|
|
294
|
+
}): Promise<boolean>;
|
|
295
|
+
abstract copyTo(options: {
|
|
296
|
+
node: AXMDocumentExplorerNode;
|
|
297
|
+
scope?: AXPPlatformScope;
|
|
298
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
299
|
+
multiple?: boolean;
|
|
300
|
+
}): Promise<boolean>;
|
|
301
|
+
abstract showFileViewerPopup(node: AXMDocumentExplorerNode, options?: {
|
|
302
|
+
folderFiles?: AXMDocumentExplorerNode[];
|
|
303
|
+
/** @deprecated Use {@link folderFiles}. */
|
|
304
|
+
folderVirtualFiles?: AXMDocumentExplorerNode[];
|
|
305
|
+
startIndex?: number;
|
|
306
|
+
/** @deprecated Use {@link startIndex}. */
|
|
307
|
+
index?: number;
|
|
308
|
+
}): Promise<void>;
|
|
309
|
+
abstract openFile(node: AXMDocumentExplorerNode): Promise<void>;
|
|
310
|
+
/** Returns file nodes from a folder listing. */
|
|
311
|
+
abstract getGallerySupportedFiles(nodes: AXMDocumentExplorerNode[]): AXMDocumentExplorerNode[];
|
|
312
|
+
abstract getAllFolders(): Promise<AXMDocumentExplorerNode[]>;
|
|
313
|
+
abstract getAllFiles(request?: AXPQueryRequest): Promise<AXMDocumentExplorerNode[]>;
|
|
314
|
+
abstract getAllNodes(): Promise<AXMDocumentExplorerNode[]>;
|
|
315
|
+
abstract downloadFile(node: AXMDocumentExplorerNode): Promise<void>;
|
|
316
|
+
abstract showShareDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
317
|
+
abstract showShareWithEmailDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
318
|
+
abstract showLinkDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
319
|
+
abstract showLockDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
320
|
+
abstract showUnlockDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
321
|
+
abstract showFolderEditDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
322
|
+
abstract updateFileName(node: AXMDocumentExplorerNode, name: string): Promise<AXMDocumentExplorerNode>;
|
|
323
|
+
abstract uploadFileByType(folderId: string, docTypeId: string, options?: {
|
|
324
|
+
scope?: AXPPlatformScope;
|
|
325
|
+
}): Promise<boolean>;
|
|
326
|
+
abstract updateUploadFileByType(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
327
|
+
abstract uploadNewVersion(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
328
|
+
abstract showVersionHistory(node: AXMDocumentExplorerNode): Promise<void>;
|
|
329
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentManagerService, never>;
|
|
330
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDocumentManagerService>;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Default implementation of document drive service.
|
|
334
|
+
*/
|
|
335
|
+
declare class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
336
|
+
protected sessionService: AXPSessionService;
|
|
337
|
+
protected entityService: AXPEntityService;
|
|
338
|
+
protected folderData: _acorex_platform_framework_client_layout_entity.EntityDataAccessor<string, AXMDocumentManagementFolderEntityModel, AXMDocumentManagementFolderEntityModel, Omit<AXMDocumentManagementFolderEntityModel, "id">, AXMDocumentManagementFolderEntityModel>;
|
|
339
|
+
protected documentData: _acorex_platform_framework_client_layout_entity.EntityDataAccessor<string, AXMDocumentDto, AXMDocumentDto, Omit<AXMDocumentDto, "id">, AXMDocumentDto>;
|
|
340
|
+
protected shortcutData: _acorex_platform_framework_client_layout_entity.EntityDataAccessor<string, AXMDocumentShortcutEntityModel, AXMDocumentShortcutEntityModel, Omit<AXMDocumentShortcutEntityModel, "id">, AXMDocumentShortcutEntityModel>;
|
|
341
|
+
protected documentTypeService: _acorex_platform_framework_client_layout_entity.EntityDataAccessor<any, any, any, Omit<any, "id">, any>;
|
|
342
|
+
protected documentManagementService: AXPDocumentManagementService;
|
|
343
|
+
protected popupService: AXPopupService;
|
|
344
|
+
protected dialogService: AXDialogService;
|
|
345
|
+
protected fileService: AXPFileStorageService;
|
|
346
|
+
protected fileManagerService: AXFileService;
|
|
347
|
+
protected fileTypeProviderService: AXPFileTypeProviderService;
|
|
348
|
+
protected injector: Injector;
|
|
349
|
+
protected platformId: Object;
|
|
350
|
+
protected commandService: AXPCommandService;
|
|
351
|
+
protected translate: AXTranslationService;
|
|
352
|
+
protected layoutBuilder: AXPLayoutBuilderService;
|
|
353
|
+
protected fileViewerService: AXPFileViewerService;
|
|
354
|
+
protected attachmentsService: DocumentAttachmentsService;
|
|
355
|
+
protected filterMiddlewareService: AXPFilterOperatorMiddlewareService;
|
|
356
|
+
protected hooks: AXPHookService | null;
|
|
357
|
+
private scopedDriveCache;
|
|
358
|
+
private buildPathCache;
|
|
359
|
+
private rootFolderIdByScope;
|
|
360
|
+
/**
|
|
361
|
+
* Some command APIs return `{ result: T }` instead of `T`. Prefer the inner value when that shape is used.
|
|
362
|
+
*/
|
|
363
|
+
private unwrapBackendPayload;
|
|
364
|
+
/**
|
|
365
|
+
* Resolves the entity id from a create response (plain id string or entity object with `id`).
|
|
366
|
+
*/
|
|
367
|
+
private resolveCreatedEntityId;
|
|
368
|
+
/**
|
|
369
|
+
* Creates a scoped drive service for the specified platform scope.
|
|
370
|
+
* Backend resolves tenant/user from request context (client sends only scope).
|
|
371
|
+
*/
|
|
372
|
+
scope(scope: AXPPlatformScope): ScopedDriveService;
|
|
373
|
+
/**
|
|
374
|
+
* Maps folder entity to document explorer node
|
|
375
|
+
*/
|
|
376
|
+
private mapFolderDtoToFolderNode;
|
|
377
|
+
/**
|
|
378
|
+
* Maps file entity to document explorer node
|
|
379
|
+
*/
|
|
380
|
+
private mapFileToNode;
|
|
381
|
+
/**
|
|
382
|
+
* Maps shortcut entity to document explorer node.
|
|
383
|
+
* Uses minimal data from shortcut itself; target-specific details are resolved by operations when needed.
|
|
384
|
+
*/
|
|
385
|
+
private mapShortcutToNode;
|
|
386
|
+
/**
|
|
387
|
+
* Builds navigation path for a node
|
|
388
|
+
*/
|
|
389
|
+
private buildPath;
|
|
390
|
+
/**
|
|
391
|
+
* Creates a copy name by adding " copy" before the extension
|
|
392
|
+
*/
|
|
393
|
+
private createCopyName;
|
|
394
|
+
/**
|
|
395
|
+
* Prepares file for copy operation by downloading from storage and converting to blob source.
|
|
396
|
+
* Accepts document fileId (AXPFileListItem or legacy string) and returns AXPFileListItem with blob source.
|
|
397
|
+
*/
|
|
398
|
+
private prepareFileForCopy;
|
|
399
|
+
/**
|
|
400
|
+
* Collects every folder id in the tree rooted at `folder` (including that folder).
|
|
401
|
+
*/
|
|
402
|
+
/**
|
|
403
|
+
* Loads shortcuts for all folders in the tree using chunked `folderId IN (…)` queries instead of one query per folder.
|
|
404
|
+
*/
|
|
405
|
+
private loadShortcutsForFolderIdChunks;
|
|
406
|
+
/**
|
|
407
|
+
* Loads shortcuts for the current folder only (shortcuts belong to the open folder listing).
|
|
408
|
+
*/
|
|
409
|
+
private enrichFolderTreeWithShortcuts;
|
|
410
|
+
/**
|
|
411
|
+
* Maps the combined drive contents response (folder + children + shortcuts + path) to explorer
|
|
412
|
+
* nodes. The server path always ends with the requested folder; the mapped path reuses the fully
|
|
413
|
+
* hydrated result node as its last entry.
|
|
414
|
+
*/
|
|
415
|
+
private mapDriveContents;
|
|
416
|
+
/**
|
|
417
|
+
* Gets the root folder for the given scope in a single request (children, shortcuts and
|
|
418
|
+
* path are included in the combined drive contents response).
|
|
419
|
+
*/
|
|
420
|
+
getRoot(scope: AXPPlatformScope): Promise<{
|
|
421
|
+
path: AXMDocumentExplorerNode[];
|
|
422
|
+
result: AXMDocumentExplorerNode;
|
|
423
|
+
scopeRootId?: string;
|
|
424
|
+
}>;
|
|
425
|
+
/**
|
|
426
|
+
* Gets (or creates) the folder bound to the entity record and returns it as explorer root.
|
|
427
|
+
*/
|
|
428
|
+
getRootByEntityRef(refType: string, refId: string): Promise<{
|
|
429
|
+
path: AXMDocumentExplorerNode[];
|
|
430
|
+
result: AXMDocumentExplorerNode;
|
|
431
|
+
}>;
|
|
432
|
+
/**
|
|
433
|
+
* Returns document types whose name is in the given list.
|
|
434
|
+
*/
|
|
435
|
+
getDocumentTypesByNames(names: string[]): Promise<AXMNodeType[]>;
|
|
436
|
+
/**
|
|
437
|
+
* Gets a specific folder by ID in a single request. The backend resolves shortcut ids to their
|
|
438
|
+
* target folder and returns children, shortcuts and the breadcrumb path together.
|
|
439
|
+
*/
|
|
440
|
+
getFolder(scope: AXPPlatformScope, folderId: string, options?: {
|
|
441
|
+
parentPath?: AXMDocumentExplorerNode[];
|
|
442
|
+
parentFolderId?: string;
|
|
443
|
+
}): Promise<{
|
|
444
|
+
path: AXMDocumentExplorerNode[];
|
|
445
|
+
result: AXMDocumentExplorerNode;
|
|
446
|
+
scopeRootId?: string;
|
|
447
|
+
}>;
|
|
448
|
+
/**
|
|
449
|
+
* Creates a new folder
|
|
450
|
+
*/
|
|
451
|
+
createFolder(data: AXMDocumentManagementFolderCreateDto): Promise<AXMDocumentExplorerNode>;
|
|
452
|
+
/**
|
|
453
|
+
* Updates an existing folder
|
|
454
|
+
*/
|
|
455
|
+
updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode>;
|
|
456
|
+
/**
|
|
457
|
+
* Deletes a folder. Cascades to delete any shortcuts that point to this folder.
|
|
458
|
+
*/
|
|
459
|
+
deleteFolder(folderId: string): Promise<void>;
|
|
460
|
+
/**
|
|
461
|
+
* Gets available storage space
|
|
462
|
+
*/
|
|
463
|
+
getAvailableSpace(): Promise<number>;
|
|
464
|
+
/**
|
|
465
|
+
* Creates a new file
|
|
466
|
+
*/
|
|
467
|
+
createFile(data: CreateFileDto): Promise<AXMDocumentExplorerNode>;
|
|
468
|
+
/**
|
|
469
|
+
* Updates an existing file
|
|
470
|
+
*/
|
|
471
|
+
updateFile(fileId: string, data: UpdateFileDto): Promise<AXMDocumentExplorerNode>;
|
|
472
|
+
/**
|
|
473
|
+
* Deletes a file. Cascades to delete any shortcuts that point to this document.
|
|
474
|
+
*/
|
|
475
|
+
deleteFile(fileId: string): Promise<void>;
|
|
476
|
+
/**
|
|
477
|
+
* Opens a drive file: runs the catalog file type's `open` handler when registered; otherwise downloads.
|
|
478
|
+
*/
|
|
479
|
+
openFile(node: AXMDocumentExplorerNode): Promise<void>;
|
|
480
|
+
/**
|
|
481
|
+
* Downloads a file using the same logic as file-uploader component.
|
|
482
|
+
* For shortcut nodes, downloads the target document.
|
|
483
|
+
*/
|
|
484
|
+
downloadFile(node: AXMDocumentExplorerNode): Promise<void>;
|
|
485
|
+
private resolveFileNode;
|
|
486
|
+
private resolveStorageFileId;
|
|
487
|
+
private resolveFileListItem;
|
|
488
|
+
/**
|
|
489
|
+
* Deletes multiple nodes (files, folders, and shortcuts).
|
|
490
|
+
*/
|
|
491
|
+
deleteNodes(nodes: AXMDocumentExplorerNode[]): Promise<void>;
|
|
492
|
+
/**
|
|
493
|
+
* Creates a shortcut to a document or folder in the given folder.
|
|
494
|
+
*/
|
|
495
|
+
createShortcut(targetId: string, targetType: 'file' | 'folder', folderId: string, options?: {
|
|
496
|
+
nameOverride?: string;
|
|
497
|
+
}): Promise<AXMDocumentExplorerNode>;
|
|
498
|
+
/**
|
|
499
|
+
* Deletes a shortcut by its entity id.
|
|
500
|
+
*/
|
|
501
|
+
deleteShortcut(shortcutId: string): Promise<void>;
|
|
502
|
+
/**
|
|
503
|
+
* Opens the drive folder picker and creates a shortcut to the given node in the selected folder.
|
|
504
|
+
*/
|
|
505
|
+
createShortcutWithPicker(node: AXMDocumentExplorerNode, scope: AXPPlatformScope): Promise<boolean>;
|
|
506
|
+
/**
|
|
507
|
+
* Creates a copy of a node (file or folder)
|
|
508
|
+
*/
|
|
509
|
+
copy(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode>;
|
|
510
|
+
/**
|
|
511
|
+
* Opens the drive picker popup with consistent layout (large dialog, optional embedded header).
|
|
512
|
+
*/
|
|
513
|
+
private openDriveFolderPicker;
|
|
514
|
+
/**
|
|
515
|
+
* Moves a node to another location
|
|
516
|
+
*/
|
|
517
|
+
moveTo(options: {
|
|
518
|
+
node: AXMDocumentExplorerNode;
|
|
519
|
+
scope: AXPPlatformScope;
|
|
520
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
521
|
+
multiple?: boolean;
|
|
522
|
+
}): Promise<boolean>;
|
|
523
|
+
/**
|
|
524
|
+
* Copies a node to another location
|
|
525
|
+
*/
|
|
526
|
+
copyTo(options: {
|
|
527
|
+
node: AXMDocumentExplorerNode;
|
|
528
|
+
scope: AXPPlatformScope;
|
|
529
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
530
|
+
multiple?: boolean;
|
|
531
|
+
}): Promise<boolean>;
|
|
532
|
+
/**
|
|
533
|
+
* Searches for folders by term within a scope.
|
|
534
|
+
* Root is resolved from current session when folderId is not provided.
|
|
535
|
+
*/
|
|
536
|
+
searchFolders(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
537
|
+
folderId?: string;
|
|
538
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
539
|
+
/**
|
|
540
|
+
* Searches for files by term within a scope.
|
|
541
|
+
* Root is resolved from current session when folderId is not provided.
|
|
542
|
+
*/
|
|
543
|
+
searchFiles(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
544
|
+
folderId?: string;
|
|
545
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
546
|
+
/**
|
|
547
|
+
* Searches for both files and folders by term within a scope.
|
|
548
|
+
* Supports optional metadata filters to narrow down results by metadata field values.
|
|
549
|
+
* Reserved `__quickSearch__` in metadataFilters is treated as the text term (folders + files).
|
|
550
|
+
*/
|
|
551
|
+
searchNodes(searchTerm: string, scope: AXPPlatformScope, options?: {
|
|
552
|
+
folderId?: string;
|
|
553
|
+
metadataFilters?: AXPFilterQuery[];
|
|
554
|
+
documentTypeIds?: string[];
|
|
555
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
556
|
+
/** Pulls reserved `__quickSearch__` out of drive metadata filters into a plain search term. */
|
|
557
|
+
private splitQuickSearchMetadataFilters;
|
|
558
|
+
/**
|
|
559
|
+
* Returns unique metadata field definitions for the given document types (or all types when `documentTypeIds` is omitted).
|
|
560
|
+
*/
|
|
561
|
+
getUniqueMetadataFields(documentTypeIds?: string[]): Promise<AXMMetadataFieldInfo[]>;
|
|
562
|
+
/**
|
|
563
|
+
* Gets all folders
|
|
564
|
+
*/
|
|
565
|
+
getAllFolders(): Promise<AXMDocumentExplorerNode[]>;
|
|
566
|
+
/**
|
|
567
|
+
* Gets all files with optional query
|
|
568
|
+
*/
|
|
569
|
+
getAllFiles(request?: AXPQueryRequest): Promise<AXMDocumentExplorerNode[]>;
|
|
570
|
+
/**
|
|
571
|
+
* Gets all nodes (files and folders)
|
|
572
|
+
*/
|
|
573
|
+
getAllNodes(): Promise<AXMDocumentExplorerNode[]>;
|
|
574
|
+
/**
|
|
575
|
+
* Uploads file by document type to a specific folder
|
|
576
|
+
*/
|
|
577
|
+
uploadFileByType(folderId: string, docTypeId: string, options?: {
|
|
578
|
+
scope?: AXPPlatformScope;
|
|
579
|
+
}): Promise<boolean>;
|
|
580
|
+
/**
|
|
581
|
+
* Uploads file by document type to a specific folder
|
|
582
|
+
*/
|
|
583
|
+
updateUploadFileByType(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
584
|
+
/**
|
|
585
|
+
* Manage versions: Upload a new version for a specific document
|
|
586
|
+
*/
|
|
587
|
+
uploadNewVersion(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
588
|
+
/**
|
|
589
|
+
* Opens version history popup using common version-history command.
|
|
590
|
+
* For shortcut nodes, shows history of the target document.
|
|
591
|
+
*/
|
|
592
|
+
showVersionHistory(node: AXMDocumentExplorerNode): Promise<void>;
|
|
593
|
+
/**
|
|
594
|
+
* Shows share dialog for a node
|
|
595
|
+
*/
|
|
596
|
+
showShareDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
597
|
+
/**
|
|
598
|
+
* Shows share via email dialog for a node
|
|
599
|
+
*/
|
|
600
|
+
showShareWithEmailDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
601
|
+
/**
|
|
602
|
+
* Shows link dialog for a node
|
|
603
|
+
*/
|
|
604
|
+
showLinkDialog(node: AXMDocumentExplorerNode): Promise<void>;
|
|
605
|
+
/**
|
|
606
|
+
* Shows lock dialog for a document
|
|
607
|
+
*/
|
|
608
|
+
showLockDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
609
|
+
/**
|
|
610
|
+
* Shows unlock dialog for a document
|
|
611
|
+
*/
|
|
612
|
+
showUnlockDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
613
|
+
/**
|
|
614
|
+
* Document types picker: keeps current selection when non-empty; otherwise defaults to the
|
|
615
|
+
* catalog entry whose programmatic name is `any` (mock title "Document").
|
|
616
|
+
*/
|
|
617
|
+
private initialFolderDialogDocumentTypes;
|
|
618
|
+
private mapDocumentTypesForPicker;
|
|
619
|
+
private resolveDocumentTypeLabel;
|
|
620
|
+
/**
|
|
621
|
+
* Shows folder edit dialog
|
|
622
|
+
*/
|
|
623
|
+
showFolderEditDialog(node: AXMDocumentExplorerNode): Promise<boolean>;
|
|
624
|
+
/**
|
|
625
|
+
* Shows create folder dialog.
|
|
626
|
+
* @param parentId Parent folder id
|
|
627
|
+
* @param options.allowedDocumentTypeNames When set, only these document type names can be selected
|
|
628
|
+
*/
|
|
629
|
+
showCreateFolderDialog(parentId?: string, options?: {
|
|
630
|
+
allowedDocumentTypeNames?: string[];
|
|
631
|
+
}): Promise<AXMDocumentExplorerNode | null>;
|
|
632
|
+
/**
|
|
633
|
+
* Shows rename popup for a node using dynamic form builder
|
|
634
|
+
*/
|
|
635
|
+
showRenamePopup(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode | undefined>;
|
|
636
|
+
/**
|
|
637
|
+
* Shows delete nodes confirmation dialog
|
|
638
|
+
*/
|
|
639
|
+
showDeleteNodesDialog(nodeIds: AXMDocumentExplorerNode[]): Promise<boolean>;
|
|
640
|
+
/**
|
|
641
|
+
* Shows choose file dialog
|
|
642
|
+
*/
|
|
643
|
+
showChooseFileDialog(scope: AXPPlatformScope): Promise<AXMDocumentExplorerNode[]>;
|
|
644
|
+
/** File extensions supported by the legacy gallery viewer (images, PDF, video, audio). */
|
|
645
|
+
static readonly GALLERY_EXTENSIONS: readonly ["jpg", "jpeg", "png", "gif", "bmp", "webp", "svg", "pdf", "mp4", "webm", "mov", "m4v", "avi", "mkv", "wmv", "mp3", "wav", "ogg", "oga", "m4a", "flac", "aac", "wma", "weba"];
|
|
646
|
+
/**
|
|
647
|
+
* Returns file nodes from a folder listing.
|
|
648
|
+
*/
|
|
649
|
+
getGallerySupportedFiles(nodes: AXMDocumentExplorerNode[]): AXMDocumentExplorerNode[];
|
|
650
|
+
/**
|
|
651
|
+
* Opens a fullscreen file viewer for all files in the node's folder.
|
|
652
|
+
*/
|
|
653
|
+
showFileViewerPopup(node: AXMDocumentExplorerNode, options?: {
|
|
654
|
+
folderFiles?: AXMDocumentExplorerNode[];
|
|
655
|
+
folderVirtualFiles?: AXMDocumentExplorerNode[];
|
|
656
|
+
startIndex?: number;
|
|
657
|
+
index?: number;
|
|
658
|
+
}): Promise<void>;
|
|
659
|
+
private resolveFolderFileNodes;
|
|
660
|
+
/**
|
|
661
|
+
* Updates a file name
|
|
662
|
+
*/
|
|
663
|
+
updateFileName(node: AXMDocumentExplorerNode, name: string): Promise<AXMDocumentExplorerNode>;
|
|
664
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentManagerServiceImpl, never>;
|
|
665
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDocumentManagerServiceImpl>;
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* Scoped drive service for specific platform scopes.
|
|
669
|
+
* Backend resolves tenant/user from request context (client sends only scope).
|
|
670
|
+
*/
|
|
671
|
+
declare class ScopedDriveService {
|
|
672
|
+
private parent;
|
|
673
|
+
private scope;
|
|
674
|
+
constructor(parent: AXMDocumentManagerService, scope: AXPPlatformScope);
|
|
675
|
+
/**
|
|
676
|
+
* Gets root folder for this scope (tenant/user from session).
|
|
677
|
+
*/
|
|
678
|
+
getRoot(): Promise<{
|
|
679
|
+
path: AXMDocumentExplorerNode[];
|
|
680
|
+
result: AXMDocumentExplorerNode;
|
|
681
|
+
}>;
|
|
682
|
+
/**
|
|
683
|
+
* Gets folder for this scope.
|
|
684
|
+
*/
|
|
685
|
+
getFolder(folderId: string, options?: {
|
|
686
|
+
parentPath?: AXMDocumentExplorerNode[];
|
|
687
|
+
parentFolderId?: string;
|
|
688
|
+
}): Promise<{
|
|
689
|
+
path: AXMDocumentExplorerNode[];
|
|
690
|
+
result: AXMDocumentExplorerNode;
|
|
691
|
+
}>;
|
|
692
|
+
/**
|
|
693
|
+
* Creates folder in this scope. Backend sets tenant/user from request context.
|
|
694
|
+
*/
|
|
695
|
+
createFolder(data: Omit<AXMDocumentManagementFolderCreateDto, 'tenantId' | 'userId'>): Promise<AXMDocumentExplorerNode>;
|
|
696
|
+
/**
|
|
697
|
+
* Updates folder in this scope
|
|
698
|
+
*/
|
|
699
|
+
updateFolder(folderId: string, data: UpdateFolderDto): Promise<AXMDocumentExplorerNode>;
|
|
700
|
+
/**
|
|
701
|
+
* Deletes folder in this scope
|
|
702
|
+
*/
|
|
703
|
+
deleteFolder(folderId: string): Promise<void>;
|
|
704
|
+
/**
|
|
705
|
+
* Gets available space for this scope
|
|
706
|
+
*/
|
|
707
|
+
getAvailableSpace(): Promise<number>;
|
|
708
|
+
/**
|
|
709
|
+
* Searches folders in this scope
|
|
710
|
+
*/
|
|
711
|
+
searchFolders(searchTerm: string, options?: {
|
|
712
|
+
folderId?: string;
|
|
713
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
714
|
+
/**
|
|
715
|
+
* Searches files in this scope
|
|
716
|
+
*/
|
|
717
|
+
searchFiles(searchTerm: string, options?: {
|
|
718
|
+
folderId?: string;
|
|
719
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
720
|
+
/**
|
|
721
|
+
* Searches nodes in this scope
|
|
722
|
+
*/
|
|
723
|
+
searchNodes(searchTerm: string, options?: {
|
|
724
|
+
folderId?: string;
|
|
725
|
+
metadataFilters?: AXPFilterQuery[];
|
|
726
|
+
documentTypeIds?: string[];
|
|
727
|
+
}): Promise<AXMDocumentExplorerNode[]>;
|
|
728
|
+
/**
|
|
729
|
+
* Creates a copy of a node in this scope
|
|
730
|
+
*/
|
|
731
|
+
copy(node: AXMDocumentExplorerNode): Promise<AXMDocumentExplorerNode>;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
declare class AXMDocumentExplorerComponent {
|
|
735
|
+
#private;
|
|
736
|
+
protected vm: {
|
|
737
|
+
viewMode: _angular_core.Signal<AXPDocumentExplorerViewMode>;
|
|
738
|
+
isLoading: _angular_core.Signal<boolean>;
|
|
739
|
+
scope: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPPlatformScope>;
|
|
740
|
+
currentPath: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
741
|
+
currentNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
742
|
+
loadingFolderId: _angular_core.Signal<string | null>;
|
|
743
|
+
navigatingFolderId: _angular_core.Signal<string | null>;
|
|
744
|
+
backHistory: _angular_core.Signal<{
|
|
745
|
+
folderId: string;
|
|
746
|
+
path: AXMDocumentExplorerNode[];
|
|
747
|
+
}[]>;
|
|
748
|
+
scopeRootId: _angular_core.Signal<string | null>;
|
|
749
|
+
selectionMode: _angular_core.Signal<AXMDocumentSelectionMode>;
|
|
750
|
+
selectedNodes: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
751
|
+
browseMode: _angular_core.Signal<AXMDocumentExplorerBrowseMode>;
|
|
752
|
+
sortField: _angular_core.Signal<string>;
|
|
753
|
+
sortDirection: _angular_core.Signal<string>;
|
|
754
|
+
folders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
755
|
+
files: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
756
|
+
itemsCount: _angular_core.Signal<number>;
|
|
757
|
+
availableSpace: _angular_core.Signal<number>;
|
|
758
|
+
currentDrive: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPPlatformScope | null>;
|
|
759
|
+
fileTypes: _angular_core.Signal<dist_libs_framework_client_types_acorex_platform_framework_client_common.AXPFileType[]>;
|
|
760
|
+
fileTypeFilter: _angular_core.Signal<string>;
|
|
761
|
+
detailPanel: _angular_core.Signal<boolean>;
|
|
762
|
+
groupByType: _angular_core.Signal<boolean>;
|
|
763
|
+
allowedDocumentTypeNames: _angular_core.Signal<string[] | null>;
|
|
764
|
+
isRoot: _angular_core.Signal<boolean>;
|
|
765
|
+
isVirtual: _angular_core.Signal<boolean>;
|
|
766
|
+
currentFolder: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
767
|
+
currentFolderContents: _angular_core.Signal<{
|
|
768
|
+
folders: AXMDocumentExplorerNode[];
|
|
769
|
+
files: AXMDocumentExplorerNode[];
|
|
770
|
+
}>;
|
|
771
|
+
filteredFolders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
772
|
+
filteredFiles: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
773
|
+
isLargeTilesView: _angular_core.Signal<boolean>;
|
|
774
|
+
isSmallTilesView: _angular_core.Signal<boolean>;
|
|
775
|
+
isListView: _angular_core.Signal<boolean>;
|
|
776
|
+
isDetailsView: _angular_core.Signal<boolean>;
|
|
777
|
+
isLargeIconsView: _angular_core.Signal<boolean>;
|
|
778
|
+
isSmallIconsView: _angular_core.Signal<boolean>;
|
|
779
|
+
isBackAvailable: _angular_core.Signal<boolean>;
|
|
780
|
+
isUpAvailable: _angular_core.Signal<boolean>;
|
|
781
|
+
selectedCount: _angular_core.Signal<number>;
|
|
782
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
783
|
+
hasMultipleSelectedItems: _angular_core.Signal<boolean>;
|
|
784
|
+
isMultiSelect: _angular_core.Signal<boolean>;
|
|
785
|
+
selectedNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
786
|
+
isDetailPanelOpen: _angular_core.Signal<boolean>;
|
|
787
|
+
setAllowedDocumentTypeNames: (names: string[] | null) => void;
|
|
788
|
+
initialize: (options?: {
|
|
789
|
+
scope?: _acorex_platform_framework_shared_core.AXPPlatformScope;
|
|
790
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
791
|
+
filter?: any;
|
|
792
|
+
}) => Promise<void>;
|
|
793
|
+
applyLoadedFolder: (node: {
|
|
794
|
+
path: AXMDocumentExplorerNode[];
|
|
795
|
+
result: AXMDocumentExplorerNode;
|
|
796
|
+
scopeRootId?: string;
|
|
797
|
+
}) => Promise<void>;
|
|
798
|
+
navigateToFolder: (folderId: string) => void;
|
|
799
|
+
loadFolderContents: (folderId: string) => Promise<void>;
|
|
800
|
+
virtualFolder: (files?: AXMDocumentExplorerNode[], options?: {
|
|
801
|
+
name?: string;
|
|
802
|
+
parentId?: string;
|
|
803
|
+
}) => Promise<void>;
|
|
804
|
+
setViewMode: (mode: AXPDocumentExplorerViewMode | string) => void;
|
|
805
|
+
isViewMode: (mode: AXPDocumentExplorerViewMode | string) => boolean;
|
|
806
|
+
setSortField: (field: string) => void;
|
|
807
|
+
setSortDirection: (direction: string) => void;
|
|
808
|
+
setSelectionMode: (mode: AXMDocumentSelectionMode | string) => void;
|
|
809
|
+
setDrive: (scope: _acorex_platform_framework_shared_core.AXPPlatformScope) => void;
|
|
810
|
+
setFileTypeFilter: (key: string) => void;
|
|
811
|
+
setLoading: (isLoading: boolean) => void;
|
|
812
|
+
isLoadingFolder: (folderId: string) => boolean;
|
|
813
|
+
getFileInfo: (fileName: string) => {
|
|
814
|
+
icon: string;
|
|
815
|
+
type: string;
|
|
816
|
+
};
|
|
817
|
+
getFileInfoForNode: (node: AXMDocumentExplorerNode) => {
|
|
818
|
+
icon: string;
|
|
819
|
+
type: string;
|
|
820
|
+
};
|
|
821
|
+
getNodeDisplayInfo: (node: AXMDocumentExplorerNode) => {
|
|
822
|
+
icon: string;
|
|
823
|
+
type: string;
|
|
824
|
+
isShortcut: boolean;
|
|
825
|
+
};
|
|
826
|
+
getFolderColor: (node: AXMDocumentExplorerNode) => string;
|
|
827
|
+
getNodeInfo: (node: AXMDocumentExplorerNode) => {
|
|
828
|
+
name: string;
|
|
829
|
+
icon: string;
|
|
830
|
+
type: string;
|
|
831
|
+
sections: {
|
|
832
|
+
title: string;
|
|
833
|
+
details: {
|
|
834
|
+
title: string;
|
|
835
|
+
content?: any;
|
|
836
|
+
icon?: string;
|
|
837
|
+
format?: "datetime" | "date" | "filesize" | "number" | "string";
|
|
838
|
+
}[];
|
|
839
|
+
}[];
|
|
840
|
+
};
|
|
841
|
+
sortItems: (items: AXMDocumentExplorerNode[]) => AXMDocumentExplorerNode[];
|
|
842
|
+
refresh: () => Promise<void>;
|
|
843
|
+
navigateToUp: () => void;
|
|
844
|
+
navigateBack: () => void;
|
|
845
|
+
openFileViewerWithFolderId: () => Promise<void>;
|
|
846
|
+
getCurrentFolderFiles: () => AXMDocumentExplorerNode[];
|
|
847
|
+
deleteNodes: (nodes?: AXMDocumentExplorerNode[]) => Promise<void>;
|
|
848
|
+
toggleSelect: (node: AXMDocumentExplorerNode) => void;
|
|
849
|
+
selectOnContextMenu: (node: AXMDocumentExplorerNode) => void;
|
|
850
|
+
isItemSelected: (node: AXMDocumentExplorerNode) => boolean;
|
|
851
|
+
selectAll: () => void;
|
|
852
|
+
deselectAll: () => void;
|
|
853
|
+
openDetailPanel: () => void;
|
|
854
|
+
closeDetailPanel: () => void;
|
|
855
|
+
toggleDetailPanel: () => void;
|
|
856
|
+
toggleGroupByType: () => void;
|
|
857
|
+
setGroupByType: (enabled: boolean) => void;
|
|
858
|
+
getFolderAddMenuItems: ({ canAddFolder }?: {
|
|
859
|
+
canAddFolder?: boolean;
|
|
860
|
+
}) => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
861
|
+
getFolderActionMenuItems: () => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
862
|
+
getExplorerLayoutMenuItems: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
863
|
+
getOpenFileViewerLayoutMenuItem: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
864
|
+
getRootContextMenuItems: ({ canAddFolder }?: {
|
|
865
|
+
canAddFolder?: boolean;
|
|
866
|
+
}) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
867
|
+
buildAddItemContextMenuEntry: ({ canAddFolder, }?: {
|
|
868
|
+
canAddFolder?: boolean;
|
|
869
|
+
}) => Promise<_acorex_components_menu.AXMenuItem | null>;
|
|
870
|
+
getContextMenuItems: () => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
871
|
+
getFileContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
872
|
+
getFolderContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
873
|
+
getNodeContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
874
|
+
openFile: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
875
|
+
handleMenuItemClick: (name: string, data: any) => Promise<void>;
|
|
876
|
+
downloadFile: (node: AXMDocumentExplorerNode) => void;
|
|
877
|
+
openFileViewer: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
878
|
+
showFolderProperty: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
879
|
+
createFolder: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
880
|
+
renameNode: (node?: AXMDocumentExplorerNode) => Promise<AXMDocumentExplorerNode | undefined>;
|
|
881
|
+
makeCopy: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
882
|
+
isLocked: (node: AXMDocumentExplorerNode) => Promise<boolean>;
|
|
883
|
+
lock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
884
|
+
unlock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
885
|
+
moveTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
886
|
+
copyTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
887
|
+
createShortcut: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
888
|
+
uploadFileByType: (folderId: string, documentTypeId: string) => Promise<void>;
|
|
889
|
+
} & _ngrx_signals.StateSource<{
|
|
890
|
+
viewMode: AXPDocumentExplorerViewMode;
|
|
891
|
+
isLoading: boolean;
|
|
892
|
+
scope: _acorex_platform_framework_shared_core.AXPPlatformScope;
|
|
893
|
+
currentPath: AXMDocumentExplorerNode[];
|
|
894
|
+
currentNode: AXMDocumentExplorerNode | null;
|
|
895
|
+
loadingFolderId: string | null;
|
|
896
|
+
navigatingFolderId: string | null;
|
|
897
|
+
backHistory: {
|
|
898
|
+
folderId: string;
|
|
899
|
+
path: AXMDocumentExplorerNode[];
|
|
900
|
+
}[];
|
|
901
|
+
scopeRootId: string | null;
|
|
902
|
+
selectionMode: AXMDocumentSelectionMode;
|
|
903
|
+
selectedNodes: AXMDocumentExplorerNode[];
|
|
904
|
+
browseMode: AXMDocumentExplorerBrowseMode;
|
|
905
|
+
sortField: string;
|
|
906
|
+
sortDirection: string;
|
|
907
|
+
folders: AXMDocumentExplorerNode[];
|
|
908
|
+
files: AXMDocumentExplorerNode[];
|
|
909
|
+
itemsCount: number;
|
|
910
|
+
availableSpace: number;
|
|
911
|
+
currentDrive: _acorex_platform_framework_shared_core.AXPPlatformScope | null;
|
|
912
|
+
fileTypes: dist_libs_framework_client_types_acorex_platform_framework_client_common.AXPFileType[];
|
|
913
|
+
fileTypeFilter: string;
|
|
914
|
+
detailPanel: boolean;
|
|
915
|
+
groupByType: boolean;
|
|
916
|
+
allowedDocumentTypeNames: string[] | null;
|
|
917
|
+
}>;
|
|
918
|
+
protected contextMenu: _angular_core.Signal<AXContextMenuComponent | undefined>;
|
|
919
|
+
protected rootContextMenu: _angular_core.Signal<AXContextMenuComponent | undefined>;
|
|
920
|
+
protected driveService: AXMDocumentManagerService;
|
|
921
|
+
protected translateService: AXTranslationService;
|
|
922
|
+
protected readonly layout: {
|
|
923
|
+
currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
|
|
924
|
+
currentPalette: _angular_core.Signal<string>;
|
|
925
|
+
systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
|
|
926
|
+
font: _ngrx_signals.DeepSignal<{
|
|
927
|
+
family: string;
|
|
928
|
+
size: string;
|
|
929
|
+
}>;
|
|
930
|
+
overlayLoading: _angular_core.Signal<boolean>;
|
|
931
|
+
navigationLoading: _angular_core.Signal<boolean>;
|
|
932
|
+
overlayLoadingTaskCount: _angular_core.Signal<number>;
|
|
933
|
+
navigationLoadingTaskCount: _angular_core.Signal<number>;
|
|
934
|
+
sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
|
|
935
|
+
overlaySideMenuOpen: _angular_core.Signal<boolean>;
|
|
936
|
+
sideMenuWidth: _angular_core.Signal<number>;
|
|
937
|
+
sideMenuCompactWidth: _angular_core.Signal<number>;
|
|
938
|
+
menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
939
|
+
menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
|
|
940
|
+
isPrinting: _angular_core.Signal<boolean>;
|
|
941
|
+
isDarkMode: _angular_core.Signal<boolean>;
|
|
942
|
+
isLightMode: _angular_core.Signal<boolean>;
|
|
943
|
+
isSystemMode: _angular_core.Signal<boolean>;
|
|
944
|
+
isSideMenuOpen: _angular_core.Signal<boolean>;
|
|
945
|
+
isOverlayLoading: _angular_core.Signal<boolean>;
|
|
946
|
+
overlayTaskCount: _angular_core.Signal<number>;
|
|
947
|
+
isNavigationLoading: _angular_core.Signal<boolean>;
|
|
948
|
+
isMenuHorizontal: _angular_core.Signal<boolean>;
|
|
949
|
+
effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
950
|
+
sideMenuDrawerWidth: _angular_core.Signal<number>;
|
|
951
|
+
changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
|
|
952
|
+
openSideMenu: () => void;
|
|
953
|
+
closeSideMenu: () => void;
|
|
954
|
+
setSideMenuWidth: (width: number) => void;
|
|
955
|
+
setSideMenuCompactWidth: (width: number) => void;
|
|
956
|
+
setSideMenuDrawerWidth: (width: number) => void;
|
|
957
|
+
toggleSideMenu: () => void;
|
|
958
|
+
setNavigationLoading: (value: boolean, delay?: number) => void;
|
|
959
|
+
setOverlayLoading: (value: boolean, delay?: number) => void;
|
|
960
|
+
clearOverlayLoading: () => void;
|
|
961
|
+
loadSettings: () => Promise<void>;
|
|
962
|
+
} & _ngrx_signals.StateSource<{
|
|
963
|
+
currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
|
|
964
|
+
currentPalette: string;
|
|
965
|
+
systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
|
|
966
|
+
font: {
|
|
967
|
+
family: string;
|
|
968
|
+
size: string;
|
|
969
|
+
};
|
|
970
|
+
overlayLoading: boolean;
|
|
971
|
+
navigationLoading: boolean;
|
|
972
|
+
overlayLoadingTaskCount: number;
|
|
973
|
+
navigationLoadingTaskCount: number;
|
|
974
|
+
sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
|
|
975
|
+
overlaySideMenuOpen: boolean;
|
|
976
|
+
sideMenuWidth: number;
|
|
977
|
+
sideMenuCompactWidth: number;
|
|
978
|
+
menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
|
|
979
|
+
menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
|
|
980
|
+
isPrinting: boolean;
|
|
981
|
+
}>;
|
|
982
|
+
browseMode: _angular_core.InputSignal<AXMDocumentExplorerBrowseMode>;
|
|
983
|
+
viewMode: _angular_core.InputSignal<AXPDocumentExplorerViewMode | undefined>;
|
|
984
|
+
selectionMode: _angular_core.InputSignal<AXMDocumentSelectionMode>;
|
|
985
|
+
showContextMenu: _angular_core.InputSignal<boolean>;
|
|
986
|
+
protected view: _angular_core.WritableSignal<Type<any> | null>;
|
|
987
|
+
protected skeletonView: _angular_core.WritableSignal<Type<any> | null>;
|
|
988
|
+
protected showSkeleton: _angular_core.Signal<boolean>;
|
|
989
|
+
protected showEmptyState: _angular_core.Signal<boolean>;
|
|
990
|
+
/** Drops stale async open results when the user right-clicks again before items resolve. */
|
|
991
|
+
private contextMenuOpenToken;
|
|
992
|
+
private viewMap;
|
|
993
|
+
private skeletonViewMap;
|
|
994
|
+
protected handleExplorerClick(event: MouseEvent): void;
|
|
995
|
+
/**
|
|
996
|
+
* Builds menu items first, then calls `showAt` with a prefilled event.
|
|
997
|
+
* `AXContextMenuComponent` applies `items` synchronously after `onOpening`, so async
|
|
998
|
+
* `(onOpening)` handlers leave the menu empty.
|
|
999
|
+
*/
|
|
1000
|
+
protected handleExplorerContextMenu(event: MouseEvent): Promise<void>;
|
|
1001
|
+
protected handleContextMenuItemClick(e: AXContextMenuItemsClickEvent): Promise<void>;
|
|
1002
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentExplorerComponent, never>;
|
|
1003
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDocumentExplorerComponent, "axm-document-explorer", never, { "browseMode": { "alias": "browseMode"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "showContextMenu": { "alias": "showContextMenu"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
declare const AXPDocumentExplorerViewModel: _angular_core.Type<{
|
|
1007
|
+
viewMode: _angular_core.Signal<AXPDocumentExplorerViewMode>;
|
|
1008
|
+
isLoading: _angular_core.Signal<boolean>;
|
|
1009
|
+
scope: _angular_core.Signal<AXPPlatformScope>;
|
|
1010
|
+
currentPath: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1011
|
+
currentNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
1012
|
+
loadingFolderId: _angular_core.Signal<string | null>;
|
|
1013
|
+
navigatingFolderId: _angular_core.Signal<string | null>;
|
|
1014
|
+
backHistory: _angular_core.Signal<{
|
|
1015
|
+
folderId: string;
|
|
1016
|
+
path: AXMDocumentExplorerNode[];
|
|
1017
|
+
}[]>;
|
|
1018
|
+
scopeRootId: _angular_core.Signal<string | null>;
|
|
1019
|
+
selectionMode: _angular_core.Signal<AXMDocumentSelectionMode>;
|
|
1020
|
+
selectedNodes: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1021
|
+
browseMode: _angular_core.Signal<AXMDocumentExplorerBrowseMode>;
|
|
1022
|
+
sortField: _angular_core.Signal<string>;
|
|
1023
|
+
sortDirection: _angular_core.Signal<string>;
|
|
1024
|
+
folders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1025
|
+
files: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1026
|
+
itemsCount: _angular_core.Signal<number>;
|
|
1027
|
+
availableSpace: _angular_core.Signal<number>;
|
|
1028
|
+
currentDrive: _angular_core.Signal<AXPPlatformScope | null>;
|
|
1029
|
+
fileTypes: _angular_core.Signal<AXPFileType[]>;
|
|
1030
|
+
fileTypeFilter: _angular_core.Signal<string>;
|
|
1031
|
+
detailPanel: _angular_core.Signal<boolean>;
|
|
1032
|
+
groupByType: _angular_core.Signal<boolean>;
|
|
1033
|
+
allowedDocumentTypeNames: _angular_core.Signal<string[] | null>;
|
|
1034
|
+
isRoot: _angular_core.Signal<boolean>;
|
|
1035
|
+
isVirtual: _angular_core.Signal<boolean>;
|
|
1036
|
+
currentFolder: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
1037
|
+
currentFolderContents: _angular_core.Signal<{
|
|
1038
|
+
folders: AXMDocumentExplorerNode[];
|
|
1039
|
+
files: AXMDocumentExplorerNode[];
|
|
1040
|
+
}>;
|
|
1041
|
+
filteredFolders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1042
|
+
filteredFiles: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
1043
|
+
isLargeTilesView: _angular_core.Signal<boolean>;
|
|
1044
|
+
isSmallTilesView: _angular_core.Signal<boolean>;
|
|
1045
|
+
isListView: _angular_core.Signal<boolean>;
|
|
1046
|
+
isDetailsView: _angular_core.Signal<boolean>;
|
|
1047
|
+
isLargeIconsView: _angular_core.Signal<boolean>;
|
|
1048
|
+
isSmallIconsView: _angular_core.Signal<boolean>;
|
|
1049
|
+
isBackAvailable: _angular_core.Signal<boolean>;
|
|
1050
|
+
isUpAvailable: _angular_core.Signal<boolean>;
|
|
1051
|
+
selectedCount: _angular_core.Signal<number>;
|
|
1052
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
1053
|
+
hasMultipleSelectedItems: _angular_core.Signal<boolean>;
|
|
1054
|
+
isMultiSelect: _angular_core.Signal<boolean>;
|
|
1055
|
+
selectedNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
1056
|
+
isDetailPanelOpen: _angular_core.Signal<boolean>;
|
|
1057
|
+
setAllowedDocumentTypeNames: (names: string[] | null) => void;
|
|
1058
|
+
initialize: (options?: {
|
|
1059
|
+
scope?: AXPPlatformScope;
|
|
1060
|
+
browseMode?: AXMDocumentExplorerBrowseMode;
|
|
1061
|
+
filter?: any;
|
|
1062
|
+
}) => Promise<void>;
|
|
1063
|
+
applyLoadedFolder: (node: {
|
|
1064
|
+
path: AXMDocumentExplorerNode[];
|
|
1065
|
+
result: AXMDocumentExplorerNode;
|
|
1066
|
+
scopeRootId?: string;
|
|
1067
|
+
}) => Promise<void>;
|
|
1068
|
+
navigateToFolder: (folderId: string) => void;
|
|
1069
|
+
loadFolderContents: (folderId: string) => Promise<void>;
|
|
1070
|
+
virtualFolder: (files?: AXMDocumentExplorerNode[], options?: {
|
|
1071
|
+
name?: string;
|
|
1072
|
+
parentId?: string;
|
|
1073
|
+
}) => Promise<void>;
|
|
1074
|
+
setViewMode: (mode: AXPDocumentExplorerViewMode | string) => void;
|
|
1075
|
+
isViewMode: (mode: AXPDocumentExplorerViewMode | string) => boolean;
|
|
1076
|
+
setSortField: (field: string) => void;
|
|
1077
|
+
setSortDirection: (direction: string) => void;
|
|
1078
|
+
setSelectionMode: (mode: AXMDocumentSelectionMode | string) => void;
|
|
1079
|
+
setDrive: (scope: AXPPlatformScope) => void;
|
|
1080
|
+
setFileTypeFilter: (key: string) => void;
|
|
1081
|
+
setLoading: (isLoading: boolean) => void;
|
|
1082
|
+
isLoadingFolder: (folderId: string) => boolean;
|
|
1083
|
+
getFileInfo: (fileName: string) => {
|
|
1084
|
+
icon: string;
|
|
1085
|
+
type: string;
|
|
1086
|
+
};
|
|
1087
|
+
getFileInfoForNode: (node: AXMDocumentExplorerNode) => {
|
|
1088
|
+
icon: string;
|
|
1089
|
+
type: string;
|
|
1090
|
+
};
|
|
1091
|
+
getNodeDisplayInfo: (node: AXMDocumentExplorerNode) => {
|
|
1092
|
+
icon: string;
|
|
1093
|
+
type: string;
|
|
1094
|
+
isShortcut: boolean;
|
|
1095
|
+
};
|
|
1096
|
+
getFolderColor: (node: AXMDocumentExplorerNode) => string;
|
|
1097
|
+
getNodeInfo: (node: AXMDocumentExplorerNode) => {
|
|
1098
|
+
name: string;
|
|
1099
|
+
icon: string;
|
|
1100
|
+
type: string;
|
|
1101
|
+
sections: {
|
|
1102
|
+
title: string;
|
|
1103
|
+
details: {
|
|
1104
|
+
title: string;
|
|
1105
|
+
content?: any;
|
|
1106
|
+
icon?: string;
|
|
1107
|
+
format?: "datetime" | "date" | "filesize" | "number" | "string";
|
|
1108
|
+
}[];
|
|
1109
|
+
}[];
|
|
1110
|
+
};
|
|
1111
|
+
sortItems: (items: AXMDocumentExplorerNode[]) => AXMDocumentExplorerNode[];
|
|
1112
|
+
refresh: () => Promise<void>;
|
|
1113
|
+
navigateToUp: () => void;
|
|
1114
|
+
navigateBack: () => void;
|
|
1115
|
+
openFileViewerWithFolderId: () => Promise<void>;
|
|
1116
|
+
getCurrentFolderFiles: () => AXMDocumentExplorerNode[];
|
|
1117
|
+
deleteNodes: (nodes?: AXMDocumentExplorerNode[]) => Promise<void>;
|
|
1118
|
+
toggleSelect: (node: AXMDocumentExplorerNode) => void;
|
|
1119
|
+
selectOnContextMenu: (node: AXMDocumentExplorerNode) => void;
|
|
1120
|
+
isItemSelected: (node: AXMDocumentExplorerNode) => boolean;
|
|
1121
|
+
selectAll: () => void;
|
|
1122
|
+
deselectAll: () => void;
|
|
1123
|
+
openDetailPanel: () => void;
|
|
1124
|
+
closeDetailPanel: () => void;
|
|
1125
|
+
toggleDetailPanel: () => void;
|
|
1126
|
+
toggleGroupByType: () => void;
|
|
1127
|
+
setGroupByType: (enabled: boolean) => void;
|
|
1128
|
+
getFolderAddMenuItems: ({ canAddFolder }?: {
|
|
1129
|
+
canAddFolder?: boolean;
|
|
1130
|
+
}) => Promise<AXPActionMenuItem[]>;
|
|
1131
|
+
getFolderActionMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1132
|
+
getExplorerLayoutMenuItems: () => Promise<AXMenuItem[]>;
|
|
1133
|
+
getOpenFileViewerLayoutMenuItem: () => Promise<AXMenuItem[]>;
|
|
1134
|
+
getRootContextMenuItems: ({ canAddFolder }?: {
|
|
1135
|
+
canAddFolder?: boolean;
|
|
1136
|
+
}) => Promise<AXMenuItem[]>;
|
|
1137
|
+
buildAddItemContextMenuEntry: ({ canAddFolder, }?: {
|
|
1138
|
+
canAddFolder?: boolean;
|
|
1139
|
+
}) => Promise<AXMenuItem | null>;
|
|
1140
|
+
getContextMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1141
|
+
getFileContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<AXMenuItem[]>;
|
|
1142
|
+
getFolderContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<AXMenuItem[]>;
|
|
1143
|
+
getNodeContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<AXMenuItem[]>;
|
|
1144
|
+
openFile: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
1145
|
+
handleMenuItemClick: (name: string, data: any) => Promise<void>;
|
|
1146
|
+
downloadFile: (node: AXMDocumentExplorerNode) => void;
|
|
1147
|
+
openFileViewer: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
1148
|
+
showFolderProperty: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
1149
|
+
createFolder: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
1150
|
+
renameNode: (node?: AXMDocumentExplorerNode) => Promise<AXMDocumentExplorerNode | undefined>;
|
|
1151
|
+
makeCopy: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
1152
|
+
isLocked: (node: AXMDocumentExplorerNode) => Promise<boolean>;
|
|
1153
|
+
lock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
1154
|
+
unlock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
1155
|
+
moveTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
1156
|
+
copyTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
1157
|
+
createShortcut: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
1158
|
+
uploadFileByType: (folderId: string, documentTypeId: string) => Promise<void>;
|
|
1159
|
+
} & _ngrx_signals.StateSource<{
|
|
1160
|
+
viewMode: AXPDocumentExplorerViewMode;
|
|
1161
|
+
isLoading: boolean;
|
|
1162
|
+
scope: AXPPlatformScope;
|
|
1163
|
+
currentPath: AXMDocumentExplorerNode[];
|
|
1164
|
+
currentNode: AXMDocumentExplorerNode | null;
|
|
1165
|
+
loadingFolderId: string | null;
|
|
1166
|
+
navigatingFolderId: string | null;
|
|
1167
|
+
backHistory: {
|
|
1168
|
+
folderId: string;
|
|
1169
|
+
path: AXMDocumentExplorerNode[];
|
|
1170
|
+
}[];
|
|
1171
|
+
scopeRootId: string | null;
|
|
1172
|
+
selectionMode: AXMDocumentSelectionMode;
|
|
1173
|
+
selectedNodes: AXMDocumentExplorerNode[];
|
|
1174
|
+
browseMode: AXMDocumentExplorerBrowseMode;
|
|
1175
|
+
sortField: string;
|
|
1176
|
+
sortDirection: string;
|
|
1177
|
+
folders: AXMDocumentExplorerNode[];
|
|
1178
|
+
files: AXMDocumentExplorerNode[];
|
|
1179
|
+
itemsCount: number;
|
|
1180
|
+
availableSpace: number;
|
|
1181
|
+
currentDrive: AXPPlatformScope | null;
|
|
1182
|
+
fileTypes: AXPFileType[];
|
|
1183
|
+
fileTypeFilter: string;
|
|
1184
|
+
detailPanel: boolean;
|
|
1185
|
+
groupByType: boolean;
|
|
1186
|
+
allowedDocumentTypeNames: string[] | null;
|
|
1187
|
+
}>>;
|
|
1188
|
+
|
|
1189
|
+
/** Component key for the entity Documents (EDMS) page. Register via AXP_PAGE_COMPONENT_PROVIDER. */
|
|
1190
|
+
declare const DOCUMENT_DRIVE_PAGE_COMPONENT_KEY = "entity-document-drive-page";
|
|
1191
|
+
type DocumentPluginOptions = {
|
|
1192
|
+
/** Page title. Default: @document-management:terms.common.documents */
|
|
1193
|
+
title?: string;
|
|
1194
|
+
/** Page icon. Default: fa-light fa-folder-open */
|
|
1195
|
+
icon?: string;
|
|
1196
|
+
/**
|
|
1197
|
+
* Restrict document types for this entity: only these types can be selected when creating a folder
|
|
1198
|
+
* or uploading. User cannot see or select other document types.
|
|
1199
|
+
*/
|
|
1200
|
+
documentTypeNames?: string[] | AXPExpression;
|
|
1201
|
+
/** Visibility condition for the Documents page (boolean or expression string). */
|
|
1202
|
+
hidden?: boolean | string;
|
|
1203
|
+
};
|
|
1204
|
+
/**
|
|
1205
|
+
* Document (EDMS) plugin. Adds a "Documents" page to the entity that loads the folder
|
|
1206
|
+
* bound to the current record via refType/refId (getRootByEntityRef). Uses the same
|
|
1207
|
+
* drive UI (explorer, toolbar, detail panel) scoped to that folder.
|
|
1208
|
+
*/
|
|
1209
|
+
declare const documentPlugin: AXPEntityActionPlugin;
|
|
1210
|
+
|
|
1211
|
+
/**
|
|
1212
|
+
* Entity page component that shows the EDMS drive UI scoped to the current record's folder.
|
|
1213
|
+
* Uses getRootByEntityRef(refType, refId) to load the folder; navigation stays in-page (no router).
|
|
1214
|
+
*/
|
|
1215
|
+
declare class AXMDocumentDrivePageComponent extends AXPPageLayoutBaseComponent implements OnInit {
|
|
1216
|
+
#private;
|
|
1217
|
+
/** Default `{}`: avoid NG0950 before page-component-renderer calls setInput. */
|
|
1218
|
+
rootContext: _angular_core.InputSignal<Record<string, unknown>>;
|
|
1219
|
+
pageConfig: _angular_core.InputSignal<Record<string, unknown> | undefined>;
|
|
1220
|
+
options: _angular_core.InputSignal<Record<string, any>>;
|
|
1221
|
+
protected readonly rootConfig: {
|
|
1222
|
+
readonly config: {
|
|
1223
|
+
i18n: string;
|
|
1224
|
+
module: string;
|
|
1225
|
+
};
|
|
1226
|
+
readonly module: {
|
|
1227
|
+
readonly module: string;
|
|
1228
|
+
readonly name: string;
|
|
1229
|
+
readonly title: `@${string}:module.title`;
|
|
1230
|
+
readonly icon: "fa-light fa-books";
|
|
1231
|
+
};
|
|
1232
|
+
readonly entities: {
|
|
1233
|
+
readonly folder: {
|
|
1234
|
+
readonly name: "Folder";
|
|
1235
|
+
readonly title: `@${string}:entities.folder.title`;
|
|
1236
|
+
readonly titlePlural: `@${string}:entities.folder.title-plural`;
|
|
1237
|
+
readonly icon: "fa-light fa-folder";
|
|
1238
|
+
};
|
|
1239
|
+
readonly document: {
|
|
1240
|
+
readonly name: "Document";
|
|
1241
|
+
readonly title: `@${string}:entities.document.title`;
|
|
1242
|
+
readonly titlePlural: `@${string}:entities.document.title-plural`;
|
|
1243
|
+
readonly icon: "fa-light fa-file";
|
|
1244
|
+
};
|
|
1245
|
+
readonly documentType: {
|
|
1246
|
+
readonly name: "DocumentType";
|
|
1247
|
+
readonly title: `@${string}:entities.document-type.title`;
|
|
1248
|
+
readonly titlePlural: `@${string}:entities.document-type.title-plural`;
|
|
1249
|
+
readonly icon: "fa-light fa-books";
|
|
1250
|
+
};
|
|
1251
|
+
readonly documentShortcut: {
|
|
1252
|
+
readonly name: "DocumentShortcut";
|
|
1253
|
+
readonly title: `@${string}:entities.document-shortcut.title`;
|
|
1254
|
+
readonly titlePlural: `@${string}:entities.document-shortcut.title-plural`;
|
|
1255
|
+
readonly icon: "fa-light fa-up-right-from-square";
|
|
1256
|
+
};
|
|
1257
|
+
};
|
|
1258
|
+
readonly queries: {
|
|
1259
|
+
readonly dashboard: {
|
|
1260
|
+
readonly documentsKpi: `${string}:Dashboard:DocumentsKpi`;
|
|
1261
|
+
};
|
|
1262
|
+
readonly reports: {
|
|
1263
|
+
readonly getDocumentsByType: `${string}:Reports:GetDocumentsByType`;
|
|
1264
|
+
readonly getDocumentExpiration: `${string}:Reports:GetDocumentExpiration`;
|
|
1265
|
+
};
|
|
1266
|
+
};
|
|
1267
|
+
readonly documentExpirationNotify: {
|
|
1268
|
+
readonly providerKey: "document-management";
|
|
1269
|
+
readonly defaultCron: "0 0 * * *";
|
|
1270
|
+
readonly expiredTemplateId: "c7100009-0001-4111-b111-090909090909";
|
|
1271
|
+
readonly nearExpiryTemplateId: "c710000a-0001-4111-b111-0a0a0a0a0a0a";
|
|
1272
|
+
readonly tenantRoleNames: readonly ["admin", "safety-manager"];
|
|
1273
|
+
};
|
|
1274
|
+
};
|
|
1275
|
+
protected readonly deviceService: AXPDeviceService;
|
|
1276
|
+
private readonly fileTypeService;
|
|
1277
|
+
private readonly driveService;
|
|
1278
|
+
protected readonly vm: {
|
|
1279
|
+
viewMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode>;
|
|
1280
|
+
isLoading: _angular_core.Signal<boolean>;
|
|
1281
|
+
scope: _angular_core.Signal<AXPPlatformScope>;
|
|
1282
|
+
currentPath: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1283
|
+
currentNode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1284
|
+
loadingFolderId: _angular_core.Signal<string | null>;
|
|
1285
|
+
navigatingFolderId: _angular_core.Signal<string | null>;
|
|
1286
|
+
backHistory: _angular_core.Signal<{
|
|
1287
|
+
folderId: string;
|
|
1288
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1289
|
+
}[]>;
|
|
1290
|
+
scopeRootId: _angular_core.Signal<string | null>;
|
|
1291
|
+
selectionMode: _angular_core.Signal<AXMDocumentSelectionMode>;
|
|
1292
|
+
selectedNodes: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1293
|
+
browseMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode>;
|
|
1294
|
+
sortField: _angular_core.Signal<string>;
|
|
1295
|
+
sortDirection: _angular_core.Signal<string>;
|
|
1296
|
+
folders: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1297
|
+
files: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1298
|
+
itemsCount: _angular_core.Signal<number>;
|
|
1299
|
+
availableSpace: _angular_core.Signal<number>;
|
|
1300
|
+
currentDrive: _angular_core.Signal<AXPPlatformScope | null>;
|
|
1301
|
+
fileTypes: _angular_core.Signal<_acorex_platform_framework_client_common.AXPFileType[]>;
|
|
1302
|
+
fileTypeFilter: _angular_core.Signal<string>;
|
|
1303
|
+
detailPanel: _angular_core.Signal<boolean>;
|
|
1304
|
+
groupByType: _angular_core.Signal<boolean>;
|
|
1305
|
+
allowedDocumentTypeNames: _angular_core.Signal<string[] | null>;
|
|
1306
|
+
isRoot: _angular_core.Signal<boolean>;
|
|
1307
|
+
isVirtual: _angular_core.Signal<boolean>;
|
|
1308
|
+
currentFolder: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1309
|
+
currentFolderContents: _angular_core.Signal<{
|
|
1310
|
+
folders: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1311
|
+
files: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1312
|
+
}>;
|
|
1313
|
+
filteredFolders: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1314
|
+
filteredFiles: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1315
|
+
isLargeTilesView: _angular_core.Signal<boolean>;
|
|
1316
|
+
isSmallTilesView: _angular_core.Signal<boolean>;
|
|
1317
|
+
isListView: _angular_core.Signal<boolean>;
|
|
1318
|
+
isDetailsView: _angular_core.Signal<boolean>;
|
|
1319
|
+
isLargeIconsView: _angular_core.Signal<boolean>;
|
|
1320
|
+
isSmallIconsView: _angular_core.Signal<boolean>;
|
|
1321
|
+
isBackAvailable: _angular_core.Signal<boolean>;
|
|
1322
|
+
isUpAvailable: _angular_core.Signal<boolean>;
|
|
1323
|
+
selectedCount: _angular_core.Signal<number>;
|
|
1324
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
1325
|
+
hasMultipleSelectedItems: _angular_core.Signal<boolean>;
|
|
1326
|
+
isMultiSelect: _angular_core.Signal<boolean>;
|
|
1327
|
+
selectedNode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1328
|
+
isDetailPanelOpen: _angular_core.Signal<boolean>;
|
|
1329
|
+
setAllowedDocumentTypeNames: (names: string[] | null) => void;
|
|
1330
|
+
initialize: (options?: {
|
|
1331
|
+
scope?: AXPPlatformScope;
|
|
1332
|
+
browseMode?: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
1333
|
+
filter?: any;
|
|
1334
|
+
}) => Promise<void>;
|
|
1335
|
+
applyLoadedFolder: (node: {
|
|
1336
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1337
|
+
result: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode;
|
|
1338
|
+
scopeRootId?: string;
|
|
1339
|
+
}) => Promise<void>;
|
|
1340
|
+
navigateToFolder: (folderId: string) => void;
|
|
1341
|
+
loadFolderContents: (folderId: string) => Promise<void>;
|
|
1342
|
+
virtualFolder: (files?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[], options?: {
|
|
1343
|
+
name?: string;
|
|
1344
|
+
parentId?: string;
|
|
1345
|
+
}) => Promise<void>;
|
|
1346
|
+
setViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => void;
|
|
1347
|
+
isViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => boolean;
|
|
1348
|
+
setSortField: (field: string) => void;
|
|
1349
|
+
setSortDirection: (direction: string) => void;
|
|
1350
|
+
setSelectionMode: (mode: AXMDocumentSelectionMode | string) => void;
|
|
1351
|
+
setDrive: (scope: AXPPlatformScope) => void;
|
|
1352
|
+
setFileTypeFilter: (key: string) => void;
|
|
1353
|
+
setLoading: (isLoading: boolean) => void;
|
|
1354
|
+
isLoadingFolder: (folderId: string) => boolean;
|
|
1355
|
+
getFileInfo: (fileName: string) => {
|
|
1356
|
+
icon: string;
|
|
1357
|
+
type: string;
|
|
1358
|
+
};
|
|
1359
|
+
getFileInfoForNode: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1360
|
+
icon: string;
|
|
1361
|
+
type: string;
|
|
1362
|
+
};
|
|
1363
|
+
getNodeDisplayInfo: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1364
|
+
icon: string;
|
|
1365
|
+
type: string;
|
|
1366
|
+
isShortcut: boolean;
|
|
1367
|
+
};
|
|
1368
|
+
getFolderColor: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => string;
|
|
1369
|
+
getNodeInfo: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1370
|
+
name: string;
|
|
1371
|
+
icon: string;
|
|
1372
|
+
type: string;
|
|
1373
|
+
sections: {
|
|
1374
|
+
title: string;
|
|
1375
|
+
details: {
|
|
1376
|
+
title: string;
|
|
1377
|
+
content?: any;
|
|
1378
|
+
icon?: string;
|
|
1379
|
+
format?: "datetime" | "date" | "filesize" | "number" | "string";
|
|
1380
|
+
}[];
|
|
1381
|
+
}[];
|
|
1382
|
+
};
|
|
1383
|
+
sortItems: (items: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]) => _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1384
|
+
refresh: () => Promise<void>;
|
|
1385
|
+
navigateToUp: () => void;
|
|
1386
|
+
navigateBack: () => void;
|
|
1387
|
+
openFileViewerWithFolderId: () => Promise<void>;
|
|
1388
|
+
getCurrentFolderFiles: () => _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1389
|
+
deleteNodes: (nodes?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]) => Promise<void>;
|
|
1390
|
+
toggleSelect: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1391
|
+
selectOnContextMenu: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1392
|
+
isItemSelected: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => boolean;
|
|
1393
|
+
selectAll: () => void;
|
|
1394
|
+
deselectAll: () => void;
|
|
1395
|
+
openDetailPanel: () => void;
|
|
1396
|
+
closeDetailPanel: () => void;
|
|
1397
|
+
toggleDetailPanel: () => void;
|
|
1398
|
+
toggleGroupByType: () => void;
|
|
1399
|
+
setGroupByType: (enabled: boolean) => void;
|
|
1400
|
+
getFolderAddMenuItems: ({ canAddFolder }?: {
|
|
1401
|
+
canAddFolder?: boolean;
|
|
1402
|
+
}) => Promise<AXPActionMenuItem[]>;
|
|
1403
|
+
getFolderActionMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1404
|
+
getExplorerLayoutMenuItems: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1405
|
+
getOpenFileViewerLayoutMenuItem: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1406
|
+
getRootContextMenuItems: ({ canAddFolder }?: {
|
|
1407
|
+
canAddFolder?: boolean;
|
|
1408
|
+
}) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1409
|
+
buildAddItemContextMenuEntry: ({ canAddFolder, }?: {
|
|
1410
|
+
canAddFolder?: boolean;
|
|
1411
|
+
}) => Promise<_acorex_components_menu.AXMenuItem | null>;
|
|
1412
|
+
getContextMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1413
|
+
getFileContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1414
|
+
getFolderContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1415
|
+
getNodeContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1416
|
+
openFile: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1417
|
+
handleMenuItemClick: (name: string, data: any) => Promise<void>;
|
|
1418
|
+
downloadFile: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1419
|
+
openFileViewer: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1420
|
+
showFolderProperty: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1421
|
+
createFolder: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1422
|
+
renameNode: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | undefined>;
|
|
1423
|
+
makeCopy: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1424
|
+
isLocked: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<boolean>;
|
|
1425
|
+
lock: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1426
|
+
unlock: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1427
|
+
moveTo: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1428
|
+
copyTo: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1429
|
+
createShortcut: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1430
|
+
uploadFileByType: (folderId: string, documentTypeId: string) => Promise<void>;
|
|
1431
|
+
} & _ngrx_signals.StateSource<{
|
|
1432
|
+
viewMode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode;
|
|
1433
|
+
isLoading: boolean;
|
|
1434
|
+
scope: AXPPlatformScope;
|
|
1435
|
+
currentPath: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1436
|
+
currentNode: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null;
|
|
1437
|
+
loadingFolderId: string | null;
|
|
1438
|
+
navigatingFolderId: string | null;
|
|
1439
|
+
backHistory: {
|
|
1440
|
+
folderId: string;
|
|
1441
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1442
|
+
}[];
|
|
1443
|
+
scopeRootId: string | null;
|
|
1444
|
+
selectionMode: AXMDocumentSelectionMode;
|
|
1445
|
+
selectedNodes: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1446
|
+
browseMode: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
1447
|
+
sortField: string;
|
|
1448
|
+
sortDirection: string;
|
|
1449
|
+
folders: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1450
|
+
files: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1451
|
+
itemsCount: number;
|
|
1452
|
+
availableSpace: number;
|
|
1453
|
+
currentDrive: AXPPlatformScope | null;
|
|
1454
|
+
fileTypes: _acorex_platform_framework_client_common.AXPFileType[];
|
|
1455
|
+
fileTypeFilter: string;
|
|
1456
|
+
detailPanel: boolean;
|
|
1457
|
+
groupByType: boolean;
|
|
1458
|
+
allowedDocumentTypeNames: string[] | null;
|
|
1459
|
+
}>;
|
|
1460
|
+
private readonly route;
|
|
1461
|
+
private readonly expressionEvaluator;
|
|
1462
|
+
/** Resolved restriction list; null = not configured (allow all). */
|
|
1463
|
+
private readonly resolvedAllowedDocumentTypeNames;
|
|
1464
|
+
protected readonly filterItems: _angular_core.WritableSignal<{
|
|
1465
|
+
key: string;
|
|
1466
|
+
textKey: string;
|
|
1467
|
+
icon: string;
|
|
1468
|
+
}[]>;
|
|
1469
|
+
protected selectedFilter: _angular_core.WritableSignal<string>;
|
|
1470
|
+
protected searchQuery: string | null;
|
|
1471
|
+
protected readonly sortItems: _angular_core.WritableSignal<{
|
|
1472
|
+
key: string;
|
|
1473
|
+
textKey: string;
|
|
1474
|
+
icon: string;
|
|
1475
|
+
}[]>;
|
|
1476
|
+
protected readonly viewsItems: _angular_core.WritableSignal<({
|
|
1477
|
+
key: string;
|
|
1478
|
+
icon: string;
|
|
1479
|
+
break?: undefined;
|
|
1480
|
+
} | {
|
|
1481
|
+
key: string;
|
|
1482
|
+
icon: string;
|
|
1483
|
+
break: boolean;
|
|
1484
|
+
})[]>;
|
|
1485
|
+
protected readonly selectedViewMode: _angular_core.Signal<{
|
|
1486
|
+
key: string;
|
|
1487
|
+
icon: string;
|
|
1488
|
+
break?: undefined;
|
|
1489
|
+
} | {
|
|
1490
|
+
key: string;
|
|
1491
|
+
icon: string;
|
|
1492
|
+
break: boolean;
|
|
1493
|
+
}>;
|
|
1494
|
+
protected readonly selectionMode: _angular_core.WritableSignal<AXMDocumentSelectionMode>;
|
|
1495
|
+
/** Folder id that was loaded as this page's root (entity ref root). We must not go back above it. */
|
|
1496
|
+
private readonly pageRootFolderId;
|
|
1497
|
+
/** True when we can show/use back: we're not on the page root and VM allows going up. */
|
|
1498
|
+
protected readonly canGoBackInPage: _angular_core.Signal<boolean>;
|
|
1499
|
+
protected readonly selectedSort: _angular_core.Signal<{
|
|
1500
|
+
key: string;
|
|
1501
|
+
textKey: string;
|
|
1502
|
+
icon: string;
|
|
1503
|
+
}>;
|
|
1504
|
+
ngOnInit(): Promise<void>;
|
|
1505
|
+
/**
|
|
1506
|
+
* Resolves allowed document type names from static plugin config or an expression evaluated against rootContext.
|
|
1507
|
+
* Returns null when not configured (no restriction).
|
|
1508
|
+
*/
|
|
1509
|
+
private resolveAllowedDocumentTypeNames;
|
|
1510
|
+
private applyAllowedDocumentTypeNames;
|
|
1511
|
+
private getAllowedDocumentTypeNames;
|
|
1512
|
+
/**
|
|
1513
|
+
* Resolves refType and refId for getRootByEntityRef from pageConfig, rootContext, or route.
|
|
1514
|
+
* Order: pageConfig.refType → rootContext (moduleName + entityName) → route params.
|
|
1515
|
+
* refId: pageConfig.refId → rootContext.id → rootContext.recordId.
|
|
1516
|
+
*/
|
|
1517
|
+
private resolveEntityRef;
|
|
1518
|
+
protected handleSearchChange(event: AXValueChangedEvent): void;
|
|
1519
|
+
private performSearch;
|
|
1520
|
+
protected handleNavigateToFolder(folderId: string): void;
|
|
1521
|
+
/** Navigate back one folder; only when not already on page root. */
|
|
1522
|
+
protected handleBack(): void;
|
|
1523
|
+
private loadFilterItems;
|
|
1524
|
+
protected setFilter(key: string): void;
|
|
1525
|
+
protected getFilterIcon(): string;
|
|
1526
|
+
protected getFilterText(): string;
|
|
1527
|
+
getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
1528
|
+
getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
1529
|
+
getPageTitle(): Promise<string>;
|
|
1530
|
+
getPageDescription(): Promise<string>;
|
|
1531
|
+
private isDriveContentLoading;
|
|
1532
|
+
getBackButton(): AXPBackButton | null;
|
|
1533
|
+
onBackButtonClick(): void | Promise<void>;
|
|
1534
|
+
/** Return empty so the page does not show a second breadcrumb bar; main breadcrumb stays at top. */
|
|
1535
|
+
getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]>;
|
|
1536
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
1537
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentDrivePageComponent, never>;
|
|
1538
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDocumentDrivePageComponent, "axm-document-drive-page", never, { "rootContext": { "alias": "rootContext"; "required": false; "isSignal": true; }; "pageConfig": { "alias": "pageConfig"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
declare class AXMDocumentDrivePageComponentProvider implements AXPPageComponentProvider {
|
|
1542
|
+
components(): Promise<AXPPageComponentDefinition[]>;
|
|
1543
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentDrivePageComponentProvider, never>;
|
|
1544
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDocumentDrivePageComponentProvider>;
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
declare class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
|
|
1548
|
+
#private;
|
|
1549
|
+
private readonly entityService;
|
|
1550
|
+
protected readonly rootConfig: {
|
|
1551
|
+
readonly config: {
|
|
1552
|
+
i18n: string;
|
|
1553
|
+
module: string;
|
|
1554
|
+
};
|
|
1555
|
+
readonly module: {
|
|
1556
|
+
readonly module: string;
|
|
1557
|
+
readonly name: string;
|
|
1558
|
+
readonly title: `@${string}:module.title`;
|
|
1559
|
+
readonly icon: "fa-light fa-books";
|
|
1560
|
+
};
|
|
1561
|
+
readonly entities: {
|
|
1562
|
+
readonly folder: {
|
|
1563
|
+
readonly name: "Folder";
|
|
1564
|
+
readonly title: `@${string}:entities.folder.title`;
|
|
1565
|
+
readonly titlePlural: `@${string}:entities.folder.title-plural`;
|
|
1566
|
+
readonly icon: "fa-light fa-folder";
|
|
1567
|
+
};
|
|
1568
|
+
readonly document: {
|
|
1569
|
+
readonly name: "Document";
|
|
1570
|
+
readonly title: `@${string}:entities.document.title`;
|
|
1571
|
+
readonly titlePlural: `@${string}:entities.document.title-plural`;
|
|
1572
|
+
readonly icon: "fa-light fa-file";
|
|
1573
|
+
};
|
|
1574
|
+
readonly documentType: {
|
|
1575
|
+
readonly name: "DocumentType";
|
|
1576
|
+
readonly title: `@${string}:entities.document-type.title`;
|
|
1577
|
+
readonly titlePlural: `@${string}:entities.document-type.title-plural`;
|
|
1578
|
+
readonly icon: "fa-light fa-books";
|
|
1579
|
+
};
|
|
1580
|
+
readonly documentShortcut: {
|
|
1581
|
+
readonly name: "DocumentShortcut";
|
|
1582
|
+
readonly title: `@${string}:entities.document-shortcut.title`;
|
|
1583
|
+
readonly titlePlural: `@${string}:entities.document-shortcut.title-plural`;
|
|
1584
|
+
readonly icon: "fa-light fa-up-right-from-square";
|
|
1585
|
+
};
|
|
1586
|
+
};
|
|
1587
|
+
readonly queries: {
|
|
1588
|
+
readonly dashboard: {
|
|
1589
|
+
readonly documentsKpi: `${string}:Dashboard:DocumentsKpi`;
|
|
1590
|
+
};
|
|
1591
|
+
readonly reports: {
|
|
1592
|
+
readonly getDocumentsByType: `${string}:Reports:GetDocumentsByType`;
|
|
1593
|
+
readonly getDocumentExpiration: `${string}:Reports:GetDocumentExpiration`;
|
|
1594
|
+
};
|
|
1595
|
+
};
|
|
1596
|
+
readonly documentExpirationNotify: {
|
|
1597
|
+
readonly providerKey: "document-management";
|
|
1598
|
+
readonly defaultCron: "0 0 * * *";
|
|
1599
|
+
readonly expiredTemplateId: "c7100009-0001-4111-b111-090909090909";
|
|
1600
|
+
readonly nearExpiryTemplateId: "c710000a-0001-4111-b111-0a0a0a0a0a0a";
|
|
1601
|
+
readonly tenantRoleNames: readonly ["admin", "safety-manager"];
|
|
1602
|
+
};
|
|
1603
|
+
};
|
|
1604
|
+
protected readonly deviceService: AXPDeviceService;
|
|
1605
|
+
private readonly fileTypeService;
|
|
1606
|
+
private readonly driveService;
|
|
1607
|
+
private readonly documentTypeService;
|
|
1608
|
+
protected readonly vm: {
|
|
1609
|
+
viewMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode>;
|
|
1610
|
+
isLoading: _angular_core.Signal<boolean>;
|
|
1611
|
+
scope: _angular_core.Signal<AXPPlatformScope>;
|
|
1612
|
+
currentPath: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1613
|
+
currentNode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1614
|
+
loadingFolderId: _angular_core.Signal<string | null>;
|
|
1615
|
+
navigatingFolderId: _angular_core.Signal<string | null>;
|
|
1616
|
+
backHistory: _angular_core.Signal<{
|
|
1617
|
+
folderId: string;
|
|
1618
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1619
|
+
}[]>;
|
|
1620
|
+
scopeRootId: _angular_core.Signal<string | null>;
|
|
1621
|
+
selectionMode: _angular_core.Signal<AXMDocumentSelectionMode>;
|
|
1622
|
+
selectedNodes: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1623
|
+
browseMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode>;
|
|
1624
|
+
sortField: _angular_core.Signal<string>;
|
|
1625
|
+
sortDirection: _angular_core.Signal<string>;
|
|
1626
|
+
folders: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1627
|
+
files: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1628
|
+
itemsCount: _angular_core.Signal<number>;
|
|
1629
|
+
availableSpace: _angular_core.Signal<number>;
|
|
1630
|
+
currentDrive: _angular_core.Signal<AXPPlatformScope | null>;
|
|
1631
|
+
fileTypes: _angular_core.Signal<_acorex_platform_framework_client_common.AXPFileType[]>;
|
|
1632
|
+
fileTypeFilter: _angular_core.Signal<string>;
|
|
1633
|
+
detailPanel: _angular_core.Signal<boolean>;
|
|
1634
|
+
groupByType: _angular_core.Signal<boolean>;
|
|
1635
|
+
allowedDocumentTypeNames: _angular_core.Signal<string[] | null>;
|
|
1636
|
+
isRoot: _angular_core.Signal<boolean>;
|
|
1637
|
+
isVirtual: _angular_core.Signal<boolean>;
|
|
1638
|
+
currentFolder: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1639
|
+
currentFolderContents: _angular_core.Signal<{
|
|
1640
|
+
folders: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1641
|
+
files: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1642
|
+
}>;
|
|
1643
|
+
filteredFolders: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1644
|
+
filteredFiles: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]>;
|
|
1645
|
+
isLargeTilesView: _angular_core.Signal<boolean>;
|
|
1646
|
+
isSmallTilesView: _angular_core.Signal<boolean>;
|
|
1647
|
+
isListView: _angular_core.Signal<boolean>;
|
|
1648
|
+
isDetailsView: _angular_core.Signal<boolean>;
|
|
1649
|
+
isLargeIconsView: _angular_core.Signal<boolean>;
|
|
1650
|
+
isSmallIconsView: _angular_core.Signal<boolean>;
|
|
1651
|
+
isBackAvailable: _angular_core.Signal<boolean>;
|
|
1652
|
+
isUpAvailable: _angular_core.Signal<boolean>;
|
|
1653
|
+
selectedCount: _angular_core.Signal<number>;
|
|
1654
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
1655
|
+
hasMultipleSelectedItems: _angular_core.Signal<boolean>;
|
|
1656
|
+
isMultiSelect: _angular_core.Signal<boolean>;
|
|
1657
|
+
selectedNode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null>;
|
|
1658
|
+
isDetailPanelOpen: _angular_core.Signal<boolean>;
|
|
1659
|
+
setAllowedDocumentTypeNames: (names: string[] | null) => void;
|
|
1660
|
+
initialize: (options?: {
|
|
1661
|
+
scope?: AXPPlatformScope;
|
|
1662
|
+
browseMode?: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
1663
|
+
filter?: any;
|
|
1664
|
+
}) => Promise<void>;
|
|
1665
|
+
applyLoadedFolder: (node: {
|
|
1666
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1667
|
+
result: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode;
|
|
1668
|
+
scopeRootId?: string;
|
|
1669
|
+
}) => Promise<void>;
|
|
1670
|
+
navigateToFolder: (folderId: string) => void;
|
|
1671
|
+
loadFolderContents: (folderId: string) => Promise<void>;
|
|
1672
|
+
virtualFolder: (files?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[], options?: {
|
|
1673
|
+
name?: string;
|
|
1674
|
+
parentId?: string;
|
|
1675
|
+
}) => Promise<void>;
|
|
1676
|
+
setViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => void;
|
|
1677
|
+
isViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => boolean;
|
|
1678
|
+
setSortField: (field: string) => void;
|
|
1679
|
+
setSortDirection: (direction: string) => void;
|
|
1680
|
+
setSelectionMode: (mode: AXMDocumentSelectionMode | string) => void;
|
|
1681
|
+
setDrive: (scope: AXPPlatformScope) => void;
|
|
1682
|
+
setFileTypeFilter: (key: string) => void;
|
|
1683
|
+
setLoading: (isLoading: boolean) => void;
|
|
1684
|
+
isLoadingFolder: (folderId: string) => boolean;
|
|
1685
|
+
getFileInfo: (fileName: string) => {
|
|
1686
|
+
icon: string;
|
|
1687
|
+
type: string;
|
|
1688
|
+
};
|
|
1689
|
+
getFileInfoForNode: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1690
|
+
icon: string;
|
|
1691
|
+
type: string;
|
|
1692
|
+
};
|
|
1693
|
+
getNodeDisplayInfo: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1694
|
+
icon: string;
|
|
1695
|
+
type: string;
|
|
1696
|
+
isShortcut: boolean;
|
|
1697
|
+
};
|
|
1698
|
+
getFolderColor: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => string;
|
|
1699
|
+
getNodeInfo: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => {
|
|
1700
|
+
name: string;
|
|
1701
|
+
icon: string;
|
|
1702
|
+
type: string;
|
|
1703
|
+
sections: {
|
|
1704
|
+
title: string;
|
|
1705
|
+
details: {
|
|
1706
|
+
title: string;
|
|
1707
|
+
content?: any;
|
|
1708
|
+
icon?: string;
|
|
1709
|
+
format?: "datetime" | "date" | "filesize" | "number" | "string";
|
|
1710
|
+
}[];
|
|
1711
|
+
}[];
|
|
1712
|
+
};
|
|
1713
|
+
sortItems: (items: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]) => _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1714
|
+
refresh: () => Promise<void>;
|
|
1715
|
+
navigateToUp: () => void;
|
|
1716
|
+
navigateBack: () => void;
|
|
1717
|
+
openFileViewerWithFolderId: () => Promise<void>;
|
|
1718
|
+
getCurrentFolderFiles: () => _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1719
|
+
deleteNodes: (nodes?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[]) => Promise<void>;
|
|
1720
|
+
toggleSelect: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1721
|
+
selectOnContextMenu: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1722
|
+
isItemSelected: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => boolean;
|
|
1723
|
+
selectAll: () => void;
|
|
1724
|
+
deselectAll: () => void;
|
|
1725
|
+
openDetailPanel: () => void;
|
|
1726
|
+
closeDetailPanel: () => void;
|
|
1727
|
+
toggleDetailPanel: () => void;
|
|
1728
|
+
toggleGroupByType: () => void;
|
|
1729
|
+
setGroupByType: (enabled: boolean) => void;
|
|
1730
|
+
getFolderAddMenuItems: ({ canAddFolder }?: {
|
|
1731
|
+
canAddFolder?: boolean;
|
|
1732
|
+
}) => Promise<AXPActionMenuItem[]>;
|
|
1733
|
+
getFolderActionMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1734
|
+
getExplorerLayoutMenuItems: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1735
|
+
getOpenFileViewerLayoutMenuItem: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1736
|
+
getRootContextMenuItems: ({ canAddFolder }?: {
|
|
1737
|
+
canAddFolder?: boolean;
|
|
1738
|
+
}) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1739
|
+
buildAddItemContextMenuEntry: ({ canAddFolder, }?: {
|
|
1740
|
+
canAddFolder?: boolean;
|
|
1741
|
+
}) => Promise<_acorex_components_menu.AXMenuItem | null>;
|
|
1742
|
+
getContextMenuItems: () => Promise<AXPActionMenuItem[]>;
|
|
1743
|
+
getFileContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1744
|
+
getFolderContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1745
|
+
getNodeContextMenuItems: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
1746
|
+
openFile: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1747
|
+
handleMenuItemClick: (name: string, data: any) => Promise<void>;
|
|
1748
|
+
downloadFile: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => void;
|
|
1749
|
+
openFileViewer: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1750
|
+
showFolderProperty: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1751
|
+
createFolder: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1752
|
+
renameNode: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<_acorex_platform_module_document_management_client.AXMDocumentExplorerNode | undefined>;
|
|
1753
|
+
makeCopy: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1754
|
+
isLocked: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<boolean>;
|
|
1755
|
+
lock: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1756
|
+
unlock: (node: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1757
|
+
moveTo: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1758
|
+
copyTo: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1759
|
+
createShortcut: (node?: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode) => Promise<void>;
|
|
1760
|
+
uploadFileByType: (folderId: string, documentTypeId: string) => Promise<void>;
|
|
1761
|
+
} & _ngrx_signals.StateSource<{
|
|
1762
|
+
viewMode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode;
|
|
1763
|
+
isLoading: boolean;
|
|
1764
|
+
scope: AXPPlatformScope;
|
|
1765
|
+
currentPath: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1766
|
+
currentNode: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode | null;
|
|
1767
|
+
loadingFolderId: string | null;
|
|
1768
|
+
navigatingFolderId: string | null;
|
|
1769
|
+
backHistory: {
|
|
1770
|
+
folderId: string;
|
|
1771
|
+
path: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1772
|
+
}[];
|
|
1773
|
+
scopeRootId: string | null;
|
|
1774
|
+
selectionMode: AXMDocumentSelectionMode;
|
|
1775
|
+
selectedNodes: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1776
|
+
browseMode: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
1777
|
+
sortField: string;
|
|
1778
|
+
sortDirection: string;
|
|
1779
|
+
folders: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1780
|
+
files: _acorex_platform_module_document_management_client.AXMDocumentExplorerNode[];
|
|
1781
|
+
itemsCount: number;
|
|
1782
|
+
availableSpace: number;
|
|
1783
|
+
currentDrive: AXPPlatformScope | null;
|
|
1784
|
+
fileTypes: _acorex_platform_framework_client_common.AXPFileType[];
|
|
1785
|
+
fileTypeFilter: string;
|
|
1786
|
+
detailPanel: boolean;
|
|
1787
|
+
groupByType: boolean;
|
|
1788
|
+
allowedDocumentTypeNames: string[] | null;
|
|
1789
|
+
}>;
|
|
1790
|
+
protected readonly activatedRoute: ActivatedRoute;
|
|
1791
|
+
private readonly destroyRef;
|
|
1792
|
+
private previousFolderId;
|
|
1793
|
+
/** When true, in-flight async work must not call `router.navigate` or sync layout loading. */
|
|
1794
|
+
private driveViewDestroyed;
|
|
1795
|
+
/** Bumps on each `loadDrive` so overlapping navigations (user ↔ tenant) discard stale results. */
|
|
1796
|
+
private loadDriveGeneration;
|
|
1797
|
+
/** Filter definitions: document type (cascade parent) + metadata + search + file type. */
|
|
1798
|
+
protected advancedFilterDefinitions: _angular_core.WritableSignal<AXPFilterDefinition[]>;
|
|
1799
|
+
/** Active metadata filters from the query filter panel (same shape as {@link AXPFilterQuery}). */
|
|
1800
|
+
private activeMetadataFilters;
|
|
1801
|
+
/** Options for the document type filter (drive search). */
|
|
1802
|
+
private documentTypeFilterOptions;
|
|
1803
|
+
/**
|
|
1804
|
+
* Initial filters for axp-query-filters (URL search on first load, or preserved filters after cascade refresh).
|
|
1805
|
+
*/
|
|
1806
|
+
protected panelInitialFilters: _angular_core.WritableSignal<AXPFilterQuery[]>;
|
|
1807
|
+
/** Bumps when the filter panel is recreated after document type changes (clears stale metadata chips). */
|
|
1808
|
+
protected queryFiltersKey: _angular_core.WritableSignal<number>;
|
|
1809
|
+
/** Last document type ids used to load metadata field definitions (cascade detection). */
|
|
1810
|
+
private lastAppliedDocumentTypeIds;
|
|
1811
|
+
/** Normalized document type ids from the panel; used for search API. */
|
|
1812
|
+
private activeDocumentTypeFilterIds;
|
|
1813
|
+
protected readonly sortItems: _angular_core.WritableSignal<{
|
|
1814
|
+
key: string;
|
|
1815
|
+
textKey: string;
|
|
1816
|
+
icon: string;
|
|
1817
|
+
}[]>;
|
|
1818
|
+
protected readonly viewsItems: _angular_core.WritableSignal<({
|
|
1819
|
+
key: string;
|
|
1820
|
+
icon: string;
|
|
1821
|
+
break?: undefined;
|
|
1822
|
+
} | {
|
|
1823
|
+
key: string;
|
|
1824
|
+
icon: string;
|
|
1825
|
+
break: boolean;
|
|
1826
|
+
})[]>;
|
|
1827
|
+
protected readonly selectedViewMode: _angular_core.Signal<{
|
|
1828
|
+
key: string;
|
|
1829
|
+
icon: string;
|
|
1830
|
+
break?: undefined;
|
|
1831
|
+
} | {
|
|
1832
|
+
key: string;
|
|
1833
|
+
icon: string;
|
|
1834
|
+
break: boolean;
|
|
1835
|
+
}>;
|
|
1836
|
+
protected readonly selectionMode: _angular_core.WritableSignal<AXMDocumentSelectionMode>;
|
|
1837
|
+
protected documentExplorer: _angular_core.Signal<AXMDocumentExplorerComponent | undefined>;
|
|
1838
|
+
protected readonly selectedSort: _angular_core.Signal<{
|
|
1839
|
+
key: string;
|
|
1840
|
+
textKey: string;
|
|
1841
|
+
icon: string;
|
|
1842
|
+
}>;
|
|
1843
|
+
ngOnDestroy(): void;
|
|
1844
|
+
ngOnInit(): Promise<void>;
|
|
1845
|
+
private performSearch;
|
|
1846
|
+
/** Handles filter changes from the query filter panel (search, file type, document type, metadata). */
|
|
1847
|
+
protected handleAdvancedFiltersChanged(filters: AXPFilterQuery[]): Promise<void>;
|
|
1848
|
+
handleCtrlKey(e: Event): void;
|
|
1849
|
+
handleCtrlKeyUp(e: Event): void;
|
|
1850
|
+
protected handleNavigateToFolder(folderId: string): void;
|
|
1851
|
+
/**
|
|
1852
|
+
* When the URL is `/drive/user` but the loaded folder is outside the user scope root
|
|
1853
|
+
* (breadcrumb root differs from the backend scope root), align the URL and view model to
|
|
1854
|
+
* `/drive/tenant` (organization drive within the current application).
|
|
1855
|
+
*/
|
|
1856
|
+
private correctDriveUrlIfOutOfScope;
|
|
1857
|
+
/**
|
|
1858
|
+
* Keeps the explorer VM scope aligned with `:scope` in the URL.
|
|
1859
|
+
* Returns true when scope changed (caller must reload; skip same-folder short-circuit).
|
|
1860
|
+
*/
|
|
1861
|
+
private syncScopeFromRoute;
|
|
1862
|
+
private loadDrive;
|
|
1863
|
+
/**
|
|
1864
|
+
* Loads document type filter options and initial filter definitions in the background
|
|
1865
|
+
* (does not block the first folder load).
|
|
1866
|
+
*/
|
|
1867
|
+
private setupAdvancedFilters;
|
|
1868
|
+
/**
|
|
1869
|
+
* Loads filter definitions. Metadata fields load only when `documentTypeIds` is non-empty (cascade).
|
|
1870
|
+
*/
|
|
1871
|
+
private loadAdvancedFilterDefinitions;
|
|
1872
|
+
/**
|
|
1873
|
+
* Unwraps filter widget values (e.g. select `{ value, text }`) for document type id extraction.
|
|
1874
|
+
*/
|
|
1875
|
+
private unwrapFilterValue;
|
|
1876
|
+
private normalizeDocumentTypeIds;
|
|
1877
|
+
private docTypeIdsEqual;
|
|
1878
|
+
/** Maps metadata editor widget type to filter widget type. */
|
|
1879
|
+
private mapEditorToFilterWidget;
|
|
1880
|
+
/** Returns default operator type name for a given editor widget type. */
|
|
1881
|
+
private getDefaultOperatorForEditor;
|
|
1882
|
+
/** Returns an icon class based on the editor widget type. */
|
|
1883
|
+
private getMetadataFieldIcon;
|
|
1884
|
+
getPrimaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
1885
|
+
getSecondaryMenuItems(): Promise<AXPActionMenuItem[]>;
|
|
1886
|
+
getPageTitle(): Promise<string>;
|
|
1887
|
+
getPageDescription(): Promise<string>;
|
|
1888
|
+
private isDriveContentLoading;
|
|
1889
|
+
getBackButton(): AXPBackButton | null;
|
|
1890
|
+
onBackButtonClick(): void | Promise<void>;
|
|
1891
|
+
getPageBreadcrumbs(): Promise<AXPBreadcrumbItem[]>;
|
|
1892
|
+
execute(command: AXPExecuteCommand): Promise<void>;
|
|
1893
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentDriveComponent, never>;
|
|
1894
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDocumentDriveComponent, "axp-document-drive", never, {}, {}, never, never, true, never>;
|
|
1895
|
+
}
|
|
1896
|
+
|
|
1897
|
+
/** Parent type icons — aligned with `document-type.mock.ts` `TYPE` constants. */
|
|
1898
|
+
declare const DM_FILE_TYPE_ICONS: {
|
|
1899
|
+
readonly document: "fa-solid fa-file-pdf text-red-600";
|
|
1900
|
+
readonly image: "fa-solid fa-image text-purple-500";
|
|
1901
|
+
readonly file: "fa-solid fa-file";
|
|
1902
|
+
readonly video: "fa-solid fa-file-video text-red-500";
|
|
1903
|
+
readonly audio: "fa-solid fa-file-audio text-green-500";
|
|
1904
|
+
};
|
|
1905
|
+
/** Per-extension icons for the `document` logical type (office / text). */
|
|
1906
|
+
declare const DM_DOCUMENT_EXTENSION_ICONS: {
|
|
1907
|
+
readonly pdf: "fa-solid fa-file-pdf text-red-600";
|
|
1908
|
+
readonly doc: "fa-solid fa-file-word text-blue-700";
|
|
1909
|
+
readonly docx: "fa-solid fa-file-word text-blue-700";
|
|
1910
|
+
readonly xls: "fa-solid fa-file-excel text-green-700";
|
|
1911
|
+
readonly xlsx: "fa-solid fa-file-excel text-green-700";
|
|
1912
|
+
readonly ppt: "fa-solid fa-file-powerpoint text-orange-700";
|
|
1913
|
+
readonly pptx: "fa-solid fa-file-powerpoint text-orange-700";
|
|
1914
|
+
readonly txt: "fa-solid fa-file-lines text-blue-600";
|
|
1915
|
+
readonly rtf: "fa-solid fa-file-lines text-blue-600";
|
|
1916
|
+
};
|
|
1917
|
+
/** Per-extension icons for video files. */
|
|
1918
|
+
declare const DM_VIDEO_EXTENSION_ICONS: {
|
|
1919
|
+
readonly mp4: "fa-solid fa-file-video text-blue-500";
|
|
1920
|
+
readonly webm: "fa-solid fa-file-video text-blue-500";
|
|
1921
|
+
readonly mov: "fa-solid fa-file-video text-blue-500";
|
|
1922
|
+
readonly m4v: "fa-solid fa-file-video text-blue-500";
|
|
1923
|
+
readonly avi: "fa-solid fa-file-video text-blue-500";
|
|
1924
|
+
readonly mkv: "fa-solid fa-file-video text-blue-500";
|
|
1925
|
+
readonly wmv: "fa-solid fa-file-video text-blue-500";
|
|
1926
|
+
};
|
|
1927
|
+
/** Per-extension icons for audio files. */
|
|
1928
|
+
declare const DM_AUDIO_EXTENSION_ICONS: {
|
|
1929
|
+
readonly mp3: "fa-solid fa-file-audio text-amber-500";
|
|
1930
|
+
readonly wav: "fa-solid fa-file-audio text-amber-500";
|
|
1931
|
+
readonly ogg: "fa-solid fa-file-audio text-amber-500";
|
|
1932
|
+
readonly oga: "fa-solid fa-file-audio text-amber-500";
|
|
1933
|
+
readonly m4a: "fa-solid fa-file-audio text-amber-500";
|
|
1934
|
+
readonly flac: "fa-solid fa-file-audio text-amber-500";
|
|
1935
|
+
readonly aac: "fa-solid fa-file-audio text-amber-500";
|
|
1936
|
+
readonly wma: "fa-solid fa-file-audio text-amber-500";
|
|
1937
|
+
readonly weba: "fa-solid fa-file-audio text-amber-500";
|
|
1938
|
+
};
|
|
1939
|
+
/** Per-extension icons for the generic `file` logical type (archives & misc). */
|
|
1940
|
+
declare const DM_FILE_EXTENSION_ICONS: {
|
|
1941
|
+
readonly zip: "fa-solid fa-file-zipper text-orange-500";
|
|
1942
|
+
readonly rar: "fa-solid fa-file-zipper text-orange-500";
|
|
1943
|
+
readonly '7z': "fa-solid fa-file-zipper text-orange-500";
|
|
1944
|
+
readonly tar: "fa-solid fa-file-zipper text-orange-500";
|
|
1945
|
+
readonly gz: "fa-solid fa-file-zipper text-orange-500";
|
|
1946
|
+
readonly json: "fa-solid fa-file-code text-green-500";
|
|
1947
|
+
readonly xml: "fa-solid fa-file-code text-green-500";
|
|
1948
|
+
readonly csv: "fa-solid fa-file-csv text-green-600";
|
|
1949
|
+
};
|
|
1950
|
+
/**
|
|
1951
|
+
* Document-management file-type catalog: ACoreX built-in types reshaped with DM icons.
|
|
1952
|
+
* Consumed via {@link AXPFileTypeProviderService} only (no registry bridge).
|
|
1953
|
+
*/
|
|
1954
|
+
declare function buildDocumentManagementFileTypeCatalog(): AXPFileType[];
|
|
1955
|
+
|
|
1956
|
+
/**
|
|
1957
|
+
* Single catalog provider for document management.
|
|
1958
|
+
* Register on {@link AXP_FILE_TYPE_INFO_PROVIDER}; consumers use {@link AXPFileTypeProviderService}.
|
|
1959
|
+
*/
|
|
1960
|
+
declare class AXMDocumentManagementFileTypeProvider implements AXPFileTypeInfoProvider {
|
|
1961
|
+
items(): Promise<AXPFileType[]>;
|
|
1962
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentManagementFileTypeProvider, never>;
|
|
1963
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDocumentManagementFileTypeProvider>;
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
declare class AXMFileTypeExtensionWidgetColumnComponent extends AXPValueWidgetComponent<any> {
|
|
1967
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFileTypeExtensionWidgetColumnComponent, never>;
|
|
1968
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFileTypeExtensionWidgetColumnComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
declare class AXMFileTypeExtensionWidgetDesignerComponent extends AXPValueWidgetComponent<any> {
|
|
1972
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFileTypeExtensionWidgetDesignerComponent, never>;
|
|
1973
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFileTypeExtensionWidgetDesignerComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
declare class AXMFileTypeExtensionWidgetEditComponent extends AXPValueWidgetComponent<any> {
|
|
1977
|
+
protected fileTypeService: AXPFileTypeProviderService;
|
|
1978
|
+
protected searchValue: _angular_core.WritableSignal<string | undefined>;
|
|
1979
|
+
protected dataSource: AXDataSource<unknown>;
|
|
1980
|
+
selectedItems: _angular_core.WritableSignal<AXPFileType[]>;
|
|
1981
|
+
selectedItemsNotEmpty: _angular_core.WritableSignal<AXPFileType[]>;
|
|
1982
|
+
context: _angular_core.WritableSignal<any>;
|
|
1983
|
+
ngOnInit(): void;
|
|
1984
|
+
protected outputs(): string[];
|
|
1985
|
+
protected handleOnContextChange(e: AXPContextChangeEvent): void;
|
|
1986
|
+
protected handleSearchQueryChange(value: unknown): void;
|
|
1987
|
+
protected handleSearchValueChange(e: AXValueChangedEvent): void;
|
|
1988
|
+
private applySearchQuery;
|
|
1989
|
+
private normalizeSearchQuery;
|
|
1990
|
+
protected handleValueChange(e: AXValueChangedEvent): Promise<void>;
|
|
1991
|
+
protected getNode(meta: any): AXPWidgetNode;
|
|
1992
|
+
protected filedIsRequired(meta: any): boolean;
|
|
1993
|
+
protected hasMetaInExtensions(extensions: any[]): boolean;
|
|
1994
|
+
protected hasFields(item: AXPFileType): boolean;
|
|
1995
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFileTypeExtensionWidgetEditComponent, never>;
|
|
1996
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFileTypeExtensionWidgetEditComponent, "ng-component", never, {}, {}, never, never, true, never>;
|
|
1997
|
+
}
|
|
1998
|
+
|
|
1999
|
+
declare class AXMFileTypeExtensionWidgetViewComponent extends AXPValueWidgetComponent<any> {
|
|
2000
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFileTypeExtensionWidgetViewComponent, never>;
|
|
2001
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFileTypeExtensionWidgetViewComponent, "ng-component", never, { "rawValue": { "alias": "rawValue"; "required": false; }; }, {}, never, never, true, never>;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
declare const AXmFileTypeExtensionWidget: AXPWidgetConfig;
|
|
2005
|
+
declare module '@acorex-platform/framework-shared/widget-core' {
|
|
2006
|
+
interface AXPWidgetTypesMap {
|
|
2007
|
+
fileTypeExtension: 'file-type-extension';
|
|
2008
|
+
}
|
|
2009
|
+
}
|
|
2010
|
+
|
|
2011
|
+
type AXMDocumentExpirationBadgeStatus = 'expired' | 'expiring-soon';
|
|
2012
|
+
type AXMDocumentExpirationBadge = {
|
|
2013
|
+
status: AXMDocumentExpirationBadgeStatus;
|
|
2014
|
+
/** ax-badge color token */
|
|
2015
|
+
color: 'danger' | 'warning';
|
|
2016
|
+
textKey: string;
|
|
2017
|
+
tooltipKey: string;
|
|
2018
|
+
date: Date;
|
|
2019
|
+
};
|
|
2020
|
+
type AXMFolderExpirationCountBadge = {
|
|
2021
|
+
status: AXMDocumentExpirationBadgeStatus;
|
|
2022
|
+
color: 'danger' | 'warning';
|
|
2023
|
+
tooltipKey: string;
|
|
2024
|
+
count: number;
|
|
2025
|
+
};
|
|
2026
|
+
|
|
2027
|
+
/**
|
|
2028
|
+
* Badge from document `expirationDate` only (platform field when enableExpiration is on).
|
|
2029
|
+
*/
|
|
2030
|
+
declare function resolveDocumentExpirationBadge(source: {
|
|
2031
|
+
expirationDate?: Date | string | number | null;
|
|
2032
|
+
}, options?: {
|
|
2033
|
+
nearDays?: number;
|
|
2034
|
+
now?: Date;
|
|
2035
|
+
}): AXMDocumentExpirationBadge | null;
|
|
2036
|
+
/**
|
|
2037
|
+
* Folder badges from denormalized subtree `expiredItemsCount` / `nearExpiryItemsCount`
|
|
2038
|
+
* (direct documents in the folder + nested folder aggregates).
|
|
2039
|
+
*/
|
|
2040
|
+
declare function resolveFolderExpirationCountBadges(source: {
|
|
2041
|
+
expiredItemsCount?: number | null;
|
|
2042
|
+
nearExpiryItemsCount?: number | null;
|
|
2043
|
+
}): AXMFolderExpirationCountBadge[];
|
|
2044
|
+
|
|
2045
|
+
declare class AXMDocumentExpirationBadgeComponent {
|
|
2046
|
+
private readonly formatService;
|
|
2047
|
+
private readonly settingsService;
|
|
2048
|
+
private readonly translationService;
|
|
2049
|
+
readonly node: _angular_core.InputSignal<AXMDocumentExplorerNode>;
|
|
2050
|
+
protected readonly badge: _angular_core.Signal<AXMDocumentExpirationBadge | null>;
|
|
2051
|
+
protected readonly tooltipText: _angular_core.WritableSignal<string>;
|
|
2052
|
+
constructor();
|
|
2053
|
+
private resolveTooltip;
|
|
2054
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentExpirationBadgeComponent, never>;
|
|
2055
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMDocumentExpirationBadgeComponent, "axm-document-expiration-badge", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2056
|
+
}
|
|
2057
|
+
|
|
2058
|
+
declare class AXMFolderExpirationBadgesComponent {
|
|
2059
|
+
private readonly translationService;
|
|
2060
|
+
readonly node: _angular_core.InputSignal<AXMDocumentExplorerNode>;
|
|
2061
|
+
protected readonly badges: _angular_core.Signal<AXMFolderExpirationCountBadge[]>;
|
|
2062
|
+
protected readonly tooltipByStatus: _angular_core.WritableSignal<Record<string, string>>;
|
|
2063
|
+
constructor();
|
|
2064
|
+
protected tooltipFor(status: string): string;
|
|
2065
|
+
private resolveTooltips;
|
|
2066
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFolderExpirationBadgesComponent, never>;
|
|
2067
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFolderExpirationBadgesComponent, "axm-folder-expiration-badges", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
declare class AXMFolderPathBreadcrumbsComponent {
|
|
2071
|
+
protected vm: {
|
|
2072
|
+
viewMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode>;
|
|
2073
|
+
isLoading: _angular_core.Signal<boolean>;
|
|
2074
|
+
scope: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPPlatformScope>;
|
|
2075
|
+
currentPath: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2076
|
+
currentNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
2077
|
+
loadingFolderId: _angular_core.Signal<string | null>;
|
|
2078
|
+
navigatingFolderId: _angular_core.Signal<string | null>;
|
|
2079
|
+
backHistory: _angular_core.Signal<{
|
|
2080
|
+
folderId: string;
|
|
2081
|
+
path: AXMDocumentExplorerNode[];
|
|
2082
|
+
}[]>;
|
|
2083
|
+
scopeRootId: _angular_core.Signal<string | null>;
|
|
2084
|
+
selectionMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentSelectionMode>;
|
|
2085
|
+
selectedNodes: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2086
|
+
browseMode: _angular_core.Signal<_acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode>;
|
|
2087
|
+
sortField: _angular_core.Signal<string>;
|
|
2088
|
+
sortDirection: _angular_core.Signal<string>;
|
|
2089
|
+
folders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2090
|
+
files: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2091
|
+
itemsCount: _angular_core.Signal<number>;
|
|
2092
|
+
availableSpace: _angular_core.Signal<number>;
|
|
2093
|
+
currentDrive: _angular_core.Signal<_acorex_platform_framework_shared_core.AXPPlatformScope | null>;
|
|
2094
|
+
fileTypes: _angular_core.Signal<dist_libs_framework_client_types_acorex_platform_framework_client_common.AXPFileType[]>;
|
|
2095
|
+
fileTypeFilter: _angular_core.Signal<string>;
|
|
2096
|
+
detailPanel: _angular_core.Signal<boolean>;
|
|
2097
|
+
groupByType: _angular_core.Signal<boolean>;
|
|
2098
|
+
allowedDocumentTypeNames: _angular_core.Signal<string[] | null>;
|
|
2099
|
+
isRoot: _angular_core.Signal<boolean>;
|
|
2100
|
+
isVirtual: _angular_core.Signal<boolean>;
|
|
2101
|
+
currentFolder: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
2102
|
+
currentFolderContents: _angular_core.Signal<{
|
|
2103
|
+
folders: AXMDocumentExplorerNode[];
|
|
2104
|
+
files: AXMDocumentExplorerNode[];
|
|
2105
|
+
}>;
|
|
2106
|
+
filteredFolders: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2107
|
+
filteredFiles: _angular_core.Signal<AXMDocumentExplorerNode[]>;
|
|
2108
|
+
isLargeTilesView: _angular_core.Signal<boolean>;
|
|
2109
|
+
isSmallTilesView: _angular_core.Signal<boolean>;
|
|
2110
|
+
isListView: _angular_core.Signal<boolean>;
|
|
2111
|
+
isDetailsView: _angular_core.Signal<boolean>;
|
|
2112
|
+
isLargeIconsView: _angular_core.Signal<boolean>;
|
|
2113
|
+
isSmallIconsView: _angular_core.Signal<boolean>;
|
|
2114
|
+
isBackAvailable: _angular_core.Signal<boolean>;
|
|
2115
|
+
isUpAvailable: _angular_core.Signal<boolean>;
|
|
2116
|
+
selectedCount: _angular_core.Signal<number>;
|
|
2117
|
+
hasSelectedItems: _angular_core.Signal<boolean>;
|
|
2118
|
+
hasMultipleSelectedItems: _angular_core.Signal<boolean>;
|
|
2119
|
+
isMultiSelect: _angular_core.Signal<boolean>;
|
|
2120
|
+
selectedNode: _angular_core.Signal<AXMDocumentExplorerNode | null>;
|
|
2121
|
+
isDetailPanelOpen: _angular_core.Signal<boolean>;
|
|
2122
|
+
setAllowedDocumentTypeNames: (names: string[] | null) => void;
|
|
2123
|
+
initialize: (options?: {
|
|
2124
|
+
scope?: _acorex_platform_framework_shared_core.AXPPlatformScope;
|
|
2125
|
+
browseMode?: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
2126
|
+
filter?: any;
|
|
2127
|
+
}) => Promise<void>;
|
|
2128
|
+
applyLoadedFolder: (node: {
|
|
2129
|
+
path: AXMDocumentExplorerNode[];
|
|
2130
|
+
result: AXMDocumentExplorerNode;
|
|
2131
|
+
scopeRootId?: string;
|
|
2132
|
+
}) => Promise<void>;
|
|
2133
|
+
navigateToFolder: (folderId: string) => void;
|
|
2134
|
+
loadFolderContents: (folderId: string) => Promise<void>;
|
|
2135
|
+
virtualFolder: (files?: AXMDocumentExplorerNode[], options?: {
|
|
2136
|
+
name?: string;
|
|
2137
|
+
parentId?: string;
|
|
2138
|
+
}) => Promise<void>;
|
|
2139
|
+
setViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => void;
|
|
2140
|
+
isViewMode: (mode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode | string) => boolean;
|
|
2141
|
+
setSortField: (field: string) => void;
|
|
2142
|
+
setSortDirection: (direction: string) => void;
|
|
2143
|
+
setSelectionMode: (mode: _acorex_platform_module_document_management_client.AXMDocumentSelectionMode | string) => void;
|
|
2144
|
+
setDrive: (scope: _acorex_platform_framework_shared_core.AXPPlatformScope) => void;
|
|
2145
|
+
setFileTypeFilter: (key: string) => void;
|
|
2146
|
+
setLoading: (isLoading: boolean) => void;
|
|
2147
|
+
isLoadingFolder: (folderId: string) => boolean;
|
|
2148
|
+
getFileInfo: (fileName: string) => {
|
|
2149
|
+
icon: string;
|
|
2150
|
+
type: string;
|
|
2151
|
+
};
|
|
2152
|
+
getFileInfoForNode: (node: AXMDocumentExplorerNode) => {
|
|
2153
|
+
icon: string;
|
|
2154
|
+
type: string;
|
|
2155
|
+
};
|
|
2156
|
+
getNodeDisplayInfo: (node: AXMDocumentExplorerNode) => {
|
|
2157
|
+
icon: string;
|
|
2158
|
+
type: string;
|
|
2159
|
+
isShortcut: boolean;
|
|
2160
|
+
};
|
|
2161
|
+
getFolderColor: (node: AXMDocumentExplorerNode) => string;
|
|
2162
|
+
getNodeInfo: (node: AXMDocumentExplorerNode) => {
|
|
2163
|
+
name: string;
|
|
2164
|
+
icon: string;
|
|
2165
|
+
type: string;
|
|
2166
|
+
sections: {
|
|
2167
|
+
title: string;
|
|
2168
|
+
details: {
|
|
2169
|
+
title: string;
|
|
2170
|
+
content?: any;
|
|
2171
|
+
icon?: string;
|
|
2172
|
+
format?: "datetime" | "date" | "filesize" | "number" | "string";
|
|
2173
|
+
}[];
|
|
2174
|
+
}[];
|
|
2175
|
+
};
|
|
2176
|
+
sortItems: (items: AXMDocumentExplorerNode[]) => AXMDocumentExplorerNode[];
|
|
2177
|
+
refresh: () => Promise<void>;
|
|
2178
|
+
navigateToUp: () => void;
|
|
2179
|
+
navigateBack: () => void;
|
|
2180
|
+
openFileViewerWithFolderId: () => Promise<void>;
|
|
2181
|
+
getCurrentFolderFiles: () => AXMDocumentExplorerNode[];
|
|
2182
|
+
deleteNodes: (nodes?: AXMDocumentExplorerNode[]) => Promise<void>;
|
|
2183
|
+
toggleSelect: (node: AXMDocumentExplorerNode) => void;
|
|
2184
|
+
selectOnContextMenu: (node: AXMDocumentExplorerNode) => void;
|
|
2185
|
+
isItemSelected: (node: AXMDocumentExplorerNode) => boolean;
|
|
2186
|
+
selectAll: () => void;
|
|
2187
|
+
deselectAll: () => void;
|
|
2188
|
+
openDetailPanel: () => void;
|
|
2189
|
+
closeDetailPanel: () => void;
|
|
2190
|
+
toggleDetailPanel: () => void;
|
|
2191
|
+
toggleGroupByType: () => void;
|
|
2192
|
+
setGroupByType: (enabled: boolean) => void;
|
|
2193
|
+
getFolderAddMenuItems: ({ canAddFolder }?: {
|
|
2194
|
+
canAddFolder?: boolean;
|
|
2195
|
+
}) => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
2196
|
+
getFolderActionMenuItems: () => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
2197
|
+
getExplorerLayoutMenuItems: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2198
|
+
getOpenFileViewerLayoutMenuItem: () => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2199
|
+
getRootContextMenuItems: ({ canAddFolder }?: {
|
|
2200
|
+
canAddFolder?: boolean;
|
|
2201
|
+
}) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2202
|
+
buildAddItemContextMenuEntry: ({ canAddFolder, }?: {
|
|
2203
|
+
canAddFolder?: boolean;
|
|
2204
|
+
}) => Promise<_acorex_components_menu.AXMenuItem | null>;
|
|
2205
|
+
getContextMenuItems: () => Promise<_acorex_platform_framework_shared_core.AXPActionMenuItem[]>;
|
|
2206
|
+
getFileContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2207
|
+
getFolderContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2208
|
+
getNodeContextMenuItems: (node: AXMDocumentExplorerNode) => Promise<_acorex_components_menu.AXMenuItem[]>;
|
|
2209
|
+
openFile: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
2210
|
+
handleMenuItemClick: (name: string, data: any) => Promise<void>;
|
|
2211
|
+
downloadFile: (node: AXMDocumentExplorerNode) => void;
|
|
2212
|
+
openFileViewer: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
2213
|
+
showFolderProperty: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
2214
|
+
createFolder: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
2215
|
+
renameNode: (node?: AXMDocumentExplorerNode) => Promise<AXMDocumentExplorerNode | undefined>;
|
|
2216
|
+
makeCopy: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
2217
|
+
isLocked: (node: AXMDocumentExplorerNode) => Promise<boolean>;
|
|
2218
|
+
lock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
2219
|
+
unlock: (node: AXMDocumentExplorerNode) => Promise<void>;
|
|
2220
|
+
moveTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
2221
|
+
copyTo: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
2222
|
+
createShortcut: (node?: AXMDocumentExplorerNode) => Promise<void>;
|
|
2223
|
+
uploadFileByType: (folderId: string, documentTypeId: string) => Promise<void>;
|
|
2224
|
+
} & _ngrx_signals.StateSource<{
|
|
2225
|
+
viewMode: _acorex_platform_module_document_management_client.AXPDocumentExplorerViewMode;
|
|
2226
|
+
isLoading: boolean;
|
|
2227
|
+
scope: _acorex_platform_framework_shared_core.AXPPlatformScope;
|
|
2228
|
+
currentPath: AXMDocumentExplorerNode[];
|
|
2229
|
+
currentNode: AXMDocumentExplorerNode | null;
|
|
2230
|
+
loadingFolderId: string | null;
|
|
2231
|
+
navigatingFolderId: string | null;
|
|
2232
|
+
backHistory: {
|
|
2233
|
+
folderId: string;
|
|
2234
|
+
path: AXMDocumentExplorerNode[];
|
|
2235
|
+
}[];
|
|
2236
|
+
scopeRootId: string | null;
|
|
2237
|
+
selectionMode: _acorex_platform_module_document_management_client.AXMDocumentSelectionMode;
|
|
2238
|
+
selectedNodes: AXMDocumentExplorerNode[];
|
|
2239
|
+
browseMode: _acorex_platform_module_document_management_client.AXMDocumentExplorerBrowseMode;
|
|
2240
|
+
sortField: string;
|
|
2241
|
+
sortDirection: string;
|
|
2242
|
+
folders: AXMDocumentExplorerNode[];
|
|
2243
|
+
files: AXMDocumentExplorerNode[];
|
|
2244
|
+
itemsCount: number;
|
|
2245
|
+
availableSpace: number;
|
|
2246
|
+
currentDrive: _acorex_platform_framework_shared_core.AXPPlatformScope | null;
|
|
2247
|
+
fileTypes: dist_libs_framework_client_types_acorex_platform_framework_client_common.AXPFileType[];
|
|
2248
|
+
fileTypeFilter: string;
|
|
2249
|
+
detailPanel: boolean;
|
|
2250
|
+
groupByType: boolean;
|
|
2251
|
+
allowedDocumentTypeNames: string[] | null;
|
|
2252
|
+
}>;
|
|
2253
|
+
protected layout: {
|
|
2254
|
+
currentMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
|
|
2255
|
+
currentPalette: _angular_core.Signal<string>;
|
|
2256
|
+
systemThemeMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPThemeMode>;
|
|
2257
|
+
font: _ngrx_signals.DeepSignal<{
|
|
2258
|
+
family: string;
|
|
2259
|
+
size: string;
|
|
2260
|
+
}>;
|
|
2261
|
+
overlayLoading: _angular_core.Signal<boolean>;
|
|
2262
|
+
navigationLoading: _angular_core.Signal<boolean>;
|
|
2263
|
+
overlayLoadingTaskCount: _angular_core.Signal<number>;
|
|
2264
|
+
navigationLoadingTaskCount: _angular_core.Signal<number>;
|
|
2265
|
+
sideMenuState: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPSideMenuState>;
|
|
2266
|
+
overlaySideMenuOpen: _angular_core.Signal<boolean>;
|
|
2267
|
+
sideMenuWidth: _angular_core.Signal<number>;
|
|
2268
|
+
sideMenuCompactWidth: _angular_core.Signal<number>;
|
|
2269
|
+
menuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
2270
|
+
menuOrientation: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuOrientation>;
|
|
2271
|
+
isPrinting: _angular_core.Signal<boolean>;
|
|
2272
|
+
isDarkMode: _angular_core.Signal<boolean>;
|
|
2273
|
+
isLightMode: _angular_core.Signal<boolean>;
|
|
2274
|
+
isSystemMode: _angular_core.Signal<boolean>;
|
|
2275
|
+
isSideMenuOpen: _angular_core.Signal<boolean>;
|
|
2276
|
+
isOverlayLoading: _angular_core.Signal<boolean>;
|
|
2277
|
+
overlayTaskCount: _angular_core.Signal<number>;
|
|
2278
|
+
isNavigationLoading: _angular_core.Signal<boolean>;
|
|
2279
|
+
isMenuHorizontal: _angular_core.Signal<boolean>;
|
|
2280
|
+
effectiveMenuVerticalMode: _angular_core.Signal<_acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode>;
|
|
2281
|
+
sideMenuDrawerWidth: _angular_core.Signal<number>;
|
|
2282
|
+
changeThemeMode: (theme: _acorex_platform_framework_client_themes_shared.AXPThemeMode) => void;
|
|
2283
|
+
openSideMenu: () => void;
|
|
2284
|
+
closeSideMenu: () => void;
|
|
2285
|
+
setSideMenuWidth: (width: number) => void;
|
|
2286
|
+
setSideMenuCompactWidth: (width: number) => void;
|
|
2287
|
+
setSideMenuDrawerWidth: (width: number) => void;
|
|
2288
|
+
toggleSideMenu: () => void;
|
|
2289
|
+
setNavigationLoading: (value: boolean, delay?: number) => void;
|
|
2290
|
+
setOverlayLoading: (value: boolean, delay?: number) => void;
|
|
2291
|
+
clearOverlayLoading: () => void;
|
|
2292
|
+
loadSettings: () => Promise<void>;
|
|
2293
|
+
} & _ngrx_signals.StateSource<{
|
|
2294
|
+
currentMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
|
|
2295
|
+
currentPalette: string;
|
|
2296
|
+
systemThemeMode: _acorex_platform_framework_client_themes_shared.AXPThemeMode;
|
|
2297
|
+
font: {
|
|
2298
|
+
family: string;
|
|
2299
|
+
size: string;
|
|
2300
|
+
};
|
|
2301
|
+
overlayLoading: boolean;
|
|
2302
|
+
navigationLoading: boolean;
|
|
2303
|
+
overlayLoadingTaskCount: number;
|
|
2304
|
+
navigationLoadingTaskCount: number;
|
|
2305
|
+
sideMenuState: _acorex_platform_framework_client_themes_shared.AXPSideMenuState;
|
|
2306
|
+
overlaySideMenuOpen: boolean;
|
|
2307
|
+
sideMenuWidth: number;
|
|
2308
|
+
sideMenuCompactWidth: number;
|
|
2309
|
+
menuVerticalMode: _acorex_platform_framework_client_themes_shared.AXPMenuVerticalMode;
|
|
2310
|
+
menuOrientation: _acorex_platform_framework_client_themes_shared.AXPMenuOrientation;
|
|
2311
|
+
isPrinting: boolean;
|
|
2312
|
+
}>;
|
|
2313
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMFolderPathBreadcrumbsComponent, never>;
|
|
2314
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMFolderPathBreadcrumbsComponent, "axm-folder-path-breadcrumbs", never, {}, {}, never, never, true, never>;
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
/** `dialogSurface` for attachment dialog with save (layout builder options). */
|
|
2318
|
+
declare const AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT = "document-management.attachment-dialog";
|
|
2319
|
+
/** `dialogSurface` for attachment dialog without save. */
|
|
2320
|
+
declare const AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT_NO_SAVE = "document-management.attachment-dialog-no-save";
|
|
2321
|
+
/**
|
|
2322
|
+
* Runs when the user triggers a footer/dialog action, before the default attachment-dialog handler.
|
|
2323
|
+
* Extensions may set {@link AXMDocumentAttachmentDialogOnActionPayload.result} to short-circuit (e.g. keep dialog open after patching context).
|
|
2324
|
+
*/
|
|
2325
|
+
declare const AXM_DOCUMENT_ATTACHMENT_DIALOG_ON_ACTION_HOOK_KEY = "document-management.attachment-dialog.on-action";
|
|
2326
|
+
interface AXMDocumentAttachmentDialogOnActionPayload {
|
|
2327
|
+
action: string;
|
|
2328
|
+
dialogRef: AXPDialogRef;
|
|
2329
|
+
/** Same shape as `dialogIntegrationPayload` passed when opening the dialog. */
|
|
2330
|
+
integration: Record<string, unknown>;
|
|
2331
|
+
/** When set by a listener, the dialog service returns this to the renderer. */
|
|
2332
|
+
result?: {
|
|
2333
|
+
keepDialogOpen?: boolean;
|
|
2334
|
+
};
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
declare const AXM_DOCUMENT_EXPIRATION_STATUS_DEFINITION_KEY = "document-management.status.document-expiration";
|
|
2338
|
+
declare const AXM_DOCUMENT_EXPIRATION_STATUS: {
|
|
2339
|
+
readonly near: "near";
|
|
2340
|
+
readonly expired: AXPSystemStatusType.Expired;
|
|
2341
|
+
};
|
|
2342
|
+
/**
|
|
2343
|
+
* Near / expired chips for document expiration reports (read-only; no transitions).
|
|
2344
|
+
*/
|
|
2345
|
+
declare class AXMDocumentExpirationStatusProvider extends AXPStatusProvider {
|
|
2346
|
+
readonly key = "document-management.status.document-expiration";
|
|
2347
|
+
readonly defaultStatus: "near";
|
|
2348
|
+
readonly statuses: AXPStatusDefinition[];
|
|
2349
|
+
readonly transitions: AXPStatusTransition[];
|
|
2350
|
+
}
|
|
2351
|
+
|
|
2352
|
+
/**
|
|
2353
|
+
* Default runtime-backed document management service.
|
|
2354
|
+
* Other apps can override {@link AXPDocumentManagementService} with a custom implementation.
|
|
2355
|
+
*/
|
|
2356
|
+
declare class AXMDocumentManagementApiService extends AXPDocumentManagementService {
|
|
2357
|
+
private readonly queryService;
|
|
2358
|
+
getRoot(scope: AXPPlatformScope): Promise<AXMDocumentManagementFolderEntityModel>;
|
|
2359
|
+
getDriveContents(scope: AXPPlatformScope, folderId?: string): Promise<AXMDriveContentsDto>;
|
|
2360
|
+
getRootByEntityRef(refType: string, refId: string): Promise<AXMDocumentManagementFolderEntityModel>;
|
|
2361
|
+
getDocumentPath(documentId: string, stopFolderId?: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
2362
|
+
searchFiles(searchTerm: string, rootFolderId: string, options?: {
|
|
2363
|
+
metadataFilters?: AXPFilterQuery[];
|
|
2364
|
+
documentTypeIds?: string[];
|
|
2365
|
+
}): Promise<AXMDocumentDto[]>;
|
|
2366
|
+
findManyDocuments(ids: string[]): Promise<AXMDocumentDto[]>;
|
|
2367
|
+
getExpiredDocumentCount(): Promise<number>;
|
|
2368
|
+
getFolderPath(folderId: string, stopFolderId?: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
2369
|
+
searchFolders(searchTerm: string, rootFolderId: string): Promise<AXMDocumentManagementFolderEntityModel[]>;
|
|
2370
|
+
getDocumentTypeByName(name: string): Promise<AXMDocumentDocDto>;
|
|
2371
|
+
getUniqueMetadataDefinitions(documentTypeIds?: string[]): Promise<AXMMetadataFieldInfo[]>;
|
|
2372
|
+
private fetchRequired;
|
|
2373
|
+
private fetchArray;
|
|
2374
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMDocumentManagementApiService, never>;
|
|
2375
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMDocumentManagementApiService>;
|
|
2376
|
+
}
|
|
2377
|
+
|
|
2378
|
+
declare class AXMMenuProvider implements AXPMenuProvider {
|
|
2379
|
+
private entityService;
|
|
2380
|
+
private sessionService;
|
|
2381
|
+
provide(context: AXPMenuProviderContext): Promise<void>;
|
|
2382
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMenuProvider, never>;
|
|
2383
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMenuProvider>;
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
declare class AXMSearchCommandProvider extends AXPSearchCommandProvider {
|
|
2387
|
+
commands: _acorex_platform_framework_client_common.AXPSearchResult[];
|
|
2388
|
+
}
|
|
2389
|
+
|
|
2390
|
+
/**
|
|
2391
|
+
* Registers document-management settings, including explorer layout prefs
|
|
2392
|
+
* (view mode, sort order) persisted from the drive toolbar.
|
|
2393
|
+
*/
|
|
2394
|
+
declare class AXPDocumentManagementSettingProvider implements AXPSettingDefinitionProvider {
|
|
2395
|
+
provide(context: AXPSettingDefinitionProviderContext): Promise<void>;
|
|
2396
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDocumentManagementSettingProvider, never>;
|
|
2397
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDocumentManagementSettingProvider>;
|
|
2398
|
+
}
|
|
2399
|
+
|
|
2400
|
+
export { AXMDocumentDriveComponent, AXMDocumentDrivePageComponent, AXMDocumentDrivePageComponentProvider, AXMDocumentExpirationBadgeComponent, AXMDocumentExpirationStatusProvider, AXMDocumentExplorerComponent, AXMDocumentManagementApiService, AXMDocumentManagementFileTypeProvider, AXMDocumentManagementModule, AXMDocumentManagerService, AXMDocumentManagerServiceImpl, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileTypeModule, AXMFolderExpirationBadgesComponent, AXMFolderPathBreadcrumbsComponent, AXMMenuProvider, AXMSearchCommandProvider, AXM_DOCUMENT_ATTACHMENT_DIALOG_ON_ACTION_HOOK_KEY, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT_NO_SAVE, AXM_DOCUMENT_EXPIRATION_STATUS, AXM_DOCUMENT_EXPIRATION_STATUS_DEFINITION_KEY, AXPDocumentExplorerViewModel, AXPDocumentManagementService, AXPDocumentManagementSettingProvider, AXmFileTypeExtensionWidget, DM_AUDIO_EXTENSION_ICONS, DM_DOCUMENT_EXTENSION_ICONS, DM_FILE_EXTENSION_ICONS, DM_FILE_TYPE_ICONS, DM_VIDEO_EXTENSION_ICONS, DOCUMENT_DRIVE_PAGE_COMPONENT_KEY, ScopedDriveService, buildDocumentManagementFileTypeCatalog, documentPlugin, resolveDocumentExpirationBadge, resolveFolderExpirationCountBadges };
|
|
2401
|
+
export type { AXMDocumentAttachmentDialogOnActionPayload, AXMDocumentExpirationBadge, AXMDocumentExpirationBadgeStatus, AXMDocumentExplorerBrowseMode, AXMDocumentExplorerNode, AXMDocumentSelectionMode, AXMDriveContentsDto, AXMDriveFolderPathSegment, AXMFolderExpirationCountBadge, AXMMetadataFieldInfo, AXMNodeType, AXPDocumentExplorerViewMode, CreateFileDto, CreateFolderDto, DocumentPluginOptions, UpdateFileDto, UpdateFolderDto };
|