@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.
- package/common/index.d.ts +9 -1
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1 -0
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +26 -36
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +509 -230
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +106 -24
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- 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
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-e3Lxk5ZT.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +3 -3
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-B601gPsW.mjs → acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs} +4 -2
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-BafU5Lfl.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +84 -14
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/index.d.ts +1 -0
- package/layout/components/index.d.ts +1 -5
- package/layout/entity/index.d.ts +2 -2
- package/layout/views/index.d.ts +34 -0
- package/package.json +5 -5
- package/widgets/index.d.ts +8 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DXGLsVis.mjs.map +0 -1
- 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-
|
|
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-
|
|
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.
|
|
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: "
|
|
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
|
|
17278
|
-
|
|
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
|
|
17306
|
-
|
|
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"] }]
|