@acorex/platform 20.2.4-next.1 → 20.2.4-next.3

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 (26) hide show
  1. package/common/index.d.ts +9 -1
  2. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-layout-builder.mjs +1 -0
  4. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-layout-components.mjs +26 -36
  6. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-entity.mjs +509 -230
  8. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-views.mjs +106 -24
  10. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  11. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs → acorex-platform-themes-default-entity-master-list-view.component-e3Lxk5ZT.mjs} +3 -3
  12. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-e3Lxk5ZT.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-themes-default.mjs +3 -3
  14. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  15. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs → acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs} +4 -2
  16. package/fesm2022/acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-widgets.mjs +84 -14
  18. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  19. package/layout/builder/index.d.ts +1 -0
  20. package/layout/components/index.d.ts +1 -5
  21. package/layout/entity/index.d.ts +2 -2
  22. package/layout/views/index.d.ts +34 -0
  23. package/package.json +5 -5
  24. package/widgets/index.d.ts +8 -0
  25. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs.map +0 -1
  26. package/fesm2022/acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs.map +0 -1
@@ -24,6 +24,7 @@ class AXPFileListPopupComponent extends AXBasePageComponent {
24
24
  this.readOnly = input(false, ...(ngDevMode ? [{ debugName: "readOnly" }] : []));
25
25
  this.multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple" }] : []));
26
26
  this.accept = input('*', ...(ngDevMode ? [{ debugName: "accept" }] : []));
27
+ this.maxFileSize = input(1024 * 1024 * 100, ...(ngDevMode ? [{ debugName: "maxFileSize" }] : []));
27
28
  //#endregion
28
29
  //#region ---- Computed Properties ----
29
30
  this.mode = computed(() => this.readOnly() ? 'view' : 'edit', ...(ngDevMode ? [{ debugName: "mode" }] : []));
@@ -38,6 +39,7 @@ class AXPFileListPopupComponent extends AXBasePageComponent {
38
39
  readOnly: this.readOnly(),
39
40
  multiple: this.multiple(),
40
41
  accept: this.accept(),
42
+ maxFileSize: this.maxFileSize(),
41
43
  },
42
44
  }), ...(ngDevMode ? [{ debugName: "node" }] : []));
43
45
  }
@@ -106,7 +108,7 @@ class AXPFileListPopupComponent extends AXBasePageComponent {
106
108
  });
107
109
  }
108
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFileListPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
109
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFileListPopupComponent, isStandalone: true, selector: "ng-component", inputs: { files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-p-2\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"node()\" [mode]=\"mode()\"></ng-container>\n </axp-widgets-container>\n</div>\n<ax-footer>\n <ax-suffix>\n @if (readOnly()) {\n <ax-button [text]=\"'close' | translate | async\" (click)=\"close()\"></ax-button>\n } @else {\n <ax-button [text]=\"'discard' | translate | async\" (click)=\"close()\"></ax-button>\n <ax-button [text]=\"'apply' | translate | async\" (click)=\"apply()\" [color]=\"'primary'\"></ax-button>\n }\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type:
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFileListPopupComponent, isStandalone: true, selector: "ng-component", inputs: { files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ax-p-2\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n <ng-container axp-widget-renderer [node]=\"node()\" [mode]=\"mode()\"></ng-container>\n </axp-widgets-container>\n</div>\n<ax-footer>\n <ax-suffix>\n @if (readOnly()) {\n <ax-button [text]=\"'close' | translate | async\" (click)=\"close()\"></ax-button>\n } @else {\n <ax-button [text]=\"'discard' | translate | async\" (click)=\"close()\"></ax-button>\n <ax-button [text]=\"'apply' | translate | async\" (click)=\"apply()\" [color]=\"'primary'\"></ax-button>\n }\n </ax-suffix>\n</ax-footer>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type:
110
112
  //
111
113
  AXLabelModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.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.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: "ngmodule", type:
112
114
  //
@@ -128,4 +130,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
128
130
  }] });
129
131
 
130
132
  export { AXPFileListPopupComponent };
