@acorex/modules 20.7.7 → 20.7.9

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 (68) hide show
  1. package/auth/index.d.ts +16 -2
  2. package/document-management/index.d.ts +33 -10
  3. package/fesm2022/acorex-modules-application-management.mjs +16 -1
  4. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  5. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CyabqFR8.mjs → acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs} +32 -13
  6. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs.map +1 -0
  7. package/fesm2022/{acorex-modules-auth-app-chooser.component-CizgE3Bb.mjs → acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-auth-app-chooser.component-CizgE3Bb.mjs.map → acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-login.module-DRVqUojm.mjs → acorex-modules-auth-login.module-C7Rt6tLk.mjs} +6 -4
  10. package/fesm2022/acorex-modules-auth-login.module-C7Rt6tLk.mjs.map +1 -0
  11. package/fesm2022/{acorex-modules-auth-master.layout-C1zCbrQh.mjs → acorex-modules-auth-master.layout-CgD5kk65.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-auth-master.layout-C1zCbrQh.mjs.map → acorex-modules-auth-master.layout-CgD5kk65.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DmNV6zL4.mjs → acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-auth-oauth-callback.component-DmNV6zL4.mjs.map → acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-password.component-BmTCzp3t.mjs → acorex-modules-auth-password.component-C6TCAUm4.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-auth-password.component-BmTCzp3t.mjs.map → acorex-modules-auth-password.component-C6TCAUm4.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-auth-password.component-DSysOOu9.mjs → acorex-modules-auth-password.component-DmohsIxt.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-auth-password.component-DSysOOu9.mjs.map → acorex-modules-auth-password.component-DmohsIxt.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-routes-oYfOJjLO.mjs → acorex-modules-auth-routes-C3162bwa.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-routes-oYfOJjLO.mjs.map → acorex-modules-auth-routes-C3162bwa.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DqrZiwp6.mjs → acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-DqrZiwp6.mjs.map → acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-auth-two-factor.module-Cc3x-76V.mjs → acorex-modules-auth-two-factor.module-B2nPzX-3.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-auth-two-factor.module-Cc3x-76V.mjs.map → acorex-modules-auth-two-factor.module-B2nPzX-3.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-auth-user-sessions.component-CiGEYKgb.mjs → acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-auth-user-sessions.component-CiGEYKgb.mjs.map → acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs.map} +1 -1
  27. package/fesm2022/acorex-modules-auth.mjs +1 -1
  28. package/fesm2022/acorex-modules-content-management.mjs +3 -3
  29. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-dashboard-management.mjs +24 -23
  31. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  32. package/fesm2022/acorex-modules-data-management.mjs +68 -61
  33. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  34. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CJRrn2XH.mjs → acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs} +4 -4
  35. package/fesm2022/{acorex-modules-document-management-drive-choose.component-CJRrn2XH.mjs.map → acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs.map} +1 -1
  36. package/fesm2022/acorex-modules-document-management.mjs +363 -231
  37. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  38. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-DGgHWrL0.mjs → acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs} +8 -4
  39. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-DGgHWrL0.mjs.map → acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CAknGKEK.mjs → acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs} +2 -2
  41. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-CAknGKEK.mjs.map → acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs.map} +1 -1
  42. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  43. package/fesm2022/acorex-modules-human-capital-management.mjs +41 -26
  44. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  45. package/fesm2022/{acorex-modules-organization-management-org-chart.page-C85uluWf.mjs → acorex-modules-organization-management-org-chart.page-Ca_aJDbu.mjs} +19 -13
  46. package/fesm2022/acorex-modules-organization-management-org-chart.page-Ca_aJDbu.mjs.map +1 -0
  47. package/fesm2022/acorex-modules-organization-management.mjs +2 -2
  48. package/fesm2022/{acorex-modules-person-management-person.entity-BtaGNj8n.mjs → acorex-modules-person-management-person.entity-CaEVw1mL.mjs} +2 -2
  49. package/fesm2022/acorex-modules-person-management-person.entity-CaEVw1mL.mjs.map +1 -0
  50. package/fesm2022/acorex-modules-person-management.mjs +1 -1
  51. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DEx13GSy.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs} +1188 -341
  52. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs +519 -0
  54. package/fesm2022/acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  56. package/fesm2022/acorex-modules-report-management.mjs +27 -6
  57. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  58. package/fesm2022/acorex-modules-workflow-management.mjs +15 -9
  59. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  60. package/package.json +2 -2
  61. package/platform-management/index.d.ts +12 -1
  62. package/fesm2022/acorex-modules-auth-acorex-modules-auth-CyabqFR8.mjs.map +0 -1
  63. package/fesm2022/acorex-modules-auth-login.module-DRVqUojm.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-organization-management-org-chart.page-C85uluWf.mjs.map +0 -1
  65. package/fesm2022/acorex-modules-person-management-person.entity-BtaGNj8n.mjs.map +0 -1
  66. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DEx13GSy.mjs.map +0 -1
  67. package/fesm2022/acorex-modules-platform-management-menu-list.component-DLg61Nf8.mjs +0 -853
  68. package/fesm2022/acorex-modules-platform-management-menu-list.component-DLg61Nf8.mjs.map +0 -1
