@acorex/modules 19.2.15 → 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/common/README.md +3 -0
- package/common/index.d.ts +6 -0
- package/common/lib/common.module.d.ts +6 -0
- package/common/lib/const.d.ts +25 -0
- package/common/lib/entities/dashboard/dashboard.entity.d.ts +3 -0
- package/common/lib/entities/dashboard/dashboard.service.d.ts +10 -0
- package/common/lib/entities/dashboard/dashboard.types.d.ts +8 -0
- package/common/lib/entities/dashboard/index.d.ts +3 -0
- package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.entity.d.ts +3 -0
- package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.service.d.ts +10 -0
- package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.types.d.ts +9 -0
- package/common/lib/entities/dashboard-widget-data/index.d.ts +3 -0
- package/common/lib/entities/index.d.ts +2 -0
- package/common/lib/entity.provider.d.ts +10 -0
- package/common/lib/features/home/dashboard-home.d.ts +5 -0
- package/common/lib/features/home/index.d.ts +1 -0
- package/common/lib/menu.provider.d.ts +5 -0
- package/common/lib/permission.provider.d.ts +4 -0
- package/common/lib/search-command.provider.d.ts +4 -0
- package/common/lib/setting.provider.d.ts +4 -0
- package/document-management/lib/entities/document/document.service.d.ts +7 -0
- package/document-management/lib/entities/folder/folder.service.d.ts +7 -0
- package/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +14 -0
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +12 -9
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +2 -2
- package/document-management/lib/features/drive/drive.component.d.ts +3 -2
- package/document-management/lib/features/shared/document-manager.service.d.ts +80 -1
- package/document-management/lib/features/shared/document-manager.types.d.ts +1 -1
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +6 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +6 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-filter.component.d.ts +6 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +6 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +6 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget.config.d.ts +7 -0
- package/document-management/lib/features/widgets/document-attachment/index.d.ts +6 -0
- package/document-management/lib/features/widgets/index.d.ts +1 -0
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs → acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs.map → acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CGSygSjS.mjs → acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-CGSygSjS.mjs.map → acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-B1sF3B_O.mjs → acorex-modules-auth-login.module-B9P2XpfQ.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-B1sF3B_O.mjs.map → acorex-modules-auth-login.module-B9P2XpfQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-CK4nyS8D.mjs → acorex-modules-auth-master.layout-BYC0FYq1.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-CK4nyS8D.mjs.map → acorex-modules-auth-master.layout-BYC0FYq1.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DC_zi8bV.mjs → acorex-modules-auth-password.component-C7Yp-ioT.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DC_zi8bV.mjs.map → acorex-modules-auth-password.component-C7Yp-ioT.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DqvmIMDR.mjs → acorex-modules-auth-password.component-DzrYH4yM.mjs} +3 -3
- package/fesm2022/acorex-modules-auth-password.component-DzrYH4yM.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-DwHgPrDP.mjs → acorex-modules-auth-routes-Bu-xB4O6.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-DwHgPrDP.mjs.map → acorex-modules-auth-routes-Bu-xB4O6.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-BatKQRdJ.mjs → acorex-modules-auth-two-factor.module-YRh6_YcG.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-BatKQRdJ.mjs.map → acorex-modules-auth-two-factor.module-YRh6_YcG.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs +14 -0
- package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +1095 -0
- package/fesm2022/acorex-modules-common.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs +4092 -0
- 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-BnRaCq_Q.mjs +92 -0
- 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-EBf1XqU8.mjs +101 -0
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1 -3093
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/package.json +5 -1
- package/document-management/lib/features/drive/index.d.ts +0 -3
- package/fesm2022/acorex-modules-auth-password.component-DqvmIMDR.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs +0 -951
- package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs.map +0 -1
package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
import * as i2$1 from '@acorex/components/button';
|
2
|
+
import { AXButtonModule } from '@acorex/components/button';
|
3
|
+
import * as i8 from '@acorex/components/color-box';
|
4
|
+
import { AXColorBoxModule } from '@acorex/components/color-box';
|
5
|
+
import * as i5 from '@acorex/components/decorators';
|
6
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
7
|
+
import * as i7 from '@acorex/components/form';
|
8
|
+
import { AXFormModule } from '@acorex/components/form';
|
9
|
+
import * as i5$1 from '@acorex/components/label';
|
10
|
+
import { AXLabelModule } from '@acorex/components/label';
|
11
|
+
import * as i10 from '@acorex/components/loading';
|
12
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
13
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
14
|
+
import * as i4 from '@acorex/components/text-box';
|
15
|
+
import { AXTextBoxModule } from '@acorex/components/text-box';
|
16
|
+
import * as i9 from '@acorex/core/translation';
|
17
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
18
|
+
import * as i1 from '@angular/common';
|
19
|
+
import { CommonModule } from '@angular/common';
|
20
|
+
import * as i0 from '@angular/core';
|
21
|
+
import { inject, model, Component } from '@angular/core';
|
22
|
+
import * as i2 from '@angular/forms';
|
23
|
+
import { FormsModule } from '@angular/forms';
|
24
|
+
import './acorex-modules-document-management-index--I8MGeDs.mjs';
|
25
|
+
import { AXAutoFocusDirective } from '@acorex/components/common';
|
26
|
+
import { A as AXMDocumentManagerService } from './acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs';
|
27
|
+
|
28
|
+
class AXMCreateFolderDialog extends AXBasePageComponent {
|
29
|
+
constructor() {
|
30
|
+
super(...arguments);
|
31
|
+
this.driveService = inject(AXMDocumentManagerService);
|
32
|
+
this.name = model('');
|
33
|
+
this.color = model('#FFFFFF');
|
34
|
+
this.description = model('');
|
35
|
+
}
|
36
|
+
async handleSubmitButton(form) {
|
37
|
+
this.isLoading = true;
|
38
|
+
const validated = await form.validate();
|
39
|
+
if (validated.result) {
|
40
|
+
try {
|
41
|
+
const folder = await this.driveService.createFolder({
|
42
|
+
name: this.name(),
|
43
|
+
color: this.color(),
|
44
|
+
parentId: this.parentId,
|
45
|
+
description: this.description(),
|
46
|
+
});
|
47
|
+
this.close({
|
48
|
+
result: true,
|
49
|
+
folder,
|
50
|
+
});
|
51
|
+
}
|
52
|
+
catch (error) {
|
53
|
+
console.error('Error creating folder:', error);
|
54
|
+
}
|
55
|
+
finally {
|
56
|
+
this.isLoading = false;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
this.isLoading = false;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
onCancel() {
|
64
|
+
this.close({
|
65
|
+
result: false,
|
66
|
+
});
|
67
|
+
}
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMCreateFolderDialog, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
69
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMCreateFolderDialog, isStandalone: true, selector: "ax-create-folder-dialog", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { name: "nameChange", color: "colorChange", description: "descriptionChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'description' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"description\" class=\"ax-input ax-w-full\"> </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'color' | translate | async }}\n </ax-label>\n <ax-color-box [(ngModel)]=\"color\" class=\"ax-w-full\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-color-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
70
|
+
//
|
71
|
+
AXDecoratorModule }, { kind: "component", type: i5.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: AXTextBoxModule }, { kind: "component", type: i4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { 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: "ngmodule", type: AXFormModule }, { kind: "component", type: i7.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i7.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i7.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "component", type: i8.AXColorBoxComponent, selector: "ax-color-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "showBadge", "showValue", "showClearButton", "showIcon"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i9.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i10.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "directive", type: AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }] }); }
|
72
|
+
}
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMCreateFolderDialog, decorators: [{
|
74
|
+
type: Component,
|
75
|
+
args: [{ selector: 'ax-create-folder-dialog', standalone: true, imports: [
|
76
|
+
CommonModule,
|
77
|
+
FormsModule,
|
78
|
+
//
|
79
|
+
AXDecoratorModule,
|
80
|
+
AXTextBoxModule,
|
81
|
+
AXLabelModule,
|
82
|
+
AXButtonModule,
|
83
|
+
AXFormModule,
|
84
|
+
AXColorBoxModule,
|
85
|
+
AXTranslationModule,
|
86
|
+
AXLoadingModule,
|
87
|
+
AXAutoFocusDirective
|
88
|
+
], template: "<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'description' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"description\" class=\"ax-input ax-w-full\"> </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'color' | translate | async }}\n </ax-label>\n <ax-color-box [(ngModel)]=\"color\" class=\"ax-w-full\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-color-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>" }]
|
89
|
+
}] });
|
90
|
+
|
91
|
+
export { AXMCreateFolderDialog };
|
92
|
+
//# sourceMappingURL=acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs.map
|
package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDocumentManagerService } from '../../../shared';\nimport { AXAutoFocusDirective } from '@acorex/components/common';\n\n@Component({\n selector: 'ax-create-folder-dialog',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXDecoratorModule,\n AXTextBoxModule,\n AXLabelModule,\n AXButtonModule,\n AXFormModule,\n AXColorBoxModule,\n AXTranslationModule,\n AXLoadingModule,\n AXAutoFocusDirective\n ],\n templateUrl: './create-folder-dialog.component.html',\n})\nexport class AXMCreateFolderDialog extends AXBasePageComponent {\n private driveService = inject(AXMDocumentManagerService);\n\n parentId?: string;\n\n protected name = model<string>('');\n protected color = model<string>('#FFFFFF');\n protected description = model<string>('');\n\n async handleSubmitButton(form: AXFormComponent) {\n this.isLoading = true;\n const validated = await form.validate();\n if (validated.result) {\n try {\n const folder = await this.driveService.createFolder({\n name: this.name(),\n color: this.color(),\n parentId: this.parentId,\n description: this.description(),\n });\n this.close({\n result: true,\n folder,\n });\n } catch (error) {\n console.error('Error creating folder:', error);\n } finally {\n this.isLoading = false;\n }\n } else {\n this.isLoading = false;\n }\n }\n\n onCancel() {\n this.close({\n result: false,\n });\n }\n}\n","<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'description' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"description\" class=\"ax-input ax-w-full\"> </ax-text-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>\n {{ 'color' | translate | async }}\n </ax-label>\n <ax-color-box [(ngModel)]=\"color\" class=\"ax-w-full\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-color-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>"],"names":["i3","i6"],"mappings":"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"}
|
@@ -0,0 +1,165 @@
|
|
1
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
2
|
+
import * as i6 from '@acorex/components/breadcrumbs';
|
3
|
+
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
4
|
+
import * as i2 from '@acorex/components/button';
|
5
|
+
import { AXButtonModule } from '@acorex/components/button';
|
6
|
+
import { AXButtonGroupModule } from '@acorex/components/button-group';
|
7
|
+
import * as i5 from '@acorex/components/decorators';
|
8
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
9
|
+
import * as i3 from '@acorex/components/dropdown';
|
10
|
+
import { AXDropdownModule } from '@acorex/components/dropdown';
|
11
|
+
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
12
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
13
|
+
import { AXMenuModule } from '@acorex/components/menu';
|
14
|
+
import * as i9 from '@acorex/core/translation';
|
15
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
16
|
+
import { AXPSimplePageLayout } from '@acorex/platform/themes/default';
|
17
|
+
import * as i7 from '@acorex/components/search-box';
|
18
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
19
|
+
import { AXDateTimeModule } from '@acorex/core/date-time';
|
20
|
+
import { AXFileModule } from '@acorex/core/file';
|
21
|
+
import * as i3$1 from '@acorex/core/format';
|
22
|
+
import { AXFormatModule } from '@acorex/core/format';
|
23
|
+
import { AXPSessionService } from '@acorex/platform/auth';
|
24
|
+
import { AXPFileTypeProviderService } from '@acorex/platform/common';
|
25
|
+
import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutToolbarComponent, AXPThemeLayoutFooterComponent } from '@acorex/platform/themes/shared';
|
26
|
+
import * as i1 from '@angular/common';
|
27
|
+
import { CommonModule } from '@angular/common';
|
28
|
+
import * as i0 from '@angular/core';
|
29
|
+
import { inject, signal, viewChild, computed, effect, untracked, Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
|
30
|
+
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
|
31
|
+
import { R as RootConfig, A as AXMDocumentManagerService, a as AXPDocumentExplorerViewModel, b as AXMDocumentExplorerComponent, c as AXMDriveScope } from './acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs';
|
32
|
+
import './acorex-modules-document-management-index--I8MGeDs.mjs';
|
33
|
+
|
34
|
+
class AXMDocumentDriveComponent {
|
35
|
+
constructor() {
|
36
|
+
this.layout = inject(AXPLayoutThemeService);
|
37
|
+
this.rootConfig = RootConfig;
|
38
|
+
this.fileTypeService = inject(AXPFileTypeProviderService);
|
39
|
+
this.driveService = inject(AXMDocumentManagerService);
|
40
|
+
this.vm = inject(AXPDocumentExplorerViewModel);
|
41
|
+
this.router = inject(Router);
|
42
|
+
this.activatedRoute = inject(ActivatedRoute);
|
43
|
+
this.sessionService = inject(AXPSessionService);
|
44
|
+
this.filterItems = signal([]);
|
45
|
+
this.selectedFilter = signal('all');
|
46
|
+
this.sortItems = signal([
|
47
|
+
{ key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },
|
48
|
+
{ key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },
|
49
|
+
{ key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },
|
50
|
+
]);
|
51
|
+
this.documentExplorer = viewChild(AXMDocumentExplorerComponent);
|
52
|
+
this.selectedSort = computed(() => {
|
53
|
+
const items = this.sortItems();
|
54
|
+
return items.find((item) => item.key === this.vm.sortField()) || items[0];
|
55
|
+
});
|
56
|
+
this.#navigateEffect = effect(() => {
|
57
|
+
const navigatingFolderId = this.vm.navigatingFolderId();
|
58
|
+
if (navigatingFolderId) {
|
59
|
+
this.handleNavigateToFolder(navigatingFolderId);
|
60
|
+
}
|
61
|
+
});
|
62
|
+
this.#loadingEffect = effect(() => {
|
63
|
+
const isLoading = this.vm.isLoading();
|
64
|
+
untracked(() => {
|
65
|
+
this.layout.setNavigationLoading(isLoading);
|
66
|
+
});
|
67
|
+
});
|
68
|
+
}
|
69
|
+
#navigateEffect;
|
70
|
+
#loadingEffect;
|
71
|
+
async handleSearchChange(event) {
|
72
|
+
console.log(event);
|
73
|
+
const result = await this.driveService.searchNodes(event.value, AXMDriveScope.Platform);
|
74
|
+
console.log(result);
|
75
|
+
}
|
76
|
+
async ngOnInit() {
|
77
|
+
await this.loadFilterItems();
|
78
|
+
await this.vm.initialize();
|
79
|
+
// Subscribe to route changes
|
80
|
+
this.activatedRoute.paramMap.subscribe(async (params) => {
|
81
|
+
this.loadDrive();
|
82
|
+
});
|
83
|
+
}
|
84
|
+
async loadDrive() {
|
85
|
+
const folderId = this.activatedRoute.snapshot.paramMap.get('id');
|
86
|
+
if (folderId) {
|
87
|
+
await this.vm.loadFolderContents(folderId);
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
const root = await this.driveService.getRoot(AXMDriveScope.Platform);
|
91
|
+
if (root.result) {
|
92
|
+
await this.router.navigate([`${this.sessionService.application?.name}/drive/my/${root.result.id}`], {
|
93
|
+
replaceUrl: true,
|
94
|
+
});
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
async loadFilterItems() {
|
99
|
+
const types = await this.fileTypeService.items();
|
100
|
+
const items = [
|
101
|
+
{ key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },
|
102
|
+
...types.map((type) => ({
|
103
|
+
key: type.name,
|
104
|
+
textKey: `file-types.${type.name}`,
|
105
|
+
icon: type.icon || 'fa-light fa-file',
|
106
|
+
})),
|
107
|
+
];
|
108
|
+
this.filterItems.set(items);
|
109
|
+
}
|
110
|
+
setFilter(key) {
|
111
|
+
this.selectedFilter.set(key);
|
112
|
+
}
|
113
|
+
getFilterIcon() {
|
114
|
+
if (this.selectedFilter() === 'all') {
|
115
|
+
return 'fa-light fa-folder-closed';
|
116
|
+
}
|
117
|
+
const item = this.filterItems().find((item) => item.key === this.selectedFilter());
|
118
|
+
return item?.icon || 'fa-light fa-file';
|
119
|
+
}
|
120
|
+
getFilterText() {
|
121
|
+
if (this.selectedFilter() === 'all') {
|
122
|
+
return 'file-types.all';
|
123
|
+
}
|
124
|
+
const item = this.filterItems().find((item) => item.key === this.selectedFilter());
|
125
|
+
return item?.textKey || 'file-types.all';
|
126
|
+
}
|
127
|
+
handleNavigateToFolder(folderId) {
|
128
|
+
this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);
|
129
|
+
}
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
131
|
+
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.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.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.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.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: i9.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i5.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.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i6.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.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: i3$1.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 }); }
|
132
|
+
}
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
|
134
|
+
type: Component,
|
135
|
+
args: [{ selector: 'axp-document-drive', standalone: true, imports: [
|
136
|
+
CommonModule,
|
137
|
+
RouterModule,
|
138
|
+
AXMenuModule,
|
139
|
+
AXButtonModule,
|
140
|
+
AXButtonGroupModule,
|
141
|
+
AXDropdownButtonModule,
|
142
|
+
AXDropdownModule,
|
143
|
+
AXTranslationModule,
|
144
|
+
AXDecoratorModule,
|
145
|
+
AXLoadingModule,
|
146
|
+
AXBreadcrumbsModule,
|
147
|
+
AXBadgeModule,
|
148
|
+
AXSearchBoxModule,
|
149
|
+
AXFormatModule,
|
150
|
+
AXFileModule,
|
151
|
+
AXPSimplePageLayout,
|
152
|
+
AXPThemeLayoutBlockComponent,
|
153
|
+
AXPThemeLayoutHeaderTemplateComponent,
|
154
|
+
AXPThemeLayoutActionsComponent,
|
155
|
+
AXPThemeLayoutPagePrimaryActionsComponent,
|
156
|
+
AXPThemeLayoutPageSecondaryActionsComponent,
|
157
|
+
AXPThemeLayoutToolbarComponent,
|
158
|
+
AXPThemeLayoutFooterComponent,
|
159
|
+
AXDateTimeModule,
|
160
|
+
AXMDocumentExplorerComponent,
|
161
|
+
], 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"] }]
|
162
|
+
}] });
|
163
|
+
|
164
|
+
export { AXMDocumentDriveComponent };
|
165
|
+
//# sourceMappingURL=acorex-modules-document-management-drive.component-Sz198sA6.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-document-management-drive.component-Sz198sA6.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/drive/drive.component.ts","../../../../libs/modules/document-management/src/lib/features/drive/drive.component.html"],"sourcesContent":["import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSimplePageLayout } from '@acorex/platform/themes/default';\n\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPFileTypeProviderService } from '@acorex/platform/common';\nimport {\n AXPLayoutThemeService,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutFooterComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutToolbarComponent,\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n OnInit,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXMDocumentExplorerComponent, AXPDocumentExplorerViewModel } from '../document-explorer';\nimport { AXMDocumentManagerService } from '../shared';\nimport { AXMDriveScope } from '../shared/document-manager.types';\n\n@Component({\n selector: 'axp-document-drive',\n templateUrl: './drive.component.html',\n styleUrls: ['./drive.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n AXMenuModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXFormatModule,\n AXFileModule,\n AXPSimplePageLayout,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutToolbarComponent,\n AXPThemeLayoutFooterComponent,\n AXDateTimeModule,\n AXMDocumentExplorerComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [AXPDocumentExplorerViewModel],\n})\nexport class AXMDocumentDriveComponent implements OnInit {\n protected readonly layout = inject(AXPLayoutThemeService);\n protected readonly rootConfig = RootConfig;\n private readonly fileTypeService = inject(AXPFileTypeProviderService);\n private readonly driveService = inject(AXMDocumentManagerService);\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n protected readonly router = inject(Router);\n protected readonly activatedRoute = inject(ActivatedRoute);\n protected readonly sessionService = inject(AXPSessionService);\n\n protected readonly filterItems = signal<Array<{ key: string; textKey: string; icon: string }>>([]);\n public selectedFilter = signal<string>('all');\n\n protected readonly sortItems = signal([\n { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },\n { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },\n { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },\n ]);\n\n protected documentExplorer = viewChild(AXMDocumentExplorerComponent);\n\n protected readonly selectedSort = computed(() => {\n const items = this.sortItems();\n return items.find((item) => item.key === this.vm.sortField()) || items[0];\n });\n\n #navigateEffect = effect(() => {\n const navigatingFolderId = this.vm.navigatingFolderId();\n if (navigatingFolderId) {\n this.handleNavigateToFolder(navigatingFolderId);\n }\n });\n\n #loadingEffect = effect(() => {\n const isLoading = this.vm.isLoading();\n untracked(() => {\n this.layout.setNavigationLoading(isLoading);\n });\n });\n\n async handleSearchChange(event: any) {\n console.log(event);\n\n const result = await this.driveService.searchNodes(event.value, AXMDriveScope.Platform);\n console.log(result);\n }\n\n async ngOnInit() {\n await this.loadFilterItems();\n await this.vm.initialize();\n // Subscribe to route changes\n this.activatedRoute.paramMap.subscribe(async (params) => {\n this.loadDrive();\n });\n }\n\n private async loadDrive() {\n const folderId = this.activatedRoute.snapshot.paramMap.get('id');\n if (folderId) {\n await this.vm.loadFolderContents(folderId);\n } else {\n const root = await this.driveService.getRoot(AXMDriveScope.Platform);\n if (root.result) {\n await this.router.navigate([`${this.sessionService.application?.name}/drive/my/${root.result.id}`], {\n replaceUrl: true,\n });\n }\n }\n }\n\n async loadFilterItems() {\n const types = await this.fileTypeService.items();\n const items = [\n { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },\n ...types.map((type) => ({\n key: type.name,\n textKey: `file-types.${type.name}`,\n icon: type.icon || 'fa-light fa-file',\n })),\n ];\n this.filterItems.set(items);\n }\n\n protected setFilter(key: string): void {\n this.selectedFilter.set(key);\n }\n\n protected getFilterIcon(): string {\n if (this.selectedFilter() === 'all') {\n return 'fa-light fa-folder-closed';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.icon || 'fa-light fa-file';\n }\n\n protected getFilterText(): string {\n if (this.selectedFilter() === 'all') {\n return 'file-types.all';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.textKey || 'file-types.all';\n }\n\n protected handleNavigateToFolder(folderId: string) {\n this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);\n }\n}\n","<!-- 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"],"names":["i4","i8"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-document-management-index--I8MGeDs.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
import * as i2$1 from '@acorex/components/button';
|
2
|
+
import { AXButtonModule } from '@acorex/components/button';
|
3
|
+
import { AXColorBoxModule } from '@acorex/components/color-box';
|
4
|
+
import { AXAutoFocusDirective } from '@acorex/components/common';
|
5
|
+
import * as i5 from '@acorex/components/decorators';
|
6
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
7
|
+
import * as i7 from '@acorex/components/form';
|
8
|
+
import { AXFormModule } from '@acorex/components/form';
|
9
|
+
import * as i5$1 from '@acorex/components/label';
|
10
|
+
import { AXLabelModule } from '@acorex/components/label';
|
11
|
+
import * as i10 from '@acorex/components/loading';
|
12
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
13
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
14
|
+
import * as i4 from '@acorex/components/text-box';
|
15
|
+
import { AXTextBoxModule } from '@acorex/components/text-box';
|
16
|
+
import * as i9 from '@acorex/core/translation';
|
17
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
18
|
+
import * as i1 from '@angular/common';
|
19
|
+
import { CommonModule } from '@angular/common';
|
20
|
+
import * as i0 from '@angular/core';
|
21
|
+
import { inject, model, Component } from '@angular/core';
|
22
|
+
import * as i2 from '@angular/forms';
|
23
|
+
import { FormsModule } from '@angular/forms';
|
24
|
+
import { A as AXMDocumentManagerService } from './acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs';
|
25
|
+
|
26
|
+
class AXMRenameNodeDialog extends AXBasePageComponent {
|
27
|
+
constructor() {
|
28
|
+
super(...arguments);
|
29
|
+
this.driveService = inject(AXMDocumentManagerService);
|
30
|
+
this.name = model('');
|
31
|
+
}
|
32
|
+
ngOnInit() {
|
33
|
+
super.ngOnInit();
|
34
|
+
this.name.set(this.node.name);
|
35
|
+
}
|
36
|
+
async handleSubmitButton(form) {
|
37
|
+
this.isLoading = true;
|
38
|
+
const validated = await form.validate();
|
39
|
+
if (validated.result) {
|
40
|
+
try {
|
41
|
+
debugger;
|
42
|
+
if (this.node.type == 'folder') {
|
43
|
+
const folder = await this.driveService.updateFolder(this.node.id, {
|
44
|
+
name: this.name(),
|
45
|
+
});
|
46
|
+
this.close({
|
47
|
+
result: true,
|
48
|
+
folder,
|
49
|
+
});
|
50
|
+
}
|
51
|
+
else {
|
52
|
+
const file = await this.driveService.updateFile(this.node.id, {
|
53
|
+
name: this.name(),
|
54
|
+
});
|
55
|
+
this.close({
|
56
|
+
result: true,
|
57
|
+
file,
|
58
|
+
});
|
59
|
+
}
|
60
|
+
}
|
61
|
+
catch (error) {
|
62
|
+
console.error('Error updating node:', error);
|
63
|
+
}
|
64
|
+
finally {
|
65
|
+
this.isLoading = false;
|
66
|
+
}
|
67
|
+
}
|
68
|
+
else {
|
69
|
+
this.isLoading = false;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
onCancel() {
|
73
|
+
this.close({
|
74
|
+
result: false,
|
75
|
+
});
|
76
|
+
}
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMRenameNodeDialog, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
78
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMRenameNodeDialog, isStandalone: true, selector: "ax-rename-node-dialog", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { name: "nameChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
79
|
+
//
|
80
|
+
AXDecoratorModule }, { kind: "component", type: i5.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: AXTextBoxModule }, { kind: "component", type: i4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { 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: "ngmodule", type: AXFormModule }, { kind: "component", type: i7.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i7.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "directive", type: i7.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXColorBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i9.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i10.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "directive", type: AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }] }); }
|
81
|
+
}
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMRenameNodeDialog, decorators: [{
|
83
|
+
type: Component,
|
84
|
+
args: [{ selector: 'ax-rename-node-dialog', standalone: true, imports: [
|
85
|
+
CommonModule,
|
86
|
+
FormsModule,
|
87
|
+
//
|
88
|
+
AXDecoratorModule,
|
89
|
+
AXTextBoxModule,
|
90
|
+
AXLabelModule,
|
91
|
+
AXButtonModule,
|
92
|
+
AXFormModule,
|
93
|
+
AXColorBoxModule,
|
94
|
+
AXTranslationModule,
|
95
|
+
AXLoadingModule,
|
96
|
+
AXAutoFocusDirective,
|
97
|
+
], template: "<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>" }]
|
98
|
+
}] });
|
99
|
+
|
100
|
+
export { AXMRenameNodeDialog };
|
101
|
+
//# sourceMappingURL=acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map
|
package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXAutoFocusDirective } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDocumentManagerService } from '../../../shared/document-manager.service';\nimport { AXMDocumentExplorerNode } from '../../../shared/document-manager.types';\n@Component({\n selector: 'ax-rename-node-dialog',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n //\n AXDecoratorModule,\n AXTextBoxModule,\n AXLabelModule,\n AXButtonModule,\n AXFormModule,\n AXColorBoxModule,\n AXTranslationModule,\n AXLoadingModule,\n AXAutoFocusDirective,\n ],\n templateUrl: './rename-node-dialog.component.html',\n})\nexport class AXMRenameNodeDialog extends AXBasePageComponent {\n private driveService = inject(AXMDocumentManagerService);\n\n node: AXMDocumentExplorerNode;\n\n protected name = model<string>('');\n\n protected override ngOnInit(): void {\n super.ngOnInit();\n this.name.set(this.node.name);\n }\n\n async handleSubmitButton(form: AXFormComponent) {\n this.isLoading = true;\n const validated = await form.validate();\n if (validated.result) {\n try {\n debugger;\n if (this.node.type == 'folder') {\n const folder = await this.driveService.updateFolder(this.node.id, {\n name: this.name(),\n });\n this.close({\n result: true,\n folder,\n });\n } else {\n const file = await this.driveService.updateFile(this.node.id, {\n name: this.name(),\n });\n this.close({\n result: true,\n file,\n });\n }\n } catch (error) {\n console.error('Error updating node:', error);\n } finally {\n this.isLoading = false;\n }\n } else {\n this.isLoading = false;\n }\n }\n\n onCancel() {\n this.close({\n result: false,\n });\n }\n}\n","<div class=\"ax-p-4\">\n <ax-form #form>\n <div class=\"ax-flex ax-flex-col ax-gap-4\">\n <ax-form-field>\n <ax-label>\n {{ 'name' | translate | async }}\n </ax-label>\n <ax-text-box [(ngModel)]=\"name\" class=\"ax-input ax-w-full\" [axAutoFocus]=\"true\">\n <ax-validation-rule rule=\"required\"></ax-validation-rule>\n </ax-text-box>\n </ax-form-field>\n <div class=\"ax-flex ax-justify-end ax-gap-2\"></div>\n </div>\n </ax-form>\n</div>\n<ax-footer>\n <ax-suffix>\n <ax-button (onClick)=\"onCancel()\" [text]=\"'cancel' | translate | async\"></ax-button>\n <ax-button look=\"solid\" color=\"primary\" (onClick)=\"handleSubmitButton(form)\" [text]=\"'save' | translate | async\">\n @if(isLoading) {\n <ax-loading> </ax-loading>\n }\n </ax-button>\n </ax-suffix>\n</ax-footer>"],"names":["i3","i6","i8"],"mappings":"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"}
|