131
- //# sourceMappingURL=acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs.map
133
+ //# sourceMappingURL=acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs","sources":["../tmp-esm2022/widgets/lib/widgets/advance/file-uploader/file-list-popup/file-list-popup.component.js"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, inject, input, linkedSignal } from '@angular/core';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPFileStorageService } from '@acorex/platform/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/decorators\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/platform/layout/builder\";\nimport * as i4 from \"@angular/common\";\nimport * as i5 from \"@acorex/core/translation\";\nexport class AXPFileListPopupComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.fileService = inject(AXPFileStorageService);\n //#region ---- Component Properties ----\n this.files = input([], ...(ngDevMode ? [{ debugName: \"files\" }] : []));\n this.readOnly = input(false, ...(ngDevMode ? [{ debugName: \"readOnly\" }] : []));\n this.multiple = input(false, ...(ngDevMode ? [{ debugName: \"multiple\" }] : []));\n this.accept = input('*', ...(ngDevMode ? [{ debugName: \"accept\" }] : []));\n this.maxFileSize = input(1024 * 1024 * 100, ...(ngDevMode ? [{ debugName: \"maxFileSize\" }] : []));\n //#endregion\n //#region ---- Computed Properties ----\n this.mode = computed(() => this.readOnly() ? 'view' : 'edit', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n //#endregion\n //#region ---- Context & Node Management ----\n this.context = linkedSignal(() => ({}));\n this.node = computed(() => ({\n type: 'file-uploader',\n path: 'files',\n defaultValue: Array.isArray(this.files()) && typeof this.files()[0] !== 'string' ? this.files() : [],\n options: {\n readOnly: this.readOnly(),\n multiple: this.multiple(),\n accept: this.accept(),\n maxFileSize: this.maxFileSize(),\n },\n }), ...(ngDevMode ? [{ debugName: \"node\" }] : []));\n }\n onContextChanged(event) {\n this.context.set(event.data);\n }\n //#endregion\n //#region ---- Lifecycle Methods ----\n async ngOnInit() {\n if (Array.isArray(this.files()) && typeof this.files()[0] === 'string') {\n this.isLoading = true;\n // Convert string file IDs to AXPFileListItem objects using batch API\n const prefixedIds = this.files();\n const actualIds = prefixedIds.map((id) => this.removeFilePrefix(id));\n let fileItems = [];\n try {\n const infos = await this.fileService.findMany(actualIds);\n const infoMap = new Map(infos.map((i) => [i.fileId, i]));\n fileItems = prefixedIds.map((prefixedId) => {\n const actualId = this.removeFilePrefix(prefixedId);\n const info = infoMap.get(actualId);\n if (info) {\n return {\n id: info.fileId,\n name: info.name || '',\n size: info.size,\n status: 'uploaded',\n source: {\n kind: 'fileId',\n value: info.fileId,\n },\n };\n }\n return {\n id: actualId,\n name: 'Unknown File',\n size: 0,\n status: 'deleted',\n source: { kind: 'none', value: '' },\n };\n });\n }\n catch (error) {\n console.error('Failed to get file infos', error);\n fileItems = prefixedIds.map((prefixedId) => ({\n id: this.removeFilePrefix(prefixedId),\n name: 'Unknown File',\n size: 0,\n status: 'deleted',\n source: { kind: 'none', value: '' },\n }));\n }\n this.isLoading = false;\n // Update the context with the converted file items\n this.context.set({ files: fileItems });\n }\n }\n removeFilePrefix(fileId) {\n return fileId.startsWith('file:') ? fileId.substring(5) : fileId;\n }\n //#endregion\n //#region ---- UI Handlers ----\n apply() {\n this.close({\n data: this.context(),\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXPFileListPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.6\", type: AXPFileListPopupComponent, isStandalone: true, selector: \"ng-component\", inputs: { files: { classPropertyName: \"files\", publicName: \"files\", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: \"readOnly\", publicName: \"readOnly\", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: \"multiple\", publicName: \"multiple\", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: \"accept\", publicName: \"accept\", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: \"maxFileSize\", publicName: \"maxFileSize\", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-p-2\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"onContextChanged($event)\\\">\\n <ng-container axp-widget-renderer [node]=\\\"node()\\\" [mode]=\\\"mode()\\\"></ng-container>\\n </axp-widgets-container>\\n</div>\\n<ax-footer>\\n <ax-suffix>\\n @if (readOnly()) {\\n <ax-button [text]=\\\"'close' | translate | async\\\" (click)=\\\"close()\\\"></ax-button>\\n } @else {\\n <ax-button [text]=\\\"'discard' | translate | async\\\" (click)=\\\"close()\\\"></ax-button>\\n <ax-button [text]=\\\"'apply' | translate | async\\\" (click)=\\\"apply()\\\" [color]=\\\"'primary'\\\"></ax-button>\\n }\\n </ax-suffix>\\n</ax-footer>\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: \n //\n AXLabelModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i1.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: i2.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: \"ngmodule\", type: \n //\n AXPLayoutBuilderModule }, { kind: \"component\", type: i3.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i3.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.6\", ngImport: i0, type: AXPFileListPopupComponent, decorators: [{\n type: Component,\n args: [{ imports: [\n CommonModule,\n //\n AXLabelModule,\n AXCheckBoxModule,\n AXDecoratorModule,\n AXButtonModule,\n AXTranslationModule,\n //\n AXPLayoutBuilderModule\n ], template: \"<div class=\\\"ax-p-2\\\">\\n <axp-widgets-container [context]=\\\"context()\\\" (onContextChanged)=\\\"onContextChanged($event)\\\">\\n <ng-container axp-widget-renderer [node]=\\\"node()\\\" [mode]=\\\"mode()\\\"></ng-container>\\n </axp-widgets-container>\\n</div>\\n<ax-footer>\\n <ax-suffix>\\n @if (readOnly()) {\\n <ax-button [text]=\\\"'close' | translate | async\\\" (click)=\\\"close()\\\"></ax-button>\\n } @else {\\n <ax-button [text]=\\\"'discard' | translate | async\\\" (click)=\\\"close()\\\"></ax-button>\\n <ax-button [text]=\\\"'apply' | translate | async\\\" (click)=\\\"apply()\\\" [color]=\\\"'primary'\\\"></ax-button>\\n }\\n </ax-suffix>\\n</ax-footer>\\n\" }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1saXN0LXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vd2lkZ2V0cy9zcmMvbGliL3dpZGdldHMvYWR2YW5jZS9maWxlLXVwbG9hZGVyL2ZpbGUtbGlzdC1wb3B1cC9maWxlLWxpc3QtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aWRnZXRzL3NyYy9saWIvd2lkZ2V0cy9hZHZhbmNlL2ZpbGUtdXBsb2FkZXIvZmlsZS1saXN0LXBvcHVwL2ZpbGUtbGlzdC1wb3B1cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsc0JBQXNCLEVBQThDLE1BQU0saUNBQWlDLENBQUM7QUFDckgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFnQmhFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxtQkFBbUI7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LEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLG1EQUFtRDtZQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsTUFBYztRQUN2QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNuRSxDQUFDO0lBRUQsWUFBWTtJQUVaLG1DQUFtQztJQUVuQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNULElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBM0dVLHlCQUF5QjtrR0FBekIseUJBQXlCLDB1QkMxQnRDLDBvQkFlQSwyQ0RESSxZQUFZO2dCQUNaLEVBQUU7Z0JBQ0YsYUFBYSw4QkFDYixnQkFBZ0IsOEJBQ2hCLGlCQUFpQixxUEFDakIsY0FBYyw2WEFDZCxtQkFBbUI7Z0JBQ25CLEVBQUU7Z0JBQ0Ysc0JBQXNCOzsyRkFJYix5QkFBeUI7a0JBZHJDLFNBQVM7OEJBQ0M7d0JBQ1AsWUFBWTt3QkFDWixFQUFFO3dCQUNGLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixFQUFFO3dCQUNGLHNCQUFzQjtxQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhDaGVja0JveE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jaGVjay1ib3gnO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUEZpbGVMaXN0SXRlbSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBpbnB1dCwgbGlua2VkU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlLCBBWFBMYXlvdXRDb250ZXh0Q2hhbmdlRXZlbnQsIEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEZpbGVTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgLy9cbiAgICBBWExhYmVsTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAvL1xuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtbGlzdC1wb3B1cC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEZpbGVMaXN0UG9wdXBDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcblxuICBwcml2YXRlIGZpbGVTZXJ2aWNlID0gaW5qZWN0KEFYUEZpbGVTdG9yYWdlU2VydmljZSk7XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb21wb25lbnQgUHJvcGVydGllcyAgIC0tLS1cblxuICBmaWxlcyA9IGlucHV0PEFYUEZpbGVMaXN0SXRlbVtdfHN0cmluZ1tdPihbXSk7XG4gIHJlYWRPbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBtdWx0aXBsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgYWNjZXB0ID0gaW5wdXQ8c3RyaW5nPignKicpO1xuICBtYXhGaWxlU2l6ZSA9IGlucHV0PG51bWJlcj4oMTAyNCAqIDEwMjQgKiAxMDApO1xuXG4vLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbXB1dGVkIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIG1vZGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlYWRPbmx5KCkgPyAndmlldycgOiAnZWRpdCcpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29udGV4dCAmIE5vZGUgTWFuYWdlbWVudCAgIC0tLS1cblxuICBwcm90ZWN0ZWQgY29udGV4dCA9IGxpbmtlZFNpZ25hbDx7fT4oKCkgPT4gKHtcbiAgfSkpO1xuXG4gIHByb3RlY3RlZCBvbkNvbnRleHRDaGFuZ2VkKGV2ZW50OiBBWFBMYXlvdXRDb250ZXh0Q2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLmNvbnRleHQuc2V0KGV2ZW50LmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG5vZGUgPSBjb21wdXRlZDxBWFBXaWRnZXROb2RlPigoKSA9PiAoe1xuICAgIHR5cGU6ICdmaWxlLXVwbG9hZGVyJyxcbiAgICBwYXRoOiAnZmlsZXMnLFxuICAgIGRlZmF1bHRWYWx1ZTogQXJyYXkuaXNBcnJheSh0aGlzLmZpbGVzKCkpICYmIHR5cGVvZiB0aGlzLmZpbGVzKClbMF0gIT09ICdzdHJpbmcnID8gdGhpcy5maWxlcygpIDogW10sXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZE9ubHkoKSxcbiAgICAgIG11bHRpcGxlOiB0aGlzLm11bHRpcGxlKCksXG4gICAgICBhY2NlcHQ6IHRoaXMuYWNjZXB0KCksXG4gICAgICBtYXhGaWxlU2l6ZTogdGhpcy5tYXhGaWxlU2l6ZSgpLFxuICAgIH0sXG4gIH0pKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIExpZmVjeWNsZSBNZXRob2RzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZihBcnJheS5pc0FycmF5KHRoaXMuZmlsZXMoKSkgJiYgdHlwZW9mIHRoaXMuZmlsZXMoKVswXSA9PT0gJ3N0cmluZycpe1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgLy8gQ29udmVydCBzdHJpbmcgZmlsZSBJRHMgdG8gQVhQRmlsZUxpc3RJdGVtIG9iamVjdHMgdXNpbmcgYmF0Y2ggQVBJXG4gICAgICBjb25zdCBwcmVmaXhlZElkcyA9IHRoaXMuZmlsZXMoKSBhcyBzdHJpbmdbXTtcbiAgICAgIGNvbnN0IGFjdHVhbElkcyA9IHByZWZpeGVkSWRzLm1hcCgoaWQpID0+IHRoaXMucmVtb3ZlRmlsZVByZWZpeChpZCkpO1xuICAgICAgbGV0IGZpbGVJdGVtczogQVhQRmlsZUxpc3RJdGVtW10gPSBbXTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGluZm9zID0gYXdhaXQgdGhpcy5maWxlU2VydmljZS5maW5kTWFueShhY3R1YWxJZHMpO1xuICAgICAgICBjb25zdCBpbmZvTWFwID0gbmV3IE1hcChpbmZvcy5tYXAoKGkpID0+IFtpLmZpbGVJZCwgaV0pKTtcbiAgICAgICAgZmlsZUl0ZW1zID0gcHJlZml4ZWRJZHMubWFwKChwcmVmaXhlZElkKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0dWFsSWQgPSB0aGlzLnJlbW92ZUZpbGVQcmVmaXgocHJlZml4ZWRJZCk7XG4gICAgICAgICAgY29uc3QgaW5mbyA9IGluZm9NYXAuZ2V0KGFjdHVhbElkKTtcbiAgICAgICAgICBpZiAoaW5mbykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaWQ6IGluZm8uZmlsZUlkLFxuICAgICAgICAgICAgICBuYW1lOiBpbmZvLm5hbWUgfHwgJycsXG4gICAgICAgICAgICAgIHNpemU6IGluZm8uc2l6ZSxcbiAgICAgICAgICAgICAgc3RhdHVzOiAndXBsb2FkZWQnLFxuICAgICAgICAgICAgICBzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBraW5kOiAnZmlsZUlkJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogaW5mby5maWxlSWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9IGFzIEFYUEZpbGVMaXN0SXRlbTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlkOiBhY3R1YWxJZCxcbiAgICAgICAgICAgIG5hbWU6ICdVbmtub3duIEZpbGUnLFxuICAgICAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgICAgIHN0YXR1czogJ2RlbGV0ZWQnLFxuICAgICAgICAgICAgc291cmNlOiB7IGtpbmQ6ICdub25lJywgdmFsdWU6ICcnIH0sXG4gICAgICAgICAgfSBhcyBBWFBGaWxlTGlzdEl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdldCBmaWxlIGluZm9zJywgZXJyb3IpO1xuICAgICAgICBmaWxlSXRlbXMgPSBwcmVmaXhlZElkcy5tYXAoKHByZWZpeGVkSWQpID0+ICh7XG4gICAgICAgICAgaWQ6IHRoaXMucmVtb3ZlRmlsZVByZWZpeChwcmVmaXhlZElkKSxcbiAgICAgICAgICBuYW1lOiAnVW5rbm93biBGaWxlJyxcbiAgICAgICAgICBzaXplOiAwLFxuICAgICAgICAgIHN0YXR1czogJ2RlbGV0ZWQnLFxuICAgICAgICAgIHNvdXJjZTogeyBraW5kOiAnbm9uZScsIHZhbHVlOiAnJyB9LFxuICAgICAgICB9IGFzIEFYUEZpbGVMaXN0SXRlbSkpO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgLy8gVXBkYXRlIHRoZSBjb250ZXh0IHdpdGggdGhlIGNvbnZlcnRlZCBmaWxlIGl0ZW1zXG4gICAgICB0aGlzLmNvbnRleHQuc2V0KHsgZmlsZXM6IGZpbGVJdGVtcyB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlRmlsZVByZWZpeChmaWxlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpbGVJZC5zdGFydHNXaXRoKCdmaWxlOicpID8gZmlsZUlkLnN1YnN0cmluZyg1KSA6IGZpbGVJZDtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgVUkgSGFuZGxlcnMgICAtLS0tXG5cbiAgYXBwbHkoKSB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICBkYXRhOiB0aGlzLmNvbnRleHQoKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtcC0yXCI+XG4gIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiY29udGV4dCgpXCIgKG9uQ29udGV4dENoYW5nZWQpPVwib25Db250ZXh0Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cIm5vZGUoKVwiIFttb2RlXT1cIm1vZGUoKVwiPjwvbmctY29udGFpbmVyPlxuICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGF4LWZvb3Rlcj5cbiAgPGF4LXN1ZmZpeD5cbiAgICBAaWYgKHJlYWRPbmx5KCkpIHtcbiAgICAgIDxheC1idXR0b24gW3RleHRdPVwiJ2Nsb3NlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKGNsaWNrKT1cImNsb3NlKClcIj48L2F4LWJ1dHRvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxheC1idXR0b24gW3RleHRdPVwiJ2Rpc2NhcmQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvYXgtYnV0dG9uPlxuICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCInYXBwbHknIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAoY2xpY2spPVwiYXBwbHkoKVwiIFtjb2xvcl09XCIncHJpbWFyeSdcIj48L2F4LWJ1dHRvbj5cbiAgICB9XG4gIDwvYXgtc3VmZml4PlxuPC9heC1mb290ZXI+XG4iXX0="],"names":["i1","i2","i3","i4"],"mappings":"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"}
@@ -5565,6 +5565,9 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
5565
5565
  this.direction = computed(() => this.options()['direction']?.id ?? 'horizontal', ...(ngDevMode ? [{ debugName: "direction" }] : []));
