@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.
Files changed (74) hide show
  1. package/common/README.md +3 -0
  2. package/common/index.d.ts +6 -0
  3. package/common/lib/common.module.d.ts +6 -0
  4. package/common/lib/const.d.ts +25 -0
  5. package/common/lib/entities/dashboard/dashboard.entity.d.ts +3 -0
  6. package/common/lib/entities/dashboard/dashboard.service.d.ts +10 -0
  7. package/common/lib/entities/dashboard/dashboard.types.d.ts +8 -0
  8. package/common/lib/entities/dashboard/index.d.ts +3 -0
  9. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.entity.d.ts +3 -0
  10. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.service.d.ts +10 -0
  11. package/common/lib/entities/dashboard-widget-data/dashboard-widget-data.types.d.ts +9 -0
  12. package/common/lib/entities/dashboard-widget-data/index.d.ts +3 -0
  13. package/common/lib/entities/index.d.ts +2 -0
  14. package/common/lib/entity.provider.d.ts +10 -0
  15. package/common/lib/features/home/dashboard-home.d.ts +5 -0
  16. package/common/lib/features/home/index.d.ts +1 -0
  17. package/common/lib/menu.provider.d.ts +5 -0
  18. package/common/lib/permission.provider.d.ts +4 -0
  19. package/common/lib/search-command.provider.d.ts +4 -0
  20. package/common/lib/setting.provider.d.ts +4 -0
  21. package/document-management/lib/entities/document/document.service.d.ts +7 -0
  22. package/document-management/lib/entities/folder/folder.service.d.ts +7 -0
  23. package/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +14 -0
  24. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +12 -9
  25. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +2 -2
  26. package/document-management/lib/features/drive/drive.component.d.ts +3 -2
  27. package/document-management/lib/features/shared/document-manager.service.d.ts +80 -1
  28. package/document-management/lib/features/shared/document-manager.types.d.ts +1 -1
  29. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +6 -0
  30. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +6 -0
  31. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-filter.component.d.ts +6 -0
  32. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +6 -0
  33. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +6 -0
  34. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget.config.d.ts +7 -0
  35. package/document-management/lib/features/widgets/document-attachment/index.d.ts +6 -0
  36. package/document-management/lib/features/widgets/index.d.ts +1 -0
  37. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs → acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs} +8 -8
  38. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CZ_nTBkL.mjs.map → acorex-modules-auth-acorex-modules-auth-DTje3YIv.mjs.map} +1 -1
  39. package/fesm2022/{acorex-modules-auth-app-chooser.component-CGSygSjS.mjs → acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs} +2 -2
  40. package/fesm2022/{acorex-modules-auth-app-chooser.component-CGSygSjS.mjs.map → acorex-modules-auth-app-chooser.component-CZxX5-T_.mjs.map} +1 -1
  41. package/fesm2022/{acorex-modules-auth-login.module-B1sF3B_O.mjs → acorex-modules-auth-login.module-B9P2XpfQ.mjs} +4 -4
  42. package/fesm2022/{acorex-modules-auth-login.module-B1sF3B_O.mjs.map → acorex-modules-auth-login.module-B9P2XpfQ.mjs.map} +1 -1
  43. package/fesm2022/{acorex-modules-auth-master.layout-CK4nyS8D.mjs → acorex-modules-auth-master.layout-BYC0FYq1.mjs} +2 -2
  44. package/fesm2022/{acorex-modules-auth-master.layout-CK4nyS8D.mjs.map → acorex-modules-auth-master.layout-BYC0FYq1.mjs.map} +1 -1
  45. package/fesm2022/{acorex-modules-auth-password.component-DC_zi8bV.mjs → acorex-modules-auth-password.component-C7Yp-ioT.mjs} +2 -2
  46. package/fesm2022/{acorex-modules-auth-password.component-DC_zi8bV.mjs.map → acorex-modules-auth-password.component-C7Yp-ioT.mjs.map} +1 -1
  47. package/fesm2022/{acorex-modules-auth-password.component-DqvmIMDR.mjs → acorex-modules-auth-password.component-DzrYH4yM.mjs} +3 -3
  48. package/fesm2022/acorex-modules-auth-password.component-DzrYH4yM.mjs.map +1 -0
  49. package/fesm2022/{acorex-modules-auth-routes-DwHgPrDP.mjs → acorex-modules-auth-routes-Bu-xB4O6.mjs} +2 -2
  50. package/fesm2022/{acorex-modules-auth-routes-DwHgPrDP.mjs.map → acorex-modules-auth-routes-Bu-xB4O6.mjs.map} +1 -1
  51. package/fesm2022/{acorex-modules-auth-two-factor.module-BatKQRdJ.mjs → acorex-modules-auth-two-factor.module-YRh6_YcG.mjs} +2 -2
  52. package/fesm2022/{acorex-modules-auth-two-factor.module-BatKQRdJ.mjs.map → acorex-modules-auth-two-factor.module-YRh6_YcG.mjs.map} +1 -1
  53. package/fesm2022/acorex-modules-auth.mjs +1 -1
  54. package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs +14 -0
  55. package/fesm2022/acorex-modules-common-index-zaFxpV8u.mjs.map +1 -0
  56. package/fesm2022/acorex-modules-common.mjs +1095 -0
  57. package/fesm2022/acorex-modules-common.mjs.map +1 -0
  58. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs +4092 -0
  59. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs.map +1 -0
  60. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs +92 -0
  61. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-BnRaCq_Q.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs +165 -0
  63. package/fesm2022/acorex-modules-document-management-drive.component-Sz198sA6.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs +2 -0
  65. package/fesm2022/acorex-modules-document-management-index--I8MGeDs.mjs.map +1 -0
  66. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs +101 -0
  67. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-EBf1XqU8.mjs.map +1 -0
  68. package/fesm2022/acorex-modules-document-management.mjs +1 -3093
  69. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  70. package/package.json +5 -1
  71. package/document-management/lib/features/drive/index.d.ts +0 -3
  72. package/fesm2022/acorex-modules-auth-password.component-DqvmIMDR.mjs.map +0 -1
  73. package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs +0 -951
  74. package/fesm2022/acorex-modules-document-management-drive.component-bjnFFaLS.mjs.map +0 -1
@@ -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
@@ -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,2 @@
1
+ import './acorex-modules-document-management-acorex-modules-document-management-C9ZCejjs.mjs';
2
+ //# sourceMappingURL=acorex-modules-document-management-index--I8MGeDs.mjs.map
@@ -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
@@ -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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"}