@@ -3,8 +3,8 @@ import { AXPEntityService, AXMEntityCrudServiceImpl, entityMasterCrudActions, en
3
3
  import { AXPHookService, AXPPlatformScope, AXPDataGenerator, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXPDeviceService, resolvePlatformScopeKey, resolvePlatformScopeName } from '@acorex/platform/core';
4
4
  import { AXPSearchCommandProvider, createAllQueryView, createQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPFilterOperatorMiddlewareService, AXPSettingsService, AXPLockService, UploadFromComputerActionProvider, AXP_FILE_ACTION_PROVIDER, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
5
5
  import * as i0 from '@angular/core';
6
- import { Injectable, inject, Injector, NgModule, ChangeDetectionStrategy, Component, signal, viewChild, computed, input, effect, ViewEncapsulation, untracked, HostListener } from '@angular/core';
7
- import * as i3$3 from '@acorex/core/translation';
6
+ import { Injectable, inject, Injector, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, input, effect, ViewEncapsulation, untracked, HostListener } from '@angular/core';
7
+ import * as i3$2 from '@acorex/core/translation';
8
8
  import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
9
9
  import { firstValueFrom } from 'rxjs';
10
10
  import * as i6 from '@acorex/platform/layout/widget-core';
@@ -14,7 +14,7 @@ import { set, castArray, get as get$1 } from 'lodash-es';
14
14
  import { AXDataSource } from '@acorex/cdk/common';
15
15
  import * as i7 from '@acorex/components/collapse';
16
16
  import { AXCollapseModule } from '@acorex/components/collapse';
17
- import * as i1$1 from '@acorex/components/decorators';
17
+ import * as i4$1 from '@acorex/components/decorators';
18
18
  import { AXDecoratorModule } from '@acorex/components/decorators';
19
19
  import * as i3 from '@acorex/components/form';
20
20
  import { AXFormModule } from '@acorex/components/form';
@@ -27,25 +27,25 @@ import { FormsModule } from '@angular/forms';
27
27
  import get from 'lodash-es/get';
28
28
  import set$1 from 'lodash-es/set';
29
29
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/layout/widgets';
30
- import * as i3$1 from '@acorex/components/media-viewer';
31
- import { AXMediaViewerContainerComponent, AXMediaViewerModule } from '@acorex/components/media-viewer';
32
- import * as i1$2 from '@acorex/components/button';
30
+ import * as i2$2 from '@acorex/components/media-viewer';
31
+ import { AXMediaViewerModule } from '@acorex/components/media-viewer';
32
+ import * as i1$1 from '@acorex/components/button';
33
33
  import { AXButtonModule } from '@acorex/components/button';
34
34
  import { AXBasePageComponent } from '@acorex/components/page';
35
35
  import { AXLoadingModule } from '@acorex/components/loading';
36
36
  import * as i2$1 from '@acorex/components/menu';
37
37
  import { AXMenuModule } from '@acorex/components/menu';
38
38
  import { AXDateTimeModule } from '@acorex/core/date-time';
39
- import * as i2$2 from '@acorex/core/format';
39
+ import * as i2$3 from '@acorex/core/format';
40
40
  import { AXFormatModule } from '@acorex/core/format';
41
41
  import { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
42
42
  import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
43
- import * as i1$3 from '@angular/common';
43
+ import * as i1$2 from '@angular/common';
44
44
  import { CommonModule } from '@angular/common';
45
45
  import { AXDialogService } from '@acorex/components/dialog';
46
46
  import { AXPopupService } from '@acorex/components/popup';
47
47
  import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
48
- import * as i3$2 from '@acorex/platform/workflow';
48
+ import * as i3$1 from '@acorex/platform/workflow';
49
49
  import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
50
50
  import { AXFileService, AXFileModule } from '@acorex/core/file';
51
51
  import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
@@ -53,7 +53,7 @@ import { AXUploaderService } from '@acorex/cdk/uploader';
53
53
  import { AXBadgeModule } from '@acorex/components/badge';
54
54
  import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
55
55
  import { AXButtonGroupModule } from '@acorex/components/button-group';
56
- import * as i2$3 from '@acorex/components/dropdown';
56
+ import * as i2$4 from '@acorex/components/dropdown';
57
57
  import { AXDropdownModule } from '@acorex/components/dropdown';
58
58
  import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
59
59
  import * as i5 from '@acorex/components/search-box';
@@ -1239,16 +1239,6 @@ async function documentTypeFactory(injector) {
1239
1239
  },
1240
1240
  },
1241
1241
  },
1242
- // {
1243
- // name: 'meta',
1244
- // layout: {
1245
- // positions: {
1246
- // lg: {
1247
- // colSpan: 12,
1248
- // },
1249
- // },
1250
- // },
1251
- // },
1252
1242
  {
1253
1243
  name: 'type',
1254
1244
  layout: {
@@ -1265,7 +1255,7 @@ async function documentTypeFactory(injector) {
1265
1255
  title: '{{title}}',
1266
1256
  sections: [
1267
1257
  {
1268
- id: 'section',
1258
+ id: 'basic-info',
1269
1259
  layout: {
1270
1260
  positions: {
1271
1261
  lg: {
@@ -3798,7 +3788,7 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPValueWidgetComponent {
3798
3788
  </ax-collapse-group>
3799
3789
  }
3800
3790
  </axp-widgets-container>
3801
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { 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: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i7.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3791
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { 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: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i7.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3802
3792
  }
3803
3793
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFileTypeExtensionWidgetEditComponent, decorators: [{
3804
3794
  type: Component,
@@ -4009,29 +3999,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4009
3999
  }]
4010
4000
  }] });
4011
4001
 
4012
- class AXMFileViewerPopupComponent extends AXBasePageComponent {
4002
+ //#region ---- Imports ----
4003
+ //#endregion
4004
+ /**
4005
+ * File gallery popup component that displays files using the gallery widget.
4006
+ * This component replaces the old file-viewer-popup and uses the same
4007
+ * gallery widget pattern as test8.
4008
+ */
4009
+ class AXMFileGalleryPopupComponent extends AXBasePageComponent {
4013
4010
  constructor() {
4014
4011
  super(...arguments);
4015
- this.index = 0;
4016
- this.mediaViewer = viewChild(AXMediaViewerContainerComponent, ...(ngDevMode ? [{ debugName: "mediaViewer" }] : []));
4017
- }
4018
- ngAfterViewInit() {
4019
- this.mediaViewer()?.goToIndex(this.index);
4012
+ //#region ---- Class Properties ----
4013
+ /** File list items received from popup data */
4014
+ this.files = signal([], ...(ngDevMode ? [{ debugName: "files" }] : []));
4015
+ /** Starting index for the media viewer */
4016
+ this.startIndex = 0;
4017
+ /** Widget context for the gallery */
4018
+ this.context = signal({}, ...(ngDevMode ? [{ debugName: "context" }] : []));
4019
+ //#endregion
4020
+ //#region ---- Computed Properties ----
4021
+ /**
4022
+ * Gallery widget node configuration
4023
+ */
4024
+ this.galleryNode = computed(() => ({
4025
+ type: 'gallery',
4026
+ path: 'galleryFiles',
4027
+ defaultValue: this.files(),
4028
+ options: {
4029
+ thumbnail: true,
4030
+ header: true,
4031
+ fileInfo: true,
4032
+ fullScreenButton: true,
4033
+ allowUpload: false,
4034
+ height: '100%',
4035
+ },
4036
+ }), ...(ngDevMode ? [{ debugName: "galleryNode" }] : []));
4020
4037
  }
4038
+ //#endregion
4039
+ //#region ---- UI Handlers ----
4040
+ /**
4041
+ * Close the popup
4042
+ */
4021
4043
  onClose() {
4022
4044
  this.close();
4023
4045
  }
4024
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFileViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4025
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", type: AXMFileViewerPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "mediaViewer", first: true, predicate: AXMediaViewerContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <ax-media-viewer-container [thumbnail]=\"true\" #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n", styles: ["ax-media-viewer-container{--ax-sys-border-radius:0 }\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: i1$1.AXDecoratorFullScreenButtonComponent, selector: "ax-fullscreen-button", inputs: ["element", "isActive"], outputs: ["elementChange", "isActiveChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXMediaViewerModule }, { kind: "component", type: i3$1.AXMediaViewerContainerComponent, selector: "ax-media-viewer-container", inputs: ["dataArray", "thumbnail", "pagination"] }, { kind: "component", type: i3$1.AXFileInfoComponent, selector: "ax-file-info" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4046
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFileGalleryPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4047
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: AXMFileGalleryPopupComponent, isStandalone: true, selector: "axm-file-gallery-popup", usesInheritance: true, ngImport: i0, template: `
4048
+ <ax-content>
4049
+ <axp-widgets-container class="ax-block ax-h-full" [context]="context()">
4050
+ <ng-container axp-widget-renderer [node]="galleryNode()" [mode]="'edit'"></ng-container>
4051
+ </axp-widgets-container>
4052
+ </ax-content>
4053
+ <ax-footer>
4054
+ <ax-suffix>
4055
+ <ax-button [text]="'close'" (click)="onClose()" />
4056
+ </ax-suffix>
4057
+ </ax-footer>
4058
+ `, isInline: true, styles: [":host{display:block;height:100%}ax-content{height:calc(100% - 60px)}\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4026
4059
  }
4027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFileViewerPopupComponent, decorators: [{
4060
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFileGalleryPopupComponent, decorators: [{
4028
4061
  type: Component,
4029
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXButtonModule, AXMediaViewerModule], template: "<ax-content>\n <ax-media-viewer-container [thumbnail]=\"true\" #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n", styles: ["ax-media-viewer-container{--ax-sys-border-radius:0 }\n"] }]
4030
- }], propDecorators: { mediaViewer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMediaViewerContainerComponent), { isSignal: true }] }] } });
4062
+ args: [{ selector: 'axm-file-gallery-popup', template: `
4063
+ <ax-content>
4064
+ <axp-widgets-container class="ax-block ax-h-full" [context]="context()">
4065
+ <ng-container axp-widget-renderer [node]="galleryNode()" [mode]="'edit'"></ng-container>
4066
+ </axp-widgets-container>
4067
+ </ax-content>
4068
+ <ax-footer>
4069
+ <ax-suffix>
4070
+ <ax-button [text]="'close'" (click)="onClose()" />
4071
+ </ax-suffix>
4072
+ </ax-footer>
4073
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXDecoratorModule, AXButtonModule, AXPWidgetCoreModule], styles: [":host{display:block;height:100%}ax-content{height:calc(100% - 60px)}\n"] }]
4074
+ }] });
4031
4075
 
4032
- var fileViewerPopup_component = /*#__PURE__*/Object.freeze({
4076
+ var fileGalleryPopup_component = /*#__PURE__*/Object.freeze({
4033
4077
  __proto__: null,
4034
- AXMFileViewerPopupComponent: AXMFileViewerPopupComponent
4078
+ AXMFileGalleryPopupComponent: AXMFileGalleryPopupComponent
4035
4079
  });
4036
4080
 
4037
4081
  class AXPDocumentManagementService {
@@ -4061,7 +4105,7 @@ class AXMDocumentDialogService {
4061
4105
  }
4062
4106
  // Initialize files array context with default values
4063
4107
  initialContext['files'] = fileList.map(item => ({ file: [item] }));
4064
- const dialogRef = await this.layoutBuilder
4108
+ const result = await this.layoutBuilder
4065
4109
  .create()
4066
4110
  .dialog(dialog => {
4067
4111
  dialog
@@ -4093,55 +4137,65 @@ class AXMDocumentDialogService {
4093
4137
  .setActions(actions => {
4094
4138
  actions.cancel('@general:actions.cancel.title');
4095
4139
  actions.submit('@general:actions.submit.title');
4096
- }).setCloseButton(true);
4140
+ })
4141
+ .setCloseButton(true)
4142
+ .onAction(async (dialogRef) => {
4143
+ const action = dialogRef.action();
4144
+ if (action === 'cancel') {
4145
+ return { data: { cancel: true } };
4146
+ }
4147
+ const ctx = dialogRef.context();
4148
+ if (documentId) {
4149
+ dialogRef.setLoading(true);
4150
+ try {
4151
+ const updatePayload = { version: (version ?? 0) + 1 };
4152
+ if (showMeta) {
4153
+ updatePayload.metaDataForm = ctx?.['file-0']?.['metaDataForm'];
4154
+ }
4155
+ await this.documentService.updateOne(documentId, updatePayload);
4156
+ return {
4157
+ data: {
4158
+ cancel: false,
4159
+ fileIds: [documentId],
4160
+ },
4161
+ };
4162
+ }
4163
+ finally {
4164
+ dialogRef.setLoading(false);
4165
+ }
4166
+ }
4167
+ dialogRef.setLoading(true);
4168
+ try {
4169
+ const promises = (ctx?.['files']).map(async (item, index) => {
4170
+ const f = fileList[index];
4171
+ const newId = await this.documentService.insertOne({
4172
+ fileId: f,
4173
+ name: f?.name,
4174
+ title: f?.name,
4175
+ documentType,
4176
+ parentId,
4177
+ size: f?.size || 0,
4178
+ status: 'Draft',
4179
+ version: (version ?? 0) + 1,
4180
+ metaDataForm: ctx?.[`file-${index}`]?.['metaDataForm'],
4181
+ });
4182
+ return newId;
4183
+ });
4184
+ const fileIds = await Promise.all(promises);
4185
+ return {
4186
+ data: {
4187
+ cancel: false,
4188
+ fileIds,
4189
+ },
4190
+ };
4191
+ }
4192
+ finally {
4193
+ dialogRef.setLoading(false);
4194
+ }
4195
+ });
4097
4196
  })
4098
4197
  .show();
4099
- const action = dialogRef.action();
4100
- if (action === 'cancel') {
4101
- dialogRef.close();
4102
- return { data: { cancel: true } };
4103
- }
4104
- const ctx = dialogRef.context();
4105
- if (documentId) {
4106
- dialogRef.setLoading(true);
4107
- const updatePayload = { version: (version ?? 0) + 1 };
4108
- if (showMeta) {
4109
- updatePayload.metaDataForm = ctx?.['file-0']?.['metaDataForm'];
4110
- }
4111
- await this.documentService.updateOne(documentId, updatePayload);
4112
- dialogRef.close();
4113
- return {
4114
- data: {
4115
- cancel: false,
4116
- fileIds: [documentId],
4117
- },
4118
- };
4119
- }
4120
- const promises = (ctx?.['files']).map(async (item, index) => {
4121
- // Use original selected file item to preserve blob/source for storage
4122
- const f = fileList[index];
4123
- const newId = await this.documentService.insertOne({
4124
- fileId: f,
4125
- name: f?.name,
4126
- title: f?.name,
4127
- documentType,
4128
- parentId,
4129
- size: f?.size || 0,
4130
- status: 'Draft',
4131
- version: (version ?? 0) + 1,
4132
- metaDataForm: ctx?.[`file-${index}`]?.['metaDataForm'],
4133
- });
4134
- return newId;
4135
- });
4136
- dialogRef.setLoading(true);
4137
- const fileIds = await Promise.all(promises);
4138
- dialogRef.close();
4139
- return {
4140
- data: {
4141
- cancel: false,
4142
- fileIds,
4143
- },
4144
- };
4198
+ return result;
4145
4199
  }
4146
4200
  async openAttachmentDialogWithoutSave(title, data) {
4147
4201
  const { documentType, files, parentId, metaData, documentId, showMeta = true } = data ?? {};
@@ -4156,7 +4210,7 @@ class AXMDocumentDialogService {
4156
4210
  }
4157
4211
  // Initialize files array context with default values
4158
4212
  initialContext['files'] = fileList.map(item => ({ file: [item] }));
4159
- const dialogRef = await this.layoutBuilder
4213
+ const result = await this.layoutBuilder
4160
4214
  .create()
4161
4215
  .dialog(dialog => {
4162
4216
  dialog
@@ -4187,34 +4241,35 @@ class AXMDocumentDialogService {
4187
4241
  })
4188
4242
  .setActions(actions => {
4189
4243
  actions.cancel('@general:actions.cancel.title').submit('@general:actions.submit.title');
4244
+ })
4245
+ .onAction(async (dialogRef) => {
4246
+ const action = dialogRef.action();
4247
+ if (action === 'cancel') {
4248
+ return {
4249
+ data: {
4250
+ cancel: true,
4251
+ },
4252
+ };
4253
+ }
4254
+ const ctx = dialogRef.context();
4255
+ return {
4256
+ data: {
4257
+ cancel: false,
4258
+ files: (ctx?.['files']).map((item, index) => ({
4259
+ ...item,
4260
+ ...(showMeta ? { metaDataForm: ctx?.[`file-${index}`]?.['metaDataForm'] } : {}),
4261
+ })),
4262
+ },
4263
+ };
4190
4264
  });
4191
4265
  })
4192
4266
  .show();
4193
- const action = dialogRef.action();
4194
- if (action === 'cancel') {
4195
- dialogRef.close();
4196
- return {
4197
- data: {
4198
- cancel: true,
4199
- },
4200
- };
4201
- }
4202
- const ctx = dialogRef.context();
4203
- dialogRef.close();
4204
- return {
4205
- data: {
4206
- cancel: false,
4207
- files: (ctx?.['files']).map((item, index) => ({
4208
- ...item,
4209
- ...(showMeta ? { metaDataForm: ctx?.[`file-${index}`]?.['metaDataForm'] } : {}),
4210
- })),
4211
- },
4212
- };
4267
+ return result;
4213
4268
  }
4214
4269
  async chooseDocumentType() {
4215
4270
  const res = await this.documentTypeService.query({ skip: 0, take: 100 });
4216
4271
  const items = (res?.items ?? []).map((x) => ({ value: x.id, text: x.title }));
4217
- const ref = await this.layoutBuilder
4272
+ const result = await this.layoutBuilder
4218
4273
  .create()
4219
4274
  .dialog(dialog => {
4220
4275
  dialog
@@ -4230,16 +4285,18 @@ class AXMDocumentDialogService {
4230
4285
  })
4231
4286
  .setActions(actions => {
4232
4287
  actions.cancel('@general:actions.cancel.title').submit('@general:actions.submit.title');
4288
+ })
4289
+ .onAction(async (dialogRef) => {
4290
+ const action = dialogRef.action();
4291
+ if (action === 'cancel') {
4292
+ return { cancelled: true };
4293
+ }
4294
+ const ctx = dialogRef.context();
4295
+ return { cancelled: false, documentTypeId: ctx?.documentTypeId };
4233
4296
  });
4234
4297
  })
4235
4298
  .show();
4236
- const action = ref.action();
4237
- if (action === 'cancel') {
4238
- ref.close();
4239
- return { cancelled: true };
4240
- }
4241
- const ctx = ref.context();
4242
- return { cancelled: false, documentTypeId: ctx?.documentTypeId };
4299
+ return result;
4243
4300
  }
4244
4301
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4245
4302
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentDialogService, providedIn: 'root' }); }
@@ -5017,7 +5074,7 @@ class AXMDocumentManagerService {
5017
5074
  * Moves a node to another location
5018
5075
  */
5019
5076
  async moveTo(options) {
5020
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CJRrn2XH.mjs')).AXMDocumentDriveChooseComponent;
5077
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs')).AXMDocumentDriveChooseComponent;
5021
5078
  const popup = await this.popupService.open(comp, {
5022
5079
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5023
5080
  data: {
@@ -5050,7 +5107,7 @@ class AXMDocumentManagerService {
5050
5107
  * Copies a node to another location
5051
5108
  */
5052
5109
  async copyTo(options) {
5053
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CJRrn2XH.mjs')).AXMDocumentDriveChooseComponent;
5110
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs')).AXMDocumentDriveChooseComponent;
5054
5111
  const popup = await this.popupService.open(comp, {
5055
5112
  title: `Choose ${options.browseMode == 'file' ? 'File' : 'Folder'}`,
5056
5113
  data: {
@@ -5268,7 +5325,7 @@ class AXMDocumentManagerService {
5268
5325
  // Load document types for selection
5269
5326
  const res = await this.documentTypeService.query({ skip: 0, take: 1000 });
5270
5327
  const items = res?.items ?? [];
5271
- const dialogRef = await this.layoutBuilder
5328
+ const result = await this.layoutBuilder
5272
5329
  .create()
5273
5330
  .dialog((dialog) => {
5274
5331
  dialog
@@ -5320,32 +5377,28 @@ class AXMDocumentManagerService {
5320
5377
  })
5321
5378
  .setActions((actions) => {
5322
5379
  actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');
5380
+ })
5381
+ .onAction(async (dialogRef) => {
5382
+ const context = dialogRef.context();
5383
+ const action = dialogRef.action();
5384
+ if (!context || action === 'cancel') {
5385
+ return false;
5386
+ }
5387
+ const form = context;
5388
+ const selected = Array.isArray(form.documentTypes) ? form.documentTypes : [];
5389
+ const selectedTypes = selected.map((v) => typeof v === 'object' ? v : items.find((it) => it.name === v) || { name: v, title: v, id: v });
5390
+ await this.updateFolder(node.id, {
5391
+ name: form.name,
5392
+ description: form.description,
5393
+ inherit: form.inherit,
5394
+ documentTypes: selectedTypes,
5395
+ color: form.color,
5396
+ });
5397
+ return true;
5323
5398
  });
5324
5399
  })
5325
5400
  .show();
5326
- const form = dialogRef.context();
5327
- const action = dialogRef.action();
5328
- if (action !== 'submit') {
5329
- dialogRef.close();
5330
- return false;
5331
- }
5332
- dialogRef.setLoading(true);
5333
- try {
5334
- const selected = Array.isArray(form.documentTypes) ? form.documentTypes : [];
5335
- const selectedTypes = selected.map((v) => typeof v === 'object' ? v : items.find((it) => it.name === v) || { name: v, title: v, id: v });
5336
- await this.updateFolder(node.id, {
5337
- name: form.name,
5338
- description: form.description,
5339
- inherit: form.inherit,
5340
- documentTypes: selectedTypes,
5341
- color: form.color,
5342
- });
5343
- return true;
5344
- }
5345
- finally {
5346
- dialogRef.setLoading(false);
5347
- dialogRef.close();
5348
- }
5401
+ return result;
5349
5402
  }
5350
5403
  /**
5351
5404
  * Shows create folder dialog
@@ -5354,7 +5407,7 @@ class AXMDocumentManagerService {
5354
5407
  // Load document types for selection
5355
5408
  const res = await this.documentTypeService.query({ skip: 0, take: 1000 });
5356
5409
  const items = res?.items ?? [];
5357
- const dialogRef = await this.layoutBuilder
5410
+ const result = await this.layoutBuilder
5358
5411
  .create()
5359
5412
  .dialog((dialog) => {
5360
5413
  dialog
@@ -5400,38 +5453,34 @@ class AXMDocumentManagerService {
5400
5453
  })
5401
5454
  .setActions((actions) => {
5402
5455
  actions.cancel('@general:actions.cancel.title').submit('@general:actions.save.title');
5456
+ })
5457
+ .onAction(async (dialogRef) => {
5458
+ const context = dialogRef.context();
5459
+ const action = dialogRef.action();
5460
+ if (!context || action === 'cancel') {
5461
+ return null;
5462
+ }
5463
+ const form = context;
5464
+ const folder = await this.createFolder({
5465
+ name: form.name,
5466
+ color: form.color,
5467
+ parentId,
5468
+ description: form.description,
5469
+ documentTypes: form.documentTypes,
5470
+ size: 0,
5471
+ inherit: form.inherit,
5472
+ });
5473
+ return folder;
5403
5474
  });
5404
5475
  })
5405
5476
  .show();
5406
- const form = dialogRef.context();
5407
- const action = dialogRef.action();
5408
- if (action !== 'submit') {
5409
- dialogRef.close();
5410
- return null;
5411
- }
5412
- dialogRef.setLoading(true);
5413
- try {
5414
- const folder = await this.createFolder({
5415
- name: form.name,
5416
- color: form.color,
5417
- parentId,
5418
- description: form.description,
5419
- documentTypes: form.documentTypes,
5420
- size: 0,
5421
- inherit: form.inherit,
5422
- });
5423
- return folder;
5424
- }
5425
- finally {
5426
- dialogRef.setLoading(false);
5427
- dialogRef.close();
5428
- }
5477
+ return result;
5429
5478
  }
5430
5479
  /**
5431
5480
  * Shows rename popup for a node using dynamic form builder
5432
5481
  */
5433
5482
  async showRenamePopup(node) {
5434
- const dialogRef = await this.layoutBuilder
5483
+ const result = await this.layoutBuilder
5435
5484
  .create()
5436
5485
  .dialog((dialog) => {
5437
5486
  dialog
@@ -5448,42 +5497,32 @@ class AXMDocumentManagerService {
5448
5497
  })
5449
5498
  .setActions((actions) => {
5450
5499
  actions.cancel().submit('@general:actions.save.title');
5451
- });
5452
- })
5453
- .show();
5454
- // Get form data and action
5455
- const formData = dialogRef.context();
5456
- const action = dialogRef.action();
5457
- if (action === 'submit' && formData?.name) {
5458
- // Set loading state
5459
- dialogRef.setLoading(true);
5460
- try {
5461
- let updatedNode;
5462
- if (node.type === 'folder') {
5463
- updatedNode = await this.updateFolder(node.id, {
5464
- name: formData.name,
5465
- });
5500
+ })
5501
+ .onAction(async (dialogRef) => {
5502
+ const context = dialogRef.context();
5503
+ const action = dialogRef.action();
5504
+ if (!context || action === 'cancel') {
5505
+ return undefined;
5466
5506
  }
5467
- else {
5507
+ const formData = context;
5508
+ if (!formData?.name) {
5509
+ return undefined;
5510
+ }
5511
+ dialogRef.setLoading(true);
5512
+ try {
5513
+ if (node.type === 'folder') {
5514
+ return await this.updateFolder(node.id, { name: formData.name });
5515
+ }
5468
5516
  await this.updateFileName(node, formData.name);
5469
- updatedNode = await this.updateFile(node.id, {
5470
- name: formData.name,
5471
- });
5517
+ return await this.updateFile(node.id, { name: formData.name });
5472
5518
  }
5473
- return updatedNode;
5474
- }
5475
- catch (error) {
5476
- console.error('Error updating node:', error);
5477
- return undefined;
5478
- }
5479
- finally {
5480
- dialogRef.close();
5481
- }
5482
- }
5483
- else {
5484
- dialogRef.close();
5485
- }
5486
- return undefined;
5519
+ finally {
5520
+ dialogRef.setLoading(false);
5521
+ }
5522
+ });
5523
+ })
5524
+ .show();
5525
+ return result;
5487
5526
  }
5488
5527
  /**
5489
5528
  * Shows delete nodes confirmation dialog
@@ -5501,7 +5540,7 @@ class AXMDocumentManagerService {
5501
5540
  * Shows choose file dialog
5502
5541
  */
5503
5542
  async showChooseFileDialog(scope) {
5504
- const comp = (await import('./acorex-modules-document-management-drive-choose.component-CJRrn2XH.mjs')).AXMDocumentDriveChooseComponent;
5543
+ const comp = (await import('./acorex-modules-document-management-drive-choose.component-ovwhHP2n.mjs')).AXMDocumentDriveChooseComponent;
5505
5544
  const result = await this.popupService.open(comp, {
5506
5545
  title: await this.translate.translateAsync('@document-management:actions.choose-from-drive'),
5507
5546
  data: {
@@ -5513,8 +5552,21 @@ class AXMDocumentManagerService {
5513
5552
  }
5514
5553
  return [];
5515
5554
  }
5555
+ /** File extensions supported by the gallery viewer (images + PDF). */
5556
+ static { this.GALLERY_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'pdf']; }
5557
+ /**
5558
+ * Returns nodes that are supported by the gallery (image/pdf extensions).
5559
+ */
5560
+ getGallerySupportedFiles(nodes) {
5561
+ return nodes.filter((item) => {
5562
+ if (!item.name || item.type !== 'file')
5563
+ return false;
5564
+ const ext = item.name.split('.').pop()?.toLowerCase();
5565
+ return ext && AXMDocumentManagerService.GALLERY_EXTENSIONS.includes(ext);
5566
+ });
5567
+ }
5516
5568
  /**
5517
- * Shows file viewer popup
5569
+ * Shows file viewer popup using the gallery widget
5518
5570
  */
5519
5571
  async showFileViewerPopup(node, options) {
5520
5572
  const isVirtualFolder = node.parentId === 'virtual';
@@ -5522,12 +5574,12 @@ class AXMDocumentManagerService {
5522
5574
  const documents = isVirtualFolder
5523
5575
  ? (options?.folderVirtualFiles ?? [])
5524
5576
  : ((await this.folderService.getOne(node.parentId)).documents ?? []);
5525
- // Filter documents first
5577
+ // Filter documents by gallery-supported extensions
5526
5578
  const filteredDocuments = documents.filter((item) => {
5527
5579
  if (!item.name)
5528
5580
  return false;
5529
5581
  const ext = item.name.split('.').pop()?.toLowerCase();
5530
- return ext && ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'pdf'].includes(ext);
5582
+ return ext && AXMDocumentManagerService.GALLERY_EXTENSIONS.includes(ext);
5531
5583
  });
5532
5584
  // Fetch documents with null fileId.source.value
5533
5585
  const documentsWithNullFileId = filteredDocuments.filter((doc) => !doc.fileId.source.value);
@@ -5543,9 +5595,7 @@ class AXMDocumentManagerService {
5543
5595
  });
5544
5596
  }
5545
5597
  // Collect all fileIds that need to be fetched
5546
- const fileIds = filteredDocuments
5547
- .filter((doc) => doc.fileId.source.value)
5548
- .map((doc) => doc.fileId.source.value);
5598
+ const fileIds = filteredDocuments.filter((doc) => doc.fileId.source.value).map((doc) => doc.fileId.source.value);
5549
5599
  // Fetch all file info at once (need URL for media viewer)
5550
5600
  const fileInfosMap = new Map();
5551
5601
  if (fileIds.length > 0) {
@@ -5556,16 +5606,37 @@ class AXMDocumentManagerService {
5556
5606
  }
5557
5607
  });
5558
5608
  }
5559
- const nodes = await Promise.all(filteredDocuments.map((doc) => this.mapDocumentToMediaViewerData(doc, fileInfosMap)));
5560
- const comp = (await Promise.resolve().then(function () { return fileViewerPopup_component; }))
5561
- .AXMFileViewerPopupComponent;
5609
+ // Convert documents to AXPFileListItem[] format for the gallery widget
5610
+ const fileListItems = await Promise.all(filteredDocuments.map(async (doc) => {
5611
+ let url = '';
5612
+ if (doc.fileId?.source?.kind === 'fileId') {
5613
+ const fileId = doc.fileId.source.value;
5614
+ const fileInfo = fileInfosMap.get(fileId);
5615
+ url = fileInfo?.url ?? '';
5616
+ }
5617
+ return {
5618
+ id: doc.id ?? '',
5619
+ name: doc.name,
5620
+ size: doc.size,
5621
+ status: 'attached',
5622
+ source: {
5623
+ kind: 'url',
5624
+ value: url,
5625
+ },
5626
+ };
5627
+ }));
5628
+ // Calculate start index
5629
+ const startIndex = isVirtualFolder
5630
+ ? (options?.folderVirtualFiles?.findIndex((f) => f.id === node.id) ?? 0)
5631
+ : (options?.index ?? 0);
5632
+ // Open popup using the gallery widget popup component
5633
+ const comp = (await Promise.resolve().then(function () { return fileGalleryPopup_component; }))
5634
+ .AXMFileGalleryPopupComponent;
5562
5635
  await this.popupService.open(comp, {
5563
5636
  title: parentFolderName,
5564
5637
  data: {
5565
- nodes,
5566
- index: isVirtualFolder
5567
- ? (options?.folderVirtualFiles?.findIndex((f) => f.id === node.id) ?? 0)
5568
- : (options?.index ?? 0),
5638
+ files: signal(fileListItems),
5639
+ startIndex,
5569
5640
  },
5570
5641
  });
5571
5642
  }
@@ -6078,7 +6149,10 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
6078
6149
  async openGalleryWithFolderId() {
6079
6150
  const folder = store.currentNode();
6080
6151
  const files = folder?.children?.filter((item) => item.type === 'file') || [];
6081
- await driveService.showFileViewerPopup(files[0]);
6152
+ const galleryFiles = driveService.getGallerySupportedFiles(files);
6153
+ if (galleryFiles.length > 0) {
6154
+ await driveService.showFileViewerPopup(galleryFiles[0]);
6155
+ }
6082
6156
  },
6083
6157
  //TODO: Delete only one node at a time
6084
6158
  async deleteNodes(nodes = store.selectedNodes()) {
@@ -6128,6 +6202,23 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
6128
6202
  },
6129
6203
  //#region Menu Items
6130
6204
  async getFolderAddMenuItems() {
6205
+ const files = store.currentFolder()?.children?.filter((item) => item.type === 'file') ?? [];
6206
+ const galleryFiles = driveService.getGallerySupportedFiles(files);
6207
+ const openGalleryItem = galleryFiles.length > 0
6208
+ ? [
6209
+ {
6210
+ title: await translateService.translateAsync('@document-management:actions.open-gallery'),
6211
+ icon: 'fa-light fa-images',
6212
+ break: true,
6213
+ command: {
6214
+ name: 'open-gallery',
6215
+ options: {
6216
+ folderId: store.currentFolder()?.id,
6217
+ },
6218
+ },
6219
+ },
6220
+ ]
6221
+ : [];
6131
6222
  return [
6132
6223
  {
6133
6224
  title: await translateService.translateAsync('@document-management:actions.create-folder'),
@@ -6153,17 +6244,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
6153
6244
  },
6154
6245
  },
6155
6246
  })) ?? []),
6156
- {
6157
- title: await translateService.translateAsync('@document-management:actions.open-gallery'),
6158
- icon: 'fa-light fa-images',
6159
- break: true,
6160
- command: {
6161
- name: 'open-gallery',
6162
- options: {
6163
- folderId: store.currentFolder()?.id,
6164
- },
6165
- },
6166
- },
6247
+ ...openGalleryItem,
6167
6248
  ];
6168
6249
  },
6169
6250
  async getFolderActionMenuItems() {
@@ -6756,7 +6837,7 @@ class AXMDocumentExplorerComponent {
6756
6837
  }
6757
6838
  }
6758
6839
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", inputs: { browseMode: { classPropertyName: "browseMode", publicName: "browseMode", isSignal: true, isRequired: false, transformFunction: null }, viewMode: { classPropertyName: "viewMode", publicName: "viewMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showContextMenu: { classPropertyName: "showContextMenu", publicName: "showContextMenu", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i2$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
6840
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", inputs: { browseMode: { classPropertyName: "browseMode", publicName: "browseMode", isSignal: true, isRequired: false, transformFunction: null }, viewMode: { classPropertyName: "viewMode", publicName: "viewMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showContextMenu: { classPropertyName: "showContextMenu", publicName: "showContextMenu", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i2$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
6760
6841
  }
6761
6842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
6762
6843
  type: Component,
@@ -6778,7 +6859,7 @@ class AXMFolderPathBreadcrumbsComponent {
6778
6859
  this.layout = inject(AXPLayoutThemeService);
6779
6860
  }
6780
6861
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6781
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMFolderPathBreadcrumbsComponent, isStandalone: true, selector: "axm-folder-path-breadcrumbs", ngImport: i0, template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(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=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
6862
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMFolderPathBreadcrumbsComponent, isStandalone: true, selector: "axm-folder-path-breadcrumbs", ngImport: i0, template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(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=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
6782
6863
  }
6783
6864
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, decorators: [{
6784
6865
  type: Component,
@@ -7128,11 +7209,21 @@ const DocumentFileUploaderBeforeFilesAddedProvider = {
7128
7209
  key: 'file-uploader.beforeFilesAdded',
7129
7210
  priority: 0,
7130
7211
  async execute(payload) {
7212
+ // Debug: trace before-files-added hook entry
7213
+ // eslint-disable-next-line no-console
7214
+ console.log('[DocumentFileUploaderBeforeFilesAdded] payload', {
7215
+ plugins: payload.plugins,
7216
+ excludePlugins: payload.excludePlugins,
7217
+ newFiles: payload.newFiles,
7218
+ });
7131
7219
  const isEnabled = Array.isArray(payload.plugins) && payload.plugins.some((p) => p.name === 'document');
7132
7220
  const isExcluded = Array.isArray(payload.excludePlugins) && payload.excludePlugins.includes('document');
7133
7221
  if (!isEnabled || isExcluded)
7134
7222
  return payload;
7135
7223
  const opts = (payload.plugins.find((p) => p.name === 'document')?.options ?? {});
7224
+ // Debug: trace resolved options
7225
+ // eslint-disable-next-line no-console
7226
+ console.log('[DocumentFileUploaderBeforeFilesAdded] options', opts);
7136
7227
  if (!opts.docTypeName)
7137
7228
  return payload;
7138
7229
  const injector = inject(Injector);
@@ -7156,6 +7247,14 @@ const DocumentFileUploaderEditDialogAfterFormProvider = {
7156
7247
  key: 'file-uploader.edit-dialog.groups.after-form',
7157
7248
  priority: 0,
7158
7249
  async execute(payload) {
7250
+ // Debug: trace edit-dialog hook entry
7251
+ // eslint-disable-next-line no-console
7252
+ console.log('[DocumentFileUploaderEditDialogAfterForm] payload (before)', {
7253
+ plugins: payload.plugins,
7254
+ excludePlugins: payload.excludePlugins,
7255
+ file: payload.file,
7256
+ groups: payload.groups,
7257
+ });
7159
7258
  const isEnabled = Array.isArray(payload.plugins) && payload.plugins.some((p) => p.name === 'document');
7160
7259
  const isExcluded = Array.isArray(payload.excludePlugins) && payload.excludePlugins.includes('document');
7161
7260
  if (!isEnabled || isExcluded)
@@ -7163,11 +7262,24 @@ const DocumentFileUploaderEditDialogAfterFormProvider = {
7163
7262
  const metaObj = payload.file?.metaDataForm;
7164
7263
  // Load document type (similar to document-type-choose-file) when available via plugin options
7165
7264
  const opts = (payload.plugins.find((p) => p.name === 'document')?.options ?? {});
7265
+ // Debug: trace resolved options and meta object
7266
+ // eslint-disable-next-line no-console
7267
+ console.log('[DocumentFileUploaderEditDialogAfterForm] options & meta', {
7268
+ options: opts,
7269
+ metaObj,
7270
+ });
7166
7271
  const injector = inject(Injector);
7167
7272
  const documentManagementService = injector.get(AXPDocumentManagementService);
7168
7273
  const docType = opts.docTypeName
7169
7274
  ? await documentManagementService.getDocumentTypeByName(opts.docTypeName)
7170
7275
  : undefined;
7276
+ // Debug: trace loaded document type and final decision
7277
+ // eslint-disable-next-line no-console
7278
+ console.log('[DocumentFileUploaderEditDialogAfterForm] loaded docType', {
7279
+ docTypeName: opts.docTypeName,
7280
+ hasMetaObj: !!metaObj && Object.keys(metaObj).length > 0,
7281
+ docType,
7282
+ });
7171
7283
  if (!docType && (!metaObj || Object.keys(metaObj).length === 0))
7172
7284
  return payload;
7173
7285
  const fields = [
@@ -7177,6 +7289,10 @@ const DocumentFileUploaderEditDialogAfterFormProvider = {
7177
7289
  widget: {
7178
7290
  name: 'metaDataForm',
7179
7291
  type: 'meta-data-form-editor',
7292
+ // NOTE:
7293
+ // - documentType.metaDataList structure is used directly in other dialogs:
7294
+ // AXMDocumentDialogService → field.customWidget('meta-data-form-editor', documentType?.metaDataList)
7295
+ // - So we pass the whole metaDataList object here as well for consistency.
7180
7296
  options: { definitions: docType?.metaDataList },
7181
7297
  defaultValue: metaObj,
7182
7298
  },
@@ -7187,8 +7303,19 @@ const DocumentFileUploaderEditDialogAfterFormProvider = {
7187
7303
  title: docType?.title ?? '@document-management:terms.common.meta-data',
7188
7304
  parameters: fields,
7189
7305
  };
7190
- if (docType?.metaDataList?.length) {
7306
+ // metaDataList is an object with a `groups` array; align condition with that structure
7307
+ const hasDefinitions = !!docType &&
7308
+ !!docType.metaDataList &&
7309
+ Array.isArray(docType.metaDataList.groups) &&
7310
+ docType.metaDataList.groups.length > 0;
7311
+ if (hasDefinitions) {
7191
7312
  payload.groups = [...(payload.groups ?? []), group];
7313
+ // Debug: confirm metadata group injection
7314
+ // eslint-disable-next-line no-console
7315
+ console.log('[DocumentFileUploaderEditDialogAfterForm] metadata group injected', {
7316
+ group,
7317
+ groupsAfter: payload.groups,
7318
+ });
7192
7319
  }
7193
7320
  return payload;
7194
7321
  },
@@ -7279,7 +7406,7 @@ class AXMDocumentManagementModule {
7279
7406
  AXMDocumentManagementDocumentTypeEntityModule,
7280
7407
  AXMDocumentManagementDocumentEntityModule,
7281
7408
  AXMFolderEntityModule,
7282
- AXMReviewEntityModule, i6.AXPWidgetCoreModule, i3$1.AXMediaViewerModule, i3$2.AXPWorkflowModule] }); }
7409
+ AXMReviewEntityModule, i6.AXPWidgetCoreModule, i2$2.AXMediaViewerModule, i3$1.AXPWorkflowModule] }); }
7283
7410
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementModule, providers: [
7284
7411
  // Module-specific providers (not part of manifest system)
7285
7412
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
@@ -7432,7 +7559,7 @@ class AXMDocumentExplorerDetailPanelComponent {
7432
7559
  this.vm = inject(AXPDocumentExplorerViewModel);
7433
7560
  }
7434
7561
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if (vm.hasMultipleSelectedItems()) {\n <div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n <!-- Info -->\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n <div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\">\n @for (section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for (detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if (detail.format) {\n <span>{{ detail.content | format: detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$2.AXFormatPipe, name: "format" }, { kind: "pipe", type: i3$3.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
7562
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if (vm.hasMultipleSelectedItems()) {\n <div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n <!-- Info -->\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n <div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\">\n @for (section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for (detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if (detail.format) {\n <span>{{ detail.content | format: detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$2.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$3.AXFormatPipe, name: "format" }, { kind: "pipe", type: i3$2.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
7436
7563
  }
7437
7564
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{
7438
7565
  type: Component,
@@ -7807,7 +7934,12 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
7807
7934
  break;
7808
7935
  case 'open-gallery':
7809
7936
  if (folderId) {
7810
- await this.driveService.showFileViewerPopup(this.vm.currentFolder().children[0]);
7937
+ const folder = this.vm.currentFolder();
7938
+ const files = folder?.children?.filter((item) => item.type === 'file') ?? [];
7939
+ const galleryFiles = this.driveService.getGallerySupportedFiles(files);
7940
+ if (galleryFiles.length > 0) {
7941
+ await this.driveService.showFileViewerPopup(galleryFiles[0]);
7942
+ }
7811
7943
  }
7812
7944
  break;
7813
7945
  default:
@@ -7827,11 +7959,11 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
7827
7959
  },
7828
7960
  ], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if (vm.hasMultipleSelectedItems()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\">{{\n '@general:actions.unselect.title' | translate | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\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 <!-- Search Box -->\n <ax-search-box\n [(value)]=\"searchQuery\"\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n }\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 <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item\n [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\"\n (onClick)=\"vm.setViewMode(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if (deviceService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon\n icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"\n ></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && deviceService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section removed: breadcrumbs are now provided via page-level breadcrumbs -->\n</axp-page-layout>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
7829
7961
  //
7830
- AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i2$3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFileModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type:
7962
+ AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i2$4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$2.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFileModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type:
7831
7963
  //
7832
7964
  AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type:
7833
7965
  //
7834
- AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7966
+ AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7835
7967
  }
7836
7968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
7837
7969
  type: Component,
@@ -7893,5 +8025,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
7893
8025
  * Generated bundle index. Do not edit.
7894
8026
  */
7895
8027
 
7896
- export { AXMArchiveFileTypeProvider, AXMAudioFileTypeProvider, AXMCodeFileTypeProvider, AXMDocumentDriveComponent, AXMDocumentExplorerComponent, AXMDocumentFileTypeProvider, AXMDocumentManagementDocumentEntityModule, AXMDocumentManagementDocumentTypeEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl, AXMDocumentManagementDocumentTypeMetaValueEntityModule, AXMDocumentManagementDocumentTypeMetaValueEntityService, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl, AXMDocumentManagementModule, AXMDocumentManagerService, AXMDocumentReletedEntityModule, AXMDocumentService, AXMDocumentServiceImpl, AXMDocumentTypeService, AXMDocumentTypeServiceImpl, AXMEntityProvider, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileTypeModule, AXMFileViewerPopupComponent, AXMFolderEntityModule, AXMFolderPathBreadcrumbsComponent, AXMFolderService, AXMFolderServiceImpl, AXMImageFileTypeProvider, AXMMenuProvider, AXMPermissionsKeys, AXMReviewEntityModule, AXMReviewService, AXMReviewServiceImpl, AXMSearchCommandProvider, AXMSettingProvider, AXMVideoFileTypeProvider, AXPDocumentExplorerSettings, AXPDocumentExplorerViewModel, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementService, AXmFileTypeExtensionWidget, RootConfig, ScopedDriveService, canTransition, documentFactory, documentRelatedFactory, documentTypeFactory, documentTypeMetaDefinitionfactory, documentTypeMetaValueFactory, documentTypeStatusDefinitionFactory, folderFactory, getNextStatus, reviewFactory };
8028
+ export { AXMArchiveFileTypeProvider, AXMAudioFileTypeProvider, AXMCodeFileTypeProvider, AXMDocumentDriveComponent, AXMDocumentExplorerComponent, AXMDocumentFileTypeProvider, AXMDocumentManagementDocumentEntityModule, AXMDocumentManagementDocumentTypeEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl, AXMDocumentManagementDocumentTypeMetaValueEntityModule, AXMDocumentManagementDocumentTypeMetaValueEntityService, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl, AXMDocumentManagementModule, AXMDocumentManagerService, AXMDocumentReletedEntityModule, AXMDocumentService, AXMDocumentServiceImpl, AXMDocumentTypeService, AXMDocumentTypeServiceImpl, AXMEntityProvider, AXMFileGalleryPopupComponent, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileTypeModule, AXMFolderEntityModule, AXMFolderPathBreadcrumbsComponent, AXMFolderService, AXMFolderServiceImpl, AXMImageFileTypeProvider, AXMMenuProvider, AXMPermissionsKeys, AXMReviewEntityModule, AXMReviewService, AXMReviewServiceImpl, AXMSearchCommandProvider, AXMSettingProvider, AXMVideoFileTypeProvider, AXPDocumentExplorerSettings, AXPDocumentExplorerViewModel, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementService, AXmFileTypeExtensionWidget, RootConfig, ScopedDriveService, canTransition, documentFactory, documentRelatedFactory, documentTypeFactory, documentTypeMetaDefinitionfactory, documentTypeMetaValueFactory, documentTypeStatusDefinitionFactory, folderFactory, getNextStatus, reviewFactory };
7897
8029
  //# sourceMappingURL=acorex-modules-document-management.mjs.map