5566
5566
  this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : []));
5567
5567
  this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
5568
+ this.look = computed(() => this.options()['look'], ...(ngDevMode ? [{ debugName: "look" }] : []));
5569
+ this.showControl = computed(() => this.options()['showControl'], ...(ngDevMode ? [{ debugName: "showControl" }] : []));
5570
+ this.imageMode = computed(() => this.options()['imageMode'], ...(ngDevMode ? [{ debugName: "imageMode" }] : []));
5568
5571
  this.displayItems = signal([], ...(ngDevMode ? [{ debugName: "displayItems" }] : []));
5569
5572
  this.ef = effect(() => {
5570
5573
  this.dataSource()
@@ -5576,6 +5579,7 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
5576
5579
  }, ...(ngDevMode ? [{ debugName: "ef" }] : []));
5577
5580
  }
5578
5581
  handleValueChange(e) {
5582
+ debugger;
5579
5583
  if (e.isUserInteraction) {
5580
5584
  this.setValue(e.value);
5581
5585
  }
@@ -5599,7 +5603,15 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
5599
5603
  [disabled]="disabled()"
5600
5604
  [readonly]="readonly()"
5601
5605
  [direction]="direction()"
5606
+ [look]="look()"
5607
+ [showControl]="showControl()"
5608
+ [customTemplate]="(imageMode() ? imageTemplate : undefined)!"
5602
5609
  >
5610
+ <ng-template #imageTemplate let-item>
5611
+ @if (imageMode()) {
5612
+ <img class="ax-w-14 ax-h-14" [src]="item.data[textField()]" />
5613
+ }
5614
+ </ng-template>
5603
5615
  @for (validation of validationRules(); track $index) {
5604
5616
  <ax-validation-rule
5605
5617
  [rule]="validation.rule"
@@ -5626,7 +5638,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
5626
5638
  [disabled]="disabled()"
5627
5639
  [readonly]="readonly()"
5628
5640
  [direction]="direction()"
5641
+ [look]="look()"
5642
+ [showControl]="showControl()"
5643
+ [customTemplate]="(imageMode() ? imageTemplate : undefined)!"
5629
5644
  >
5645
+ <ng-template #imageTemplate let-item>
5646
+ @if (imageMode()) {
5647
+ <img class="ax-w-14 ax-h-14" [src]="item.data[textField()]" />
5648
+ }
5649
+ </ng-template>
5630
5650
  @for (validation of validationRules(); track $index) {
5631
5651
  <ax-validation-rule
5632
5652
  [rule]="validation.rule"
@@ -7104,9 +7124,10 @@ class AXPFileUploaderWidgetService {
7104
7124
  multiple: false,
7105
7125
  accept: '*',
7106
7126
  fileEditable: true,
7127
+ maxFileSize: 1024 * 1024 * 10,
7107
7128
  };
7108
7129
  options = { ...defaultOptions, ...options };
7109
- const component = await import('./acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs').then(m => m.AXPFileListPopupComponent);
7130
+ const component = await import('./acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs').then(m => m.AXPFileListPopupComponent);
7110
7131
  const result = await this.popupService.open(component, {
7111
7132
  title: (await this.translate.translateAsync('@document-management:file')),
7112
7133
  data: {
@@ -7114,6 +7135,7 @@ class AXPFileUploaderWidgetService {
7114
7135
  readOnly: signal(options.readOnly),
7115
7136
  multiple: signal(options.multiple),
7116
7137
  accept: signal(options.accept),
7138
+ maxFileSize: signal(options.maxFileSize),
7117
7139
  fileEditable: signal(options.fileEditable ?? true),
7118
7140
  },
7119
7141
  });
@@ -7134,7 +7156,6 @@ class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
7134
7156
  super(...arguments);
7135
7157
  this.count = computed(() => {
7136
7158
  const value = castArray(this.rawValue ?? []);
7137
- console.log('File count:', value.length, 'Raw Data:', this.rowData);
7138
7159
  return value.length;
7139
7160
  }, ...(ngDevMode ? [{ debugName: "count" }] : []));
7140
7161
  this.fileService = inject(AXPFileUploaderWidgetService);
@@ -7339,7 +7360,15 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7339
7360
  this.fileService = inject(AXFileService);
7340
7361
  this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : []));
7341
7362
  this.accept = computed(() => this.options()['accept'], ...(ngDevMode ? [{ debugName: "accept" }] : []));
7342
- this.fileEditable = computed(() => this.options()['fileEditable'], ...(ngDevMode ? [{ debugName: "fileEditable" }] : []));
7363
+ this.plugins = computed(() => this.options()['plugins'], ...(ngDevMode ? [{ debugName: "plugins" }] : []));
7364
+ this.fileEditable = computed(() => {
7365
+ if (this.options()['readonly']) {
7366
+ return false;
7367
+ }
7368
+ return this.options()['fileEditable'];
7369
+ }, ...(ngDevMode ? [{ debugName: "fileEditable" }] : []));
7370
+ this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : []));
7371
+ this.maxFileSize = computed(() => this.options()['maxFileSize'], ...(ngDevMode ? [{ debugName: "maxFileSize" }] : []));
7343
7372
  this.files = computed(() => (this.getValue() ?? []).map((file) => ({
7344
7373
  ...file,
7345
7374
  })) ?? [], ...(ngDevMode ? [{ debugName: "files" }] : []));
