@acorex/modules 20.3.0-next.19 → 20.3.0-next.20
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 +11 -2
- package/fesm2022/acorex-modules-common.mjs +913 -5
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +4 -4
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +0 -1
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-D39vzY_d.mjs → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BwmZR-qY.mjs} +9 -9
- package/fesm2022/{acorex-modules-human-capital-management-acorex-modules-human-capital-management-D39vzY_d.mjs.map → acorex-modules-human-capital-management-acorex-modules-human-capital-management-BwmZR-qY.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-Dd6cSked.mjs → acorex-modules-human-capital-management-employee-skill.entity-tBHFvJSk.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employee-skill.entity-Dd6cSked.mjs.map → acorex-modules-human-capital-management-employee-skill.entity-tBHFvJSk.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-employee.entity-BtenRYTI.mjs → acorex-modules-human-capital-management-employee.entity-ycy1OPim.mjs} +3 -3
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-ycy1OPim.mjs.map +1 -0
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-D_jB5gh2.mjs → acorex-modules-human-capital-management-employment-type.entity-vBzJD4oD.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-employment-type.entity-D_jB5gh2.mjs.map → acorex-modules-human-capital-management-employment-type.entity-vBzJD4oD.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-iX5YQBQy.mjs → acorex-modules-human-capital-management-leave-request.entity-iVWdJM_r.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-iX5YQBQy.mjs.map → acorex-modules-human-capital-management-leave-request.entity-iVWdJM_r.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-BRPpSgMR.mjs → acorex-modules-human-capital-management-leave-type.entity-C_f9HA6B.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-leave-type.entity-BRPpSgMR.mjs.map → acorex-modules-human-capital-management-leave-type.entity-C_f9HA6B.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Bl5GznJG.mjs → acorex-modules-human-capital-management-position-assignment.entity-CQLcD6LO.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-position-assignment.entity-Bl5GznJG.mjs.map → acorex-modules-human-capital-management-position-assignment.entity-CQLcD6LO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-C2JSzWDw.mjs → acorex-modules-human-capital-management-skill-level.entity-CoBQ9Jbt.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill-level.entity-C2JSzWDw.mjs.map → acorex-modules-human-capital-management-skill-level.entity-CoBQ9Jbt.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-hW9jC2GU.mjs → acorex-modules-human-capital-management-skill.entity-BhKcpZiD.mjs} +2 -2
- package/fesm2022/{acorex-modules-human-capital-management-skill.entity-hW9jC2GU.mjs.map → acorex-modules-human-capital-management-skill.entity-BhKcpZiD.mjs.map} +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +1 -1
- package/fesm2022/acorex-modules-locale-management.mjs +12 -87
- package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-location-management.mjs +7 -109
- package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-report-management.mjs +78 -50
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +12 -187
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +7 -0
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-overview.command-BY_DtTDo.mjs +31 -0
- package/fesm2022/acorex-modules-workflow-management-overview.command-BY_DtTDo.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +257 -81
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/package.json +6 -6
- package/report-management/index.d.ts +4 -4
- package/workflow-management/index.d.ts +1 -1
- package/fesm2022/acorex-modules-human-capital-management-employee.entity-BtenRYTI.mjs.map +0 -1
|
@@ -21,8 +21,9 @@ import * as i2$1 from '@acorex/components/button';
|
|
|
21
21
|
import { AXButtonModule } from '@acorex/components/button';
|
|
22
22
|
import * as i3 from '@acorex/components/decorators';
|
|
23
23
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
24
|
-
import * as
|
|
24
|
+
import * as i6 from '@acorex/components/dropdown';
|
|
25
25
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
26
|
+
import * as i5 from '@acorex/components/dropdown-button';
|
|
26
27
|
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
27
28
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
28
29
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
@@ -1518,6 +1519,25 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1518
1519
|
isLoading: computed(() => store.status() === AXPPageStatus.Processing),
|
|
1519
1520
|
isExecuting: computed(() => store.status() === AXPPageStatus.Submitting),
|
|
1520
1521
|
hasError: computed(() => store.error() !== null),
|
|
1522
|
+
canExecute: computed(() => {
|
|
1523
|
+
// Always allow execution if there's an error (to enable retry)
|
|
1524
|
+
if (store.error() !== null) {
|
|
1525
|
+
return true;
|
|
1526
|
+
}
|
|
1527
|
+
// Allow execution if there are unapplied filters
|
|
1528
|
+
const currentContext = store.filterContext();
|
|
1529
|
+
const lastApplied = store.lastAppliedFilterContext();
|
|
1530
|
+
const hasBeenExecuted = store.hasBeenExecuted();
|
|
1531
|
+
if (hasBeenExecuted && JSON.stringify(currentContext) !== JSON.stringify(lastApplied)) {
|
|
1532
|
+
return true;
|
|
1533
|
+
}
|
|
1534
|
+
// Allow execution if report hasn't been executed yet
|
|
1535
|
+
if (!hasBeenExecuted) {
|
|
1536
|
+
return true;
|
|
1537
|
+
}
|
|
1538
|
+
// Otherwise, don't allow execution
|
|
1539
|
+
return false;
|
|
1540
|
+
}),
|
|
1521
1541
|
hasMultipleLayouts: computed(() => {
|
|
1522
1542
|
const report = store.reportDefinition();
|
|
1523
1543
|
return (report?.layouts?.length ?? 0) > 1;
|
|
@@ -1586,10 +1606,6 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1586
1606
|
}),
|
|
1587
1607
|
//#endregion
|
|
1588
1608
|
//#region ---- Action States ----
|
|
1589
|
-
canExecute: computed(() => store.reportDefinition() !== null &&
|
|
1590
|
-
store.currentLayout() !== null &&
|
|
1591
|
-
store.status() !== AXPPageStatus.Processing &&
|
|
1592
|
-
store.status() !== AXPPageStatus.Submitting),
|
|
1593
1609
|
canSwitchLayout: computed(() => (store.reportDefinition()?.layouts?.length ?? 0) > 1 &&
|
|
1594
1610
|
store.status() !== AXPPageStatus.Submitting),
|
|
1595
1611
|
canSelectRows: computed(() => {
|
|
@@ -1601,26 +1617,34 @@ const AXPReportViewerViewModel = signalStore(withState(() => ({
|
|
|
1601
1617
|
//#endregion
|
|
1602
1618
|
})), withMethods((store, reportDefinitionService = inject(AXPReportDefinitionService), commandService = inject(AXPCommandService)) => {
|
|
1603
1619
|
const executeReport = async () => {
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1620
|
+
try {
|
|
1621
|
+
const report = store.reportDefinition();
|
|
1622
|
+
const layout = store.currentLayout();
|
|
1623
|
+
if (!report || !layout) {
|
|
1624
|
+
patchState(store, {
|
|
1625
|
+
error: 'Report or layout not found',
|
|
1626
|
+
});
|
|
1627
|
+
return;
|
|
1628
|
+
}
|
|
1607
1629
|
patchState(store, {
|
|
1608
|
-
|
|
1630
|
+
status: AXPPageStatus.Submitting,
|
|
1631
|
+
error: null,
|
|
1632
|
+
allowFetchData: true,
|
|
1633
|
+
shouldExecuteReport: true,
|
|
1634
|
+
lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied
|
|
1635
|
+
hasBeenExecuted: true // Mark that report has been executed at least once
|
|
1636
|
+
});
|
|
1637
|
+
patchState(store, {
|
|
1638
|
+
status: AXPPageStatus.Submitted,
|
|
1639
|
+
error: null
|
|
1640
|
+
});
|
|
1641
|
+
}
|
|
1642
|
+
catch (error) {
|
|
1643
|
+
patchState(store, {
|
|
1644
|
+
status: AXPPageStatus.Error,
|
|
1645
|
+
error: error instanceof Error ? error.message : 'An unexpected error occurred while executing the report'
|
|
1609
1646
|
});
|
|
1610
|
-
return;
|
|
1611
1647
|
}
|
|
1612
|
-
patchState(store, {
|
|
1613
|
-
status: AXPPageStatus.Submitting,
|
|
1614
|
-
error: null,
|
|
1615
|
-
allowFetchData: true,
|
|
1616
|
-
shouldExecuteReport: true,
|
|
1617
|
-
lastAppliedFilterContext: { ...store.filterContext() }, // Mark current filters as applied
|
|
1618
|
-
hasBeenExecuted: true // Mark that report has been executed at least once
|
|
1619
|
-
});
|
|
1620
|
-
patchState(store, {
|
|
1621
|
-
status: AXPPageStatus.Submitted,
|
|
1622
|
-
error: null
|
|
1623
|
-
});
|
|
1624
1648
|
};
|
|
1625
1649
|
const fetchData = async (parameters = {}) => {
|
|
1626
1650
|
const report = store.reportDefinition();
|
|
@@ -2129,7 +2153,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2129
2153
|
}
|
|
2130
2154
|
async handleExecuteReport() {
|
|
2131
2155
|
const isValid = await this.filtersForm()?.validate();
|
|
2132
|
-
if (!isValid) {
|
|
2156
|
+
if (!isValid?.result) {
|
|
2133
2157
|
return;
|
|
2134
2158
|
}
|
|
2135
2159
|
await this.vm.executeReport();
|
|
@@ -2138,11 +2162,12 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2138
2162
|
this.vm.refresh();
|
|
2139
2163
|
}
|
|
2140
2164
|
handleClearFilters() {
|
|
2165
|
+
debugger;
|
|
2141
2166
|
this.vm.clearFilters();
|
|
2142
2167
|
// Reset form if available
|
|
2143
2168
|
const form = this.filtersForm();
|
|
2144
2169
|
if (form) {
|
|
2145
|
-
form.
|
|
2170
|
+
form.reset();
|
|
2146
2171
|
}
|
|
2147
2172
|
}
|
|
2148
2173
|
//#endregion
|
|
@@ -2236,29 +2261,32 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2236
2261
|
return [];
|
|
2237
2262
|
}
|
|
2238
2263
|
async getSecondaryMenuItems() {
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2264
|
+
return [];
|
|
2265
|
+
// const reportDefinition = this.vm.reportDefinition();
|
|
2266
|
+
// if (!reportDefinition) {
|
|
2267
|
+
// return [];
|
|
2268
|
+
// }
|
|
2269
|
+
// return [
|
|
2270
|
+
// {
|
|
2271
|
+
// title: await this.translateService.translateAsync('@report-management:features.report-viewer.actions.refresh'),
|
|
2272
|
+
// icon: 'fa-light fa-refresh',
|
|
2273
|
+
// color: 'secondary',
|
|
2274
|
+
// disabled: this.vm.isLoading() || this.vm.isExecuting(),
|
|
2275
|
+
// command: {
|
|
2276
|
+
// name: 'refresh-report',
|
|
2277
|
+
// },
|
|
2278
|
+
// },
|
|
2279
|
+
// {
|
|
2280
|
+
// title: await this.translateService.translateAsync(
|
|
2281
|
+
// '@report-management:features.report-viewer.actions.clear-filters',
|
|
2282
|
+
// ),
|
|
2283
|
+
// icon: 'fa-light fa-filter-slash',
|
|
2284
|
+
// color: 'warning',
|
|
2285
|
+
// command: {
|
|
2286
|
+
// name: 'clear-filters',
|
|
2287
|
+
// },
|
|
2288
|
+
// },
|
|
2289
|
+
// ];
|
|
2262
2290
|
}
|
|
2263
2291
|
async execute(command) {
|
|
2264
2292
|
switch (command.name) {
|
|
@@ -2268,7 +2296,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2268
2296
|
case 'refresh-report':
|
|
2269
2297
|
this.handleRefresh();
|
|
2270
2298
|
break;
|
|
2271
|
-
case '
|
|
2299
|
+
case 'reset-filters':
|
|
2272
2300
|
this.handleClearFilters();
|
|
2273
2301
|
break;
|
|
2274
2302
|
case 'navigate-to-reports':
|
|
@@ -2293,7 +2321,7 @@ class AXPReportViewerPageComponent extends AXPPageLayoutBaseComponent {
|
|
|
2293
2321
|
provide: AXPPageLayoutBase,
|
|
2294
2322
|
useExisting: AXPReportViewerPageComponent,
|
|
2295
2323
|
},
|
|
2296
|
-
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-layout-renderer #filtersForm [layout]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\" [look]=\"'group'\"\n (contextChange)=\"handleFiltersChange($event)\" (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-layout-renderer>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-button
|
|
2324
|
+
], viewQueries: [{ propertyName: "filtersForm", first: true, predicate: ["filtersForm"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-layout-renderer #filtersForm [layout]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\" [look]=\"'group'\"\n (contextChange)=\"handleFiltersChange($event)\" (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-layout-renderer>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-dropdown-button class=\"ax-w-full\" [disabled]=\"!vm.canExecute()\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n [mode]=\"'split'\" (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n <ax-button-item-list>\n <ax-button-item [text]=\"(t('@general:actions.reset.title') | async)!\"\n (onClick)=\"execute({ name: 'reset-filters' })\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-filter-slash\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (vm.hasError()) {\n <!-- Error State -->\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\" look=\"error\"\n [title]=\"'@report-management:features.report-viewer.error.title'\"\n [description]=\"vm.error() || 'An unexpected error occurred'\">\n <div slot=\"actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.error.retry') | async\" (onClick)=\"vm.clearError()\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-refresh\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </axp-state-message>\n } @else if (!vm.reportDefinition()) {\n <!-- No Report Selected State -->\n <axp-state-message icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:features.report-viewer.no-report.title'\"\n [description]=\"'@report-management:features.report-viewer.no-report.description'\">\n <div slot=\"actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </axp-state-message>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;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: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;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))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$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: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.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: AXTranslationModule }, { kind: "directive", type: i1$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i5.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i6.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type:
|
|
2297
2325
|
//
|
|
2298
2326
|
AXPLayoutRendererComponent, selector: "axp-layout-renderer", inputs: ["layout", "context", "look", "mode"], outputs: ["contextChange", "contextInitiated", "validityChange"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPThemeLayoutHeaderComponent, selector: "axp-layout-header" }, { 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: AXPReportTableViewComponent, selector: "axp-report-table-view" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer, axp-layout-page-footer" }, { kind: "component", type: AXPReportChartViewComponent, selector: "axp-report-chart-view" }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2299
2327
|
}
|
|
@@ -2325,7 +2353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
2325
2353
|
provide: AXPPageLayoutBase,
|
|
2326
2354
|
useExisting: AXPReportViewerPageComponent,
|
|
2327
2355
|
},
|
|
2328
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-layout-renderer #filtersForm [layout]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\" [look]=\"'group'\"\n (contextChange)=\"handleFiltersChange($event)\" (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-layout-renderer>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-button
|
|
2356
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'axp-report-viewer-page' }, template: "<axp-page-layout *translate=\"let t\">\n <!-- Left Panel: Filters (Always visible for desktop) -->\n @if (showFiltersPanel()) {\n <axp-layout-start-side>\n <axp-layout-header>\n <axp-layout-title>\n {{ t('@report-management:features.report-viewer.filters.title') | async }}\n </axp-layout-title>\n </axp-layout-header>\n <axp-layout-content>\n <div class=\"__filters-container\">\n <axp-layout-renderer #filtersForm [layout]=\"vm.formDefinition()\" [context]=\"vm.filterContext()\" [look]=\"'group'\"\n (contextChange)=\"handleFiltersChange($event)\" (contextInitiated)=\"handleFiltersInitiated($event)\">\n </axp-layout-renderer>\n </div>\n </axp-layout-content>\n <axp-layout-footer class=\"ax-p-4 ax-border-t\" *translate=\"let t\">\n @if (vm.hasUnappliedFilters()) {\n <div class=\"ax-w-full ax-warning-lightest ax-mb-2 ax-p-2 ax-rounded ax-border ax-border-warning-200\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-text-warning-800\">\n <ax-icon class=\"fa-light fa-exclamation-triangle ax-text-sm\"></ax-icon>\n <span class=\"ax-text-xs\">Filters have been changed but not applied. Click 'Execute Report' to apply\n changes.</span>\n </div>\n </div>\n }\n <ax-dropdown-button class=\"ax-w-full\" [disabled]=\"!vm.canExecute()\"\n [text]=\"t('@report-management:features.report-viewer.actions.execute') | async\" [color]=\"'primary'\"\n [mode]=\"'split'\" (onClick)=\"execute({ name: 'execute-report' })\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-play\"></ax-icon>\n </ax-prefix>\n <ax-button-item-list>\n <ax-button-item [text]=\"(t('@general:actions.reset.title') | async)!\"\n (onClick)=\"execute({ name: 'reset-filters' })\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-filter-slash\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </axp-layout-footer>\n </axp-layout-start-side>\n }\n\n <axp-page-toolbar>\n <axp-layout-prefix>\n @if (vm.hasMultipleLayouts()) {\n <ax-button [text]=\"vm.currentLayout()?.title\">\n <ax-icon icon=\"fa-light {{ vm.currentLayout()?.icon }}\"></ax-icon>\n <ax-dropdown-panel>\n @for (layout of vm.availableLayouts(); track layout.id) {\n <ax-button-item-list>\n <ax-button-item [text]=\"layout.title\" [selected]=\"vm.currentLayout()?.id === layout.id\"\n (onClick)=\"vm.switchLayout(layout.id)\">\n <ax-icon icon=\"fa-light {{ layout.icon }}\"></ax-icon>\n </ax-button-item>\n </ax-button-item-list>\n }\n </ax-dropdown-panel>\n </ax-button>\n }\n </axp-layout-prefix>\n <axp-layout-suffix> </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Main Content: Report Display -->\n <axp-page-content class=\"ax-overflow-auto\">\n @if (vm.hasError()) {\n <!-- Error State -->\n <axp-state-message icon=\"fa-light fa-exclamation-triangle\" look=\"error\"\n [title]=\"'@report-management:features.report-viewer.error.title'\"\n [description]=\"vm.error() || 'An unexpected error occurred'\">\n <div slot=\"actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.error.retry') | async\" (onClick)=\"vm.clearError()\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-refresh\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </axp-state-message>\n } @else if (!vm.reportDefinition()) {\n <!-- No Report Selected State -->\n <axp-state-message icon=\"fa-light fa-chart-line\"\n [title]=\"'@report-management:features.report-viewer.no-report.title'\"\n [description]=\"'@report-management:features.report-viewer.no-report.description'\">\n <div slot=\"actions\">\n <ax-button look=\"outline\" color=\"primary\"\n [text]=\"t('@report-management:features.report-viewer.no-report.browse-reports') | async\">\n <ax-prefix>\n <ax-icon class=\"fa-light fa-folder-open\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </axp-state-message>\n } @else {\n <ng-container *ngTemplateOutlet=\"reportDisplay\"></ng-container>\n }\n </axp-page-content>\n</axp-page-layout>\n\n<!-- Report Display Area -->\n<ng-template #reportDisplay>\n @if (vm.isTableLayout()) {\n <axp-report-table-view> </axp-report-table-view>\n } @else if (vm.isChartLayout()) {\n <axp-report-chart-view> </axp-report-chart-view>\n }\n</ng-template>", styles: [".axp-report-viewer-page{display:flex;height:100%;width:100%;flex-direction:column}.axp-report-viewer-page axp-layout-start-side{height:100%;width:20rem;border-inline-end-width:1px;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: 1920px){.axp-report-viewer-page axp-layout-start-side{width:24rem}}.axp-report-viewer-page axp-layout-start-side>axp-layout-header{height:73px;border-bottom-width:1px}.axp-report-viewer-page axp-layout-start-side axp-layout-content{overflow-x:auto;padding:.5rem}.axp-report-viewer-page .__mobile-filters{flex-shrink:0;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding:1rem;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))}.axp-report-viewer-page axp-page-content{display:flex;height:100%;flex-direction:column}.axp-report-viewer-page axp-report-table-view{flex:1 1 0%;overflow:hidden}\n"] }]
|
|
2329
2357
|
}] });
|
|
2330
2358
|
|
|
2331
2359
|
var reportViewerPage_component = /*#__PURE__*/Object.freeze({
|