@acorex/modules 19.2.16 → 19.2.17-next.0
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/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +1 -1
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +8 -7
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +2 -2
- package/document-management/lib/features/shared/document-manager.types.d.ts +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-DagdBc6i.mjs → acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs} +155 -305
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-fNeqoZfY.mjs → acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs} +5 -4
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs +165 -0
- package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs +2 -0
- package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C-eCtqLa.mjs → acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs} +6 -6
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/package.json +1 -1
- package/document-management/lib/features/drive/index.d.ts +0 -3
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DagdBc6i.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-fNeqoZfY.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-C-eCtqLa.mjs.map +0 -1
@@ -2,11 +2,11 @@ import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_PROVIDER } from '@acore
|
|
2
2
|
import { AXPSearchCommandProvider, AXPEntityQueryType, AXPEntityCommandScope, createAllQueryView, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPSettingScope, AXPSettingService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
|
3
3
|
import { AXPEntityService, AXMEntityCrudServiceImpl, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
4
4
|
import * as i0 from '@angular/core';
|
5
|
-
import { inject, Injector, Injectable, NgModule, Component, ChangeDetectionStrategy, signal, computed, viewChild, effect
|
5
|
+
import { inject, Injector, Injectable, NgModule, Component, ChangeDetectionStrategy, signal, computed, viewChild, effect } from '@angular/core';
|
6
6
|
import { firstValueFrom, Subject } from 'rxjs';
|
7
7
|
import * as i6 from '@acorex/platform/layout/builder';
|
8
8
|
import { AXPWidgetsCatalog, AXPWidgetComponent, AXPLayoutBuilderModule, AXP_WIDGETS_ADVANCE_GROUP, AXP_WIDGETS_EDITOR_GROUP } from '@acorex/platform/layout/builder';
|
9
|
-
import {
|
9
|
+
import { RouterModule, ROUTES } from '@angular/router';
|
10
10
|
import { AXDataSource } from '@acorex/components/common';
|
11
11
|
import { AXMMetaDataDefinitionService } from '@acorex/modules/platform-management';
|
12
12
|
import * as i1$1 from '@angular/common';
|
@@ -27,32 +27,17 @@ import get from 'lodash-es/get';
|
|
27
27
|
import set from 'lodash-es/set';
|
28
28
|
import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';
|
29
29
|
import { AXLoadingModule } from '@acorex/components/loading';
|
30
|
-
import * as i4
|
30
|
+
import * as i4 from '@acorex/components/menu';
|
31
31
|
import { AXMenuModule } from '@acorex/components/menu';
|
32
32
|
import { AXDateTimeModule } from '@acorex/core/date-time';
|
33
|
-
import * as
|
33
|
+
import * as i3 from '@acorex/core/format';
|
34
34
|
import { AXFormatModule } from '@acorex/core/format';
|
35
|
-
import
|
36
|
-
import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
|
35
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
37
36
|
import { AXPDataGenerator, AXPElementDataDirective } from '@acorex/platform/core';
|
38
37
|
import { get as get$1 } from 'lodash-es';
|
39
|
-
import { AXBadgeModule } from '@acorex/components/badge';
|
40
|
-
import * as i6$1 from '@acorex/components/breadcrumbs';
|
41
|
-
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
42
|
-
import * as i2$1 from '@acorex/components/button';
|
43
|
-
import { AXButtonModule } from '@acorex/components/button';
|
44
|
-
import { AXButtonGroupModule } from '@acorex/components/button-group';
|
45
|
-
import * as i3 from '@acorex/components/dropdown';
|
46
|
-
import { AXDropdownModule } from '@acorex/components/dropdown';
|
47
|
-
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
48
|
-
import { AXPSimplePageLayout } from '@acorex/platform/themes/default';
|
49
|
-
import * as i7$2 from '@acorex/components/search-box';
|
50
|
-
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
51
|
-
import { AXFileModule } from '@acorex/core/file';
|
52
|
-
import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutToolbarComponent, AXPThemeLayoutFooterComponent } from '@acorex/platform/themes/shared';
|
53
|
-
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
54
38
|
import { AXDialogService } from '@acorex/components/dialog';
|
55
39
|
import { AXPopupService } from '@acorex/components/popup';
|
40
|
+
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
56
41
|
|
57
42
|
const config = {
|
58
43
|
i18n: 'document-management',
|
@@ -3011,154 +2996,6 @@ var documentAttachmentWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
3011
2996
|
AXMDocumentAttachmentWidgetColumnComponent: AXMDocumentAttachmentWidgetColumnComponent
|
3012
2997
|
});
|
3013
2998
|
|
3014
|
-
var AXPDocumentExplorerSettings;
|
3015
|
-
(function (AXPDocumentExplorerSettings) {
|
3016
|
-
AXPDocumentExplorerSettings["ViewMode"] = "document-explorer:layout:view-mode";
|
3017
|
-
AXPDocumentExplorerSettings["SortField"] = "document-explorer:layout:sort-field";
|
3018
|
-
AXPDocumentExplorerSettings["SortDirection"] = "document-explorer:layout:sort-direction";
|
3019
|
-
})(AXPDocumentExplorerSettings || (AXPDocumentExplorerSettings = {}));
|
3020
|
-
|
3021
|
-
const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withState(() => ({
|
3022
|
-
// View State
|
3023
|
-
viewMode: 'grid',
|
3024
|
-
isLoading: false,
|
3025
|
-
// Navigation State
|
3026
|
-
currentPath: [],
|
3027
|
-
currentNode: null,
|
3028
|
-
loadingFolderId: null,
|
3029
|
-
navigatingFolderId: null,
|
3030
|
-
// Sort State
|
3031
|
-
sortField: 'name',
|
3032
|
-
sortDirection: 'asc',
|
3033
|
-
// Content State
|
3034
|
-
folders: [],
|
3035
|
-
files: [],
|
3036
|
-
itemsCount: 0,
|
3037
|
-
availableSpace: 0,
|
3038
|
-
// Drive State
|
3039
|
-
currentDrive: null,
|
3040
|
-
// File Type State
|
3041
|
-
fileTypes: [],
|
3042
|
-
})), withComputed((store) => ({
|
3043
|
-
isRoot: computed(() => {
|
3044
|
-
const node = store.currentNode();
|
3045
|
-
return node?.id === 'root' || !node?.parentId;
|
3046
|
-
}),
|
3047
|
-
breadcrumb: computed(() => store.currentPath()),
|
3048
|
-
currentFolder: computed(() => store.currentNode()),
|
3049
|
-
currentFolderContents: computed(() => ({
|
3050
|
-
folders: store.folders(),
|
3051
|
-
files: store.files(),
|
3052
|
-
})),
|
3053
|
-
parentFolder: computed(() => {
|
3054
|
-
const currentNode = store.currentNode();
|
3055
|
-
return currentNode?.parentId ? store.folders().find(folder => folder.id === currentNode.parentId) : null;
|
3056
|
-
}),
|
3057
|
-
isGridView: computed(() => store.viewMode() === 'grid'),
|
3058
|
-
isListView: computed(() => store.viewMode() === 'list'),
|
3059
|
-
})), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService)) => ({
|
3060
|
-
async initialize(path = 'root') {
|
3061
|
-
// Load file types
|
3062
|
-
const fileTypes = await fileTypeService.items();
|
3063
|
-
patchState(store, { fileTypes });
|
3064
|
-
// Load initial settings
|
3065
|
-
const viewMode = await settingService.get(AXPDocumentExplorerSettings.ViewMode);
|
3066
|
-
const sortField = await settingService.get(AXPDocumentExplorerSettings.SortField);
|
3067
|
-
const sortDirection = await settingService.get(AXPDocumentExplorerSettings.SortDirection);
|
3068
|
-
patchState(store, {
|
3069
|
-
viewMode: viewMode || 'grid',
|
3070
|
-
sortField: sortField || 'name',
|
3071
|
-
sortDirection: sortDirection || 'asc'
|
3072
|
-
});
|
3073
|
-
},
|
3074
|
-
_load: async (folderId) => {
|
3075
|
-
patchState(store, { loadingFolderId: folderId, isLoading: true });
|
3076
|
-
await new Promise(resolve => setTimeout(resolve, 100));
|
3077
|
-
try {
|
3078
|
-
const node = await driveService.getFolder(folderId);
|
3079
|
-
patchState(store, {
|
3080
|
-
currentNode: node.result,
|
3081
|
-
currentPath: node.path,
|
3082
|
-
folders: node.result.children?.filter((item) => item.type === 'folder') || [],
|
3083
|
-
files: node.result.children?.filter((item) => item.type === 'file') || [],
|
3084
|
-
itemsCount: node.result.children?.length || 0,
|
3085
|
-
availableSpace: await driveService.getAvailableSpace(),
|
3086
|
-
loadingFolderId: null,
|
3087
|
-
isLoading: false,
|
3088
|
-
navigatingFolderId: null
|
3089
|
-
});
|
3090
|
-
}
|
3091
|
-
catch (error) {
|
3092
|
-
patchState(store, {
|
3093
|
-
loadingFolderId: null,
|
3094
|
-
isLoading: false
|
3095
|
-
});
|
3096
|
-
throw error;
|
3097
|
-
}
|
3098
|
-
},
|
3099
|
-
navigateToFolder(folderId) {
|
3100
|
-
patchState(store, { navigatingFolderId: folderId });
|
3101
|
-
},
|
3102
|
-
async loadFolderContents(folderId) {
|
3103
|
-
await this._load(folderId);
|
3104
|
-
},
|
3105
|
-
setViewMode(mode) {
|
3106
|
-
patchState(store, { viewMode: mode });
|
3107
|
-
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);
|
3108
|
-
},
|
3109
|
-
setSortField(field) {
|
3110
|
-
patchState(store, { sortField: field });
|
3111
|
-
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortField, field);
|
3112
|
-
},
|
3113
|
-
setSortDirection(direction) {
|
3114
|
-
patchState(store, { sortDirection: direction });
|
3115
|
-
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);
|
3116
|
-
},
|
3117
|
-
setDrive(scope) {
|
3118
|
-
patchState(store, { currentDrive: scope });
|
3119
|
-
},
|
3120
|
-
isLoadingFolder(folderId) {
|
3121
|
-
return store.loadingFolderId() === folderId;
|
3122
|
-
},
|
3123
|
-
getFileInfo(fileName) {
|
3124
|
-
const fileTypes = store.fileTypes();
|
3125
|
-
const extension = fileName.split('.').pop()?.toLowerCase() || '';
|
3126
|
-
const extensions = fileTypes.flatMap(type => type.extensions);
|
3127
|
-
const fileType = extensions.find(e => e.name === extension);
|
3128
|
-
return {
|
3129
|
-
icon: fileType?.icon || 'fa-light fa-file',
|
3130
|
-
type: fileType?.name || 'Unknown'
|
3131
|
-
};
|
3132
|
-
},
|
3133
|
-
sortItems(items) {
|
3134
|
-
const field = store.sortField();
|
3135
|
-
const direction = store.sortDirection();
|
3136
|
-
return [...items].sort((a, b) => {
|
3137
|
-
let comparison = 0;
|
3138
|
-
switch (field) {
|
3139
|
-
case 'name':
|
3140
|
-
comparison = a.name.localeCompare(b.name);
|
3141
|
-
break;
|
3142
|
-
case 'modified':
|
3143
|
-
const aDate = a.lastModified ? new Date(a.lastModified) : new Date(0);
|
3144
|
-
const bDate = b.lastModified ? new Date(b.lastModified) : new Date(0);
|
3145
|
-
comparison = aDate.getTime() - bDate.getTime();
|
3146
|
-
break;
|
3147
|
-
case 'size':
|
3148
|
-
comparison = (a.size || 0) - (b.size || 0);
|
3149
|
-
break;
|
3150
|
-
}
|
3151
|
-
return direction === 'asc' ? comparison : -comparison;
|
3152
|
-
});
|
3153
|
-
},
|
3154
|
-
async refresh() {
|
3155
|
-
const currentFolder = store.currentNode();
|
3156
|
-
if (currentFolder) {
|
3157
|
-
await this._load(currentFolder.id);
|
3158
|
-
}
|
3159
|
-
}
|
3160
|
-
})));
|
3161
|
-
|
3162
2999
|
var AXMDriveScope;
|
3163
3000
|
(function (AXMDriveScope) {
|
3164
3001
|
AXMDriveScope["Platform"] = "P";
|
@@ -3447,7 +3284,7 @@ class AXMDocumentManagerService {
|
|
3447
3284
|
}
|
3448
3285
|
}
|
3449
3286
|
async showCreateFolderDialog(parentId) {
|
3450
|
-
const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-
|
3287
|
+
const comp = (await import('./acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs')).AXMCreateFolderDialog;
|
3451
3288
|
const popup = await this.popupService.open(comp, {
|
3452
3289
|
title: 't("actions.create-folder")',
|
3453
3290
|
data: {
|
@@ -3457,7 +3294,7 @@ class AXMDocumentManagerService {
|
|
3457
3294
|
return popup.data?.folder;
|
3458
3295
|
}
|
3459
3296
|
async rename(node) {
|
3460
|
-
const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-
|
3297
|
+
const comp = (await import('./acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs')).AXMRenameNodeDialog;
|
3461
3298
|
const popup = await this.popupService.open(comp, {
|
3462
3299
|
title: 't("actions.rename")',
|
3463
3300
|
data: {
|
@@ -3615,140 +3452,153 @@ class ScopedDriveService {
|
|
3615
3452
|
}
|
3616
3453
|
}
|
3617
3454
|
|
3618
|
-
|
3619
|
-
|
3620
|
-
|
3621
|
-
|
3622
|
-
|
3623
|
-
|
3624
|
-
|
3625
|
-
|
3626
|
-
|
3627
|
-
|
3628
|
-
|
3629
|
-
|
3630
|
-
|
3631
|
-
|
3632
|
-
|
3633
|
-
|
3634
|
-
|
3635
|
-
|
3636
|
-
|
3637
|
-
|
3638
|
-
|
3639
|
-
|
3640
|
-
|
3641
|
-
|
3642
|
-
|
3643
|
-
|
3644
|
-
|
3455
|
+
var AXPDocumentExplorerSettings;
|
3456
|
+
(function (AXPDocumentExplorerSettings) {
|
3457
|
+
AXPDocumentExplorerSettings["ViewMode"] = "document-explorer:layout:view-mode";
|
3458
|
+
AXPDocumentExplorerSettings["SortField"] = "document-explorer:layout:sort-field";
|
3459
|
+
AXPDocumentExplorerSettings["SortDirection"] = "document-explorer:layout:sort-direction";
|
3460
|
+
})(AXPDocumentExplorerSettings || (AXPDocumentExplorerSettings = {}));
|
3461
|
+
|
3462
|
+
const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withState(() => ({
|
3463
|
+
// View State
|
3464
|
+
viewMode: 'grid',
|
3465
|
+
isLoading: false,
|
3466
|
+
// Navigation State
|
3467
|
+
currentPath: [],
|
3468
|
+
currentNode: null,
|
3469
|
+
loadingFolderId: null,
|
3470
|
+
navigatingFolderId: null,
|
3471
|
+
// Sort State
|
3472
|
+
sortField: 'name',
|
3473
|
+
sortDirection: 'asc',
|
3474
|
+
// Content State
|
3475
|
+
folders: [],
|
3476
|
+
files: [],
|
3477
|
+
itemsCount: 0,
|
3478
|
+
availableSpace: 0,
|
3479
|
+
// Drive State
|
3480
|
+
currentDrive: null,
|
3481
|
+
// File Type State
|
3482
|
+
fileTypes: [],
|
3483
|
+
})), withComputed((store) => ({
|
3484
|
+
isRoot: computed(() => {
|
3485
|
+
const node = store.currentNode();
|
3486
|
+
return node?.id === 'root' || !node?.parentId;
|
3487
|
+
}),
|
3488
|
+
breadcrumb: computed(() => store.currentPath()),
|
3489
|
+
currentFolder: computed(() => store.currentNode()),
|
3490
|
+
currentFolderContents: computed(() => ({
|
3491
|
+
folders: store.folders(),
|
3492
|
+
files: store.files(),
|
3493
|
+
})),
|
3494
|
+
parentFolder: computed(() => {
|
3495
|
+
const currentNode = store.currentNode();
|
3496
|
+
return currentNode?.parentId ? store.folders().find((folder) => folder.id === currentNode.parentId) : null;
|
3497
|
+
}),
|
3498
|
+
isGridView: computed(() => store.viewMode() === 'grid'),
|
3499
|
+
isListView: computed(() => store.viewMode() === 'list'),
|
3500
|
+
})), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), driveService = inject(AXMDocumentManagerService), settingService = inject(AXPSettingService)) => ({
|
3501
|
+
async initialize(path = 'root') {
|
3502
|
+
// Load file types
|
3503
|
+
const fileTypes = await fileTypeService.items();
|
3504
|
+
patchState(store, { fileTypes });
|
3505
|
+
// Load initial settings
|
3506
|
+
const viewMode = await settingService.get(AXPDocumentExplorerSettings.ViewMode);
|
3507
|
+
const sortField = await settingService.get(AXPDocumentExplorerSettings.SortField);
|
3508
|
+
const sortDirection = await settingService.get(AXPDocumentExplorerSettings.SortDirection);
|
3509
|
+
patchState(store, {
|
3510
|
+
viewMode: viewMode || 'grid',
|
3511
|
+
sortField: sortField || 'name',
|
3512
|
+
sortDirection: sortDirection || 'asc',
|
3645
3513
|
});
|
3646
|
-
|
3647
|
-
|
3648
|
-
|
3649
|
-
|
3514
|
+
},
|
3515
|
+
_load: async (folderId) => {
|
3516
|
+
patchState(store, { loadingFolderId: folderId, isLoading: true });
|
3517
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
3518
|
+
try {
|
3519
|
+
const node = await driveService.getFolder(folderId);
|
3520
|
+
patchState(store, {
|
3521
|
+
currentNode: node.result,
|
3522
|
+
currentPath: node.path,
|
3523
|
+
folders: node.result.children?.filter((item) => item.type === 'folder') || [],
|
3524
|
+
files: node.result.children?.filter((item) => item.type === 'file') || [],
|
3525
|
+
itemsCount: node.result.children?.length || 0,
|
3526
|
+
availableSpace: await driveService.getAvailableSpace(),
|
3527
|
+
loadingFolderId: null,
|
3528
|
+
isLoading: false,
|
3529
|
+
navigatingFolderId: null,
|
3650
3530
|
});
|
3651
|
-
});
|
3652
|
-
}
|
3653
|
-
#navigateEffect;
|
3654
|
-
#loadingEffect;
|
3655
|
-
async handleSearchChange(event) {
|
3656
|
-
console.log(event);
|
3657
|
-
const result = await this.driveService.searchNodes(event.value, AXMDriveScope.Platform);
|
3658
|
-
console.log(result);
|
3659
|
-
}
|
3660
|
-
async ngOnInit() {
|
3661
|
-
await this.loadFilterItems();
|
3662
|
-
await this.vm.initialize();
|
3663
|
-
// Subscribe to route changes
|
3664
|
-
this.activatedRoute.paramMap.subscribe(async (params) => {
|
3665
|
-
this.loadDrive();
|
3666
|
-
});
|
3667
|
-
}
|
3668
|
-
async loadDrive() {
|
3669
|
-
const folderId = this.activatedRoute.snapshot.paramMap.get('id');
|
3670
|
-
if (folderId) {
|
3671
|
-
await this.vm.loadFolderContents(folderId);
|
3672
3531
|
}
|
3673
|
-
|
3674
|
-
|
3675
|
-
|
3676
|
-
|
3677
|
-
|
3678
|
-
|
3679
|
-
}
|
3680
|
-
}
|
3681
|
-
}
|
3682
|
-
async loadFilterItems() {
|
3683
|
-
const types = await this.fileTypeService.items();
|
3684
|
-
const items = [
|
3685
|
-
{ key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },
|
3686
|
-
...types.map((type) => ({
|
3687
|
-
key: type.name,
|
3688
|
-
textKey: `file-types.${type.name}`,
|
3689
|
-
icon: type.icon || 'fa-light fa-file',
|
3690
|
-
})),
|
3691
|
-
];
|
3692
|
-
this.filterItems.set(items);
|
3693
|
-
}
|
3694
|
-
setFilter(key) {
|
3695
|
-
this.selectedFilter.set(key);
|
3696
|
-
}
|
3697
|
-
getFilterIcon() {
|
3698
|
-
if (this.selectedFilter() === 'all') {
|
3699
|
-
return 'fa-light fa-folder-closed';
|
3532
|
+
catch (error) {
|
3533
|
+
patchState(store, {
|
3534
|
+
loadingFolderId: null,
|
3535
|
+
isLoading: false,
|
3536
|
+
});
|
3537
|
+
throw error;
|
3700
3538
|
}
|
3701
|
-
|
3702
|
-
|
3703
|
-
|
3704
|
-
|
3705
|
-
|
3706
|
-
|
3539
|
+
},
|
3540
|
+
navigateToFolder(folderId) {
|
3541
|
+
patchState(store, { navigatingFolderId: folderId });
|
3542
|
+
},
|
3543
|
+
async loadFolderContents(folderId) {
|
3544
|
+
await this._load(folderId);
|
3545
|
+
},
|
3546
|
+
setViewMode(mode) {
|
3547
|
+
patchState(store, { viewMode: mode });
|
3548
|
+
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.ViewMode, mode);
|
3549
|
+
},
|
3550
|
+
setSortField(field) {
|
3551
|
+
patchState(store, { sortField: field });
|
3552
|
+
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortField, field);
|
3553
|
+
},
|
3554
|
+
setSortDirection(direction) {
|
3555
|
+
patchState(store, { sortDirection: direction });
|
3556
|
+
settingService.scope(AXPSettingScope.User).set(AXPDocumentExplorerSettings.SortDirection, direction);
|
3557
|
+
},
|
3558
|
+
setDrive(scope) {
|
3559
|
+
patchState(store, { currentDrive: scope });
|
3560
|
+
},
|
3561
|
+
isLoadingFolder(folderId) {
|
3562
|
+
return store.loadingFolderId() === folderId;
|
3563
|
+
},
|
3564
|
+
getFileInfo(fileName) {
|
3565
|
+
const fileTypes = store.fileTypes();
|
3566
|
+
const extension = fileName.split('.').pop()?.toLowerCase() || '';
|
3567
|
+
const extensions = fileTypes.flatMap((type) => type.extensions);
|
3568
|
+
const fileType = extensions.find((e) => e.name === extension);
|
3569
|
+
return {
|
3570
|
+
icon: fileType?.icon || 'fa-light fa-file',
|
3571
|
+
type: fileType?.name || 'Unknown',
|
3572
|
+
};
|
3573
|
+
},
|
3574
|
+
sortItems(items) {
|
3575
|
+
const field = store.sortField();
|
3576
|
+
const direction = store.sortDirection();
|
3577
|
+
return [...items].sort((a, b) => {
|
3578
|
+
let comparison = 0;
|
3579
|
+
switch (field) {
|
3580
|
+
case 'name':
|
3581
|
+
comparison = a.name.localeCompare(b.name);
|
3582
|
+
break;
|
3583
|
+
case 'modified':
|
3584
|
+
const aDate = a.lastModified ? new Date(a.lastModified) : new Date(0);
|
3585
|
+
const bDate = b.lastModified ? new Date(b.lastModified) : new Date(0);
|
3586
|
+
comparison = aDate.getTime() - bDate.getTime();
|
3587
|
+
break;
|
3588
|
+
case 'size':
|
3589
|
+
comparison = (a.size || 0) - (b.size || 0);
|
3590
|
+
break;
|
3591
|
+
}
|
3592
|
+
return direction === 'asc' ? comparison : -comparison;
|
3593
|
+
});
|
3594
|
+
},
|
3595
|
+
async refresh() {
|
3596
|
+
const currentFolder = store.currentNode();
|
3597
|
+
if (currentFolder) {
|
3598
|
+
await this._load(currentFolder.id);
|
3707
3599
|
}
|
3708
|
-
|
3709
|
-
|
3710
|
-
}
|
3711
|
-
handleNavigateToFolder(folderId) {
|
3712
|
-
this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);
|
3713
|
-
}
|
3714
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
3715
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentDriveComponent, isStandalone: true, selector: "axp-document-drive", providers: [AXPDocumentExplorerViewModel], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Main Layout -->\n<axp-layout-simple-page *translate=\"let t\">\n <!-- Header Section -->\n <axp-layout-header>\n <!-- Title Section -->\n <axp-layout-title>\n @if(vm.isRoot()) {\n {{ t('my-drive.title', { scope: rootConfig.config.i18n }) | async }}\n }@else {\n {{ vm.currentFolder()?.name }}\n }\n </axp-layout-title>\n\n <!-- Description Section -->\n <axp-layout-description>\n {{\n t('my-drive.description', {\n scope: rootConfig.config.i18n,\n params: {\n count: vm.itemsCount(),\n size: vm.availableSpace() | format : 'filesize' | async\n }\n }) | async\n }}\n </axp-layout-description>\n\n <!-- Actions Section -->\n <axp-layout-actions>\n <!-- Primary Actions -->\n <axp-layout-actions-primary>\n <!-- Upload Dropdown -->\n <ax-button [text]=\"t('actions.add-item', { scope: rootConfig.config.i18n }) | async\" [color]=\"'primary'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.createFolder()\"\n [text]=\"(t('actions.create-folder', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-folder-plus\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item\n (onClick)=\"documentExplorer()?.uploadFile()\"\n [text]=\"(t('actions.upload-file', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-file-arrow-up\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-actions-primary>\n\n <!-- Secondary Actions -->\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('actions.fa-share', { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-share-nodes\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n <!-- Breadcrumbs Section -->\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item> {{ t('home') | async }} </ax-breadcrumbs-item>\n <ax-breadcrumbs-item> {{ t('profile.title', { scope: 'auth' }) | async }} </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n\n <!-- Toolbar Section -->\n <axp-layout-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item\n (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- Search Box -->\n <ax-search-box\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"\n ></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\"\n [selected]=\"vm.sortField() === item.key\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item\n [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\"\n (onClick)=\"vm.setSortDirection('asc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\"\n (onClick)=\"vm.setSortDirection('desc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n @if(vm.isGridView()) {\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n }\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"(t('actions.grid-view', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isGridView()\"\n (onClick)=\"vm.setViewMode('grid')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.list-view', { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setViewMode('list')\"\n [selected]=\"vm.isListView()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-toolbar>\n </axp-layout-header>\n\n <!-- Content Section -->\n <axp-layout-content class=\"ax-overflow-hidden ax-flex ax-flex-col ax-flex-1\">\n <axm-document-explorer></axm-document-explorer>\n </axp-layout-content>\n\n <!-- Footer Section -->\n <axp-layout-footer>\n <axp-layout-prefix>\n <div class=\"breadcrumb ax-xs\">\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"handleNavigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"fa-regular fa-chevron-right fa-fw fa-xs\"></i>\n } }\n </div>\n </axp-layout-prefix>\n\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-layout-footer>\n</axp-layout-simple-page>\n", styles: [".breadcrumb{display:flex;flex-direction:row;align-items:center;gap:.25rem}.breadcrumb .ax-state-disabled button,.breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i5$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i6$1.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i6$1.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7$2.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i8.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXFileModule }, { kind: "component", type: AXPSimplePageLayout, selector: "axp-layout-simple-page" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutHeaderTemplateComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutActionsComponent, selector: "axp-layout-actions" }, { kind: "component", type: AXPThemeLayoutPagePrimaryActionsComponent, selector: "axp-layout-actions-primary" }, { kind: "component", type: AXPThemeLayoutPageSecondaryActionsComponent, selector: "axp-layout-actions-secondary" }, { kind: "component", type: AXPThemeLayoutToolbarComponent, selector: "axp-layout-toolbar" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type: AXMDocumentExplorerComponent, selector: "axm-document-explorer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
3716
|
-
}
|
3717
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
|
3718
|
-
type: Component,
|
3719
|
-
args: [{ selector: 'axp-document-drive', standalone: true, imports: [
|
3720
|
-
CommonModule,
|
3721
|
-
RouterModule,
|
3722
|
-
AXMenuModule,
|
3723
|
-
AXButtonModule,
|
3724
|
-
AXButtonGroupModule,
|
3725
|
-
AXDropdownButtonModule,
|
3726
|
-
AXDropdownModule,
|
3727
|
-
AXTranslationModule,
|
3728
|
-
AXDecoratorModule,
|
3729
|
-
AXLoadingModule,
|
3730
|
-
AXBreadcrumbsModule,
|
3731
|
-
AXBadgeModule,
|
3732
|
-
AXSearchBoxModule,
|
3733
|
-
AXFormatModule,
|
3734
|
-
AXFileModule,
|
3735
|
-
AXPSimplePageLayout,
|
3736
|
-
AXPThemeLayoutBlockComponent,
|
3737
|
-
AXPThemeLayoutHeaderTemplateComponent,
|
3738
|
-
AXPThemeLayoutActionsComponent,
|
3739
|
-
AXPThemeLayoutPagePrimaryActionsComponent,
|
3740
|
-
AXPThemeLayoutPageSecondaryActionsComponent,
|
3741
|
-
AXPThemeLayoutToolbarComponent,
|
3742
|
-
AXPThemeLayoutFooterComponent,
|
3743
|
-
AXDateTimeModule,
|
3744
|
-
AXMDocumentExplorerComponent,
|
3745
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [AXPDocumentExplorerViewModel], template: "<!-- Main Layout -->\n<axp-layout-simple-page *translate=\"let t\">\n <!-- Header Section -->\n <axp-layout-header>\n <!-- Title Section -->\n <axp-layout-title>\n @if(vm.isRoot()) {\n {{ t('my-drive.title', { scope: rootConfig.config.i18n }) | async }}\n }@else {\n {{ vm.currentFolder()?.name }}\n }\n </axp-layout-title>\n\n <!-- Description Section -->\n <axp-layout-description>\n {{\n t('my-drive.description', {\n scope: rootConfig.config.i18n,\n params: {\n count: vm.itemsCount(),\n size: vm.availableSpace() | format : 'filesize' | async\n }\n }) | async\n }}\n </axp-layout-description>\n\n <!-- Actions Section -->\n <axp-layout-actions>\n <!-- Primary Actions -->\n <axp-layout-actions-primary>\n <!-- Upload Dropdown -->\n <ax-button [text]=\"t('actions.add-item', { scope: rootConfig.config.i18n }) | async\" [color]=\"'primary'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n (onClick)=\"documentExplorer()?.createFolder()\"\n [text]=\"(t('actions.create-folder', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-folder-plus\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item\n (onClick)=\"documentExplorer()?.uploadFile()\"\n [text]=\"(t('actions.upload-file', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-file-arrow-up\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-actions-primary>\n\n <!-- Secondary Actions -->\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('actions.fa-share', { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-share-nodes\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n </axp-layout-actions>\n\n <!-- Breadcrumbs Section -->\n <axp-layout-breadcrumbs>\n <ax-breadcrumbs [class.ax-hidden]=\"layout.isSmall()\">\n <ng-template #divider>\n <i class=\"fa-regular fa-slash-forward\"></i>\n </ng-template>\n <ax-breadcrumbs-item> {{ t('home') | async }} </ax-breadcrumbs-item>\n <ax-breadcrumbs-item> {{ t('profile.title', { scope: 'auth' }) | async }} </ax-breadcrumbs-item>\n </ax-breadcrumbs>\n </axp-layout-breadcrumbs>\n\n <!-- Toolbar Section -->\n <axp-layout-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item\n (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- Search Box -->\n <ax-search-box\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"\n ></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\"\n [selected]=\"vm.sortField() === item.key\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item\n [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\"\n (onClick)=\"vm.setSortDirection('asc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\"\n (onClick)=\"vm.setSortDirection('desc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n @if(vm.isGridView()) {\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n }\n <ax-dropdown-panel>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"(t('actions.grid-view', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isGridView()\"\n (onClick)=\"vm.setViewMode('grid')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-grid-2\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.list-view', { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setViewMode('list')\"\n [selected]=\"vm.isListView()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-list\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-toolbar>\n </axp-layout-header>\n\n <!-- Content Section -->\n <axp-layout-content class=\"ax-overflow-hidden ax-flex ax-flex-col ax-flex-1\">\n <axm-document-explorer></axm-document-explorer>\n </axp-layout-content>\n\n <!-- Footer Section -->\n <axp-layout-footer>\n <axp-layout-prefix>\n <div class=\"breadcrumb ax-xs\">\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"handleNavigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"fa-regular fa-chevron-right fa-fw fa-xs\"></i>\n } }\n </div>\n </axp-layout-prefix>\n\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-layout-footer>\n</axp-layout-simple-page>\n", styles: [".breadcrumb{display:flex;flex-direction:row;align-items:center;gap:.25rem}.breadcrumb .ax-state-disabled button,.breadcrumb .ax-state-loading button{cursor:default!important}\n"] }]
|
3746
|
-
}] });
|
3747
|
-
|
3748
|
-
var drive_component = /*#__PURE__*/Object.freeze({
|
3749
|
-
__proto__: null,
|
3750
|
-
AXMDocumentDriveComponent: AXMDocumentDriveComponent
|
3751
|
-
});
|
3600
|
+
},
|
3601
|
+
})));
|
3752
3602
|
|
3753
3603
|
class AXMDocumentExplorerComponent {
|
3754
3604
|
constructor() {
|
@@ -3981,7 +3831,7 @@ class AXMDocumentExplorerComponent {
|
|
3981
3831
|
}
|
3982
3832
|
}
|
3983
3833
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
3984
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">15 items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\"\n (dblclick)=\"handleNavigateToFolder(file.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu #itemsContextMenu [target]=\"'.axp-explorer-item'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuOnOpening($event)\">\n</ax-context-menu>\n\n<ax-context-menu #rootContextMenu [target]=\"'axm-document-explorer'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuRootOnOpening($event)\">\n</ax-context-menu>", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i8.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i4$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }] }); }
|
3834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Content -->\n<div class=\"content\">\n <!-- Empty State -->\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-16 ax-h-full\">\n <ax-icon icon=\"fa-light fa-folder-open\" class=\"ax-text-6xl ax-mb-4\"></ax-icon>\n <h3 class=\"ax-text-xl ax-font-medium ax-mb-2\">No Items Found</h3>\n <p class=\"\">This folder is empty. Add some files or folders to get started.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (vm.isGridView()) {\n <!-- Folders Section -->\n @if (vm.folders().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Folders</h3>\n <div class=\"items-grid\">\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"gridFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n }\n </div>\n </div>\n }\n\n <!-- Files Section -->\n @if (vm.files().length > 0) {\n <div class=\"section\">\n <h3 class=\"section-title\">Files</h3>\n <div class=\"items-grid\">\n @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"gridFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </div>\n </div>\n }\n <!-- Grid View End -->\n }\n\n <!-- List View -->\n @if (vm.isListView()) {\n <div class=\"list-view\">\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"name-column\">Name</th>\n <th class=\"type-column\">Type</th>\n <th class=\"size-column\">Size</th>\n <th class=\"date-column\">Last Modified</th>\n </tr>\n </thead>\n <tbody>\n @for (folder of vm.folders(); track folder.id) {\n <ng-container [ngTemplateOutlet]=\"listFolderTemplate\" [ngTemplateOutletContext]=\"{ $implicit: folder }\">\n </ng-container>\n } @for (file of vm.files(); track file.id) {\n <ng-container [ngTemplateOutlet]=\"listFileTemplate\" [ngTemplateOutletContext]=\"{ $implicit: file }\">\n </ng-container>\n }\n </tbody>\n </table>\n </div>\n } }\n</div>\n\n<!-- Grid View Templates -->\n<ng-template #gridFolderTemplate let-folder>\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"folder\"\n (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <ax-icon icon=\"fa-solid fa-folder-closed \"></ax-icon>\n }\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ folder.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">15 items</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ folder.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #gridFileTemplate let-file>\n @let fileInfo = vm.getFileInfo(file.name);\n <div class=\"ax-group ax-cursor-pointer axp-explorer-item\" [axp-data]=\"file\"\n (dblclick)=\"handleNavigateToFolder(file.id)\">\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-p-4 ax-rounded-lg ax-border ax-lighter-surface\">\n <div class=\"ax-text-yellow-400 fa-3x ax-mb-2\" style=\"--fa-animation-duration: 2s\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"ax-flex ax-justify-between ax-font-semibold ax-w-full\">\n <span class=\"ax-text-sm ax-truncate ax-text-start\">{{ file.name }}</span>\n </div>\n <div class=\"ax-flex ax-justify-between ax-w-full ax-font-semibold ax-opacity-65\">\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.size | format : 'filesize' | async }}</span>\n <span class=\"ax-text-xs ax-text-neutral\">{{ file.lastModified | format : 'datetime' : { format: 'datetime' } |\n async }}</span>\n </div>\n </div>\n </div>\n</ng-template>\n\n<!-- List View Templates -->\n<ng-template #listFolderTemplate let-folder>\n <tr class=\"folder-row\" (dblclick)=\"handleNavigateToFolder(folder.id)\">\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"folder\">\n <div class=\"item-name\">\n @if (vm.isLoadingFolder(folder.id)) {\n <ng-container [ngTemplateOutlet]=\"folderLoading\"> </ng-container>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n <span>{{ folder.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"folder\">Folder</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"folder\">{{ folder.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"folder\">\n {{ folder.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #listFileTemplate let-file>\n <tr class=\"file-row\">\n @let fileInfo = vm.getFileInfo(file.name);\n <td class=\"name-column axp-explorer-item\" [axp-data]=\"file\">\n <div class=\"item-name hover:ax-underline\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n <span>{{ file.name }}</span>\n </div>\n </td>\n <td class=\"type-column axp-explorer-item\" [axp-data]=\"file\">{{ fileInfo.type }}</td>\n <td class=\"size-column axp-explorer-item\" [axp-data]=\"file\">{{ file.size | format : 'filesize' | async }}</td>\n <td class=\"date-column axp-explorer-item\" [axp-data]=\"file\">\n {{ file.lastModified | format : 'datetime' : { format: 'datetime' } | async }}\n </td>\n </tr>\n</ng-template>\n\n<ng-template #folderLoading>\n <i class=\"fa-light fa-spinner fa-spin-pulse ax-text-2xl\"></i>\n</ng-template>\n\n<!-- Context Menu-->\n<ax-context-menu #itemsContextMenu [target]=\"'.axp-explorer-item'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuOnOpening($event)\">\n</ax-context-menu>\n\n<ax-context-menu #rootContextMenu [target]=\"'axm-document-explorer'\" [orientation]=\"'vertical'\" [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\" (onOpening)=\"handleContextMenuRootOnOpening($event)\">\n</ax-context-menu>", styles: [":host{display:flex;height:100%;flex:1 1 0%;flex-direction:column;gap:1rem}:host .content{flex:1 1 0%;-webkit-user-select:none;-moz-user-select:-moz-none;user-select:none;overflow-y:auto}:host .content .loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}:host .content .loading-state i{font-size:1.5rem;line-height:2rem}:host .content .section{margin-bottom:2rem}:host .content .section:last-child{margin-bottom:0}:host .content .section .section-title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .content .section .items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .content .list-view .items-table{width:100%;border-collapse:collapse}:host .content .list-view .items-table th{border-bottom-width:1px;padding:.75rem;text-align:start;font-weight:500;background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host .content .list-view .items-table th.name-column{width:50%}:host .content .list-view .items-table th.type-column{width:20%}:host .content .list-view .items-table th.size-column{width:15%}:host .content .list-view .items-table th.date-column{width:15%}:host .content .list-view .items-table td{border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-surface),var(--tw-border-opacity, 1));padding:.75rem}:host .content .list-view .items-table td.name-column .item-name{display:flex;align-items:center;gap:.5rem}:host .content .list-view .items-table td.name-column .item-name i{font-size:1.25rem;line-height:1.75rem}:host .content .list-view .items-table tr{cursor:pointer;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host .content .list-view .items-table tr:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}:host .content .list-view .items-table tr.folder-row td .item-name i{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i3.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i4.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }] }); }
|
3985
3835
|
}
|
3986
3836
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
|
3987
3837
|
type: Component,
|
@@ -4117,11 +3967,11 @@ function routesFacory() {
|
|
4117
3967
|
children: [
|
4118
3968
|
{
|
4119
3969
|
path: '',
|
4120
|
-
loadComponent: () =>
|
3970
|
+
loadComponent: () => import('./acorex-modules-document-management-drive.component-Sz198sA6.mjs').then((c) => c.AXMDocumentDriveComponent),
|
4121
3971
|
},
|
4122
3972
|
{
|
4123
3973
|
path: ':id',
|
4124
|
-
loadComponent: () =>
|
3974
|
+
loadComponent: () => import('./acorex-modules-document-management-drive.component-Sz198sA6.mjs').then((c) => c.AXMDocumentDriveComponent),
|
4125
3975
|
},
|
4126
3976
|
],
|
4127
3977
|
},
|
@@ -4238,5 +4088,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
4238
4088
|
* Generated bundle index. Do not edit.
|
4239
4089
|
*/
|
4240
4090
|
|
4241
|
-
export { AXMDocumentManagerService as A,
|
4242
|
-
//# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-
|
4091
|
+
export { AXMDocumentManagerService as A, AXMFolderServiceImpl as B, AXMEntityProvider as C, AXMMenuProvider as D, AXMSearchCommandProvider as E, AXMSettingProvider as F, RootConfig as R, AXPDocumentExplorerViewModel as a, AXMDocumentExplorerComponent as b, AXMDriveScope as c, AXMDocumentManagementModule as d, documentFactory as e, AXMDocumentManagementDocumentEntityModule as f, AXMDocumentService as g, AXMDocumentServiceImpl as h, documentTypeFactory as i, AXMDocumentManagementDocumentTypeEntityModule as j, AXMDocumentManagementDocumentTypeEntityService as k, AXMDocumentManagementDocumentTypeEntityServiceImpl as l, documentTypeMetaDefinitionfactory as m, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule as n, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService as o, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl as p, documentTypeMetaValueFactory as q, AXMDocumentManagementDocumentTypeMetaValueEntityModule as r, AXMDocumentManagementDocumentTypeMetaValueEntityService as s, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl as t, documentTypeStatusDefinitionFactory as u, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule as v, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService as w, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl as x, folderFactory as y, AXMFolderService as z };
|
4092
|
+
//# sourceMappingURL=acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs.map
|