@@ -7358,6 +7387,7 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7358
7387
  if (!this.multiple()) {
7359
7388
  this.clear();
7360
7389
  }
7390
+ // if the file size is greater than the max file size, return
7361
7391
  // create the file upload requests
7362
7392
  const fileUploadRequests = files.map((file) => ({
7363
7393
  id: AXPDataGenerator.uuid(),
@@ -7414,8 +7444,9 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7414
7444
  return cls;
7415
7445
  }
7416
7446
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPFileUploaderWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7417
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: AXPFileUploaderWidgetEditComponent, isStandalone: true, selector: "axp-file-uploader-widget-edit", host: { properties: { "class": "this.__class" }, styleAttribute: "border-color: rgba(var(--ax-comp-editor-border-color)); !important;" }, usesInheritance: true, ngImport: i0, template: `
7447
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPFileUploaderWidgetEditComponent, isStandalone: true, selector: "axp-file-uploader-widget-edit", host: { properties: { "class": "this.__class" }, styleAttribute: "border-color: rgba(var(--ax-comp-editor-border-color)); !important;" }, usesInheritance: true, ngImport: i0, template: `
7418
7448
  <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7449
+ @if(!readonly()) {
7419
7450
  <!-- Add Item Button -->
7420
7451
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7421
7452
  <ax-prefix>
@@ -7436,6 +7467,7 @@ class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent {
7436
7467
  </ax-button-item-list>
7437
7468
  </ax-dropdown-panel>
7438
7469
  </ax-button>
7470
+ }
7439
7471
  </div>
7440
7472
  <div class="ax-p-2">
7441
7473
  <axp-file-list
@@ -7454,6 +7486,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
7454
7486
  selector: 'axp-file-uploader-widget-edit',
7455
7487
  template: `
7456
7488
  <div class="ax-flex ax-justify-end ax-border-b ax-p-2" *translate="let t">
7489
+ @if(!readonly()) {
7457
7490
  <!-- Add Item Button -->
7458
7491
  <ax-button class="ax-sm" [text]="t('@document-management:actions.add-item') | async" [color]="'primary'">
7459
7492
  <ax-prefix>
@@ -7474,6 +7507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
7474
7507
  </ax-button-item-list>
7475
7508
  </ax-dropdown-panel>
7476
7509
  </ax-button>
7510
+ }
7477
7511
  </div>
7478
7512
  <div class="ax-p-2">
7479
7513
  <axp-file-list
@@ -8793,7 +8827,7 @@ class AXPMapBoxWidgetViewComponent extends AXPValueWidgetComponent {
8793
8827
  [longitude]="longitude()"
8794
8828
  [markers]="markers()"
8795
8829
  ></ax-map>
8796
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXMapModule }, { kind: "component", type: i1$b.AXMapComponent, selector: "ax-map", inputs: ["zoomLevel", "latitude", "longitude", "maxMarker", "maxPolygon", "hasDraw", "hasLocator", "fitToDraw", "limitDraw", "addPoiToFitDraw", "markerPlace", "locatePlace", "poiMinZoom", "markers", "polygons", "pois"], outputs: ["zoomLevelChange", "latitudeChange", "longitudeChange", "onMarkerAdded", "onMarkerClick", "onMarkerChanged", "onPolygonAdded", "onPolygonClick", "onPolygonChanged", "onLocationFound", "onPoiChanged", "onPoiAdded", "onMapReady"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8830
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXMapModule }, { kind: "component", type: i1$b.AXMapComponent, selector: "ax-map", inputs: ["zoomLevel", "latitude", "longitude", "maxMarker", "maxPolygon", "hasDraw", "hasLocator", "fitToDraw", "limitDraw", "addPoiToFitDraw", "addMarkerOnTap", "markerPlace", "locatePlace", "poiMinZoom", "markers", "polygons", "pois"], outputs: ["zoomLevelChange", "latitudeChange", "longitudeChange", "onMarkerAdded", "onMarkerClick", "onMarkerChanged", "onPolygonAdded", "onPolygonClick", "onPolygonChanged", "onLocationFound", "onPoiChanged", "onPoiAdded", "onMapReady", "onLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8797
8831
  }
8798
8832
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPMapBoxWidgetViewComponent, decorators: [{
8799
8833
  type: Component,
@@ -8869,7 +8903,7 @@ class AXPMapBoxWidgetEditComponent extends AXPValueWidgetComponent {
8869
8903
  [pois]="pois()"
8870
8904
  >
8871
8905
  </ax-map>
8872
- </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXMapModule }, { kind: "component", type: i1$b.AXMapComponent, selector: "ax-map", inputs: ["zoomLevel", "latitude", "longitude", "maxMarker", "maxPolygon", "hasDraw", "hasLocator", "fitToDraw", "limitDraw", "addPoiToFitDraw", "markerPlace", "locatePlace", "poiMinZoom", "markers", "polygons", "pois"], outputs: ["zoomLevelChange", "latitudeChange", "longitudeChange", "onMarkerAdded", "onMarkerClick", "onMarkerChanged", "onPolygonAdded", "onPolygonClick", "onPolygonChanged", "onLocationFound", "onPoiChanged", "onPoiAdded", "onMapReady"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8906
+ </div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXMapModule }, { kind: "component", type: i1$b.AXMapComponent, selector: "ax-map", inputs: ["zoomLevel", "latitude", "longitude", "maxMarker", "maxPolygon", "hasDraw", "hasLocator", "fitToDraw", "limitDraw", "addPoiToFitDraw", "addMarkerOnTap", "markerPlace", "locatePlace", "poiMinZoom", "markers", "polygons", "pois"], outputs: ["zoomLevelChange", "latitudeChange", "longitudeChange", "onMarkerAdded", "onMarkerClick", "onMarkerChanged", "onPolygonAdded", "onPolygonClick", "onPolygonChanged", "onLocationFound", "onPoiChanged", "onPoiAdded", "onMapReady", "onLoadError"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8873
8907
  }
8874
8908
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPMapBoxWidgetEditComponent, decorators: [{
8875
8909
  type: Component,
@@ -17237,6 +17271,12 @@ class AXPTabSetWidgetViewComponent extends AXPLayoutWidgetComponent {
17237
17271
  this.look = computed(() => this.options()['look'] || 'with-line', ...(ngDevMode ? [{ debugName: "look" }] : []));
17238
17272
  this.orientation = computed(() => this.options()['orientation'] || 'horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
17239
17273
  this.activeIndex = linkedSignal(() => this.options()['activeIndex'] ?? 0);
17274
+ //#region ---- Rendered Tabs Cache ----
17275
+ /**
17276
+ * Cache for rendered tabs to prevent re-rendering on tab switch
17277
+ */
17278
+ this.renderedTabsCache = signal([], ...(ngDevMode ? [{ debugName: "renderedTabsCache" }] : []));
17279
+ //#endregion
17240
17280
  this.tabs = computed(() => this.children()
17241
17281
  .filter((child) => child.options?.['visible'] != false)
17242
17282
  .map((child) => {
@@ -17252,14 +17292,44 @@ class AXPTabSetWidgetViewComponent extends AXPLayoutWidgetComponent {
17252
17292
  .map((child) => {
17253
17293
  return child;
17254
17294
  }), ...(ngDevMode ? [{ debugName: "tabContents" }] : []));
17295
+ //#region ---- Rendered Tabs Management ----
17296
+ /**
17297
+ * Returns list of tabs that should be rendered
17298
+ * Manages cache to prevent re-rendering existing tabs
17299
+ */
17300
+ this.renderedTabs = computed(() => {
17301
+ const currentActiveIndex = this.activeIndex();
17302
+ const availableTabs = this.tabContents();
17303
+ const currentCache = this.renderedTabsCache();
17304
+ // Check if current active tab is already in cache
17305
+ const isActiveTabCached = currentCache.some((cached) => cached.index === currentActiveIndex);
17306
+ if (!isActiveTabCached && availableTabs[currentActiveIndex]) {
17307
+ // Add new tab to cache
17308
+ const newTab = {
17309
+ index: currentActiveIndex,
17310
+ node: availableTabs[currentActiveIndex],
17311
+ };
17312
+ const updatedCache = [...currentCache, newTab];
17313
+ this.renderedTabsCache.set(updatedCache);
17314
+ return updatedCache;
17315
+ }
17316
+ return currentCache;
17317
+ }, ...(ngDevMode ? [{ debugName: "renderedTabs" }] : []));
17255
17318
  }
17319
+ //#endregion
17256
17320
  get __class() {
17257
17321
  const cls = {};
17258
17322
  cls[this.orientation()] = true;
17259
17323
  return cls;
17260
17324
  }
17325
+ //#region ---- Event Handlers ----
17326
+ /**
17327
+ * Handles tab click and ensures tab gets added to render cache
17328
+ */
17261
17329
  handleTabClick(index) {
17262
17330
  this.activeIndex.set(index);
17331
+ // Trigger renderedTabs computed to ensure new tab gets cached
17332
+ this.renderedTabs();
17263
17333
  }
17264
17334
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AXPTabSetWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
17265
17335
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: AXPTabSetWidgetViewComponent, isStandalone: true, selector: "axp-tabset-widget", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
@@ -17274,16 +17344,16 @@ class AXPTabSetWidgetViewComponent extends AXPLayoutWidgetComponent {
17274
17344
  }
17275
17345
  </ax-tabs>
17276
17346
  <div class="content">
17277
- @for (tab of tabContents(); track $index) {
17278
- @if ($index === activeIndex()) {
17347
+ @for (tab of renderedTabs(); track tab.index) {
17348
+ <div [class]="tab.index === activeIndex() ? '' : 'ax-hidden'">
17279
17349
  <ng-container
17280
17350
  axp-widget-renderer
17281
- [node]="tab"
17351
+ [node]="tab.node"
17282
17352
  [index]="index"
17283
17353
  [parentNode]="this"
17284
17354
  [mode]="this.mode"
17285
17355
  ></ng-container>
17286
- }
17356
+ </div>
17287
17357
  }
17288
17358
  </div>
17289
17359
  `, isInline: true, styles: [":host.vertical{display:flex;width:100%;flex-direction:row}:host.vertical .content{display:block;width:100%}:host.horizontal{display:flex;width:100%;flex-direction:column}:host.horizontal .content{margin-top:1rem;display:block;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i3$1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i3$1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "directive", type: i1$6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
@@ -17302,16 +17372,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
17302
17372
  }
17303
17373
  </ax-tabs>
17304
17374
  <div class="content">
17305
- @for (tab of tabContents(); track $index) {
17306
- @if ($index === activeIndex()) {
17375
+ @for (tab of renderedTabs(); track tab.index) {
17376
+ <div [class]="tab.index === activeIndex() ? '' : 'ax-hidden'">
17307
17377
  <ng-container
17308
17378
  axp-widget-renderer
17309
- [node]="tab"
17379
+ [node]="tab.node"
17310
17380
  [index]="index"
17311
17381
  [parentNode]="this"
17312
17382
  [mode]="this.mode"
17313
17383
  ></ng-container>
17314
- }
17384
+ </div>
17315
17385
  }
17316
17386
  </div>
17317
17387
  `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXTabsModule, AXPLayoutBuilderModule, CommonModule, AXTranslationModule], styles: [":host.vertical{display:flex;width:100%;flex-direction:row}:host.vertical .content{display:block;width:100%}:host.horizontal{display:flex;width:100%;flex-direction:column}:host.horizontal .content{margin-top:1rem;display:block;width:100%}\n"] }]