@acorex-platform/framework-client 0.0.38 → 0.0.48
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/fesm2022/acorex-platform-framework-client-auth.mjs +212 -44
- package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs → acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs} +31 -1
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common.mjs +1172 -193
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-core.mjs +233 -132
- package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +295 -59
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs} +10 -6
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs +66 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs +195 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +4015 -1014
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +1179 -304
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CvaOWbJx.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-UkQsf84C.mjs} +1701 -300
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-UkQsf84C.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Ds63Rt2n.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DmmiDLZw.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-Ds63Rt2n.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-DmmiDLZw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C0pohwdo.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-BOFTb66c.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-C0pohwdo.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-BOFTb66c.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-o2HuZrDN.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-Bg-cMOlQ.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-o2HuZrDN.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-Bg-cMOlQ.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +2 -2
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +47 -8
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +3854 -3292
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DJNSBNVe.mjs +33319 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DJNSBNVe.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs} +8 -5
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs +45 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs +68 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs +88 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs +71 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs +81 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs} +41 -23
- package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CKtGsWPI.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-CKtGsWPI.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs +71 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs +111 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs +77 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DYxgwR2E.mjs} +21 -8
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-DYxgwR2E.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs +124 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs +345 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -31985
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs +2 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-runtime.mjs +2 -2
- package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-CT7WWWG0.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DlS4v_zb.mjs} +3 -3
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-DlS4v_zb.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DBmdBKBL.mjs +122 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DBmdBKBL.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CkpRT1a9.mjs} +3 -3
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CkpRT1a9.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +424 -103
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs → acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs} +102 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +174 -22
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/package.json +2 -2
- package/realtime/README.md +1 -1
- package/types/acorex-platform-framework-client-auth.d.ts +18 -1
- package/types/acorex-platform-framework-client-common.d.ts +243 -9
- package/types/acorex-platform-framework-client-core.d.ts +152 -119
- package/types/acorex-platform-framework-client-layout-builder.d.ts +29 -0
- package/types/acorex-platform-framework-client-layout-components.d.ts +717 -147
- package/types/acorex-platform-framework-client-layout-designer.d.ts +192 -14
- package/types/acorex-platform-framework-client-layout-entity.d.ts +167 -92
- package/types/acorex-platform-framework-client-layout-views.d.ts +23 -1
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +148 -40
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +261 -119
- package/types/acorex-platform-framework-client-realtime.d.ts +16 -3
- package/types/acorex-platform-framework-client-themes-default.d.ts +62 -11
- package/types/acorex-platform-framework-client-themes-shared.d.ts +25 -2
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs +0 -77
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CvaOWbJx.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-create-view.component-CT7WWWG0.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DienTcPE.mjs +0 -122
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DienTcPE.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +0 -1
|
@@ -29,23 +29,24 @@ import * as i2 from '@acorex/core/utils';
|
|
|
29
29
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
30
30
|
import { AXPAuthModule, AXPSessionService, AXPSessionStatus } from '@acorex-platform/framework-client/auth';
|
|
31
31
|
import * as i1$3 from '@acorex-platform/framework-client/core';
|
|
32
|
-
import { AXPEntityBroadcastService, AXPDeviceService, AXHighlightService, AXPComponentSlotModule, AXPKeyboardShortcutRegistry, AXPLogoComponent, AXPBroadcastEventService, AXPContextStore } from '@acorex-platform/framework-client/core';
|
|
33
|
-
import { getDataSourcePageIndex, applyDataSourcePagingWithoutLoad, AXPEntityCardComponent, AXPEntityCardSkeletonComponent, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXPEntityDefinitionRegistryService, AXPCategoryTreeService, traceEntityMasterList, buildDataSourceTraceSnapshot, AXPEntityListViewColumnViewModel, restoreEntityListExpandedRows, AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';
|
|
34
|
-
import { mergeInfiniteScrollPage, AXPInfiniteScrollDirective, AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutToolbarComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent,
|
|
35
|
-
import { resolveEntityCardAvatarPath } from '@acorex-platform/framework-shared/entity';
|
|
32
|
+
import { AXPEntityBroadcastService, AXPDeviceService, AXHighlightService, AXPPageContextRegistry, AXPPageContextPriority, AXPComponentSlotModule, AXPKeyboardShortcutRegistry, AXPLogoComponent, AXPBroadcastEventService, AXPContextStore } from '@acorex-platform/framework-client/core';
|
|
33
|
+
import { getDataSourcePageIndex, applyDataSourcePagingWithoutLoad, AXPEntityCardComponent, AXPEntityCardSkeletonComponent, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, AXPEntityDefinitionRegistryService, AXPCategoryTreeService, traceEntityMasterList, buildDataSourceTraceSnapshot, AXPEntityListViewColumnViewModel, getEntityInfo, axpRunEntityListPageContextAction, axpBuildEntityListPageContextSnapshot, restoreEntityListExpandedRows, AXP_ENTITY_CONFIG_TOKEN } from '@acorex-platform/framework-client/layout/entity';
|
|
34
|
+
import { mergeInfiniteScrollPage, AXPInfiniteScrollDirective, AXPStateMessageComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutToolbarComponent, AXPQueryViewSaveDialogService, AXPEntityListStylingDialogService, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewSaveButtonComponent, AXPQueryViewTabsComponent, AXPQueryColumnsComponent, AXPThemeLayoutStartSideComponent, AXPTaskBadgeService, AXPMenuBadgeHelper, AXPTaskBadgeDirective, provideFileChooserHooks } from '@acorex-platform/framework-client/layout/components';
|
|
35
|
+
import { resolveEntityCardAvatarPath, listEntityMasterStylingLockedRules, withQueryViewFilterVisibility } from '@acorex-platform/framework-shared/entity';
|
|
36
36
|
import * as i1 from '@angular/common';
|
|
37
37
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
38
38
|
import * as i0 from '@angular/core';
|
|
39
|
-
import { input, signal, computed, viewChild, effect, untracked, afterRenderEffect, ChangeDetectionStrategy, Component, inject, ViewChild, Input, ViewEncapsulation, afterNextRender, Injector, output,
|
|
39
|
+
import { input, signal, computed, viewChild, effect, untracked, afterRenderEffect, ChangeDetectionStrategy, Component, inject, ViewChild, Input, ViewEncapsulation, afterNextRender, Injector, output, DestroyRef, ElementRef, NgModule } from '@angular/core';
|
|
40
40
|
import { get, isEqual, sortBy } from 'lodash-es';
|
|
41
41
|
import * as i7$1 from '@acorex-platform/framework-client/layout/widget-core';
|
|
42
42
|
import { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
|
|
43
43
|
import { AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';
|
|
44
|
-
import { AXPLayoutThemeService,
|
|
44
|
+
import { AXPLayoutThemeService, AXPMenuVerticalMode, AXPThemeLayoutSetting, AXPThemesSharedModule } from '@acorex-platform/framework-client/themes/shared';
|
|
45
45
|
import { FormsModule } from '@angular/forms';
|
|
46
46
|
import * as i1$4 from '@angular/router';
|
|
47
47
|
import { RouterModule, Router, ActivatedRoute, NavigationStart, NavigationEnd, RouteReuseStrategy, ROUTES } from '@angular/router';
|
|
48
|
-
import { Subject, takeUntil, filter, combineLatest, firstValueFrom } from 'rxjs';
|
|
48
|
+
import { Subject, takeUntil, filter, combineLatest, firstValueFrom, take } from 'rxjs';
|
|
49
|
+
import { runtimeCommandPayloadData, isThemeSurfaceClass, isRuntimeHexSurfaceClass, AXP_THEME_SURFACE_STYLES, createRandomUuid, AXPKeyboardShortcutPriority } from '@acorex-platform/framework-shared/core';
|
|
49
50
|
import * as i1$2 from '@acorex/core/platform';
|
|
50
51
|
import { AXPSettingsService, AXPCommonSettings, axpIsEntityListRoute, axpReplaceEntityListRouteQueryParams, axpIsEntityListPath, AXPTabNavigationService, AXPTabPreviewService, AXP_HOME_TAB_KEY, axpResolveTabTitleParts, AXPMenuService, AXPMenuVisibilityService, axpMenuPathsMatch, AXPPlatformBrandingService, AXPTabRouteCacheRegistry, axpResolveTabKeyFromSnapshot, axpHasTabScope, axpPathFromSnapshot, axpIsTabEligibleUrl, axpResolveTabKeyFromRouteConfig, AXP_PROTECTED_ROUTE_GUARDS, AXPCommonModule } from '@acorex-platform/framework-client/common';
|
|
51
52
|
import { DragDropModule, CdkDropList, CdkDrag, CdkDragHandle, CdkDragPreview } from '@angular/cdk/drag-drop';
|
|
@@ -55,8 +56,8 @@ import * as i2$2 from '@acorex/components/skeleton';
|
|
|
55
56
|
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
56
57
|
import { AXTreeViewModule, AXTreeViewComponent } from '@acorex/components/tree-view';
|
|
57
58
|
import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
|
|
58
|
-
import { runtimeCommandPayloadData, AXP_THEME_SURFACE_STYLES, AXPKeyboardShortcutPriority } from '@acorex-platform/framework-shared/core';
|
|
59
59
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
60
|
+
import { AXToastService } from '@acorex/components/toast';
|
|
60
61
|
import * as i4$1 from '@acorex/components/menu';
|
|
61
62
|
import { AXContextMenuComponent, AXMenuModule } from '@acorex/components/menu';
|
|
62
63
|
import * as i2$4 from '@acorex/components/side-menu';
|
|
@@ -79,6 +80,8 @@ class AXPEntityMasterListCardListComponent {
|
|
|
79
80
|
//#region ----- Inputs & Outputs -----
|
|
80
81
|
this.vm = input.required(/* @ts-ignore */
|
|
81
82
|
...(ngDevMode ? [{ debugName: "vm" }] : /* istanbul ignore next */ []));
|
|
83
|
+
this.userStylingRules = input([], /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "userStylingRules" }] : /* istanbul ignore next */ []));
|
|
82
85
|
//#endregion
|
|
83
86
|
//#region ----- State -----
|
|
84
87
|
this.items = signal([], /* @ts-ignore */
|
|
@@ -410,7 +413,7 @@ class AXPEntityMasterListCardListComponent {
|
|
|
410
413
|
});
|
|
411
414
|
}
|
|
412
415
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterListCardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
413
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterListCardListComponent, isStandalone: true, selector: "axp-entity-master-list-card-list", inputs: { vm: { classPropertyName: "vm", publicName: "vm", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "cardGrid", first: true, predicate: ["cardGrid"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-entity-card-list\" [class.axp-entity-card-list--rows]=\"isRowLayout()\">\n @if (loading() && !items().length) {\n <!-- ----- Skeleton cards while the first page is fetched ----- -->\n <div class=\"axp-entity-card-list__grid\" aria-busy=\"true\" aria-live=\"polite\">\n @for (index of skeletonPlaceholders(); track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n </div>\n } @else if (!items().length) {\n <!-- ----- Empty state when the list has no rows ----- -->\n <div class=\"axp-entity-card-list__empty\">\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@general:empty-states.no-records-found.title'\"\n [description]=\"'@general:empty-states.no-records-found.description'\"\n ></axp-state-message>\n </div>\n } @else {\n <!-- ----- Accumulated card grid with infinite scroll ----- -->\n <div #cardGrid class=\"axp-entity-card-list__grid\">\n @for (row of items(); track trackRow($index, row)) {\n <!--->\n <!-- ----- Render a card when the row record is present ----- -->\n @if (row) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card\n [entity]=\"vm().entityDef\"\n [layout]=\"vm().cardLayout()\"\n [row]=\"row\"\n [fields]=\"vm().cardFields()\"\n [variant]=\"isRowLayout() ? 'row' : 'card'\"\n [interactive]=\"true\"\n [fillHost]=\"true\"\n [extraExpanded]=\"isCardExpanded(row)\"\n [showSelection]=\"showSelection()\"\n [selected]=\"isRowSelected(row)\"\n [showNewBadge]=\"isRowHighlighted(row)\"\n [primaryActions]=\"vm().primaryRowActions()\"\n [secondaryActionLoader]=\"loadSecondaryActions\"\n (extraExpandedChange)=\"onCardExtraExpanded($index, $event)\"\n (selectionChange)=\"onRowSelectionChange(row, $event)\"\n (commandClick)=\"onCommandClick($event, row)\"\n />\n </div>\n }\n }\n <!--->\n <!-- ----- Skeleton cards while the next chunk is fetched ----- -->\n @if (loadingMore()) {\n @for (index of loadMoreSkeletonPlaceholders; track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n }\n <div\n axpInfiniteScroll\n class=\"axp-entity-card-list__sentinel\"\n [axpInfiniteScrollEnabled]=\"canLoadMore()\"\n (axpInfiniteScrollReached)=\"onInfiniteScrollReached()\"\n ></div>\n </div>\n <!--------------------------------------------------------------->\n <!-- ----- Compact loaded count, pinned under the scrolling grid ----- -->\n @if (showListStatus()) {\n <div class=\"axp-entity-card-list__status\" aria-live=\"polite\">\n {{\n '@general:terms.interface.list-range'\n | translate: { params: { loaded: loadedCount(), total: totalCount() } }\n | async\n }}\n </div>\n }\n }\n</div>\n", styles: ["@layer properties;:host.axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column;overflow:hidden}.axp-entity-card-list{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem)}.axp-entity-card-list .axp-entity-card-list__empty{display:flex;min-height:0px;flex:1;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;--tw-border-style: dashed;border-style:dashed;border-color:rgba(var(--ax-sys-color-lightest-surface))}.axp-entity-card-list .axp-entity-card-list__grid{display:grid;min-height:0px;flex:1;grid-template-columns:repeat(1,minmax(0,1fr));align-items:stretch;gap:calc(var(--spacing, .25rem) * 2);overflow:auto;
|
|
416
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterListCardListComponent, isStandalone: true, selector: "axp-entity-master-list-card-list", inputs: { vm: { classPropertyName: "vm", publicName: "vm", isSignal: true, isRequired: true, transformFunction: null }, userStylingRules: { classPropertyName: "userStylingRules", publicName: "userStylingRules", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "cardGrid", first: true, predicate: ["cardGrid"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-entity-card-list\" [class.axp-entity-card-list--rows]=\"isRowLayout()\">\n @if (loading() && !items().length) {\n <!-- ----- Skeleton cards while the first page is fetched ----- -->\n <div class=\"axp-entity-card-list__grid\" aria-busy=\"true\" aria-live=\"polite\">\n @for (index of skeletonPlaceholders(); track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n </div>\n } @else if (!items().length) {\n <!-- ----- Empty state when the list has no rows ----- -->\n <div class=\"axp-entity-card-list__empty\">\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@general:empty-states.no-records-found.title'\"\n [description]=\"'@general:empty-states.no-records-found.description'\"\n ></axp-state-message>\n </div>\n } @else {\n <!-- ----- Accumulated card grid with infinite scroll ----- -->\n <div #cardGrid class=\"axp-entity-card-list__grid\">\n @for (row of items(); track trackRow($index, row)) {\n <!--->\n <!-- ----- Render a card when the row record is present ----- -->\n @if (row) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card\n [entity]=\"vm().entityDef\"\n [layout]=\"vm().cardLayout()\"\n [row]=\"row\"\n [fields]=\"vm().cardFields()\"\n [userStylingRules]=\"userStylingRules()\"\n [variant]=\"isRowLayout() ? 'row' : 'card'\"\n [interactive]=\"true\"\n [fillHost]=\"true\"\n [extraExpanded]=\"isCardExpanded(row)\"\n [showSelection]=\"showSelection()\"\n [selected]=\"isRowSelected(row)\"\n [showNewBadge]=\"isRowHighlighted(row)\"\n [primaryActions]=\"vm().primaryRowActions()\"\n [secondaryActionLoader]=\"loadSecondaryActions\"\n (extraExpandedChange)=\"onCardExtraExpanded($index, $event)\"\n (selectionChange)=\"onRowSelectionChange(row, $event)\"\n (commandClick)=\"onCommandClick($event, row)\"\n />\n </div>\n }\n }\n <!--->\n <!-- ----- Skeleton cards while the next chunk is fetched ----- -->\n @if (loadingMore()) {\n @for (index of loadMoreSkeletonPlaceholders; track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n }\n <div\n axpInfiniteScroll\n class=\"axp-entity-card-list__sentinel\"\n [axpInfiniteScrollEnabled]=\"canLoadMore()\"\n (axpInfiniteScrollReached)=\"onInfiniteScrollReached()\"\n ></div>\n </div>\n <!--------------------------------------------------------------->\n <!-- ----- Compact loaded count, pinned under the scrolling grid ----- -->\n @if (showListStatus()) {\n <div class=\"axp-entity-card-list__status\" aria-live=\"polite\">\n {{\n '@general:terms.interface.list-range'\n | translate: { params: { loaded: loadedCount(), total: totalCount() } }\n | async\n }}\n </div>\n }\n }\n</div>\n", styles: ["@layer properties;:host.axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column;overflow:hidden}.axp-entity-card-list{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-inline:calc(var(--spacing, .25rem) * 3)}.axp-entity-card-list .axp-entity-card-list__empty{display:flex;min-height:0px;flex:1;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;--tw-border-style: dashed;border-style:dashed;border-color:rgba(var(--ax-sys-color-lightest-surface))}.axp-entity-card-list .axp-entity-card-list__grid{display:grid;min-height:0px;flex:1;grid-template-columns:repeat(1,minmax(0,1fr));align-items:stretch;gap:calc(var(--spacing, .25rem) * 2);overflow:auto;align-content:start;grid-auto-rows:auto}@media(width>=48rem){.axp-entity-card-list .axp-entity-card-list__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=80rem){.axp-entity-card-list .axp-entity-card-list__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.axp-entity-card-list .axp-entity-card-list__cell{display:flex;min-width:0;flex-direction:column}.axp-entity-card-list .axp-entity-card-list__cell>axp-entity-card,.axp-entity-card-list .axp-entity-card-list__cell>axp-entity-card-skeleton{display:flex;width:100%;min-width:0;flex:1 1 auto;flex-direction:column}.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:calc(var(--spacing, .25rem) * 2)}@media(width>=48rem){.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr))}}@media(width>=80rem){.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr))}}.axp-entity-card-list .axp-entity-card-list__sentinel{grid-column:1 / -1;height:1px;width:100%}.axp-entity-card-list .axp-entity-card-list__status{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;padding-top:calc(var(--spacing, .25rem) * .5);padding-bottom:var(--spacing, .25rem);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axp-entity-card-list .axp-entity-card-list__status{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AXPEntityCardComponent, selector: "axp-entity-card", inputs: ["entity", "layout", "row", "fields", "userStylingRules", "variant", "interactive", "embedded", "elevated", "disableLookupPopover", "fillHost", "extraExpanded", "selected", "showNewBadge", "showSelection", "showClose", "primaryActions", "primaryActionLook", "secondaryActionLoader"], outputs: ["extraExpandedChange", "selectionChange", "commandClick", "closeClick"] }, { kind: "component", type: AXPEntityCardSkeletonComponent, selector: "axp-entity-card-skeleton", inputs: ["fieldCount", "badgeCount", "showFooter", "showHeaderMenu", "showContent", "rowLayout", "showAvatar", "fillHost", "embedded", "elevated"] }, { kind: "directive", type: AXPInfiniteScrollDirective, selector: "[axpInfiniteScroll]", inputs: ["axpInfiniteScrollEnabled", "axpInfiniteScrollRoot", "axpInfiniteScrollRootMargin", "axpInfiniteScrollThreshold"], outputs: ["axpInfiniteScrollReached"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
414
417
|
}
|
|
415
418
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterListCardListComponent, decorators: [{
|
|
416
419
|
type: Component,
|
|
@@ -421,8 +424,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
421
424
|
AXPInfiniteScrollDirective,
|
|
422
425
|
AXPStateMessageComponent,
|
|
423
426
|
AXTranslationModule,
|
|
424
|
-
], template: "<div class=\"axp-entity-card-list\" [class.axp-entity-card-list--rows]=\"isRowLayout()\">\n @if (loading() && !items().length) {\n <!-- ----- Skeleton cards while the first page is fetched ----- -->\n <div class=\"axp-entity-card-list__grid\" aria-busy=\"true\" aria-live=\"polite\">\n @for (index of skeletonPlaceholders(); track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n </div>\n } @else if (!items().length) {\n <!-- ----- Empty state when the list has no rows ----- -->\n <div class=\"axp-entity-card-list__empty\">\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@general:empty-states.no-records-found.title'\"\n [description]=\"'@general:empty-states.no-records-found.description'\"\n ></axp-state-message>\n </div>\n } @else {\n <!-- ----- Accumulated card grid with infinite scroll ----- -->\n <div #cardGrid class=\"axp-entity-card-list__grid\">\n @for (row of items(); track trackRow($index, row)) {\n <!--->\n <!-- ----- Render a card when the row record is present ----- -->\n @if (row) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card\n [entity]=\"vm().entityDef\"\n [layout]=\"vm().cardLayout()\"\n [row]=\"row\"\n [fields]=\"vm().cardFields()\"\n [variant]=\"isRowLayout() ? 'row' : 'card'\"\n [interactive]=\"true\"\n [fillHost]=\"true\"\n [extraExpanded]=\"isCardExpanded(row)\"\n [showSelection]=\"showSelection()\"\n [selected]=\"isRowSelected(row)\"\n [showNewBadge]=\"isRowHighlighted(row)\"\n [primaryActions]=\"vm().primaryRowActions()\"\n [secondaryActionLoader]=\"loadSecondaryActions\"\n (extraExpandedChange)=\"onCardExtraExpanded($index, $event)\"\n (selectionChange)=\"onRowSelectionChange(row, $event)\"\n (commandClick)=\"onCommandClick($event, row)\"\n />\n </div>\n }\n }\n <!--->\n <!-- ----- Skeleton cards while the next chunk is fetched ----- -->\n @if (loadingMore()) {\n @for (index of loadMoreSkeletonPlaceholders; track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n }\n <div\n axpInfiniteScroll\n class=\"axp-entity-card-list__sentinel\"\n [axpInfiniteScrollEnabled]=\"canLoadMore()\"\n (axpInfiniteScrollReached)=\"onInfiniteScrollReached()\"\n ></div>\n </div>\n <!--------------------------------------------------------------->\n <!-- ----- Compact loaded count, pinned under the scrolling grid ----- -->\n @if (showListStatus()) {\n <div class=\"axp-entity-card-list__status\" aria-live=\"polite\">\n {{\n '@general:terms.interface.list-range'\n | translate: { params: { loaded: loadedCount(), total: totalCount() } }\n | async\n }}\n </div>\n }\n }\n</div>\n", styles: ["@layer properties;:host.axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column;overflow:hidden}.axp-entity-card-list{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem)}.axp-entity-card-list .axp-entity-card-list__empty{display:flex;min-height:0px;flex:1;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;--tw-border-style: dashed;border-style:dashed;border-color:rgba(var(--ax-sys-color-lightest-surface))}.axp-entity-card-list .axp-entity-card-list__grid{display:grid;min-height:0px;flex:1;grid-template-columns:repeat(1,minmax(0,1fr));align-items:stretch;gap:calc(var(--spacing, .25rem) * 2);overflow:auto;
|
|
425
|
-
}], ctorParameters: () => [], propDecorators: { vm: [{ type: i0.Input, args: [{ isSignal: true, alias: "vm", required: true }] }], cardGrid: [{ type: i0.ViewChild, args: ['cardGrid', { isSignal: true }] }] } });
|
|
427
|
+
], template: "<div class=\"axp-entity-card-list\" [class.axp-entity-card-list--rows]=\"isRowLayout()\">\n @if (loading() && !items().length) {\n <!-- ----- Skeleton cards while the first page is fetched ----- -->\n <div class=\"axp-entity-card-list__grid\" aria-busy=\"true\" aria-live=\"polite\">\n @for (index of skeletonPlaceholders(); track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n </div>\n } @else if (!items().length) {\n <!-- ----- Empty state when the list has no rows ----- -->\n <div class=\"axp-entity-card-list__empty\">\n <axp-state-message\n icon=\"fa-light fa-clipboard-list\"\n [title]=\"'@general:empty-states.no-records-found.title'\"\n [description]=\"'@general:empty-states.no-records-found.description'\"\n ></axp-state-message>\n </div>\n } @else {\n <!-- ----- Accumulated card grid with infinite scroll ----- -->\n <div #cardGrid class=\"axp-entity-card-list__grid\">\n @for (row of items(); track trackRow($index, row)) {\n <!--->\n <!-- ----- Render a card when the row record is present ----- -->\n @if (row) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card\n [entity]=\"vm().entityDef\"\n [layout]=\"vm().cardLayout()\"\n [row]=\"row\"\n [fields]=\"vm().cardFields()\"\n [userStylingRules]=\"userStylingRules()\"\n [variant]=\"isRowLayout() ? 'row' : 'card'\"\n [interactive]=\"true\"\n [fillHost]=\"true\"\n [extraExpanded]=\"isCardExpanded(row)\"\n [showSelection]=\"showSelection()\"\n [selected]=\"isRowSelected(row)\"\n [showNewBadge]=\"isRowHighlighted(row)\"\n [primaryActions]=\"vm().primaryRowActions()\"\n [secondaryActionLoader]=\"loadSecondaryActions\"\n (extraExpandedChange)=\"onCardExtraExpanded($index, $event)\"\n (selectionChange)=\"onRowSelectionChange(row, $event)\"\n (commandClick)=\"onCommandClick($event, row)\"\n />\n </div>\n }\n }\n <!--->\n <!-- ----- Skeleton cards while the next chunk is fetched ----- -->\n @if (loadingMore()) {\n @for (index of loadMoreSkeletonPlaceholders; track index) {\n <div class=\"axp-entity-card-list__cell\">\n <axp-entity-card-skeleton\n [fieldCount]=\"skeletonFieldCount()\"\n [badgeCount]=\"skeletonBadgeCount()\"\n [showContent]=\"true\"\n [showFooter]=\"skeletonShowFooter()\"\n [rowLayout]=\"isRowLayout()\"\n [showAvatar]=\"showSkeletonAvatar()\"\n [fillHost]=\"true\"\n />\n </div>\n }\n }\n <div\n axpInfiniteScroll\n class=\"axp-entity-card-list__sentinel\"\n [axpInfiniteScrollEnabled]=\"canLoadMore()\"\n (axpInfiniteScrollReached)=\"onInfiniteScrollReached()\"\n ></div>\n </div>\n <!--------------------------------------------------------------->\n <!-- ----- Compact loaded count, pinned under the scrolling grid ----- -->\n @if (showListStatus()) {\n <div class=\"axp-entity-card-list__status\" aria-live=\"polite\">\n {{\n '@general:terms.interface.list-range'\n | translate: { params: { loaded: loadedCount(), total: totalCount() } }\n | async\n }}\n </div>\n }\n }\n</div>\n", styles: ["@layer properties;:host.axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column;overflow:hidden}.axp-entity-card-list{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-inline:calc(var(--spacing, .25rem) * 3)}.axp-entity-card-list .axp-entity-card-list__empty{display:flex;min-height:0px;flex:1;align-items:center;justify-content:center;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;--tw-border-style: dashed;border-style:dashed;border-color:rgba(var(--ax-sys-color-lightest-surface))}.axp-entity-card-list .axp-entity-card-list__grid{display:grid;min-height:0px;flex:1;grid-template-columns:repeat(1,minmax(0,1fr));align-items:stretch;gap:calc(var(--spacing, .25rem) * 2);overflow:auto;align-content:start;grid-auto-rows:auto}@media(width>=48rem){.axp-entity-card-list .axp-entity-card-list__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(width>=80rem){.axp-entity-card-list .axp-entity-card-list__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.axp-entity-card-list .axp-entity-card-list__cell{display:flex;min-width:0;flex-direction:column}.axp-entity-card-list .axp-entity-card-list__cell>axp-entity-card,.axp-entity-card-list .axp-entity-card-list__cell>axp-entity-card-skeleton{display:flex;width:100%;min-width:0;flex:1 1 auto;flex-direction:column}.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr));gap:calc(var(--spacing, .25rem) * 2)}@media(width>=48rem){.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr))}}@media(width>=80rem){.axp-entity-card-list.axp-entity-card-list--rows .axp-entity-card-list__grid{grid-template-columns:repeat(1,minmax(0,1fr))}}.axp-entity-card-list .axp-entity-card-list__sentinel{grid-column:1 / -1;height:1px;width:100%}.axp-entity-card-list .axp-entity-card-list__status{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;padding-top:calc(var(--spacing, .25rem) * .5);padding-bottom:var(--spacing, .25rem);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:rgba(var(--ax-sys-color-text-default))}@supports (color: color-mix(in lab,red,red)){.axp-entity-card-list .axp-entity-card-list__status{color:color-mix(in oklab,rgba(var(--ax-sys-color-text-default)) 80%,transparent)}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
428
|
+
}], ctorParameters: () => [], propDecorators: { vm: [{ type: i0.Input, args: [{ isSignal: true, alias: "vm", required: true }] }], userStylingRules: [{ type: i0.Input, args: [{ isSignal: true, alias: "userStylingRules", required: false }] }], cardGrid: [{ type: i0.ViewChild, args: ['cardGrid', { isSignal: true }] }] } });
|
|
426
429
|
//#region ----- Helpers -----
|
|
427
430
|
function getRowId(row, key) {
|
|
428
431
|
if (isRowRecord(row)) {
|
|
@@ -616,9 +619,9 @@ class AXPEntityDetailListViewComponent {
|
|
|
616
619
|
this.destroy();
|
|
617
620
|
}
|
|
618
621
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailListViewComponent, deps: [{ token: i1$1.AXActionSheetService }, { token: i2.AXUnsubscriber }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
619
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityDetailListViewComponent, isStandalone: true, selector: "axp-entity-detail-list-view", inputs: { vm: ["viewModel", "vm"] }, providers: [AXUnsubscriber], viewQueries: [{ propertyName: "listDisplayModePopover", first: true, predicate: ["listDisplayModePopover"], descendants: true, isSignal: true }, { propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<div class=\"flex p-2\">\n <div class=\"flex flex-col items-stretch gap-3 flex-1 overflow-auto min-h-72\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex justify-start items-center gap-4\">\n @if (vm.hasSelectedItems()) {\n <div class=\"flex gap-3 items-center h-10\">\n <span class=\"text-xl font-bold\">\n {{ vm.selectedItems().length }}\n {{ '@general:terms.items-selected' | translate | async }}\n </span>\n <span\n (click)=\"vm.clearSelection()\"\n class=\"text-sm text-primary-500 underline cursor-pointer\"\n >{{ '@general:actions.unselect.title' | translate | async }}</span\n >\n </div>\n } @else {\n @if (vm.hasInlineFilters() && !deviceService.isSmall()) {\n <div class=\"w-72\">\n <ax-search-box\n [placeholder]=\"\n ('@general:widgets.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\n \"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"flex items-center gap-3\">\n @if (showListDisplayModeControl()) {\n <div>\n <ax-button [iconOnly]=\"true\" #listDisplayButton [color]=\"'default'\">\n <i [class]=\"listDisplayModeButtonIcon()\"></i>\n </ax-button>\n <ax-popover\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"listDisplayButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #listDisplayModePopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.interface.list-display' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-2\">\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasTableListDisplayOption() && (hasCardListDisplayOption() || hasRowListDisplayOption())) {\n <ax-divider />\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n @for (tr of toolbarPrimaryActions(); track $index) {\n <ax-button\n [text]=\"(tr.title | translate | async)!\"\n [color]=\"tr.color\"\n [disabled]=\"tr.disabled\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n }\n @if (toolbarSecondaryActions().length) {\n <ax-button\n [text]=\"deviceService.isSmall() ? null : ('@general:terms.interface.actions' | translate | async)\"\n [color]=\"'default'\"\n >\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (tr of toolbarSecondaryActions(); track $index) {\n <ng-container>\n @if (tr.separated && !$first) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"(tr.title | translate | async)!\"\n class=\"font-semibold text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n </div>\n\n @if (vm.enabledListLayouts().includes('table')) {\n <div class=\"flex flex-1 pt-0 overflow-auto max-w-full w-full\" [class.hidden]=\"vm.activeListLayout() !== 'table'\">\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm.parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n @if (vm.showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm.selectedScopeActionsCount()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\"\n [caption]=\"(col.title | translate | async)!\"\n [node]=\"col.node()\"\n ></axp-widget-column-renderer>\n }\n }\n @if (getCommandRowItems().length) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"getCommandRowItems().length * 60 + 'px'\"\n [items]=\"getCommandRowItems()\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-command-column>\n }\n @if (dropdownRowItems().length) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n </div>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host w-full min-h-0 flex-1\"\n [class.hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n ></axp-entity-master-list-card-list>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i3$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i8.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i8.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i8.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i8.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i8.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
|
|
622
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityDetailListViewComponent, isStandalone: true, selector: "axp-entity-detail-list-view", inputs: { vm: ["viewModel", "vm"] }, providers: [AXUnsubscriber], viewQueries: [{ propertyName: "listDisplayModePopover", first: true, predicate: ["listDisplayModePopover"], descendants: true, isSignal: true }, { propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<div class=\"flex p-2\">\n <div class=\"flex flex-col items-stretch gap-3 flex-1 overflow-auto min-h-72\">\n <div class=\"flex justify-between items-center w-full\">\n <div class=\"flex justify-between items-center\">\n <div class=\"flex justify-start items-center gap-4\">\n @if (vm.hasSelectedItems()) {\n <div class=\"flex gap-3 items-center h-10\">\n <span class=\"text-xl font-bold\">\n {{ vm.selectedItems().length }}\n {{ '@general:terms.items-selected' | translate | async }}\n </span>\n <span\n (click)=\"vm.clearSelection()\"\n class=\"text-sm text-primary-500 underline cursor-pointer\"\n >{{ '@general:actions.unselect.title' | translate | async }}</span\n >\n </div>\n } @else {\n @if (vm.hasInlineFilters() && !deviceService.isSmall()) {\n <div class=\"w-72\">\n <ax-search-box\n [placeholder]=\"\n ('@general:widgets.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\n \"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n }\n </div>\n </div>\n <div class=\"flex items-center gap-3\">\n @if (showListDisplayModeControl()) {\n <div>\n <ax-button [iconOnly]=\"true\" #listDisplayButton [color]=\"'default'\">\n <i [class]=\"listDisplayModeButtonIcon()\"></i>\n </ax-button>\n <ax-popover\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"listDisplayButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #listDisplayModePopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.interface.list-display' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-2\">\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasTableListDisplayOption() && (hasCardListDisplayOption() || hasRowListDisplayOption())) {\n <ax-divider />\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n @for (tr of toolbarPrimaryActions(); track $index) {\n <ax-button\n [text]=\"(tr.title | translate | async)!\"\n [color]=\"tr.color\"\n [disabled]=\"tr.disabled\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n }\n @if (toolbarSecondaryActions().length) {\n <ax-button\n [text]=\"deviceService.isSmall() ? null : ('@general:terms.interface.actions' | translate | async)\"\n [color]=\"'default'\"\n >\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (tr of toolbarSecondaryActions(); track $index) {\n <ng-container>\n @if (tr.separated && !$first) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"(tr.title | translate | async)!\"\n class=\"font-semibold text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n </div>\n\n @if (vm.enabledListLayouts().includes('table')) {\n <div class=\"flex flex-1 pt-0 overflow-auto max-w-full w-full\" [class.hidden]=\"vm.activeListLayout() !== 'table'\">\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm.parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n @if (vm.showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm.selectedScopeActionsCount()) {\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n }\n @for (col of vm.columns(); track col.name) {\n @if (col.visible) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && vm.parentKey() ? true : false\"\n [caption]=\"(col.title | translate | async)!\"\n [node]=\"col.node()\"\n ></axp-widget-column-renderer>\n }\n }\n @if (getCommandRowItems().length) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"getCommandRowItems().length * 60 + 'px'\"\n [items]=\"getCommandRowItems()\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-command-column>\n }\n @if (dropdownRowItems().length) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n }\n </ax-data-table>\n </div>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host w-full min-h-0 flex-1\"\n [class.hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n ></axp-entity-master-list-card-list>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i3$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i5.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i8.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i8.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i8.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed", "advanceSelect"] }, { kind: "component", type: i8.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i8.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
|
|
620
623
|
//
|
|
621
|
-
AXPWidgetCoreModule }, { kind: "component", type: i7$1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPEntityMasterListCardListComponent, selector: "axp-entity-master-list-card-list", inputs: ["vm"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
624
|
+
AXPWidgetCoreModule }, { kind: "component", type: i7$1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPEntityMasterListCardListComponent, selector: "axp-entity-master-list-card-list", inputs: ["vm", "userStylingRules"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
622
625
|
}
|
|
623
626
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityDetailListViewComponent, decorators: [{
|
|
624
627
|
type: Component,
|
|
@@ -1226,12 +1229,8 @@ class AXPEntityCategoryComponent {
|
|
|
1226
1229
|
});
|
|
1227
1230
|
}
|
|
1228
1231
|
const categoryFilters = this.buildCategoryFilters(nodeData, applyConditions);
|
|
1229
|
-
|
|
1230
|
-
this.vm().
|
|
1231
|
-
filters: [...viewFilters, ...categoryFilters],
|
|
1232
|
-
logic: 'and',
|
|
1233
|
-
});
|
|
1234
|
-
this.vm().events$.next({ action: 'refresh', meta: { resetPagination: true } });
|
|
1232
|
+
this.vm().setCategoryListFilters(categoryFilters);
|
|
1233
|
+
void this.vm().applyFilterAndSort({ resetPagination: true });
|
|
1235
1234
|
}
|
|
1236
1235
|
/**
|
|
1237
1236
|
* Handles node toggle events (expansion/collapse)
|
|
@@ -1656,18 +1655,11 @@ class AXPEntityCategoryComponent {
|
|
|
1656
1655
|
field: condition.name,
|
|
1657
1656
|
value,
|
|
1658
1657
|
operator: condition.operator,
|
|
1658
|
+
hidden: true,
|
|
1659
1659
|
};
|
|
1660
1660
|
})
|
|
1661
1661
|
.filter((item) => item !== null);
|
|
1662
1662
|
}
|
|
1663
|
-
/**
|
|
1664
|
-
* Builds view filters from view conditions
|
|
1665
|
-
*/
|
|
1666
|
-
buildViewFilters() {
|
|
1667
|
-
return this.vm()
|
|
1668
|
-
.view()
|
|
1669
|
-
.conditions.map((condition) => ({ ...condition, field: condition.name }));
|
|
1670
|
-
}
|
|
1671
1663
|
/**
|
|
1672
1664
|
* Refreshes the parent node of the given entity data
|
|
1673
1665
|
*/
|
|
@@ -1741,9 +1733,19 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1741
1733
|
this.activeRoute = inject(ActivatedRoute);
|
|
1742
1734
|
this.settingsService = inject(AXPSettingsService);
|
|
1743
1735
|
this.injector = inject(Injector);
|
|
1736
|
+
this.queryViewSaveDialog = inject(AXPQueryViewSaveDialogService);
|
|
1737
|
+
this.stylingDialog = inject(AXPEntityListStylingDialogService);
|
|
1738
|
+
this.translationService = inject(AXTranslationService);
|
|
1739
|
+
this.toastService = inject(AXToastService);
|
|
1744
1740
|
this.isInitializing = false;
|
|
1745
1741
|
this.pendingInitialSorts = true;
|
|
1746
1742
|
this.filterTriggerMode = 'manual';
|
|
1743
|
+
this.sortMenuOpen = signal(false, /* @ts-ignore */
|
|
1744
|
+
...(ngDevMode ? [{ debugName: "sortMenuOpen" }] : /* istanbul ignore next */ []));
|
|
1745
|
+
this.viewMenuOpen = signal(false, /* @ts-ignore */
|
|
1746
|
+
...(ngDevMode ? [{ debugName: "viewMenuOpen" }] : /* istanbul ignore next */ []));
|
|
1747
|
+
this.viewMenuPanel = signal('root', /* @ts-ignore */
|
|
1748
|
+
...(ngDevMode ? [{ debugName: "viewMenuPanel" }] : /* istanbul ignore next */ []));
|
|
1747
1749
|
this.previousFilterQueries = signal([], /* @ts-ignore */
|
|
1748
1750
|
...(ngDevMode ? [{ debugName: "previousFilterQueries" }] : /* istanbul ignore next */ []));
|
|
1749
1751
|
/** Gates query-filters until `initialFilters` are seeded (prevents empty emit wiping persisted filters). */
|
|
@@ -1755,9 +1757,10 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1755
1757
|
...(ngDevMode ? [{ debugName: "filtersDefinitions" }] : /* istanbul ignore next */ []));
|
|
1756
1758
|
this.viewQueries = computed(() => this.vm.views().map((v) => ({
|
|
1757
1759
|
name: v.name,
|
|
1758
|
-
fixed:
|
|
1760
|
+
fixed: v.fixed,
|
|
1761
|
+
custom: v.custom,
|
|
1759
1762
|
title: v.title,
|
|
1760
|
-
columns: v.columns,
|
|
1763
|
+
columns: (v.columns ?? []).map((column) => typeof column === 'string' ? column : column.name),
|
|
1761
1764
|
conditions: v.conditions.map((c) => ({
|
|
1762
1765
|
field: c.name,
|
|
1763
1766
|
operator: c.operator,
|
|
@@ -1768,9 +1771,10 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1768
1771
|
...(ngDevMode ? [{ debugName: "viewQueries" }] : /* istanbul ignore next */ []));
|
|
1769
1772
|
this.selectedViewQuery = computed(() => ({
|
|
1770
1773
|
name: this.vm.view().name,
|
|
1771
|
-
fixed:
|
|
1774
|
+
fixed: this.vm.view().fixed,
|
|
1775
|
+
custom: this.vm.view().custom,
|
|
1772
1776
|
title: this.vm.view().title,
|
|
1773
|
-
columns: this.vm.view().columns,
|
|
1777
|
+
columns: (this.vm.view().columns ?? []).map((column) => typeof column === 'string' ? column : column.name),
|
|
1774
1778
|
conditions: this.vm.view().conditions.map((c) => ({
|
|
1775
1779
|
field: c.name,
|
|
1776
1780
|
operator: c.operator,
|
|
@@ -1783,6 +1787,10 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1783
1787
|
...(ngDevMode ? [{ debugName: "isFiltersDirty" }] : /* istanbul ignore next */ []));
|
|
1784
1788
|
this.showListDisplayModeControl = computed(() => this.vm.enabledListLayouts().length > 1, /* @ts-ignore */
|
|
1785
1789
|
...(ngDevMode ? [{ debugName: "showListDisplayModeControl" }] : /* istanbul ignore next */ []));
|
|
1790
|
+
this.showColumnsControl = computed(() => this.vm.activeListLayout() === 'table', /* @ts-ignore */
|
|
1791
|
+
...(ngDevMode ? [{ debugName: "showColumnsControl" }] : /* istanbul ignore next */ []));
|
|
1792
|
+
this.activeSortCount = computed(() => this.sortQueries().filter((sort) => sort.dir === 'asc' || sort.dir === 'desc').length, /* @ts-ignore */
|
|
1793
|
+
...(ngDevMode ? [{ debugName: "activeSortCount" }] : /* istanbul ignore next */ []));
|
|
1786
1794
|
this.listDisplayMode = computed(() => this.vm.listDisplayMode(), /* @ts-ignore */
|
|
1787
1795
|
...(ngDevMode ? [{ debugName: "listDisplayMode" }] : /* istanbul ignore next */ []));
|
|
1788
1796
|
this.hasTableListDisplayOption = computed(() => this.vm.enabledListLayouts().includes('table'), /* @ts-ignore */
|
|
@@ -1791,19 +1799,9 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1791
1799
|
...(ngDevMode ? [{ debugName: "hasCardListDisplayOption" }] : /* istanbul ignore next */ []));
|
|
1792
1800
|
this.hasRowListDisplayOption = computed(() => this.vm.enabledListLayouts().includes('row'), /* @ts-ignore */
|
|
1793
1801
|
...(ngDevMode ? [{ debugName: "hasRowListDisplayOption" }] : /* istanbul ignore next */ []));
|
|
1794
|
-
this.
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
return 'fa-light fa-table';
|
|
1798
|
-
case 'row':
|
|
1799
|
-
return 'fa-light fa-grip-lines';
|
|
1800
|
-
case 'card':
|
|
1801
|
-
return 'fa-light fa-grid-2';
|
|
1802
|
-
}
|
|
1803
|
-
}, /* @ts-ignore */
|
|
1804
|
-
...(ngDevMode ? [{ debugName: "listDisplayModeButtonIcon" }] : /* istanbul ignore next */ []));
|
|
1805
|
-
this.listDisplayModePopover = viewChild('listDisplayModePopover', /* @ts-ignore */
|
|
1806
|
-
...(ngDevMode ? [{ debugName: "listDisplayModePopover" }] : /* istanbul ignore next */ []));
|
|
1802
|
+
this.viewPopover = viewChild('viewPopover', /* @ts-ignore */
|
|
1803
|
+
...(ngDevMode ? [{ debugName: "viewPopover" }] : /* istanbul ignore next */ []));
|
|
1804
|
+
//#endregion
|
|
1807
1805
|
// Debounced apply to coalesce multiple UI changes (filters/sorts/columns)
|
|
1808
1806
|
this.applyTimer = null;
|
|
1809
1807
|
this.#effect = effect(() => {
|
|
@@ -1814,6 +1812,18 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1814
1812
|
this.filtersDefinitions.set(this.vm.filterDefinitions());
|
|
1815
1813
|
}, /* @ts-ignore */
|
|
1816
1814
|
...(ngDevMode ? [{ debugName: "#effect" }] : /* istanbul ignore next */ []));
|
|
1815
|
+
this.#listInstanceFiltersEffect = effect(() => {
|
|
1816
|
+
const epoch = this.vm.listFilterSeedEpoch();
|
|
1817
|
+
if (!this.filtersReady() || epoch === 0) {
|
|
1818
|
+
return;
|
|
1819
|
+
}
|
|
1820
|
+
untracked(() => {
|
|
1821
|
+
this.isInitializing = true;
|
|
1822
|
+
this.setInitialFiltersFromSettingsOrView();
|
|
1823
|
+
this.isInitializing = false;
|
|
1824
|
+
});
|
|
1825
|
+
}, /* @ts-ignore */
|
|
1826
|
+
...(ngDevMode ? [{ debugName: "#listInstanceFiltersEffect" }] : /* istanbul ignore next */ []));
|
|
1817
1827
|
this.sortQueries = computed(() => this.vm
|
|
1818
1828
|
.sortedFields()
|
|
1819
1829
|
.filter((s) => !!s.dir)
|
|
@@ -1822,6 +1832,21 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1822
1832
|
dir: s.dir,
|
|
1823
1833
|
})), /* @ts-ignore */
|
|
1824
1834
|
...(ngDevMode ? [{ debugName: "sortQueries" }] : /* istanbul ignore next */ []));
|
|
1835
|
+
this.mobileSortPresets = computed(() => this.vm.canSort() ? this.vm.sortPresets() : [], /* @ts-ignore */
|
|
1836
|
+
...(ngDevMode ? [{ debugName: "mobileSortPresets" }] : /* istanbul ignore next */ []));
|
|
1837
|
+
this.activeSortPresetName = computed(() => {
|
|
1838
|
+
const signature = this.sortQuerySignature(this.sortQueries());
|
|
1839
|
+
if (!signature) {
|
|
1840
|
+
return null;
|
|
1841
|
+
}
|
|
1842
|
+
const match = this.mobileSortPresets().find((preset) => this.sortQuerySignature(preset.sorts ?? []) === signature);
|
|
1843
|
+
return match?.name ?? null;
|
|
1844
|
+
}, /* @ts-ignore */
|
|
1845
|
+
...(ngDevMode ? [{ debugName: "activeSortPresetName" }] : /* istanbul ignore next */ []));
|
|
1846
|
+
this.defaultSortQueries = computed(() => this.vm.view()?.sorts ?? [], /* @ts-ignore */
|
|
1847
|
+
...(ngDevMode ? [{ debugName: "defaultSortQueries" }] : /* istanbul ignore next */ []));
|
|
1848
|
+
this.canResetSorts = computed(() => this.sortQuerySignature(this.sortQueries()) !== this.sortQuerySignature(this.defaultSortQueries()), /* @ts-ignore */
|
|
1849
|
+
...(ngDevMode ? [{ debugName: "canResetSorts" }] : /* istanbul ignore next */ []));
|
|
1825
1850
|
this.sortDefinitions = computed(() => {
|
|
1826
1851
|
const sortable = this.vm.sortableFields();
|
|
1827
1852
|
const active = this.vm.sortedFields();
|
|
@@ -1891,6 +1916,21 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1891
1916
|
const filterTriggerMode = await this.settingsService.get(AXPCommonSettings.EntityFilterApplyMode);
|
|
1892
1917
|
this.filterTriggerMode = (filterTriggerMode?.value ?? 'auto');
|
|
1893
1918
|
}
|
|
1919
|
+
//#region ----- View Menu -----
|
|
1920
|
+
onViewMenuOpened() {
|
|
1921
|
+
this.viewMenuOpen.set(true);
|
|
1922
|
+
this.viewMenuPanel.set('root');
|
|
1923
|
+
}
|
|
1924
|
+
onViewMenuClosed() {
|
|
1925
|
+
this.viewMenuOpen.set(false);
|
|
1926
|
+
this.viewMenuPanel.set('root');
|
|
1927
|
+
}
|
|
1928
|
+
openViewColumnsPanel() {
|
|
1929
|
+
this.viewMenuPanel.set('columns');
|
|
1930
|
+
}
|
|
1931
|
+
openViewSortPanel() {
|
|
1932
|
+
this.viewMenuPanel.set('sort');
|
|
1933
|
+
}
|
|
1894
1934
|
setListDisplayMode(mode) {
|
|
1895
1935
|
traceEntityMasterList('toolbar', 'setListDisplayMode clicked', () => ({
|
|
1896
1936
|
mode,
|
|
@@ -1899,7 +1939,19 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1899
1939
|
previousDisplayMode: this.vm.listDisplayMode(),
|
|
1900
1940
|
}));
|
|
1901
1941
|
this.vm.setListDisplayMode(mode);
|
|
1902
|
-
this.
|
|
1942
|
+
this.viewPopover()?.close();
|
|
1943
|
+
}
|
|
1944
|
+
async resetViewColumns() {
|
|
1945
|
+
await this.vm.resetColumns();
|
|
1946
|
+
this.vm.onColumnsChanged(this.vm.columns());
|
|
1947
|
+
}
|
|
1948
|
+
async openListStylingFromViewMenu() {
|
|
1949
|
+
this.viewPopover()?.close();
|
|
1950
|
+
await this.openListStyling();
|
|
1951
|
+
}
|
|
1952
|
+
openCategoryFromViewMenu() {
|
|
1953
|
+
this.viewPopover()?.close();
|
|
1954
|
+
this.parent.toggleCategoryDrawer();
|
|
1903
1955
|
}
|
|
1904
1956
|
scheduleApply() {
|
|
1905
1957
|
clearTimeout(this.applyTimer);
|
|
@@ -1930,21 +1982,95 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1930
1982
|
dataSource: buildDataSourceTraceSnapshot(this.vm.dataSource),
|
|
1931
1983
|
}));
|
|
1932
1984
|
}
|
|
1985
|
+
async onSaveQueryView() {
|
|
1986
|
+
const form = await this.queryViewSaveDialog.open({
|
|
1987
|
+
mode: 'create',
|
|
1988
|
+
});
|
|
1989
|
+
if (!form) {
|
|
1990
|
+
return;
|
|
1991
|
+
}
|
|
1992
|
+
const name = await this.vm.createCustomQueryView(form);
|
|
1993
|
+
await this.onViewChanged({ ...this.selectedViewQuery(), name, title: form.title, custom: true, fixed: false });
|
|
1994
|
+
}
|
|
1995
|
+
async openListStyling() {
|
|
1996
|
+
try {
|
|
1997
|
+
const saved = await this.stylingDialog.open({
|
|
1998
|
+
rules: this.vm.userStylingRules(),
|
|
1999
|
+
lockedRules: listEntityMasterStylingLockedRules(this.vm.entityDef.interfaces?.master?.styling),
|
|
2000
|
+
filterDefinitions: this.vm.filterDefinitions(),
|
|
2001
|
+
targets: this.vm.columns().map((column) => ({
|
|
2002
|
+
name: column.name,
|
|
2003
|
+
title: column.title || column.name,
|
|
2004
|
+
})),
|
|
2005
|
+
});
|
|
2006
|
+
if (!saved) {
|
|
2007
|
+
return;
|
|
2008
|
+
}
|
|
2009
|
+
await this.vm.saveUserStylingRules(saved);
|
|
2010
|
+
await this.parent.repaintListStyling();
|
|
2011
|
+
}
|
|
2012
|
+
catch (error) {
|
|
2013
|
+
const [title, content] = await Promise.all([
|
|
2014
|
+
this.translationService.translateAsync('@general:terms.interface.styling.save-failed-title'),
|
|
2015
|
+
this.translationService.translateAsync('@general:terms.interface.styling.save-failed-description'),
|
|
2016
|
+
]);
|
|
2017
|
+
this.toastService.show({
|
|
2018
|
+
color: 'danger',
|
|
2019
|
+
title: title ?? '',
|
|
2020
|
+
content: content ?? '',
|
|
2021
|
+
location: 'bottom-center',
|
|
2022
|
+
closeButton: true,
|
|
2023
|
+
timeOut: 4000,
|
|
2024
|
+
timeOutProgress: true,
|
|
2025
|
+
});
|
|
2026
|
+
console.error(error);
|
|
2027
|
+
}
|
|
2028
|
+
}
|
|
2029
|
+
async onEditQueryView(view) {
|
|
2030
|
+
if (view.name !== this.vm.view().name) {
|
|
2031
|
+
await this.onViewChanged(view);
|
|
2032
|
+
}
|
|
2033
|
+
const form = await this.queryViewSaveDialog.open({
|
|
2034
|
+
mode: 'edit',
|
|
2035
|
+
title: this.vm.view().title,
|
|
2036
|
+
});
|
|
2037
|
+
if (!form) {
|
|
2038
|
+
return;
|
|
2039
|
+
}
|
|
2040
|
+
await this.vm.updateCustomQueryView({ title: form.title });
|
|
2041
|
+
await this.runInitialListLoad();
|
|
2042
|
+
}
|
|
2043
|
+
async onDeleteQueryView(view) {
|
|
2044
|
+
const confirmed = await this.queryViewSaveDialog.confirmDelete();
|
|
2045
|
+
if (!confirmed) {
|
|
2046
|
+
return;
|
|
2047
|
+
}
|
|
2048
|
+
const wasSelected = view.name === this.vm.view().name;
|
|
2049
|
+
const nextName = await this.vm.deleteCustomQueryView(view.name);
|
|
2050
|
+
if (wasSelected && nextName) {
|
|
2051
|
+
await this.onViewChanged({ ...this.selectedViewQuery(), name: nextName });
|
|
2052
|
+
return;
|
|
2053
|
+
}
|
|
2054
|
+
if (wasSelected) {
|
|
2055
|
+
await this.runInitialListLoad();
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
1933
2058
|
#effect;
|
|
2059
|
+
#listInstanceFiltersEffect;
|
|
1934
2060
|
setInitialFiltersFromSettingsOrView() {
|
|
1935
2061
|
const saved = this.vm.filterQueries();
|
|
1936
2062
|
this.previousFilterQueries.set(saved);
|
|
1937
|
-
const
|
|
2063
|
+
const view = this.vm.view();
|
|
1938
2064
|
if (saved && saved.length) {
|
|
1939
|
-
this.initialFilters.set(
|
|
2065
|
+
this.initialFilters.set(withQueryViewFilterVisibility(view, saved));
|
|
1940
2066
|
return;
|
|
1941
2067
|
}
|
|
1942
|
-
this.initialFilters.set(
|
|
1943
|
-
field:
|
|
1944
|
-
operator:
|
|
1945
|
-
value:
|
|
1946
|
-
hidden:
|
|
1947
|
-
})));
|
|
2068
|
+
this.initialFilters.set(withQueryViewFilterVisibility(view, view.conditions.map((condition) => ({
|
|
2069
|
+
field: condition.name,
|
|
2070
|
+
operator: condition.operator,
|
|
2071
|
+
value: condition.value,
|
|
2072
|
+
hidden: condition.hidden,
|
|
2073
|
+
}))));
|
|
1948
2074
|
}
|
|
1949
2075
|
onFiltersChanged(filters) {
|
|
1950
2076
|
if (this.isInitializing) {
|
|
@@ -1967,6 +2093,18 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1967
2093
|
this.stripFiltersFromRouteQueryParam();
|
|
1968
2094
|
await this.vm.applyFilterAndSort();
|
|
1969
2095
|
}
|
|
2096
|
+
/**
|
|
2097
|
+
* Re-seeds the filter bar from the viewmodel after an external filter/search change
|
|
2098
|
+
* (page-context AI actions). `axp-query-filters` follows `initialFilters`, not `vm.filterQueries`.
|
|
2099
|
+
*/
|
|
2100
|
+
async syncAfterPageContextFilterChange() {
|
|
2101
|
+
const persistableFilters = this.vm.getPersistableFilterQueries();
|
|
2102
|
+
this.previousFilterQueries.set(this.vm.filterQueries());
|
|
2103
|
+
await this.vm.saveSettings('filters', persistableFilters);
|
|
2104
|
+
this.stripFiltersFromRouteQueryParam();
|
|
2105
|
+
this.setInitialFiltersFromSettingsOrView();
|
|
2106
|
+
this.filtersDefinitions.set(this.vm.filterDefinitions());
|
|
2107
|
+
}
|
|
1970
2108
|
/** Removes `filters` from the entity list URL; filter state is persisted in user settings only. */
|
|
1971
2109
|
stripFiltersFromRouteQueryParam() {
|
|
1972
2110
|
if (!axpIsEntityListRoute(this.router)) {
|
|
@@ -1980,6 +2118,16 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
1980
2118
|
this.vm.markRouteQueryContextSynced(this.activeRoute.snapshot.queryParamMap, { filters: null });
|
|
1981
2119
|
axpReplaceEntityListRouteQueryParams(this.router, { filters: null });
|
|
1982
2120
|
}
|
|
2121
|
+
onSortPresetSelected(preset) {
|
|
2122
|
+
const sorts = (preset.sorts ?? []).filter((sort) => !!sort?.name && (sort.dir === 'asc' || sort.dir === 'desc'));
|
|
2123
|
+
this.onSortQueriesChange(sorts);
|
|
2124
|
+
}
|
|
2125
|
+
resetSortsFromMenu() {
|
|
2126
|
+
if (!this.canResetSorts()) {
|
|
2127
|
+
return;
|
|
2128
|
+
}
|
|
2129
|
+
this.onSortQueriesChange(this.defaultSortQueries());
|
|
2130
|
+
}
|
|
1983
2131
|
onSortQueriesChange(e) {
|
|
1984
2132
|
if (this.isInitializing || this.pendingInitialSorts) {
|
|
1985
2133
|
this.pendingInitialSorts = false;
|
|
@@ -2024,8 +2172,14 @@ class AXPEntityMasterToolbarViewComponent {
|
|
|
2024
2172
|
// Persist column order/visibility (client-only; do not re-query on visibility toggle)
|
|
2025
2173
|
this.vm.onColumnsChanged(this.vm.columns());
|
|
2026
2174
|
}
|
|
2175
|
+
sortQuerySignature(sorts) {
|
|
2176
|
+
return sorts
|
|
2177
|
+
.filter((sort) => sort.dir === 'asc' || sort.dir === 'desc')
|
|
2178
|
+
.map((sort) => `${sort.name}:${sort.dir}`)
|
|
2179
|
+
.join('|');
|
|
2180
|
+
}
|
|
2027
2181
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterToolbarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2028
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterToolbarViewComponent, isStandalone: true, selector: "axp-entity-master-toolbar-view", inputs: { vm: ["viewModel", "vm"] }, host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "listDisplayModePopover", first: true, predicate: ["listDisplayModePopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- <axp-entity-view-toolbar [viewModel]=\"vm\"></axp-entity-view-toolbar> -->\n<axp-query-views\n id=\"axp-toolbar-view-selector\"\n [views]=\"viewQueries()\"\n [selectedView]=\"selectedViewQuery()\"\n (selectedViewChange)=\"onViewChanged($event)\"\n></axp-query-views>\n<div class=\"flex items-center gap-2 border-b border-light w-full\">\n <!-- <axp-entity-filter-toolbar [viewModel]=\"vm\"></axp-entity-filter-toolbar> -->\n @if (filtersReady()) {\n <axp-query-filters\n id=\"axp-toolbar-filters\"\n [filtersDefinitions]=\"filtersDefinitions()\"\n [initialFilters]=\"initialFilters()\"\n [quickSearch]=\"true\"\n (onFiltersChanged)=\"onFiltersChanged($event)\"\n ></axp-query-filters>\n }\n\n <div class=\"flex items-center gap-2 md:gap-2\">\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\n <ax-button\n id=\"axp-toolbar-btn-filter\"\n [title]=\"'@general:actions.apply.title'\"\n [iconOnly]=\"true\"\n #filterButton\n [color]=\"'primary'\"\n (onClick)=\"applyFilters()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-search\"></i>\n </ax-prefix>\n </ax-button>\n }\n @if (vm.activeListLayout() === 'table') {\n <div>\n <ax-button id=\"axp-toolbar-btn-columns\" [iconOnly]=\"true\" #columnButton [color]=\"'default'\">\n <i class=\"fa-light fa-table-columns\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-columns\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"columnButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #columnsPopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.common.columns' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-4\">\n <axp-query-columns [columns]=\"vm.columns()\" (columnsChange)=\"onColumnsChange($event)\"></axp-query-columns>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (vm.canSort()) {\n <div>\n <ax-button id=\"axp-toolbar-btn-sort\" [iconOnly]=\"true\" [text]=\"'Sorts'\" #sortButton [color]=\"'default'\">\n <i class=\"fa-light fa-sort-amount-up\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-sort\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"sortButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #popover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.common.sorts' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-4\">\n <!-- <axp-list-view-option-sorting [viewModel]=\"vm\"></axp-list-view-option-sorting> -->\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n @if (deviceService.isSmall()) {\n <ax-button\n id=\"axp-toolbar-btn-category\"\n (onClick)=\"parent.toggleCategoryDrawer()\"\n [iconOnly]=\"true\"\n [color]=\"'default'\"\n >\n <i class=\"fa-light fa-bars\"></i>\n </ax-button>\n }\n\n @if (showListDisplayModeControl()) {\n <div>\n <ax-button id=\"axp-toolbar-btn-list-display\" [iconOnly]=\"true\" #listDisplayButton [color]=\"'default'\">\n <i [class]=\"listDisplayModeButtonIcon()\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-list-display\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"listDisplayButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #listDisplayModePopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.interface.list-display' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-2\">\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasTableListDisplayOption() && (hasCardListDisplayOption() || hasRowListDisplayOption())) {\n <ax-divider />\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i3$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPQueryFiltersComponent, selector: "axp-query-filters", inputs: ["filtersDefinitions", "initialFilters", "quickSearch"], outputs: ["onFiltersChanged"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPQuerySortsComponent, selector: "axp-query-sorts", inputs: ["sortDefinitions", "initialSortQueries"], outputs: ["sortDefinitionsChange", "sortQueriesChange"] }, { kind: "component", type: AXPQueryViewsComponent, selector: "axp-query-views", inputs: ["views", "selectedView"], outputs: ["viewsChange", "selectedViewChange"] }, { kind: "component", type: AXPQueryColumnsComponent, selector: "axp-query-columns", inputs: ["columns"], outputs: ["columnsChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterToolbarViewComponent, isStandalone: true, selector: "axp-entity-master-toolbar-view", inputs: { vm: ["viewModel", "vm"] }, host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "viewPopover", first: true, predicate: ["viewPopover"], descendants: true, isSignal: true }], ngImport: i0, template: "<axp-query-view-tabs\n id=\"axp-toolbar-view-selector\"\n [views]=\"viewQueries()\"\n [selectedView]=\"selectedViewQuery()\"\n (selectedViewChange)=\"onViewChanged($event)\"\n (edit)=\"onEditQueryView($event)\"\n (remove)=\"onDeleteQueryView($event)\"\n></axp-query-view-tabs>\n<div\n class=\"axp-entity-master-toolbar__row flex w-full flex-wrap items-center border-b border-light\"\n [class.min-w-0]=\"deviceService.isSmall()\"\n [class.gap-2]=\"!deviceService.isSmall()\"\n [class.gap-1]=\"deviceService.isSmall()\"\n>\n <!-- ----- Filter chips, search, and Ctrl+F stay on the leading edge ----- -->\n @if (filtersReady()) {\n <axp-query-filters\n id=\"axp-toolbar-filters\"\n class=\"min-w-0 flex-1\"\n [filtersDefinitions]=\"filtersDefinitions()\"\n [initialFilters]=\"initialFilters()\"\n [quickSearch]=\"true\"\n [mode]=\"vm.filterMode()\"\n [sortPresets]=\"mobileSortPresets()\"\n [activeSortPresetName]=\"activeSortPresetName()\"\n (onFiltersChanged)=\"onFiltersChanged($event)\"\n (onSortPresetSelected)=\"onSortPresetSelected($event)\"\n ></axp-query-filters>\n }\n\n <div\n class=\"axp-toolbar-list-tools ms-auto flex shrink-0 items-center gap-1\"\n >\n <!-- ----- Apply pending filters when the list is in manual apply mode ----- -->\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\n <ax-button\n id=\"axp-toolbar-btn-filter\"\n [title]=\"'@general:actions.apply.title'\"\n [iconOnly]=\"true\"\n [color]=\"'primary'\"\n (onClick)=\"applyFilters()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-search\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n }\n <!-- ----- Save View appears when the list layout is dirty ----- -->\n <axp-query-view-save-button\n [visible]=\"vm.canSaveActiveQueryView()\"\n (save)=\"onSaveQueryView()\"\n ></axp-query-view-save-button>\n\n <!-- ----- Sort stays a direct button on larger screens ----- -->\n @if (vm.canSort() && !deviceService.isSmall()) {\n <div class=\"axp-toolbar-btn-host\">\n <ax-button\n id=\"axp-toolbar-btn-sort\"\n class=\"axp-toolbar-btn axp-toolbar-btn-sort\"\n [class.axp-toolbar-btn--active]=\"activeSortCount() > 0\"\n [look]=\"'outline'\"\n [iconOnly]=\"true\"\n [color]=\"activeSortCount() > 0 ? 'primary' : 'default'\"\n [attr.aria-expanded]=\"sortMenuOpen()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [title]=\"\n (activeSortCount() > 0\n ? ('@general:terms.interface.sort.button-active' | translate: { params: { count: activeSortCount() } } | async)\n : ('@general:actions.sort.title' | translate | async)) ?? ''\n \"\n #sortButton\n >\n <ax-prefix>\n <i class=\"fa-light fa-sort-amount-up\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <ax-popover\n id=\"axp-popover-sort\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"8\"\n [target]=\"sortButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n (onOpened)=\"sortMenuOpen.set(true)\"\n (onClosed)=\"sortMenuOpen.set(false)\"\n #sortPopover\n >\n <div class=\"axp-toolbar-popover lightest-surface shadow-md border md:w-96 w-full rounded-md overflow-hidden\">\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n [sortPresets]=\"vm.sortPresets()\"\n [defaultSortQueries]=\"defaultSortQueries()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n </ax-popover>\n </div>\n }\n\n <!-- ----- On small screens this button also holds sort and category ----- -->\n <div class=\"axp-toolbar-btn-host\">\n <ax-button\n id=\"axp-toolbar-btn-view\"\n class=\"axp-toolbar-btn axp-toolbar-btn-view\"\n [class.axp-toolbar-btn--open]=\"viewMenuOpen()\"\n [class.axp-toolbar-btn--active]=\"deviceService.isSmall() && activeSortCount() > 0\"\n [look]=\"'outline'\"\n [iconOnly]=\"true\"\n [color]=\"deviceService.isSmall() && activeSortCount() > 0 ? 'primary' : 'default'\"\n [attr.aria-expanded]=\"viewMenuOpen()\"\n [attr.aria-haspopup]=\"'menu'\"\n [title]=\"((deviceService.isSmall()\n ? '@general:terms.interface.view.list-options'\n : '@general:terms.interface.view.menu-button') | translate | async) ?? ''\"\n #viewButton\n >\n <ax-prefix>\n <i class=\"fa-light fa-sliders\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <ax-popover\n id=\"axp-popover-view\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"8\"\n [target]=\"viewButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n (onOpened)=\"onViewMenuOpened()\"\n (onClosed)=\"onViewMenuClosed()\"\n #viewPopover\n >\n <div\n class=\"axp-toolbar-popover axp-toolbar-view-menu lightest-surface shadow-md border max-w-full overflow-hidden\"\n [class.w-72]=\"!deviceService.isSmall()\"\n [class.rounded-md]=\"!deviceService.isSmall()\"\n [class.w-full]=\"deviceService.isSmall()\"\n [class.axp-toolbar-view-menu--sheet]=\"deviceService.isSmall()\"\n >\n <!-- ----- Nested sort panel on small screens ----- -->\n @if (viewMenuPanel() === 'sort') {\n <div class=\"axp-toolbar-view-menu__header flex items-center justify-between gap-2 border-b border-light px-3 py-2\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [title]=\"('@general:actions.back.title' | translate | async) ?? ''\"\n (onClick)=\"viewMenuPanel.set('root')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-chevron-left rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <span class=\"min-w-0 flex-1 truncate font-bold\">\n {{ '@general:terms.interface.sort.title' | translate | async }}\n </span>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [disabled]=\"!canResetSorts()\"\n [text]=\"'@general:terms.interface.sort.clear' | translate | async\"\n (onClick)=\"resetSortsFromMenu()\"\n ></ax-button>\n </div>\n <div class=\"axp-toolbar-view-menu__body axp-toolbar-sort-panel\">\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n [sortPresets]=\"vm.sortPresets()\"\n [defaultSortQueries]=\"defaultSortQueries()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n }\n <!-- ----- Nested column visibility panel ----- -->\n @else if (viewMenuPanel() === 'columns') {\n <div class=\"axp-toolbar-view-menu__header flex items-center justify-between gap-2 border-b border-light px-3 py-2\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [title]=\"('@general:actions.back.title' | translate | async) ?? ''\"\n (onClick)=\"viewMenuPanel.set('root')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-chevron-left rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <span class=\"min-w-0 flex-1 truncate font-bold\">\n {{ '@general:terms.common.columns' | translate | async }}\n </span>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [text]=\"'@general:actions.reset.title' | translate | async\"\n (onClick)=\"resetViewColumns()\"\n ></ax-button>\n </div>\n <div class=\"axp-toolbar-view-menu__body px-4 py-3\">\n <axp-query-columns\n [columns]=\"vm.columns()\"\n [constrainHeight]=\"false\"\n (columnsChange)=\"onColumnsChange($event)\"\n ></axp-query-columns>\n </div>\n }\n <!-- ----- Root presentation menu ----- -->\n @else {\n <div class=\"axp-toolbar-view-menu__header border-b border-light px-4 py-3 font-bold\">\n {{ (deviceService.isSmall()\n ? '@general:terms.interface.view.list-options'\n : '@general:terms.interface.view.menu-title') | translate | async }}\n </div>\n <div class=\"axp-toolbar-view-menu__body py-2\">\n <!--------------------------------------------------------------->\n <!-- ----- Sort opens the sort panel on small screens ----- -->\n @if (deviceService.isSmall() && vm.canSort()) {\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:actions.sort.title' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"(activeSortCount() > 0\n ? ('@general:terms.interface.sort.button-active' | translate: { params: { count: activeSortCount() } } | async)\n : ('@general:terms.interface.sort.title' | translate | async))!\"\n (onClick)=\"openViewSortPanel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-sort-amount-up\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-light fa-chevron-right rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n <ax-divider />\n }\n <!-- ----- Display mode ----- -->\n @if (showListDisplayModeControl()) {\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.interface.view.display-mode' | translate | async }}\n </div>\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected table layout ----- -->\n @if (listDisplayMode() === 'table') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected card layout ----- -->\n @if (listDisplayMode() === 'card') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected row layout ----- -->\n @if (listDisplayMode() === 'row') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n }\n\n <!-- ----- Columns ----- -->\n @if (showColumnsControl()) {\n <!--->\n <!-- ----- Divider when a display-mode section is already shown ----- -->\n @if (showListDisplayModeControl()) {\n <ax-divider />\n }\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.common.columns' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.view.manage-columns' | translate | async)!\"\n (onClick)=\"openViewColumnsPanel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table-columns\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-light fa-chevron-right rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n }\n\n <!-- ----- Appearance / row highlight ----- -->\n <!--->\n <!-- ----- Divider when earlier presentation sections are present ----- -->\n @if (showListDisplayModeControl() || showColumnsControl()) {\n <ax-divider />\n }\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.interface.appearance' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.styling.title' | translate | async)!\"\n (onClick)=\"openListStylingFromViewMenu()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-palette\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n <!--------------------------------------------------------------->\n <!-- ----- Category opens the navigation drawer on small screens ----- -->\n @if (deviceService.isSmall() && vm.entityDef.category) {\n <ax-divider />\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.category.title' | translate | async)!\"\n (onClick)=\"openCategoryFromViewMenu()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-bars\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n }\n </div>\n }\n </div>\n </ax-popover>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-entity-master-toolbar__row{box-sizing:border-box;min-height:2.875rem;padding-block:.1875rem}.axp-toolbar-list-tools{width:max-content;flex:0 0 auto}.axp-toolbar-btn-host{display:inline-flex;width:max-content;flex:0 0 auto;position:relative}.axp-toolbar-btn.ax-button,.axp-toolbar-btn{flex:0 0 auto;width:max-content}.axp-toolbar-btn.ax-button-icon,.axp-toolbar-btn.ax-button-icon button{box-sizing:border-box;height:var(--ax-sys-size-base);min-height:var(--ax-sys-size-base);max-height:var(--ax-sys-size-base);min-width:var(--ax-sys-size-base);max-width:var(--ax-sys-size-base);width:var(--ax-sys-size-base)}.axp-toolbar-btn-sort.ax-button-icon button i{font-size:1em}.axp-toolbar-btn--active button{background-color:rgba(var(--ax-sys-color-primary-surface))}@supports (color: color-mix(in lab,red,red)){.axp-toolbar-btn--active button{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-surface)) 10%,transparent)}}.axp-toolbar-view-menu__section-label{padding-inline:var(--spacing, .25rem);padding-top:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem);font-size:10px;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-tracking: var(--tracking-wider, .05em);letter-spacing:var(--tracking-wider, .05em);color:var(--color-neutral-400, oklch(70.8% 0 none));text-transform:uppercase}.axp-toolbar-popover{display:flex;max-height:min(28rem,70vh);flex-direction:column;overflow:hidden}.axp-toolbar-view-menu__header{flex-shrink:0}.axp-toolbar-view-menu__body{min-height:0px;flex:1;overflow-x:hidden;overflow-y:auto}.axp-toolbar-view-menu__body .ax-sorted-list{max-height:none;overflow:visible}.axp-toolbar-sort-panel .axp-query-sorts__header{display:none}.axp-toolbar-view-menu--sheet{width:100%;max-width:100%;border-radius:0;border-inline:0}@media(max-width:600px){.axp-entity-master-toolbar__row{padding-block:.375rem;padding-inline:.25rem}axp-query-filters>.flex{padding-block:0}.axp-toolbar-list-tools{justify-content:flex-end}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-tracking: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i3$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPQueryFiltersComponent, selector: "axp-query-filters", inputs: ["filtersDefinitions", "initialFilters", "mode", "quickSearch", "sortPresets", "activeSortPresetName"], outputs: ["onFiltersChanged", "onSortPresetSelected"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXPQuerySortsComponent, selector: "axp-query-sorts", inputs: ["sortDefinitions", "sortPresets", "initialSortQueries", "defaultSortQueries"], outputs: ["sortDefinitionsChange", "sortQueriesChange"] }, { kind: "component", type: AXPQueryViewSaveButtonComponent, selector: "axp-query-view-save-button", inputs: ["visible"], outputs: ["save"] }, { kind: "component", type: AXPQueryViewTabsComponent, selector: "axp-query-view-tabs", inputs: ["views", "selectedView"], outputs: ["selectedViewChange", "edit", "remove"] }, { kind: "component", type: AXPQueryColumnsComponent, selector: "axp-query-columns", inputs: ["columns", "constrainHeight"], outputs: ["columnsChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2029
2183
|
}
|
|
2030
2184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterToolbarViewComponent, decorators: [{
|
|
2031
2185
|
type: Component,
|
|
@@ -2033,20 +2187,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
2033
2187
|
AsyncPipe,
|
|
2034
2188
|
AXButtonModule,
|
|
2035
2189
|
AXDecoratorModule,
|
|
2036
|
-
AXDropdownModule,
|
|
2037
2190
|
AXTranslationModule,
|
|
2038
2191
|
AXPQueryFiltersComponent,
|
|
2039
2192
|
AXPopoverModule,
|
|
2040
2193
|
AXPQuerySortsComponent,
|
|
2041
|
-
|
|
2194
|
+
AXPQueryViewSaveButtonComponent,
|
|
2195
|
+
AXPQueryViewTabsComponent,
|
|
2042
2196
|
AXPQueryColumnsComponent,
|
|
2043
2197
|
], host: {
|
|
2044
2198
|
class: 'w-full',
|
|
2045
|
-
}, template: "<!-- <axp-entity-view-toolbar [viewModel]=\"vm\"></axp-entity-view-toolbar> -->\n<axp-query-views\n id=\"axp-toolbar-view-selector\"\n [views]=\"viewQueries()\"\n [selectedView]=\"selectedViewQuery()\"\n (selectedViewChange)=\"onViewChanged($event)\"\n></axp-query-views>\n<div class=\"flex items-center gap-2 border-b border-light w-full\">\n <!-- <axp-entity-filter-toolbar [viewModel]=\"vm\"></axp-entity-filter-toolbar> -->\n @if (filtersReady()) {\n <axp-query-filters\n id=\"axp-toolbar-filters\"\n [filtersDefinitions]=\"filtersDefinitions()\"\n [initialFilters]=\"initialFilters()\"\n [quickSearch]=\"true\"\n (onFiltersChanged)=\"onFiltersChanged($event)\"\n ></axp-query-filters>\n }\n\n <div class=\"flex items-center gap-2 md:gap-2\">\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\n <ax-button\n id=\"axp-toolbar-btn-filter\"\n [title]=\"'@general:actions.apply.title'\"\n [iconOnly]=\"true\"\n #filterButton\n [color]=\"'primary'\"\n (onClick)=\"applyFilters()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-search\"></i>\n </ax-prefix>\n </ax-button>\n }\n @if (vm.activeListLayout() === 'table') {\n <div>\n <ax-button id=\"axp-toolbar-btn-columns\" [iconOnly]=\"true\" #columnButton [color]=\"'default'\">\n <i class=\"fa-light fa-table-columns\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-columns\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"columnButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #columnsPopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.common.columns' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-4\">\n <axp-query-columns [columns]=\"vm.columns()\" (columnsChange)=\"onColumnsChange($event)\"></axp-query-columns>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n\n @if (vm.canSort()) {\n <div>\n <ax-button id=\"axp-toolbar-btn-sort\" [iconOnly]=\"true\" [text]=\"'Sorts'\" #sortButton [color]=\"'default'\">\n <i class=\"fa-light fa-sort-amount-up\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-sort\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"sortButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #popover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.common.sorts' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-4\">\n <!-- <axp-list-view-option-sorting [viewModel]=\"vm\"></axp-list-view-option-sorting> -->\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n @if (deviceService.isSmall()) {\n <ax-button\n id=\"axp-toolbar-btn-category\"\n (onClick)=\"parent.toggleCategoryDrawer()\"\n [iconOnly]=\"true\"\n [color]=\"'default'\"\n >\n <i class=\"fa-light fa-bars\"></i>\n </ax-button>\n }\n\n @if (showListDisplayModeControl()) {\n <div>\n <ax-button id=\"axp-toolbar-btn-list-display\" [iconOnly]=\"true\" #listDisplayButton [color]=\"'default'\">\n <i [class]=\"listDisplayModeButtonIcon()\"></i>\n </ax-button>\n <ax-popover\n id=\"axp-popover-list-display\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"10\"\n [target]=\"listDisplayButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n #listDisplayModePopover\n >\n <div class=\"lightest-surface shadow-md border md:w-72 w-full rounded-md\">\n <ax-header class=\"border-b lighter-surface rounded-t-md p-4 font-bold\">\n {{ '@general:terms.interface.list-display' | translate | async }}\n </ax-header>\n <div class=\"py-2 px-2\">\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasTableListDisplayOption() && (hasCardListDisplayOption() || hasRowListDisplayOption())) {\n <ax-divider />\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\"></i>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </div>\n </ax-popover>\n </div>\n }\n </div>\n</div>\n" }]
|
|
2199
|
+
}, template: "<axp-query-view-tabs\n id=\"axp-toolbar-view-selector\"\n [views]=\"viewQueries()\"\n [selectedView]=\"selectedViewQuery()\"\n (selectedViewChange)=\"onViewChanged($event)\"\n (edit)=\"onEditQueryView($event)\"\n (remove)=\"onDeleteQueryView($event)\"\n></axp-query-view-tabs>\n<div\n class=\"axp-entity-master-toolbar__row flex w-full flex-wrap items-center border-b border-light\"\n [class.min-w-0]=\"deviceService.isSmall()\"\n [class.gap-2]=\"!deviceService.isSmall()\"\n [class.gap-1]=\"deviceService.isSmall()\"\n>\n <!-- ----- Filter chips, search, and Ctrl+F stay on the leading edge ----- -->\n @if (filtersReady()) {\n <axp-query-filters\n id=\"axp-toolbar-filters\"\n class=\"min-w-0 flex-1\"\n [filtersDefinitions]=\"filtersDefinitions()\"\n [initialFilters]=\"initialFilters()\"\n [quickSearch]=\"true\"\n [mode]=\"vm.filterMode()\"\n [sortPresets]=\"mobileSortPresets()\"\n [activeSortPresetName]=\"activeSortPresetName()\"\n (onFiltersChanged)=\"onFiltersChanged($event)\"\n (onSortPresetSelected)=\"onSortPresetSelected($event)\"\n ></axp-query-filters>\n }\n\n <div\n class=\"axp-toolbar-list-tools ms-auto flex shrink-0 items-center gap-1\"\n >\n <!-- ----- Apply pending filters when the list is in manual apply mode ----- -->\n @if (filterTriggerMode === 'manual' && isFiltersDirty()) {\n <ax-button\n id=\"axp-toolbar-btn-filter\"\n [title]=\"'@general:actions.apply.title'\"\n [iconOnly]=\"true\"\n [color]=\"'primary'\"\n (onClick)=\"applyFilters()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-search\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n }\n <!-- ----- Save View appears when the list layout is dirty ----- -->\n <axp-query-view-save-button\n [visible]=\"vm.canSaveActiveQueryView()\"\n (save)=\"onSaveQueryView()\"\n ></axp-query-view-save-button>\n\n <!-- ----- Sort stays a direct button on larger screens ----- -->\n @if (vm.canSort() && !deviceService.isSmall()) {\n <div class=\"axp-toolbar-btn-host\">\n <ax-button\n id=\"axp-toolbar-btn-sort\"\n class=\"axp-toolbar-btn axp-toolbar-btn-sort\"\n [class.axp-toolbar-btn--active]=\"activeSortCount() > 0\"\n [look]=\"'outline'\"\n [iconOnly]=\"true\"\n [color]=\"activeSortCount() > 0 ? 'primary' : 'default'\"\n [attr.aria-expanded]=\"sortMenuOpen()\"\n [attr.aria-haspopup]=\"'dialog'\"\n [title]=\"\n (activeSortCount() > 0\n ? ('@general:terms.interface.sort.button-active' | translate: { params: { count: activeSortCount() } } | async)\n : ('@general:actions.sort.title' | translate | async)) ?? ''\n \"\n #sortButton\n >\n <ax-prefix>\n <i class=\"fa-light fa-sort-amount-up\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <ax-popover\n id=\"axp-popover-sort\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"8\"\n [target]=\"sortButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n (onOpened)=\"sortMenuOpen.set(true)\"\n (onClosed)=\"sortMenuOpen.set(false)\"\n #sortPopover\n >\n <div class=\"axp-toolbar-popover lightest-surface shadow-md border md:w-96 w-full rounded-md overflow-hidden\">\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n [sortPresets]=\"vm.sortPresets()\"\n [defaultSortQueries]=\"defaultSortQueries()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n </ax-popover>\n </div>\n }\n\n <!-- ----- On small screens this button also holds sort and category ----- -->\n <div class=\"axp-toolbar-btn-host\">\n <ax-button\n id=\"axp-toolbar-btn-view\"\n class=\"axp-toolbar-btn axp-toolbar-btn-view\"\n [class.axp-toolbar-btn--open]=\"viewMenuOpen()\"\n [class.axp-toolbar-btn--active]=\"deviceService.isSmall() && activeSortCount() > 0\"\n [look]=\"'outline'\"\n [iconOnly]=\"true\"\n [color]=\"deviceService.isSmall() && activeSortCount() > 0 ? 'primary' : 'default'\"\n [attr.aria-expanded]=\"viewMenuOpen()\"\n [attr.aria-haspopup]=\"'menu'\"\n [title]=\"((deviceService.isSmall()\n ? '@general:terms.interface.view.list-options'\n : '@general:terms.interface.view.menu-button') | translate | async) ?? ''\"\n #viewButton\n >\n <ax-prefix>\n <i class=\"fa-light fa-sliders\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <ax-popover\n id=\"axp-popover-view\"\n [adaptivityEnabled]=\"true\"\n [offsetY]=\"8\"\n [target]=\"viewButton\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n (onOpened)=\"onViewMenuOpened()\"\n (onClosed)=\"onViewMenuClosed()\"\n #viewPopover\n >\n <div\n class=\"axp-toolbar-popover axp-toolbar-view-menu lightest-surface shadow-md border max-w-full overflow-hidden\"\n [class.w-72]=\"!deviceService.isSmall()\"\n [class.rounded-md]=\"!deviceService.isSmall()\"\n [class.w-full]=\"deviceService.isSmall()\"\n [class.axp-toolbar-view-menu--sheet]=\"deviceService.isSmall()\"\n >\n <!-- ----- Nested sort panel on small screens ----- -->\n @if (viewMenuPanel() === 'sort') {\n <div class=\"axp-toolbar-view-menu__header flex items-center justify-between gap-2 border-b border-light px-3 py-2\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [title]=\"('@general:actions.back.title' | translate | async) ?? ''\"\n (onClick)=\"viewMenuPanel.set('root')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-chevron-left rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <span class=\"min-w-0 flex-1 truncate font-bold\">\n {{ '@general:terms.interface.sort.title' | translate | async }}\n </span>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [disabled]=\"!canResetSorts()\"\n [text]=\"'@general:terms.interface.sort.clear' | translate | async\"\n (onClick)=\"resetSortsFromMenu()\"\n ></ax-button>\n </div>\n <div class=\"axp-toolbar-view-menu__body axp-toolbar-sort-panel\">\n <axp-query-sorts\n [sortDefinitions]=\"sortDefinitions()\"\n [sortPresets]=\"vm.sortPresets()\"\n [defaultSortQueries]=\"defaultSortQueries()\"\n (sortQueriesChange)=\"onSortQueriesChange($event)\"\n [initialSortQueries]=\"sortQueries()\"\n ></axp-query-sorts>\n </div>\n }\n <!-- ----- Nested column visibility panel ----- -->\n @else if (viewMenuPanel() === 'columns') {\n <div class=\"axp-toolbar-view-menu__header flex items-center justify-between gap-2 border-b border-light px-3 py-2\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'default'\"\n [title]=\"('@general:actions.back.title' | translate | async) ?? ''\"\n (onClick)=\"viewMenuPanel.set('root')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-chevron-left rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button>\n <span class=\"min-w-0 flex-1 truncate font-bold\">\n {{ '@general:terms.common.columns' | translate | async }}\n </span>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [text]=\"'@general:actions.reset.title' | translate | async\"\n (onClick)=\"resetViewColumns()\"\n ></ax-button>\n </div>\n <div class=\"axp-toolbar-view-menu__body px-4 py-3\">\n <axp-query-columns\n [columns]=\"vm.columns()\"\n [constrainHeight]=\"false\"\n (columnsChange)=\"onColumnsChange($event)\"\n ></axp-query-columns>\n </div>\n }\n <!-- ----- Root presentation menu ----- -->\n @else {\n <div class=\"axp-toolbar-view-menu__header border-b border-light px-4 py-3 font-bold\">\n {{ (deviceService.isSmall()\n ? '@general:terms.interface.view.list-options'\n : '@general:terms.interface.view.menu-title') | translate | async }}\n </div>\n <div class=\"axp-toolbar-view-menu__body py-2\">\n <!--------------------------------------------------------------->\n <!-- ----- Sort opens the sort panel on small screens ----- -->\n @if (deviceService.isSmall() && vm.canSort()) {\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:actions.sort.title' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"(activeSortCount() > 0\n ? ('@general:terms.interface.sort.button-active' | translate: { params: { count: activeSortCount() } } | async)\n : ('@general:terms.interface.sort.title' | translate | async))!\"\n (onClick)=\"openViewSortPanel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-sort-amount-up\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-light fa-chevron-right rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n <ax-divider />\n }\n <!-- ----- Display mode ----- -->\n @if (showListDisplayModeControl()) {\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.interface.view.display-mode' | translate | async }}\n </div>\n <ax-button-item-list>\n @if (hasTableListDisplayOption()) {\n <ax-button-item\n [text]=\"('@general:terms.interface.table-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'table'\"\n (onClick)=\"setListDisplayMode('table')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected table layout ----- -->\n @if (listDisplayMode() === 'table') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (hasCardListDisplayOption()) {\n <!-- ----- Card grid presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.card-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'card'\"\n (onClick)=\"setListDisplayMode('card')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grid-2\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected card layout ----- -->\n @if (listDisplayMode() === 'card') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n @if (hasRowListDisplayOption()) {\n <!-- ----- Horizontal row-list presentation ----- -->\n <ax-button-item\n [text]=\"('@general:terms.interface.row-view' | translate | async)!\"\n [selected]=\"listDisplayMode() === 'row'\"\n (onClick)=\"setListDisplayMode('row')\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-grip-lines\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <!--->\n <!-- ----- Selected row layout ----- -->\n @if (listDisplayMode() === 'row') {\n <ax-suffix>\n <i class=\"fa-light fa-check\" aria-hidden=\"true\"></i>\n </ax-suffix>\n }\n </ax-button-item>\n }\n </ax-button-item-list>\n }\n\n <!-- ----- Columns ----- -->\n @if (showColumnsControl()) {\n <!--->\n <!-- ----- Divider when a display-mode section is already shown ----- -->\n @if (showListDisplayModeControl()) {\n <ax-divider />\n }\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.common.columns' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.view.manage-columns' | translate | async)!\"\n (onClick)=\"openViewColumnsPanel()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-table-columns\" aria-hidden=\"true\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-light fa-chevron-right rtl:rotate-180\" aria-hidden=\"true\"></i>\n </ax-suffix>\n </ax-button-item>\n </ax-button-item-list>\n }\n\n <!-- ----- Appearance / row highlight ----- -->\n <!--->\n <!-- ----- Divider when earlier presentation sections are present ----- -->\n @if (showListDisplayModeControl() || showColumnsControl()) {\n <ax-divider />\n }\n <div class=\"axp-toolbar-view-menu__section-label px-4\">\n {{ '@general:terms.interface.appearance' | translate | async }}\n </div>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.styling.title' | translate | async)!\"\n (onClick)=\"openListStylingFromViewMenu()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-palette\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n <!--------------------------------------------------------------->\n <!-- ----- Category opens the navigation drawer on small screens ----- -->\n @if (deviceService.isSmall() && vm.entityDef.category) {\n <ax-divider />\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('@general:terms.interface.category.title' | translate | async)!\"\n (onClick)=\"openCategoryFromViewMenu()\"\n >\n <ax-prefix>\n <i class=\"fa-light fa-bars\" aria-hidden=\"true\"></i>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n }\n </div>\n }\n </div>\n </ax-popover>\n </div>\n </div>\n</div>\n", styles: ["@layer properties;.axp-entity-master-toolbar__row{box-sizing:border-box;min-height:2.875rem;padding-block:.1875rem}.axp-toolbar-list-tools{width:max-content;flex:0 0 auto}.axp-toolbar-btn-host{display:inline-flex;width:max-content;flex:0 0 auto;position:relative}.axp-toolbar-btn.ax-button,.axp-toolbar-btn{flex:0 0 auto;width:max-content}.axp-toolbar-btn.ax-button-icon,.axp-toolbar-btn.ax-button-icon button{box-sizing:border-box;height:var(--ax-sys-size-base);min-height:var(--ax-sys-size-base);max-height:var(--ax-sys-size-base);min-width:var(--ax-sys-size-base);max-width:var(--ax-sys-size-base);width:var(--ax-sys-size-base)}.axp-toolbar-btn-sort.ax-button-icon button i{font-size:1em}.axp-toolbar-btn--active button{background-color:rgba(var(--ax-sys-color-primary-surface))}@supports (color: color-mix(in lab,red,red)){.axp-toolbar-btn--active button{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-surface)) 10%,transparent)}}.axp-toolbar-view-menu__section-label{padding-inline:var(--spacing, .25rem);padding-top:var(--spacing, .25rem);padding-bottom:var(--spacing, .25rem);font-size:10px;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-tracking: var(--tracking-wider, .05em);letter-spacing:var(--tracking-wider, .05em);color:var(--color-neutral-400, oklch(70.8% 0 none));text-transform:uppercase}.axp-toolbar-popover{display:flex;max-height:min(28rem,70vh);flex-direction:column;overflow:hidden}.axp-toolbar-view-menu__header{flex-shrink:0}.axp-toolbar-view-menu__body{min-height:0px;flex:1;overflow-x:hidden;overflow-y:auto}.axp-toolbar-view-menu__body .ax-sorted-list{max-height:none;overflow:visible}.axp-toolbar-sort-panel .axp-query-sorts__header{display:none}.axp-toolbar-view-menu--sheet{width:100%;max-width:100%;border-radius:0;border-inline:0}@media(max-width:600px){.axp-entity-master-toolbar__row{padding-block:.375rem;padding-inline:.25rem}axp-query-filters>.flex{padding-block:0}.axp-toolbar-list-tools{justify-content:flex-end}}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-tracking: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
2046
2200
|
}], propDecorators: { vm: [{
|
|
2047
2201
|
type: Input,
|
|
2048
2202
|
args: ['viewModel']
|
|
2049
|
-
}],
|
|
2203
|
+
}], viewPopover: [{ type: i0.ViewChild, args: ['viewPopover', { isSignal: true }] }] } });
|
|
2050
2204
|
|
|
2051
2205
|
class AXPEntityMasterListDataTableComponent {
|
|
2052
2206
|
constructor() {
|
|
@@ -2060,6 +2214,24 @@ class AXPEntityMasterListDataTableComponent {
|
|
|
2060
2214
|
...(ngDevMode ? [{ debugName: "gridRef" }] : /* istanbul ignore next */ []));
|
|
2061
2215
|
//#endregion
|
|
2062
2216
|
//#region ---- Computed ----
|
|
2217
|
+
this.firstExpandLeafName = computed(() => {
|
|
2218
|
+
const findFirst = (nodes) => {
|
|
2219
|
+
for (const node of nodes) {
|
|
2220
|
+
if (node.kind === 'band') {
|
|
2221
|
+
const nested = findFirst(node.children);
|
|
2222
|
+
if (nested) {
|
|
2223
|
+
return nested;
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
else if (node.visible !== false) {
|
|
2227
|
+
return node.column.name;
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
return undefined;
|
|
2231
|
+
};
|
|
2232
|
+
return findFirst(this.vm().columnTree());
|
|
2233
|
+
}, /* @ts-ignore */
|
|
2234
|
+
...(ngDevMode ? [{ debugName: "firstExpandLeafName" }] : /* istanbul ignore next */ []));
|
|
2063
2235
|
this.resolveRowCssClass = async (row, _rowIndex) => {
|
|
2064
2236
|
return toDataTableRowStylingClass(await this.vm().resolveRecordStylingClass(row));
|
|
2065
2237
|
};
|
|
@@ -2091,6 +2263,11 @@ class AXPEntityMasterListDataTableComponent {
|
|
|
2091
2263
|
return this.gridRef();
|
|
2092
2264
|
}
|
|
2093
2265
|
//#endregion
|
|
2266
|
+
//#region ---- Column tree ----
|
|
2267
|
+
trackColumnTreeNode(node) {
|
|
2268
|
+
return node.kind === 'band' ? `band:${node.name}` : `leaf:${node.column.name}`;
|
|
2269
|
+
}
|
|
2270
|
+
//#endregion
|
|
2094
2271
|
//#region ---- Table Event Handlers ----
|
|
2095
2272
|
onColumnSizeChanged(e) {
|
|
2096
2273
|
if (e.isUserInteraction && e.type === 'end') {
|
|
@@ -2176,15 +2353,15 @@ class AXPEntityMasterListDataTableComponent {
|
|
|
2176
2353
|
}));
|
|
2177
2354
|
}
|
|
2178
2355
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterListDataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterListDataTableComponent, isStandalone: true, selector: "axp-entity-master-list-data-table", inputs: { vm: { classPropertyName: "vm", publicName: "vm", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pageChanged: "pageChanged" }, host: { styleAttribute: "height: -webkit-fill-available;" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n id=\"axp-entity-table\"\n [allowReordering]=\"true\"\n (onColumnsOrderChanged)=\"onColumnsOrderChanged($event)\"\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm().parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm().dataSource\"\n [highlightText]=\"vm().inlineFilterHighlightText()\"\n [rowCssClass]=\"resolveRowCssClass\"\n [cellCssClass]=\"resolveCellCssClass\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n (onColumnSizeChanged)=\"onColumnSizeChanged($event)\"\n (onPageChanged)=\"onPageChanged($event)\"\n>\n @if (vm().showIndexColumn()) {\n <ax-index-column\n id=\"axp-table-col-index\"\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm().selectedScopeActionsCount()) {\n <ax-select-column id=\"axp-table-col-select\" fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (
|
|
2356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntityMasterListDataTableComponent, isStandalone: true, selector: "axp-entity-master-list-data-table", inputs: { vm: { classPropertyName: "vm", publicName: "vm", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { pageChanged: "pageChanged" }, host: { styleAttribute: "height: -webkit-fill-available;" }, viewQueries: [{ propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n id=\"axp-entity-table\"\n [allowReordering]=\"true\"\n (onColumnsOrderChanged)=\"onColumnsOrderChanged($event)\"\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm().parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm().dataSource\"\n [highlightText]=\"vm().inlineFilterHighlightText()\"\n [rowCssClass]=\"resolveRowCssClass\"\n [cellCssClass]=\"resolveCellCssClass\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n (onColumnSizeChanged)=\"onColumnSizeChanged($event)\"\n (onPageChanged)=\"onPageChanged($event)\"\n>\n @if (vm().showIndexColumn()) {\n <ax-index-column\n id=\"axp-table-col-index\"\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm().selectedScopeActionsCount()) {\n <ax-select-column id=\"axp-table-col-select\" fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n\n @for (node of vm().columnTree(); track trackColumnTreeNode(node)) {\n @if (node.kind === 'band') {\n @if (node.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-band-' + node.name\"\n [caption]=\"node.title\"\n [columnKey]=\"node.name\"\n customWidth=\"\"\n >\n @for (child of node.children; track trackColumnTreeNode(child)) {\n @if (child.kind === 'band') {\n @if (child.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-band-' + child.name\"\n [caption]=\"child.title\"\n [columnKey]=\"child.name\"\n customWidth=\"\"\n >\n @for (grand of child.children; track trackColumnTreeNode(grand)) {\n @if (grand.kind === 'leaf' && grand.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + grand.column.name\"\n [expandHandler]=\"firstExpandLeafName() === grand.column.name && !!vm().parentKey()\"\n [caption]=\"(grand.column.title | translate | async)!\"\n [columnKey]=\"grand.column.name\"\n [node]=\"grand.column.node()\"\n [customWidth]=\"grand.column.width ?? ''\"\n [sortEnabled]=\"!!grand.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), grand.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), grand.column.name)\"\n (sortToggle)=\"handleColumnSort(grand.column.name, $event)\"\n />\n }\n }\n </axp-widget-column-renderer>\n }\n } @else {\n @if (child.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + child.column.name\"\n [expandHandler]=\"firstExpandLeafName() === child.column.name && !!vm().parentKey()\"\n [caption]=\"(child.column.title | translate | async)!\"\n [columnKey]=\"child.column.name\"\n [node]=\"child.column.node()\"\n [customWidth]=\"child.column.width ?? ''\"\n [sortEnabled]=\"!!child.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), child.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), child.column.name)\"\n (sortToggle)=\"handleColumnSort(child.column.name, $event)\"\n />\n }\n }\n }\n </axp-widget-column-renderer>\n }\n } @else {\n @if (node.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + node.column.name\"\n [expandHandler]=\"firstExpandLeafName() === node.column.name && !!vm().parentKey()\"\n [caption]=\"(node.column.title | translate | async)!\"\n [columnKey]=\"node.column.name\"\n [node]=\"node.column.node()\"\n [customWidth]=\"node.column.width ?? ''\"\n [sortEnabled]=\"!!node.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), node.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), node.column.name)\"\n (sortToggle)=\"handleColumnSort(node.column.name, $event)\"\n />\n }\n }\n }\n\n @if (getCommandRowItems().length) {\n <ax-command-column\n id=\"axp-table-col-commands\"\n fixed=\"end\"\n [width]=\"getCommandRowItems().length * 70 + 'px'\"\n [items]=\"getCommandRowItems()\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-command-column>\n }\n <ax-dropdown-command-column\n id=\"axp-table-col-dropdown-commands\"\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i8.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i8.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i8.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed", "advanceSelect"] }, { kind: "component", type: i8.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i8.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i7$1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2180
2357
|
}
|
|
2181
2358
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterListDataTableComponent, decorators: [{
|
|
2182
2359
|
type: Component,
|
|
2183
2360
|
args: [{ selector: 'axp-entity-master-list-data-table', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXDataTableModule, AXTranslationModule, AXPWidgetCoreModule, AXPWidgetsModule], host: {
|
|
2184
2361
|
style: 'height: -webkit-fill-available;',
|
|
2185
|
-
}, template: "<ax-data-table\n id=\"axp-entity-table\"\n [allowReordering]=\"true\"\n (onColumnsOrderChanged)=\"onColumnsOrderChanged($event)\"\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm().parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm().dataSource\"\n [highlightText]=\"vm().inlineFilterHighlightText()\"\n [rowCssClass]=\"resolveRowCssClass\"\n [cellCssClass]=\"resolveCellCssClass\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n (onColumnSizeChanged)=\"onColumnSizeChanged($event)\"\n (onPageChanged)=\"onPageChanged($event)\"\n>\n @if (vm().showIndexColumn()) {\n <ax-index-column\n id=\"axp-table-col-index\"\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm().selectedScopeActionsCount()) {\n <ax-select-column id=\"axp-table-col-select\" fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (
|
|
2362
|
+
}, template: "<ax-data-table\n id=\"axp-entity-table\"\n [allowReordering]=\"true\"\n (onColumnsOrderChanged)=\"onColumnsOrderChanged($event)\"\n #grid\n [showFooter]=\"false\"\n class=\"flex-1\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n [parentField]=\"vm().parentKey()\"\n [loading]=\"{ enabled: true, animation: true }\"\n [dataSource]=\"vm().dataSource\"\n [highlightText]=\"vm().inlineFilterHighlightText()\"\n [rowCssClass]=\"resolveRowCssClass\"\n [cellCssClass]=\"resolveCellCssClass\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n (onColumnSizeChanged)=\"onColumnSizeChanged($event)\"\n (onPageChanged)=\"onPageChanged($event)\"\n>\n @if (vm().showIndexColumn()) {\n <ax-index-column\n id=\"axp-table-col-index\"\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n @if (vm().selectedScopeActionsCount()) {\n <ax-select-column id=\"axp-table-col-select\" fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n\n @for (node of vm().columnTree(); track trackColumnTreeNode(node)) {\n @if (node.kind === 'band') {\n @if (node.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-band-' + node.name\"\n [caption]=\"node.title\"\n [columnKey]=\"node.name\"\n customWidth=\"\"\n >\n @for (child of node.children; track trackColumnTreeNode(child)) {\n @if (child.kind === 'band') {\n @if (child.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-band-' + child.name\"\n [caption]=\"child.title\"\n [columnKey]=\"child.name\"\n customWidth=\"\"\n >\n @for (grand of child.children; track trackColumnTreeNode(grand)) {\n @if (grand.kind === 'leaf' && grand.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + grand.column.name\"\n [expandHandler]=\"firstExpandLeafName() === grand.column.name && !!vm().parentKey()\"\n [caption]=\"(grand.column.title | translate | async)!\"\n [columnKey]=\"grand.column.name\"\n [node]=\"grand.column.node()\"\n [customWidth]=\"grand.column.width ?? ''\"\n [sortEnabled]=\"!!grand.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), grand.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), grand.column.name)\"\n (sortToggle)=\"handleColumnSort(grand.column.name, $event)\"\n />\n }\n }\n </axp-widget-column-renderer>\n }\n } @else {\n @if (child.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + child.column.name\"\n [expandHandler]=\"firstExpandLeafName() === child.column.name && !!vm().parentKey()\"\n [caption]=\"(child.column.title | translate | async)!\"\n [columnKey]=\"child.column.name\"\n [node]=\"child.column.node()\"\n [customWidth]=\"child.column.width ?? ''\"\n [sortEnabled]=\"!!child.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), child.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), child.column.name)\"\n (sortToggle)=\"handleColumnSort(child.column.name, $event)\"\n />\n }\n }\n }\n </axp-widget-column-renderer>\n }\n } @else {\n @if (node.visible) {\n <axp-widget-column-renderer\n [attr.id]=\"'axp-table-col-' + node.column.name\"\n [expandHandler]=\"firstExpandLeafName() === node.column.name && !!vm().parentKey()\"\n [caption]=\"(node.column.title | translate | async)!\"\n [columnKey]=\"node.column.name\"\n [node]=\"node.column.node()\"\n [customWidth]=\"node.column.width ?? ''\"\n [sortEnabled]=\"!!node.column.sortEnabled\"\n [headerSortDirection]=\"resolveColumnSortDirection(vm().sortedFields(), node.column.name)\"\n [headerSortPriority]=\"resolveColumnSortIndex(vm().sortedFields(), node.column.name)\"\n (sortToggle)=\"handleColumnSort(node.column.name, $event)\"\n />\n }\n }\n }\n\n @if (getCommandRowItems().length) {\n <ax-command-column\n id=\"axp-table-col-commands\"\n fixed=\"end\"\n [width]=\"getCommandRowItems().length * 70 + 'px'\"\n [items]=\"getCommandRowItems()\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-command-column>\n }\n <ax-dropdown-command-column\n id=\"axp-table-col-dropdown-commands\"\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n</ax-data-table>\n" }]
|
|
2186
2363
|
}], propDecorators: { vm: [{ type: i0.Input, args: [{ isSignal: true, alias: "vm", required: true }] }], pageChanged: [{ type: i0.Output, args: ["pageChanged"] }], gridRef: [{ type: i0.ViewChild, args: ['grid', { isSignal: true }] }] } });
|
|
2187
|
-
/** Maps
|
|
2364
|
+
/** Maps short tokens (`warning`) to `ax-row-color-*`; keeps full surfaces (`primary-light-surface`). */
|
|
2188
2365
|
function toDataTableRowStylingClass(cssClass) {
|
|
2189
2366
|
if (!cssClass) {
|
|
2190
2367
|
return undefined;
|
|
@@ -2192,10 +2369,16 @@ function toDataTableRowStylingClass(cssClass) {
|
|
|
2192
2369
|
const tokens = cssClass
|
|
2193
2370
|
.split(/\s+/)
|
|
2194
2371
|
.filter(Boolean)
|
|
2195
|
-
.map((token) =>
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2372
|
+
.map((token) => {
|
|
2373
|
+
if (isThemeSurfaceClass(token) || isRuntimeHexSurfaceClass(token)) {
|
|
2374
|
+
return token;
|
|
2375
|
+
}
|
|
2376
|
+
if (AX_DATA_TABLE_ROW_COLOR_TYPES.includes(token) ||
|
|
2377
|
+
AXP_THEME_SURFACE_STYLES.includes(token)) {
|
|
2378
|
+
return `ax-row-color-${token}`;
|
|
2379
|
+
}
|
|
2380
|
+
return token;
|
|
2381
|
+
});
|
|
2199
2382
|
return tokens.length ? tokens.join(' ') : undefined;
|
|
2200
2383
|
}
|
|
2201
2384
|
|
|
@@ -2205,6 +2388,8 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2205
2388
|
this.platform = platform;
|
|
2206
2389
|
//#region ---- Services & Dependencies ----
|
|
2207
2390
|
this.activeRoute = inject(ActivatedRoute);
|
|
2391
|
+
this.pageContextRegistry = inject(AXPPageContextRegistry);
|
|
2392
|
+
this.pageContextDestroyRef = inject(DestroyRef);
|
|
2208
2393
|
//#endregion
|
|
2209
2394
|
//#region ---- View State ----
|
|
2210
2395
|
this.vm = this.activeRoute.snapshot.data['vm'];
|
|
@@ -2221,6 +2406,9 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2221
2406
|
...(ngDevMode ? [{ debugName: "dataTable" }] : /* istanbul ignore next */ []));
|
|
2222
2407
|
this.cardList = viewChild(AXPEntityMasterListCardListComponent, /* @ts-ignore */
|
|
2223
2408
|
...(ngDevMode ? [{ debugName: "cardList" }] : /* istanbul ignore next */ []));
|
|
2409
|
+
this.toolbar = viewChild(AXPEntityMasterToolbarViewComponent, /* @ts-ignore */
|
|
2410
|
+
...(ngDevMode ? [{ debugName: "toolbar" }] : /* istanbul ignore next */ []));
|
|
2411
|
+
this.pageContextRegistrationId = `entity-list:${getEntityInfo(this.vm.entityDef).source}:${createRandomUuid()}`;
|
|
2224
2412
|
this.listHostReady = signal(false, /* @ts-ignore */
|
|
2225
2413
|
...(ngDevMode ? [{ debugName: "listHostReady" }] : /* istanbul ignore next */ []));
|
|
2226
2414
|
this.previousAppTabActive = false;
|
|
@@ -2346,7 +2534,9 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2346
2534
|
activeListLayout: this.vm.activeListLayout(),
|
|
2347
2535
|
...this.buildListHostTraceSnapshot(),
|
|
2348
2536
|
}));
|
|
2537
|
+
this.pageContextRegistry.activate(this.pageContextRegistrationId);
|
|
2349
2538
|
});
|
|
2539
|
+
this.registerPageContext();
|
|
2350
2540
|
}
|
|
2351
2541
|
async ngOnInit() {
|
|
2352
2542
|
this.router.events
|
|
@@ -2397,13 +2587,61 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2397
2587
|
this.vm.destroy();
|
|
2398
2588
|
}
|
|
2399
2589
|
//#endregion
|
|
2590
|
+
//#region ----- Page Context -----
|
|
2591
|
+
registerPageContext() {
|
|
2592
|
+
this.pageContextRegistry.register({
|
|
2593
|
+
owner: this.pageContextDestroyRef,
|
|
2594
|
+
id: this.pageContextRegistrationId,
|
|
2595
|
+
priority: AXPPageContextPriority.Page,
|
|
2596
|
+
getSnapshot: () => axpBuildEntityListPageContextSnapshot(this.vm, (value) => this.resolvePageContextTitle(value)),
|
|
2597
|
+
run: async (actionId, args) => {
|
|
2598
|
+
const result = await axpRunEntityListPageContextAction(this.vm, actionId, args, (value) => this.resolvePageContextTitle(value));
|
|
2599
|
+
if (result.success) {
|
|
2600
|
+
await this.syncPageContextChrome(actionId, args);
|
|
2601
|
+
}
|
|
2602
|
+
return {
|
|
2603
|
+
...result,
|
|
2604
|
+
snapshot: axpBuildEntityListPageContextSnapshot(this.vm, (value) => this.resolvePageContextTitle(value)),
|
|
2605
|
+
};
|
|
2606
|
+
},
|
|
2607
|
+
});
|
|
2608
|
+
}
|
|
2609
|
+
async syncPageContextChrome(actionId, args) {
|
|
2610
|
+
if (actionId === 'set-view') {
|
|
2611
|
+
const viewName = typeof args['viewName'] === 'string' && args['viewName'].trim()
|
|
2612
|
+
? args['viewName'].trim()
|
|
2613
|
+
: this.vm.view().name;
|
|
2614
|
+
this.syncListViewQueryParam(viewName);
|
|
2615
|
+
return;
|
|
2616
|
+
}
|
|
2617
|
+
if (actionId === 'set-filter' ||
|
|
2618
|
+
actionId === 'remove-filter' ||
|
|
2619
|
+
actionId === 'clear-filters' ||
|
|
2620
|
+
actionId === 'set-search') {
|
|
2621
|
+
await this.toolbar()?.syncAfterPageContextFilterChange();
|
|
2622
|
+
}
|
|
2623
|
+
}
|
|
2624
|
+
resolvePageContextTitle(value) {
|
|
2625
|
+
if (typeof value === 'string') {
|
|
2626
|
+
const trimmed = value.trim();
|
|
2627
|
+
if (!trimmed) {
|
|
2628
|
+
return '';
|
|
2629
|
+
}
|
|
2630
|
+
if (trimmed.startsWith('@')) {
|
|
2631
|
+
return this.translateService.translateSync(trimmed) || trimmed;
|
|
2632
|
+
}
|
|
2633
|
+
return trimmed;
|
|
2634
|
+
}
|
|
2635
|
+
if (value && typeof value === 'object') {
|
|
2636
|
+
return this.translateService.resolve(value) || '';
|
|
2637
|
+
}
|
|
2638
|
+
return '';
|
|
2639
|
+
}
|
|
2640
|
+
//#endregion
|
|
2400
2641
|
//#region ---- List Layout Handlers ----
|
|
2401
2642
|
onListPageChanged() {
|
|
2402
2643
|
this.scheduleRestoreExpandedRows();
|
|
2403
2644
|
}
|
|
2404
|
-
handleUnselectAll() {
|
|
2405
|
-
this.vm.selectedItems.set([]);
|
|
2406
|
-
}
|
|
2407
2645
|
//#endregion
|
|
2408
2646
|
//#region ---- Toolbar & Sidebar Handlers ----
|
|
2409
2647
|
makeResponsive(value) {
|
|
@@ -2621,6 +2859,14 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2621
2859
|
grid() {
|
|
2622
2860
|
return this.dataTable()?.grid();
|
|
2623
2861
|
}
|
|
2862
|
+
/** Re-evaluates row and cell classes after personal highlight rules change. */
|
|
2863
|
+
async repaintListStyling() {
|
|
2864
|
+
if (this.vm.isCardHostLayout()) {
|
|
2865
|
+
return;
|
|
2866
|
+
}
|
|
2867
|
+
this.grid()?.clearResolvedCssClasses();
|
|
2868
|
+
await this.reloadListData(false);
|
|
2869
|
+
}
|
|
2624
2870
|
/**
|
|
2625
2871
|
* Highlights a freshly created row in the active list layout (table or card).
|
|
2626
2872
|
*/
|
|
@@ -2764,7 +3010,7 @@ class AXPEntityMasterListViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
2764
3010
|
provide: AXPPageLayoutBase,
|
|
2765
3011
|
useExisting: AXPEntityMasterListViewComponent,
|
|
2766
3012
|
},
|
|
2767
|
-
], viewQueries: [{ propertyName: "dataTable", first: true, predicate: AXPEntityMasterListDataTableComponent, descendants: true, isSignal: true }, { propertyName: "cardList", first: true, predicate: AXPEntityMasterListCardListComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n @if (vm.entityDef.category) {\n <axp-layout-start-side id=\"axp-entity-category-drawer\">\n <axp-entity-category\n id=\"axp-entity-category\"\n class=\"w-80\"\n [vm]=\"vm\"\n [searchValue]=\"categorySearchValue()\"\n ></axp-entity-category>\n </axp-layout-start-side>\n }\n <axp-page-toolbar id=\"axp-entity-toolbar\" data-testid=\"entity-list-toolbar\">\n <axp-entity-master-toolbar-view\n [viewModel]=\"vm\"\n ></axp-entity-master-toolbar-view>\n </axp-page-toolbar>\n <axp-page-content\n class=\"overflow-auto pt-0!\"\n [class.pb-0!]=\"vm.isCardHostLayout()\"\n >\n <div\n class=\"flex items-center justify-between gap-1 pb-1 text-muted text-sm\"\n [class.hidden]=\"!vm.selectedItems().length\"\n >\n <span\n >{{ vm.selectedItems().length }}\n <span>{{\n '@general:terms.interface.items-selected' | translate | async\n }}</span>\n </span>\n <ax-button\n text=\"@general:terms.interface.unselect-all\"\n class=\"ax-sm\"\n (onClick)=\"handleUnselectAll()\"\n ></ax-button>\n </div>\n @if (vm.enabledListLayouts().includes('table')) {\n <axp-entity-master-list-data-table\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"vm.activeListLayout() !== 'table'\"\n [vm]=\"vm\"\n (pageChanged)=\"onListPageChanged()\"\n ></axp-entity-master-list-data-table>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n ></axp-entity-master-list-card-list>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["@layer properties;axp-entity-master-list axp-layout-start-side{min-width:calc(var(--spacing, .25rem) * 80)!important;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}axp-entity-master-list axp-layout-header{padding-bottom:var(--spacing, .25rem)}axp-entity-master-list .axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column}axp-entity-master-list axp-page-content{display:flex;min-height:0px;flex-direction:column}axp-entity-master-list .axp-entity-list-host--hidden{display:none!important}.cdk-drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-sys-color-surface));padding:.5rem;height:max-content!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-primary>td{background:rgb(var(--ax-sys-color-primary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-secondary>td{background:rgb(var(--ax-sys-color-secondary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-success>td{background:rgb(var(--ax-sys-color-success-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-warning>td{background:rgb(var(--ax-sys-color-warning-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-danger>td{background:rgb(var(--ax-sys-color-danger-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent1>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent1>td{background:rgb(var(--ax-sys-color-accent1-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent2>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent2>td{background:rgb(var(--ax-sys-color-accent2-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent3>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent3>td{background:rgb(var(--ax-sys-color-accent3-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary,axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary,axp-entity-master-list-data-table ax-data-table tbody tr>td.success,axp-entity-master-list-data-table ax-data-table tbody tr>td.warning,axp-entity-master-list-data-table ax-data-table tbody tr>td.danger,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{box-shadow:inset 0 0 0 1px rgb(var(--axp-entity-styling-border) / .35)}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary{--axp-entity-styling-border: var(--ax-sys-color-border-primary-lightest-surface);background:rgb(var(--ax-sys-color-primary-100))!important;color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary{--axp-entity-styling-border: var(--ax-sys-color-border-secondary-lightest-surface);background:rgb(var(--ax-sys-color-secondary-100))!important;color:rgb(var(--ax-sys-color-on-secondary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.success{--axp-entity-styling-border: var(--ax-sys-color-border-success-lightest-surface);background:rgb(var(--ax-sys-color-success-100))!important;color:rgb(var(--ax-sys-color-on-success-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.warning{--axp-entity-styling-border: var(--ax-sys-color-border-warning-lightest-surface);background:rgb(var(--ax-sys-color-warning-100))!important;color:rgb(var(--ax-sys-color-on-warning-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.danger{--axp-entity-styling-border: var(--ax-sys-color-border-danger-lightest-surface);background:rgb(var(--ax-sys-color-danger-100))!important;color:rgb(var(--ax-sys-color-on-danger-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1{--axp-entity-styling-border: var(--ax-sys-color-border-accent1-lightest-surface);background:rgb(var(--ax-sys-color-accent1-100))!important;color:rgb(var(--ax-sys-color-on-accent1-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2{--axp-entity-styling-border: var(--ax-sys-color-border-accent2-lightest-surface);background:rgb(var(--ax-sys-color-accent2-100))!important;color:rgb(var(--ax-sys-color-on-accent2-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{--axp-entity-styling-border: var(--ax-sys-color-border-accent3-lightest-surface);background:rgb(var(--ax-sys-color-accent3-100))!important;color:rgb(var(--ax-sys-color-on-accent3-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr[class*=ax-row-color-]:not(.ax-row-color-pulse) td{animation:none!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0%}.view-drawer{width:85vw;background-color:rgba(var(--ax-sys-color-lightest-surface));border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px;border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:rgba(var(--ax-sys-color-primary-600))}@media(width>=48rem){.view-drawer{width:45vw}}@media(width>=64rem){.view-drawer{width:35vw}}@media(width>=96rem){.view-drawer{width:20vw}}.view-drawer ax-header{display:flex;align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));background-color:rgba(var(--ax-sys-color-lighter-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.view-drawer ax-header h2{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);color:rgba(var(--ax-sys-color-on-lighter-surface))}.view-drawer ax-footer{position:absolute;bottom:0;width:100%;justify-content:flex-start;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "component", type: AXPEntityMasterToolbarViewComponent, selector: "axp-entity-master-toolbar-view", inputs: ["viewModel"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPEntityCategoryComponent, selector: "axp-entity-category", inputs: ["vm", "searchValue", "selectMode", "selectionBehavior", "dragArea", "dragBehavior", "showIcons", "showChildrenBadge", "expandedIcon", "collapsedIcon", "indentSize", "look", "searchWithChildren"] }, { kind: "component", type: AXPEntityMasterListDataTableComponent, selector: "axp-entity-master-list-data-table", inputs: ["vm"], outputs: ["pageChanged"] }, { kind: "component", type: AXPEntityMasterListCardListComponent, selector: "axp-entity-master-list-card-list", inputs: ["vm"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3013
|
+
], viewQueries: [{ propertyName: "dataTable", first: true, predicate: AXPEntityMasterListDataTableComponent, descendants: true, isSignal: true }, { propertyName: "cardList", first: true, predicate: AXPEntityMasterListCardListComponent, descendants: true, isSignal: true }, { propertyName: "toolbar", first: true, predicate: AXPEntityMasterToolbarViewComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n @if (vm.entityDef.category) {\n <axp-layout-start-side id=\"axp-entity-category-drawer\">\n <axp-entity-category\n id=\"axp-entity-category\"\n class=\"w-80\"\n [vm]=\"vm\"\n [searchValue]=\"categorySearchValue()\"\n ></axp-entity-category>\n </axp-layout-start-side>\n }\n <axp-page-toolbar id=\"axp-entity-toolbar\" data-testid=\"entity-list-toolbar\">\n <axp-entity-master-toolbar-view\n [viewModel]=\"vm\"\n ></axp-entity-master-toolbar-view>\n </axp-page-toolbar>\n <axp-page-content\n class=\"overflow-auto pt-0!\"\n [class.pb-0!]=\"vm.isCardHostLayout()\"\n >\n @if (vm.enabledListLayouts().includes('table')) {\n <axp-entity-master-list-data-table\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"vm.activeListLayout() !== 'table'\"\n [vm]=\"vm\"\n (pageChanged)=\"onListPageChanged()\"\n ></axp-entity-master-list-data-table>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n [userStylingRules]=\"vm.userStylingRules()\"\n ></axp-entity-master-list-card-list>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["@layer properties;axp-entity-master-list axp-layout-start-side{min-width:calc(var(--spacing, .25rem) * 80)!important;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}axp-entity-master-list axp-layout-header{padding-bottom:var(--spacing, .25rem)}axp-entity-master-list .axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column}axp-entity-master-list axp-page-content{display:flex;min-height:0px;flex-direction:column}axp-entity-master-list .axp-entity-list-host--hidden{display:none!important}.cdk-drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-sys-color-surface));padding:.5rem;height:max-content!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-primary>td{background:rgb(var(--ax-sys-color-primary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-secondary>td{background:rgb(var(--ax-sys-color-secondary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-success>td{background:rgb(var(--ax-sys-color-success-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-warning>td{background:rgb(var(--ax-sys-color-warning-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-danger>td{background:rgb(var(--ax-sys-color-danger-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent1>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent1>td{background:rgb(var(--ax-sys-color-accent1-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent2>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent2>td{background:rgb(var(--ax-sys-color-accent2-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent3>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent3>td{background:rgb(var(--ax-sys-color-accent3-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary,axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary,axp-entity-master-list-data-table ax-data-table tbody tr>td.success,axp-entity-master-list-data-table ax-data-table tbody tr>td.warning,axp-entity-master-list-data-table ax-data-table tbody tr>td.danger,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{box-shadow:inset 0 0 0 1px rgb(var(--axp-entity-styling-border) / .35)}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary{--axp-entity-styling-border: var(--ax-sys-color-border-primary-lightest-surface);background:rgb(var(--ax-sys-color-primary-100))!important;color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary{--axp-entity-styling-border: var(--ax-sys-color-border-secondary-lightest-surface);background:rgb(var(--ax-sys-color-secondary-100))!important;color:rgb(var(--ax-sys-color-on-secondary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.success{--axp-entity-styling-border: var(--ax-sys-color-border-success-lightest-surface);background:rgb(var(--ax-sys-color-success-100))!important;color:rgb(var(--ax-sys-color-on-success-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.warning{--axp-entity-styling-border: var(--ax-sys-color-border-warning-lightest-surface);background:rgb(var(--ax-sys-color-warning-100))!important;color:rgb(var(--ax-sys-color-on-warning-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.danger{--axp-entity-styling-border: var(--ax-sys-color-border-danger-lightest-surface);background:rgb(var(--ax-sys-color-danger-100))!important;color:rgb(var(--ax-sys-color-on-danger-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1{--axp-entity-styling-border: var(--ax-sys-color-border-accent1-lightest-surface);background:rgb(var(--ax-sys-color-accent1-100))!important;color:rgb(var(--ax-sys-color-on-accent1-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2{--axp-entity-styling-border: var(--ax-sys-color-border-accent2-lightest-surface);background:rgb(var(--ax-sys-color-accent2-100))!important;color:rgb(var(--ax-sys-color-on-accent2-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{--axp-entity-styling-border: var(--ax-sys-color-border-accent3-lightest-surface);background:rgb(var(--ax-sys-color-accent3-100))!important;color:rgb(var(--ax-sys-color-on-accent3-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr[class*=ax-row-color-]:not(.ax-row-color-pulse) td{animation:none!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0%}.view-drawer{width:85vw;background-color:rgba(var(--ax-sys-color-lightest-surface));border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px;border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:rgba(var(--ax-sys-color-primary-600))}@media(width>=48rem){.view-drawer{width:45vw}}@media(width>=64rem){.view-drawer{width:35vw}}@media(width>=96rem){.view-drawer{width:20vw}}.view-drawer ax-header{display:flex;align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));background-color:rgba(var(--ax-sys-color-lighter-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.view-drawer ax-header h2{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);color:rgba(var(--ax-sys-color-on-lighter-surface))}.view-drawer ax-footer{position:absolute;bottom:0;width:100%;justify-content:flex-start;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "component", type: AXPEntityMasterToolbarViewComponent, selector: "axp-entity-master-toolbar-view", inputs: ["viewModel"] }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutStartSideComponent, selector: "axp-layout-page-start-side, axp-layout-start-side" }, { kind: "component", type: AXPEntityCategoryComponent, selector: "axp-entity-category", inputs: ["vm", "searchValue", "selectMode", "selectionBehavior", "dragArea", "dragBehavior", "showIcons", "showChildrenBadge", "expandedIcon", "collapsedIcon", "indentSize", "look", "searchWithChildren"] }, { kind: "component", type: AXPEntityMasterListDataTableComponent, selector: "axp-entity-master-list-data-table", inputs: ["vm"], outputs: ["pageChanged"] }, { kind: "component", type: AXPEntityMasterListCardListComponent, selector: "axp-entity-master-list-card-list", inputs: ["vm", "userStylingRules"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2768
3014
|
}
|
|
2769
3015
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterListViewComponent, decorators: [{
|
|
2770
3016
|
type: Component,
|
|
@@ -2772,7 +3018,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
2772
3018
|
CommonModule,
|
|
2773
3019
|
FormsModule,
|
|
2774
3020
|
RouterModule,
|
|
2775
|
-
AXButtonModule,
|
|
2776
3021
|
AXDecoratorModule,
|
|
2777
3022
|
AXBadgeModule,
|
|
2778
3023
|
AXDropdownModule,
|
|
@@ -2802,8 +3047,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
2802
3047
|
provide: AXPPageLayoutBase,
|
|
2803
3048
|
useExisting: AXPEntityMasterListViewComponent,
|
|
2804
3049
|
},
|
|
2805
|
-
], template: "<axp-page-layout *translate=\"let t\">\n @if (vm.entityDef.category) {\n <axp-layout-start-side id=\"axp-entity-category-drawer\">\n <axp-entity-category\n id=\"axp-entity-category\"\n class=\"w-80\"\n [vm]=\"vm\"\n [searchValue]=\"categorySearchValue()\"\n ></axp-entity-category>\n </axp-layout-start-side>\n }\n <axp-page-toolbar id=\"axp-entity-toolbar\" data-testid=\"entity-list-toolbar\">\n <axp-entity-master-toolbar-view\n [viewModel]=\"vm\"\n ></axp-entity-master-toolbar-view>\n </axp-page-toolbar>\n <axp-page-content\n class=\"overflow-auto pt-0!\"\n [class.pb-0!]=\"vm.isCardHostLayout()\"\n >\n <div\n class=\"flex items-center justify-between gap-1 pb-1 text-muted text-sm\"\n [class.hidden]=\"!vm.selectedItems().length\"\n >\n <span\n >{{ vm.selectedItems().length }}\n <span>{{\n '@general:terms.interface.items-selected' | translate | async\n }}</span>\n </span>\n <ax-button\n text=\"@general:terms.interface.unselect-all\"\n class=\"ax-sm\"\n (onClick)=\"handleUnselectAll()\"\n ></ax-button>\n </div>\n @if (vm.enabledListLayouts().includes('table')) {\n <axp-entity-master-list-data-table\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"vm.activeListLayout() !== 'table'\"\n [vm]=\"vm\"\n (pageChanged)=\"onListPageChanged()\"\n ></axp-entity-master-list-data-table>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n ></axp-entity-master-list-card-list>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["@layer properties;axp-entity-master-list axp-layout-start-side{min-width:calc(var(--spacing, .25rem) * 80)!important;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}axp-entity-master-list axp-layout-header{padding-bottom:var(--spacing, .25rem)}axp-entity-master-list .axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column}axp-entity-master-list axp-page-content{display:flex;min-height:0px;flex-direction:column}axp-entity-master-list .axp-entity-list-host--hidden{display:none!important}.cdk-drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-sys-color-surface));padding:.5rem;height:max-content!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-primary>td{background:rgb(var(--ax-sys-color-primary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-secondary>td{background:rgb(var(--ax-sys-color-secondary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-success>td{background:rgb(var(--ax-sys-color-success-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-warning>td{background:rgb(var(--ax-sys-color-warning-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-danger>td{background:rgb(var(--ax-sys-color-danger-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent1>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent1>td{background:rgb(var(--ax-sys-color-accent1-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent2>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent2>td{background:rgb(var(--ax-sys-color-accent2-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent3>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent3>td{background:rgb(var(--ax-sys-color-accent3-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary,axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary,axp-entity-master-list-data-table ax-data-table tbody tr>td.success,axp-entity-master-list-data-table ax-data-table tbody tr>td.warning,axp-entity-master-list-data-table ax-data-table tbody tr>td.danger,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{box-shadow:inset 0 0 0 1px rgb(var(--axp-entity-styling-border) / .35)}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary{--axp-entity-styling-border: var(--ax-sys-color-border-primary-lightest-surface);background:rgb(var(--ax-sys-color-primary-100))!important;color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary{--axp-entity-styling-border: var(--ax-sys-color-border-secondary-lightest-surface);background:rgb(var(--ax-sys-color-secondary-100))!important;color:rgb(var(--ax-sys-color-on-secondary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.success{--axp-entity-styling-border: var(--ax-sys-color-border-success-lightest-surface);background:rgb(var(--ax-sys-color-success-100))!important;color:rgb(var(--ax-sys-color-on-success-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.warning{--axp-entity-styling-border: var(--ax-sys-color-border-warning-lightest-surface);background:rgb(var(--ax-sys-color-warning-100))!important;color:rgb(var(--ax-sys-color-on-warning-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.danger{--axp-entity-styling-border: var(--ax-sys-color-border-danger-lightest-surface);background:rgb(var(--ax-sys-color-danger-100))!important;color:rgb(var(--ax-sys-color-on-danger-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1{--axp-entity-styling-border: var(--ax-sys-color-border-accent1-lightest-surface);background:rgb(var(--ax-sys-color-accent1-100))!important;color:rgb(var(--ax-sys-color-on-accent1-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2{--axp-entity-styling-border: var(--ax-sys-color-border-accent2-lightest-surface);background:rgb(var(--ax-sys-color-accent2-100))!important;color:rgb(var(--ax-sys-color-on-accent2-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{--axp-entity-styling-border: var(--ax-sys-color-border-accent3-lightest-surface);background:rgb(var(--ax-sys-color-accent3-100))!important;color:rgb(var(--ax-sys-color-on-accent3-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr[class*=ax-row-color-]:not(.ax-row-color-pulse) td{animation:none!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0%}.view-drawer{width:85vw;background-color:rgba(var(--ax-sys-color-lightest-surface));border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px;border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:rgba(var(--ax-sys-color-primary-600))}@media(width>=48rem){.view-drawer{width:45vw}}@media(width>=64rem){.view-drawer{width:35vw}}@media(width>=96rem){.view-drawer{width:20vw}}.view-drawer ax-header{display:flex;align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));background-color:rgba(var(--ax-sys-color-lighter-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.view-drawer ax-header h2{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);color:rgba(var(--ax-sys-color-on-lighter-surface))}.view-drawer ax-footer{position:absolute;bottom:0;width:100%;justify-content:flex-start;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
2806
|
-
}], ctorParameters: () => [{ type: i1$2.AXPlatform }], propDecorators: { dataTable: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPEntityMasterListDataTableComponent), { isSignal: true }] }], cardList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPEntityMasterListCardListComponent), { isSignal: true }] }] } });
|
|
3050
|
+
], template: "<axp-page-layout *translate=\"let t\">\n @if (vm.entityDef.category) {\n <axp-layout-start-side id=\"axp-entity-category-drawer\">\n <axp-entity-category\n id=\"axp-entity-category\"\n class=\"w-80\"\n [vm]=\"vm\"\n [searchValue]=\"categorySearchValue()\"\n ></axp-entity-category>\n </axp-layout-start-side>\n }\n <axp-page-toolbar id=\"axp-entity-toolbar\" data-testid=\"entity-list-toolbar\">\n <axp-entity-master-toolbar-view\n [viewModel]=\"vm\"\n ></axp-entity-master-toolbar-view>\n </axp-page-toolbar>\n <axp-page-content\n class=\"overflow-auto pt-0!\"\n [class.pb-0!]=\"vm.isCardHostLayout()\"\n >\n @if (vm.enabledListLayouts().includes('table')) {\n <axp-entity-master-list-data-table\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"vm.activeListLayout() !== 'table'\"\n [vm]=\"vm\"\n (pageChanged)=\"onListPageChanged()\"\n ></axp-entity-master-list-data-table>\n }\n @if (vm.enabledListLayouts().includes('card') || vm.enabledListLayouts().includes('row')) {\n <axp-entity-master-list-card-list\n class=\"axp-entity-list-host\"\n [class.axp-entity-list-host--hidden]=\"!vm.isCardHostLayout()\"\n [vm]=\"vm\"\n [userStylingRules]=\"vm.userStylingRules()\"\n ></axp-entity-master-list-card-list>\n }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["@layer properties;axp-entity-master-list axp-layout-start-side{min-width:calc(var(--spacing, .25rem) * 80)!important;border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}axp-entity-master-list axp-layout-header{padding-bottom:var(--spacing, .25rem)}axp-entity-master-list .axp-entity-list-host{display:flex;height:100%;min-height:0px;flex-direction:column}axp-entity-master-list axp-page-content{display:flex;min-height:0px;flex-direction:column}axp-entity-master-list .axp-entity-list-host--hidden{display:none!important}.cdk-drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:rgba(var(--ax-sys-color-surface));padding:.5rem;height:max-content!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-primary>td{background:rgb(var(--ax-sys-color-primary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-secondary>td{background:rgb(var(--ax-sys-color-secondary-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-success>td{background:rgb(var(--ax-sys-color-success-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-warning>td{background:rgb(var(--ax-sys-color-warning-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-danger>td{background:rgb(var(--ax-sys-color-danger-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent1>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent1>td{background:rgb(var(--ax-sys-color-accent1-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent2>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent2>td{background:rgb(var(--ax-sys-color-accent2-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr.ax-row-color-accent3>td,axp-entity-master-list-data-table ax-data-table tbody tr.accent3>td{background:rgb(var(--ax-sys-color-accent3-50))!important}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary,axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary,axp-entity-master-list-data-table ax-data-table tbody tr>td.success,axp-entity-master-list-data-table ax-data-table tbody tr>td.warning,axp-entity-master-list-data-table ax-data-table tbody tr>td.danger,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2,axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{box-shadow:inset 0 0 0 1px rgb(var(--axp-entity-styling-border) / .35)}axp-entity-master-list-data-table ax-data-table tbody tr>td.primary{--axp-entity-styling-border: var(--ax-sys-color-border-primary-lightest-surface);background:rgb(var(--ax-sys-color-primary-100))!important;color:rgb(var(--ax-sys-color-on-primary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.secondary{--axp-entity-styling-border: var(--ax-sys-color-border-secondary-lightest-surface);background:rgb(var(--ax-sys-color-secondary-100))!important;color:rgb(var(--ax-sys-color-on-secondary-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.success{--axp-entity-styling-border: var(--ax-sys-color-border-success-lightest-surface);background:rgb(var(--ax-sys-color-success-100))!important;color:rgb(var(--ax-sys-color-on-success-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.warning{--axp-entity-styling-border: var(--ax-sys-color-border-warning-lightest-surface);background:rgb(var(--ax-sys-color-warning-100))!important;color:rgb(var(--ax-sys-color-on-warning-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.danger{--axp-entity-styling-border: var(--ax-sys-color-border-danger-lightest-surface);background:rgb(var(--ax-sys-color-danger-100))!important;color:rgb(var(--ax-sys-color-on-danger-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent1{--axp-entity-styling-border: var(--ax-sys-color-border-accent1-lightest-surface);background:rgb(var(--ax-sys-color-accent1-100))!important;color:rgb(var(--ax-sys-color-on-accent1-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent2{--axp-entity-styling-border: var(--ax-sys-color-border-accent2-lightest-surface);background:rgb(var(--ax-sys-color-accent2-100))!important;color:rgb(var(--ax-sys-color-on-accent2-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr>td.accent3{--axp-entity-styling-border: var(--ax-sys-color-border-accent3-lightest-surface);background:rgb(var(--ax-sys-color-accent3-100))!important;color:rgb(var(--ax-sys-color-on-accent3-lightest-surface))}axp-entity-master-list-data-table ax-data-table tbody tr[class*=ax-row-color-]:not(.ax-row-color-pulse) td{animation:none!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0%}.view-drawer{width:85vw;background-color:rgba(var(--ax-sys-color-lightest-surface));border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px;border-top-style:var(--tw-border-style);border-top-width:1px;border-top-color:rgba(var(--ax-sys-color-primary-600))}@media(width>=48rem){.view-drawer{width:45vw}}@media(width>=64rem){.view-drawer{width:35vw}}@media(width>=96rem){.view-drawer{width:20vw}}.view-drawer ax-header{display:flex;align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));background-color:rgba(var(--ax-sys-color-lighter-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}.view-drawer ax-header h2{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)));--tw-font-weight: var(--font-weight-bold, 700);font-weight:var(--font-weight-bold, 700);color:rgba(var(--ax-sys-color-on-lighter-surface))}.view-drawer ax-footer{position:absolute;bottom:0;width:100%;justify-content:flex-start;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:rgba(var(--ax-sys-color-lightest-surface));padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3051
|
+
}], ctorParameters: () => [{ type: i1$2.AXPlatform }], propDecorators: { dataTable: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPEntityMasterListDataTableComponent), { isSignal: true }] }], cardList: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPEntityMasterListCardListComponent), { isSignal: true }] }], toolbar: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPEntityMasterToolbarViewComponent), { isSignal: true }] }] } });
|
|
2807
3052
|
|
|
2808
3053
|
var entityMasterListView_component = /*#__PURE__*/Object.freeze({
|
|
2809
3054
|
__proto__: null,
|
|
@@ -3296,6 +3541,18 @@ class AXPRootLayoutHeaderComponent {
|
|
|
3296
3541
|
...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
|
|
3297
3542
|
this.headerButtonColor = this.store.headerButtonColor;
|
|
3298
3543
|
this.headerButtonLook = this.store.headerButtonLook;
|
|
3544
|
+
/** Collapse-chevron when hiding or going compact; expand-chevron when closed or cycling out of compact. */
|
|
3545
|
+
this.menuToggleShowsCollapse = computed(() => {
|
|
3546
|
+
if (!this.store.isSideMenuOpen()) {
|
|
3547
|
+
return false;
|
|
3548
|
+
}
|
|
3549
|
+
if (this.store.menuToggleCyclesStyleEnabled() &&
|
|
3550
|
+
this.store.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact) {
|
|
3551
|
+
return false;
|
|
3552
|
+
}
|
|
3553
|
+
return true;
|
|
3554
|
+
}, /* @ts-ignore */
|
|
3555
|
+
...(ngDevMode ? [{ debugName: "menuToggleShowsCollapse" }] : /* istanbul ignore next */ []));
|
|
3299
3556
|
this.shortcutRegistry.register({
|
|
3300
3557
|
owner: this.destroyRef,
|
|
3301
3558
|
id: 'root-layout-toggle-side-menu',
|
|
@@ -3322,7 +3579,7 @@ class AXPRootLayoutHeaderComponent {
|
|
|
3322
3579
|
this.router.navigate(['/']);
|
|
3323
3580
|
}
|
|
3324
3581
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootLayoutHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3325
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootLayoutHeaderComponent, isStandalone: true, selector: "axp-dashboard-admin-header", host: { properties: { "class": "hostClass()" } }, ngImport: i0, template: "<ax-button\n id=\"axp-menu-toggle\"\n (onClick)=\"toggleSideMenu()\"\n [color]=\"headerButtonColor()\"\n [look]=\"headerButtonLook()\"\n>\n <ax-icon class=\"rtl:rotate-180\">\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n @if (store.isSideMenuOpen()) {\n <defs>\n <clipPath id=\"clip1382_20239\">\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1382_20239)\">\n <rect\n id=\"rect\"\n x=\"17.420410\"\n y=\"12.316406\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(137.159 17.420410 12.316406)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"12.959473\"\n y=\"13.728516\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(40.853 12.959473 13.728516)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n } @else {\n <defs>\n <clipPath id=\"clip1381_20236\">\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1381_20236)\">\n <rect\n id=\"rect\"\n x=\"11.572754\"\n y=\"17.683594\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(-42.841 11.572754 17.683594)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"16.033691\"\n y=\"16.271484\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(-139.147 16.033691 16.271484)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n }\n </svg>\n </ax-icon>\n</ax-button>\n\n<div class=\"axp-root-header__main h-full flex min-w-0 flex-1 items-center gap-2\">\n @if (tabNavigation.isTabBarVisible()) {\n <axp-route-tab-bar class=\"axp-route-tab-bar--in-header min-w-0 flex-1 self-stretch\"></axp-route-tab-bar>\n }\n <div class=\"flex min-w-0 items-center gap-1\" [class.flex-1]=\"!tabNavigation.isTabBarVisible()\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n </div>\n</div>\n\n<div class=\"flex shrink-0 items-center gap-1\">\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n</div>\n", styles: ["@layer properties;axp-dashboard-admin-header ax-button{border-radius:calc(infinity * 1px)}axp-dashboard-admin-header.axp-header-simple{position:relative;overflow:visible;border-bottom-style:var(--tw-border-style);border-bottom-width:0px}axp-dashboard-admin-header.axp-header-simple:after{pointer-events:none;position:absolute;inset-inline:0px;bottom:0;z-index:0;content:\"\";height:1px;background-color:rgb(var(--ax-sys-color-border-light-surface))}axp-dashboard-admin-header.axp-header-simple>ax-button,axp-dashboard-admin-header.axp-header-simple .axp-root-header__main,axp-dashboard-admin-header.axp-header-simple>.flex{position:relative;z-index:1}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1$3.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPRouteTabBarComponent, selector: "axp-route-tab-bar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3582
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootLayoutHeaderComponent, isStandalone: true, selector: "axp-dashboard-admin-header", host: { properties: { "class": "hostClass()" } }, ngImport: i0, template: "<ax-button\n id=\"axp-menu-toggle\"\n (onClick)=\"toggleSideMenu()\"\n [color]=\"headerButtonColor()\"\n [look]=\"headerButtonLook()\"\n>\n <ax-icon class=\"rtl:rotate-180\">\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n @if (menuToggleShowsCollapse()) {\n <defs>\n <clipPath id=\"clip1382_20239\">\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1382_20239)\">\n <rect\n id=\"rect\"\n x=\"17.420410\"\n y=\"12.316406\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(137.159 17.420410 12.316406)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"12.959473\"\n y=\"13.728516\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(40.853 12.959473 13.728516)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n } @else {\n <defs>\n <clipPath id=\"clip1381_20236\">\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1381_20236)\">\n <rect\n id=\"rect\"\n x=\"11.572754\"\n y=\"17.683594\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(-42.841 11.572754 17.683594)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"16.033691\"\n y=\"16.271484\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(-139.147 16.033691 16.271484)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n }\n </svg>\n </ax-icon>\n</ax-button>\n\n<div class=\"axp-root-header__main h-full flex min-w-0 flex-1 items-center gap-2\">\n @if (tabNavigation.isTabBarVisible()) {\n <axp-route-tab-bar class=\"axp-route-tab-bar--in-header min-w-0 flex-1 self-stretch\"></axp-route-tab-bar>\n }\n <div class=\"flex min-w-0 items-center gap-1\" [class.flex-1]=\"!tabNavigation.isTabBarVisible()\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n </div>\n</div>\n\n<div class=\"axp-root-header__end flex shrink-0 items-center gap-1\">\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n</div>\n", styles: ["@layer properties;axp-dashboard-admin-header ax-button{border-radius:calc(infinity * 1px)}axp-dashboard-admin-header.axp-header-simple{position:relative;overflow:visible;border-bottom-style:var(--tw-border-style);border-bottom-width:0px}axp-dashboard-admin-header.axp-header-simple:after{pointer-events:none;position:absolute;inset-inline:0px;bottom:0;z-index:0;content:\"\";height:1px;background-color:rgb(var(--ax-sys-color-border-light-surface))}axp-dashboard-admin-header.axp-header-simple>ax-button,axp-dashboard-admin-header.axp-header-simple .axp-root-header__main,axp-dashboard-admin-header.axp-header-simple>.flex{position:relative;z-index:1}@media(max-width:600px){axp-dashboard-admin-header{gap:.25rem}axp-dashboard-admin-header .axp-root-header__main,axp-dashboard-admin-header .axp-root-header__main>.flex,axp-dashboard-admin-header .axp-root-header__end{gap:.25rem}axp-dashboard-admin-header .axp-root-header__end axp-component-slot{display:flex;align-items:center;gap:.25rem}axp-dashboard-admin-header>ax-button,axp-dashboard-admin-header>ax-button button,axp-dashboard-admin-header .axp-root-header__main ax-button,axp-dashboard-admin-header .axp-root-header__main ax-button button,axp-dashboard-admin-header .axp-root-header__end ax-button,axp-dashboard-admin-header .axp-root-header__end ax-button button{min-width:2.25rem;width:2.25rem;height:2.25rem;padding:0}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1$3.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPRouteTabBarComponent, selector: "axp-route-tab-bar" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3326
3583
|
}
|
|
3327
3584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootLayoutHeaderComponent, decorators: [{
|
|
3328
3585
|
type: Component,
|
|
@@ -3333,7 +3590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3333
3590
|
AXButtonModule,
|
|
3334
3591
|
AXDecoratorModule,
|
|
3335
3592
|
AXPRouteTabBarComponent,
|
|
3336
|
-
], template: "<ax-button\n id=\"axp-menu-toggle\"\n (onClick)=\"toggleSideMenu()\"\n [color]=\"headerButtonColor()\"\n [look]=\"headerButtonLook()\"\n>\n <ax-icon class=\"rtl:rotate-180\">\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n @if (store.isSideMenuOpen()) {\n <defs>\n <clipPath id=\"clip1382_20239\">\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1382_20239)\">\n <rect\n id=\"rect\"\n x=\"17.420410\"\n y=\"12.316406\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(137.159 17.420410 12.316406)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"12.959473\"\n y=\"13.728516\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(40.853 12.959473 13.728516)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n } @else {\n <defs>\n <clipPath id=\"clip1381_20236\">\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1381_20236)\">\n <rect\n id=\"rect\"\n x=\"11.572754\"\n y=\"17.683594\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(-42.841 11.572754 17.683594)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"16.033691\"\n y=\"16.271484\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(-139.147 16.033691 16.271484)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n }\n </svg>\n </ax-icon>\n</ax-button>\n\n<div class=\"axp-root-header__main h-full flex min-w-0 flex-1 items-center gap-2\">\n @if (tabNavigation.isTabBarVisible()) {\n <axp-route-tab-bar class=\"axp-route-tab-bar--in-header min-w-0 flex-1 self-stretch\"></axp-route-tab-bar>\n }\n <div class=\"flex min-w-0 items-center gap-1\" [class.flex-1]=\"!tabNavigation.isTabBarVisible()\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n </div>\n</div>\n\n<div class=\"flex shrink-0 items-center gap-1\">\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n</div>\n", styles: ["@layer properties;axp-dashboard-admin-header ax-button{border-radius:calc(infinity * 1px)}axp-dashboard-admin-header.axp-header-simple{position:relative;overflow:visible;border-bottom-style:var(--tw-border-style);border-bottom-width:0px}axp-dashboard-admin-header.axp-header-simple:after{pointer-events:none;position:absolute;inset-inline:0px;bottom:0;z-index:0;content:\"\";height:1px;background-color:rgb(var(--ax-sys-color-border-light-surface))}axp-dashboard-admin-header.axp-header-simple>ax-button,axp-dashboard-admin-header.axp-header-simple .axp-root-header__main,axp-dashboard-admin-header.axp-header-simple>.flex{position:relative;z-index:1}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3593
|
+
], template: "<ax-button\n id=\"axp-menu-toggle\"\n (onClick)=\"toggleSideMenu()\"\n [color]=\"headerButtonColor()\"\n [look]=\"headerButtonLook()\"\n>\n <ax-icon class=\"rtl:rotate-180\">\n <svg width=\"28\" height=\"28\" viewBox=\"0 0 30 30\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n @if (menuToggleShowsCollapse()) {\n <defs>\n <clipPath id=\"clip1382_20239\">\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1382_20239)\">\n <rect\n id=\"rect\"\n x=\"17.420410\"\n y=\"12.316406\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(137.159 17.420410 12.316406)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"12.959473\"\n y=\"13.728516\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(40.853 12.959473 13.728516)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.1 25.5L9.9 25.51C9.48 25.51 9.06 25.47 8.65 25.39C8.24 25.3 7.84 25.18 7.45 25.02C7.06 24.86 6.69 24.66 6.34 24.43C5.99 24.19 5.67 23.92 5.37 23.63C5.07 23.33 4.81 23 4.58 22.65C4.34 22.3 4.15 21.93 3.98 21.54C3.82 21.15 3.7 20.75 3.62 20.34C3.54 19.93 3.5 19.51 3.5 19.09L3.5 10.93C3.5 10.51 3.54 10.1 3.62 9.68C3.7 9.27 3.82 8.87 3.98 8.48C4.15 8.09 4.34 7.72 4.58 7.37C4.81 7.02 5.07 6.69 5.37 6.39C5.67 6.1 5.99 5.83 6.34 5.6C6.69 5.36 7.06 5.16 7.45 5C7.84 4.84 8.24 4.72 8.65 4.64C9.06 4.55 9.48 4.51 9.9 4.51L20.1 4.5C20.52 4.5 20.94 4.54 21.35 4.62C21.76 4.7 22.16 4.83 22.55 4.99C22.94 5.15 23.31 5.35 23.66 5.58C24 5.82 24.33 6.08 24.62 6.38C24.92 6.68 25.19 7 25.42 7.35C25.65 7.7 25.85 8.07 26.01 8.46C26.17 8.85 26.3 9.25 26.38 9.67C26.46 10.08 26.5 10.5 26.5 10.92L26.5 19.07C26.5 19.5 26.46 19.91 26.38 20.32C26.3 20.74 26.17 21.14 26.01 21.53C25.85 21.92 25.65 22.29 25.42 22.64C25.19 22.99 24.92 23.31 24.62 23.61C24.33 23.91 24 24.17 23.66 24.41C23.31 24.64 22.94 24.84 22.55 25C22.16 25.16 21.76 25.29 21.35 25.37C20.94 25.45 20.52 25.5 20.1 25.5ZM9.9 6.6C9.61 6.6 9.33 6.63 9.05 6.69C8.78 6.74 8.51 6.82 8.24 6.93C7.98 7.04 7.73 7.18 7.5 7.33C7.26 7.49 7.04 7.67 6.84 7.87C6.64 8.07 6.46 8.29 6.31 8.53C6.15 8.77 6.02 9.01 5.91 9.28C5.8 9.54 5.72 9.81 5.66 10.09C5.61 10.37 5.58 10.65 5.58 10.93L5.58 19.09C5.58 19.37 5.61 19.65 5.66 19.93C5.72 20.21 5.8 20.48 5.91 20.74C6.02 21.01 6.15 21.26 6.31 21.49C6.46 21.73 6.64 21.95 6.84 22.15C7.04 22.35 7.26 22.53 7.5 22.69C7.73 22.85 7.98 22.98 8.24 23.09C8.51 23.2 8.78 23.28 9.05 23.33C9.33 23.39 9.61 23.42 9.9 23.42L20.1 23.41C20.38 23.41 20.67 23.37 20.94 23.32C21.22 23.26 21.49 23.18 21.75 23.07C22.01 22.96 22.26 22.83 22.5 22.67C22.73 22.51 22.95 22.33 23.15 22.13C23.35 21.93 23.53 21.71 23.69 21.48C23.85 21.24 23.98 20.99 24.09 20.73C24.2 20.47 24.28 20.2 24.33 19.92C24.39 19.64 24.42 19.36 24.42 19.07L24.42 10.92C24.42 10.64 24.39 10.35 24.33 10.07C24.28 9.79 24.2 9.52 24.09 9.26C23.98 9 23.85 8.75 23.69 8.51C23.53 8.28 23.35 8.06 23.15 7.86C22.95 7.66 22.73 7.48 22.5 7.32C22.26 7.16 22.01 7.03 21.75 6.92C21.49 6.81 21.22 6.73 20.94 6.67C20.67 6.62 20.38 6.59 20.1 6.59L9.9 6.6Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.5 5.51L10.54 5.51L10.6 24.43L8.55 24.43L8.5 5.51Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n } @else {\n <defs>\n <clipPath id=\"clip1381_20236\">\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"white\" fill-opacity=\"0\"></rect>\n </clipPath>\n </defs>\n <rect id=\"\u6253\u5F00\u8FB9\u680F0730\" width=\"30.000000\" height=\"30.000000\" fill=\"#FFFFFF\" fill-opacity=\"0\"></rect>\n <g clip-path=\"url(#clip1381_20236)\">\n <rect\n id=\"rect\"\n x=\"11.572754\"\n y=\"17.683594\"\n rx=\"1.000947\"\n width=\"5.995172\"\n height=\"2.001895\"\n transform=\"rotate(-42.841 11.572754 17.683594)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <rect\n id=\"rect\"\n x=\"16.033691\"\n y=\"16.271484\"\n rx=\"0.995190\"\n width=\"6.002943\"\n height=\"1.990380\"\n transform=\"rotate(-139.147 16.033691 16.271484)\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n ></rect>\n <path\n id=\"path\"\n d=\"M20.09 25.48L9.89 25.5C9.47 25.5 9.05 25.45 8.64 25.37C8.23 25.29 7.83 25.17 7.44 25C7.05 24.84 6.68 24.64 6.33 24.41C5.98 24.18 5.66 23.91 5.36 23.61C5.07 23.31 4.8 22.99 4.57 22.64C4.34 22.29 4.14 21.92 3.98 21.53C3.82 21.14 3.69 20.74 3.61 20.32C3.53 19.91 3.49 19.49 3.49 19.07L3.49 10.92C3.49 10.5 3.53 10.08 3.61 9.67C3.69 9.25 3.82 8.85 3.98 8.46C4.14 8.07 4.34 7.7 4.57 7.35C4.8 7 5.07 6.68 5.36 6.38C5.66 6.08 5.98 5.81 6.33 5.58C6.68 5.35 7.05 5.15 7.44 4.99C7.83 4.82 8.23 4.7 8.64 4.62C9.05 4.54 9.47 4.5 9.89 4.5L20.09 4.48C20.51 4.48 20.93 4.52 21.34 4.6C21.75 4.69 22.15 4.81 22.54 4.97C22.93 5.13 23.3 5.33 23.65 5.57C24 5.8 24.32 6.06 24.62 6.36C24.92 6.66 25.18 6.98 25.41 7.33C25.65 7.69 25.84 8.06 26.01 8.45C26.17 8.84 26.29 9.24 26.37 9.65C26.45 10.06 26.49 10.48 26.5 10.91L26.5 19.06C26.49 19.48 26.45 19.89 26.37 20.31C26.29 20.72 26.17 21.12 26.01 21.51C25.84 21.9 25.65 22.27 25.41 22.62C25.18 22.97 24.92 23.3 24.62 23.6C24.32 23.89 24 24.16 23.65 24.39C23.3 24.63 22.93 24.83 22.54 24.99C22.15 25.15 21.75 25.27 21.34 25.35C20.93 25.44 20.51 25.48 20.09 25.48ZM9.89 6.59C9.61 6.59 9.32 6.62 9.05 6.67C8.77 6.73 8.5 6.81 8.24 6.92C7.98 7.03 7.73 7.16 7.49 7.32C7.26 7.48 7.04 7.66 6.84 7.86C6.64 8.06 6.46 8.28 6.3 8.51C6.14 8.75 6.01 9 5.9 9.26C5.79 9.52 5.71 9.8 5.66 10.07C5.6 10.35 5.57 10.63 5.57 10.92L5.57 19.07C5.57 19.36 5.6 19.64 5.66 19.92C5.71 20.19 5.79 20.47 5.9 20.73C6.01 20.99 6.14 21.24 6.3 21.48C6.46 21.71 6.64 21.93 6.84 22.13C7.04 22.33 7.26 22.51 7.49 22.67C7.73 22.83 7.98 22.96 8.24 23.07C8.5 23.18 8.77 23.26 9.05 23.32C9.32 23.37 9.61 23.4 9.89 23.4L20.09 23.39C20.38 23.39 20.66 23.36 20.94 23.3C21.21 23.25 21.48 23.17 21.75 23.06C22.01 22.95 22.26 22.81 22.49 22.66C22.73 22.5 22.95 22.32 23.15 22.12C23.35 21.91 23.52 21.7 23.68 21.46C23.84 21.22 23.97 20.98 24.08 20.71C24.19 20.45 24.27 20.18 24.33 19.9C24.38 19.62 24.41 19.34 24.41 19.06L24.41 10.91C24.41 10.62 24.38 10.34 24.33 10.06C24.27 9.78 24.19 9.51 24.08 9.25C23.97 8.98 23.84 8.74 23.68 8.5C23.52 8.26 23.35 8.04 23.15 7.84C22.95 7.64 22.73 7.46 22.49 7.3C22.26 7.15 22.01 7.01 21.75 6.9C21.48 6.79 21.21 6.71 20.94 6.66C20.66 6.6 20.38 6.57 20.09 6.57L9.89 6.59Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n id=\"rect\"\n d=\"M8.49 5.5L10.53 5.5L10.59 24.41L8.54 24.41L8.49 5.5Z\"\n fill=\"currentColor\"\n fill-opacity=\"1.000000\"\n fill-rule=\"evenodd\"\n ></path>\n </g>\n }\n </svg>\n </ax-icon>\n</ax-button>\n\n<div class=\"axp-root-header__main h-full flex min-w-0 flex-1 items-center gap-2\">\n @if (tabNavigation.isTabBarVisible()) {\n <axp-route-tab-bar class=\"axp-route-tab-bar--in-header min-w-0 flex-1 self-stretch\"></axp-route-tab-bar>\n }\n <div class=\"flex min-w-0 items-center gap-1\" [class.flex-1]=\"!tabNavigation.isTabBarVisible()\">\n <axp-component-slot name=\"root-header-start\"></axp-component-slot>\n </div>\n</div>\n\n<div class=\"axp-root-header__end flex shrink-0 items-center gap-1\">\n <axp-component-slot name=\"root-header-end\"></axp-component-slot>\n</div>\n", styles: ["@layer properties;axp-dashboard-admin-header ax-button{border-radius:calc(infinity * 1px)}axp-dashboard-admin-header.axp-header-simple{position:relative;overflow:visible;border-bottom-style:var(--tw-border-style);border-bottom-width:0px}axp-dashboard-admin-header.axp-header-simple:after{pointer-events:none;position:absolute;inset-inline:0px;bottom:0;z-index:0;content:\"\";height:1px;background-color:rgb(var(--ax-sys-color-border-light-surface))}axp-dashboard-admin-header.axp-header-simple>ax-button,axp-dashboard-admin-header.axp-header-simple .axp-root-header__main,axp-dashboard-admin-header.axp-header-simple>.flex{position:relative;z-index:1}@media(max-width:600px){axp-dashboard-admin-header{gap:.25rem}axp-dashboard-admin-header .axp-root-header__main,axp-dashboard-admin-header .axp-root-header__main>.flex,axp-dashboard-admin-header .axp-root-header__end{gap:.25rem}axp-dashboard-admin-header .axp-root-header__end axp-component-slot{display:flex;align-items:center;gap:.25rem}axp-dashboard-admin-header>ax-button,axp-dashboard-admin-header>ax-button button,axp-dashboard-admin-header .axp-root-header__main ax-button,axp-dashboard-admin-header .axp-root-header__main ax-button button,axp-dashboard-admin-header .axp-root-header__end ax-button,axp-dashboard-admin-header .axp-root-header__end ax-button button{min-width:2.25rem;width:2.25rem;height:2.25rem;padding:0}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3337
3594
|
}], ctorParameters: () => [] });
|
|
3338
3595
|
|
|
3339
3596
|
class AXPRootLayoutMenuComponent {
|
|
@@ -3355,19 +3612,39 @@ class AXPRootLayoutMenuComponent {
|
|
|
3355
3612
|
//#region ---- Component State ----
|
|
3356
3613
|
this.badgeVisible = signal(true, /* @ts-ignore */
|
|
3357
3614
|
...(ngDevMode ? [{ debugName: "badgeVisible" }] : /* istanbul ignore next */ []));
|
|
3615
|
+
this.menuLook = signal('default', /* @ts-ignore */
|
|
3616
|
+
...(ngDevMode ? [{ debugName: "menuLook" }] : /* istanbul ignore next */ []));
|
|
3617
|
+
this.childBackgroundDarker = signal(false, /* @ts-ignore */
|
|
3618
|
+
...(ngDevMode ? [{ debugName: "childBackgroundDarker" }] : /* istanbul ignore next */ []));
|
|
3619
|
+
this.menuDensity = signal('normal', /* @ts-ignore */
|
|
3620
|
+
...(ngDevMode ? [{ debugName: "menuDensity" }] : /* istanbul ignore next */ []));
|
|
3358
3621
|
this.menuMode = this.themeStore.effectiveMenuVerticalMode;
|
|
3359
3622
|
}
|
|
3360
3623
|
//#endregion
|
|
3361
3624
|
async ngOnInit() {
|
|
3362
|
-
let
|
|
3625
|
+
let nextBadgeVisible = true;
|
|
3626
|
+
let nextLookWithLine = false;
|
|
3627
|
+
let nextChildBackgroundDarker = false;
|
|
3628
|
+
let nextDensity = 'normal';
|
|
3363
3629
|
try {
|
|
3364
|
-
|
|
3630
|
+
nextBadgeVisible =
|
|
3365
3631
|
(await this.settingsService.get(AXPThemeLayoutSetting.MenuBadgeVisible)) ?? true;
|
|
3632
|
+
nextLookWithLine =
|
|
3633
|
+
(await this.settingsService.get(AXPThemeLayoutSetting.MenuLookWithLine)) ?? false;
|
|
3634
|
+
nextChildBackgroundDarker =
|
|
3635
|
+
(await this.settingsService.get(AXPThemeLayoutSetting.MenuChildBackgroundDarker)) ?? false;
|
|
3636
|
+
nextDensity = this.asMenuDensity(await this.settingsService.get(AXPThemeLayoutSetting.MenuDensity));
|
|
3366
3637
|
}
|
|
3367
3638
|
catch {
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3639
|
+
nextBadgeVisible = true;
|
|
3640
|
+
nextLookWithLine = false;
|
|
3641
|
+
nextChildBackgroundDarker = false;
|
|
3642
|
+
nextDensity = 'normal';
|
|
3643
|
+
}
|
|
3644
|
+
this.badgeVisible.set(nextBadgeVisible);
|
|
3645
|
+
this.menuLook.set(nextLookWithLine ? 'with-line' : 'default');
|
|
3646
|
+
this.childBackgroundDarker.set(nextChildBackgroundDarker);
|
|
3647
|
+
this.menuDensity.set(nextDensity);
|
|
3371
3648
|
this.settingsService.onChanged.subscribe((setting) => {
|
|
3372
3649
|
if (setting.keys.includes(AXPThemeLayoutSetting.MenuBadgeVisible)) {
|
|
3373
3650
|
const value = setting.values[AXPThemeLayoutSetting.MenuBadgeVisible];
|
|
@@ -3375,8 +3652,26 @@ class AXPRootLayoutMenuComponent {
|
|
|
3375
3652
|
this.badgeVisible.set(value);
|
|
3376
3653
|
}
|
|
3377
3654
|
}
|
|
3655
|
+
if (setting.keys.includes(AXPThemeLayoutSetting.MenuLookWithLine)) {
|
|
3656
|
+
const value = setting.values[AXPThemeLayoutSetting.MenuLookWithLine];
|
|
3657
|
+
if (typeof value === 'boolean') {
|
|
3658
|
+
this.menuLook.set(value ? 'with-line' : 'default');
|
|
3659
|
+
}
|
|
3660
|
+
}
|
|
3661
|
+
if (setting.keys.includes(AXPThemeLayoutSetting.MenuChildBackgroundDarker)) {
|
|
3662
|
+
const value = setting.values[AXPThemeLayoutSetting.MenuChildBackgroundDarker];
|
|
3663
|
+
if (typeof value === 'boolean') {
|
|
3664
|
+
this.childBackgroundDarker.set(value);
|
|
3665
|
+
}
|
|
3666
|
+
}
|
|
3667
|
+
if (setting.keys.includes(AXPThemeLayoutSetting.MenuDensity)) {
|
|
3668
|
+
this.menuDensity.set(this.asMenuDensity(setting.values[AXPThemeLayoutSetting.MenuDensity]));
|
|
3669
|
+
}
|
|
3378
3670
|
});
|
|
3379
3671
|
}
|
|
3672
|
+
asMenuDensity(value) {
|
|
3673
|
+
return value === 'compact' ? 'compact' : 'normal';
|
|
3674
|
+
}
|
|
3380
3675
|
onMenuItemClick(item) {
|
|
3381
3676
|
if (item.children?.length) {
|
|
3382
3677
|
return;
|
|
@@ -3585,7 +3880,7 @@ class AXPRootLayoutMenuComponent {
|
|
|
3585
3880
|
return lowerPath.startsWith('http://') || lowerPath.startsWith('https://');
|
|
3586
3881
|
}
|
|
3587
3882
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootLayoutMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3588
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootLayoutMenuComponent, isStandalone: true, selector: "axp-side-menu", ngImport: i0, template: "<ax-side-menu
|
|
3883
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootLayoutMenuComponent, isStandalone: true, selector: "axp-side-menu", ngImport: i0, template: "<ax-side-menu\n [mode]=\"menuMode()\"\n [look]=\"menuLook()\"\n [class.axp-side-menu--child-bg-darker]=\"childBackgroundDarker()\"\n [class.axp-side-menu--dense]=\"menuDensity() === 'compact'\"\n [attr.data-access-policy]=\"accessPolicyRevision()\"\n>\n @let sortedItems = sort(menuStore.items());\n @for (item of sortedItems; track item; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"recursiveMenu\"\n [ngTemplateOutletContext]=\"{ item: item, items: sortedItems, index: i }\"\n >\n </ng-container>\n }\n</ax-side-menu>\n<ng-template #recursiveMenu let-item=\"item\" let-items=\"items\" let-index=\"index\">\n @if (item.type == 'group' && menuMode() === 'full') {\n @if (isItemVisible(item)) {\n <ax-title>{{ item.text | translate | async }}</ax-title>\n }\n } @else if (item.type == 'break') {\n @if (shouldShowDivider(item, items, index)) {\n <ax-divider></ax-divider>\n }\n } @else {\n @if (shouldRenderMenuItem(item)) {\n <ax-side-menu-item\n [attr.id]=\"'axp-menu-item-' + (item.name || item.text)\"\n (onClick)=\"onMenuItemClick(item)\"\n [active]=\"isMenuItemActive(item)\"\n [isCollapsed]=\"isMenuItemCollapsed(item)\"\n >\n <ax-prefix>\n <ax-icon [class]=\"item.icon\" class=\"fa-fw\"></ax-icon>\n </ax-prefix>\n <span>{{ item.text | translate | async }}</span>\n @if (item.children?.length) {\n <ng-container>\n @let sortedChildren = sort(item.children);\n @for (child of sortedChildren; track child; let childIndex = $index) {\n <ng-container\n [ngTemplateOutlet]=\"recursiveMenu\"\n [ngTemplateOutletContext]=\"{ item: child, items: sortedChildren, index: childIndex }\"\n >\n </ng-container>\n }\n </ng-container>\n }\n <ax-suffix>\n @if (badgeVisible()) {\n <ax-badge [axp-task-badge]=\"getMenuBadge(item)()\" color=\"secondary\"></ax-badge>\n }\n </ax-suffix>\n </ax-side-menu-item>\n }\n }\n</ng-template>\n", styles: ["axp-side-menu{--ax-comp-side-menu-active-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-side-menu-active-text-color: var(--ax-sys-color-on-primary-surface);--axp-side-menu-chrome-stroke: color-mix(in srgb, currentColor 35%, transparent);--axp-side-menu-child-bg: color-mix(in srgb, #000 11%, transparent)}.axp-side-menu-scroll:not(.axp-side-menu-scroll--on-dark) axp-side-menu{--axp-side-menu-chrome-stroke: color-mix(in srgb, currentColor 14%, transparent);--axp-side-menu-child-bg: color-mix(in srgb, #000 11%, transparent)}axp-side-menu ax-side-menu.ax-look-with-line .ax-side-children{border-inline-start-color:var(--axp-side-menu-chrome-stroke)}axp-side-menu ax-side-menu ax-divider{background-color:var(--axp-side-menu-chrome-stroke)}axp-side-menu:has(ax-side-menu[mode=compact]) ax-side-menu-item,axp-side-menu ax-side-menu[mode=compact] ax-side-menu-item{justify-content:center}ax-side-menu.axp-side-menu--dense{gap:calc(var(--spacing, .25rem) * .5)}ax-side-menu.axp-side-menu--dense ax-side-menu-item .ax-side-item{padding-inline:calc(var(--spacing, .25rem) * 1.5)}ax-side-menu.axp-side-menu--dense .ax-side-children-content{gap:calc(var(--spacing, .25rem) * .5)}ax-side-menu.axp-side-menu--child-bg-darker .ax-side-children,ax-side-menu.axp-side-menu--child-bg-darker .ax-side-children-content{background-color:var(--axp-side-menu-child-bg);border-radius:.375rem}ax-side-menu.ax-look-with-line.axp-side-menu--child-bg-darker .ax-side-children{border-start-start-radius:0;border-end-start-radius:0}ax-side-menu.ax-look-with-line.axp-side-menu--child-bg-darker .ax-side-children-content{background-color:transparent;border-radius:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "component", type: i2$4.AXSideMenuComponent, selector: "ax-side-menu", inputs: ["items", "look", "location", "mode"], outputs: ["itemsChange"] }, { kind: "component", type: i2$4.AXSideMenuItemComponent, selector: "ax-side-menu-item", inputs: ["disabled", "text", "active", "isLoading", "isCollapsed", "toggleOnClick", "href", "routerLink", "routerLinkActive", "routerLinkActiveOptions", "target"], outputs: ["textChange", "isLoadingChange", "isCollapsedChange", "onClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: AXPTaskBadgeDirective, selector: "[axp-task-badge]", inputs: ["badgeKey", "axp-task-badge"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i4.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3589
3884
|
}
|
|
3590
3885
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootLayoutMenuComponent, decorators: [{
|
|
3591
3886
|
type: Component,
|
|
@@ -3596,7 +3891,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3596
3891
|
AXPTaskBadgeDirective,
|
|
3597
3892
|
AXDecoratorModule,
|
|
3598
3893
|
AXBadgeModule,
|
|
3599
|
-
], template: "<ax-side-menu
|
|
3894
|
+
], template: "<ax-side-menu\n [mode]=\"menuMode()\"\n [look]=\"menuLook()\"\n [class.axp-side-menu--child-bg-darker]=\"childBackgroundDarker()\"\n [class.axp-side-menu--dense]=\"menuDensity() === 'compact'\"\n [attr.data-access-policy]=\"accessPolicyRevision()\"\n>\n @let sortedItems = sort(menuStore.items());\n @for (item of sortedItems; track item; let i = $index) {\n <ng-container\n [ngTemplateOutlet]=\"recursiveMenu\"\n [ngTemplateOutletContext]=\"{ item: item, items: sortedItems, index: i }\"\n >\n </ng-container>\n }\n</ax-side-menu>\n<ng-template #recursiveMenu let-item=\"item\" let-items=\"items\" let-index=\"index\">\n @if (item.type == 'group' && menuMode() === 'full') {\n @if (isItemVisible(item)) {\n <ax-title>{{ item.text | translate | async }}</ax-title>\n }\n } @else if (item.type == 'break') {\n @if (shouldShowDivider(item, items, index)) {\n <ax-divider></ax-divider>\n }\n } @else {\n @if (shouldRenderMenuItem(item)) {\n <ax-side-menu-item\n [attr.id]=\"'axp-menu-item-' + (item.name || item.text)\"\n (onClick)=\"onMenuItemClick(item)\"\n [active]=\"isMenuItemActive(item)\"\n [isCollapsed]=\"isMenuItemCollapsed(item)\"\n >\n <ax-prefix>\n <ax-icon [class]=\"item.icon\" class=\"fa-fw\"></ax-icon>\n </ax-prefix>\n <span>{{ item.text | translate | async }}</span>\n @if (item.children?.length) {\n <ng-container>\n @let sortedChildren = sort(item.children);\n @for (child of sortedChildren; track child; let childIndex = $index) {\n <ng-container\n [ngTemplateOutlet]=\"recursiveMenu\"\n [ngTemplateOutletContext]=\"{ item: child, items: sortedChildren, index: childIndex }\"\n >\n </ng-container>\n }\n </ng-container>\n }\n <ax-suffix>\n @if (badgeVisible()) {\n <ax-badge [axp-task-badge]=\"getMenuBadge(item)()\" color=\"secondary\"></ax-badge>\n }\n </ax-suffix>\n </ax-side-menu-item>\n }\n }\n</ng-template>\n", styles: ["axp-side-menu{--ax-comp-side-menu-active-bg-color: var(--ax-sys-color-primary-surface);--ax-comp-side-menu-active-text-color: var(--ax-sys-color-on-primary-surface);--axp-side-menu-chrome-stroke: color-mix(in srgb, currentColor 35%, transparent);--axp-side-menu-child-bg: color-mix(in srgb, #000 11%, transparent)}.axp-side-menu-scroll:not(.axp-side-menu-scroll--on-dark) axp-side-menu{--axp-side-menu-chrome-stroke: color-mix(in srgb, currentColor 14%, transparent);--axp-side-menu-child-bg: color-mix(in srgb, #000 11%, transparent)}axp-side-menu ax-side-menu.ax-look-with-line .ax-side-children{border-inline-start-color:var(--axp-side-menu-chrome-stroke)}axp-side-menu ax-side-menu ax-divider{background-color:var(--axp-side-menu-chrome-stroke)}axp-side-menu:has(ax-side-menu[mode=compact]) ax-side-menu-item,axp-side-menu ax-side-menu[mode=compact] ax-side-menu-item{justify-content:center}ax-side-menu.axp-side-menu--dense{gap:calc(var(--spacing, .25rem) * .5)}ax-side-menu.axp-side-menu--dense ax-side-menu-item .ax-side-item{padding-inline:calc(var(--spacing, .25rem) * 1.5)}ax-side-menu.axp-side-menu--dense .ax-side-children-content{gap:calc(var(--spacing, .25rem) * .5)}ax-side-menu.axp-side-menu--child-bg-darker .ax-side-children,ax-side-menu.axp-side-menu--child-bg-darker .ax-side-children-content{background-color:var(--axp-side-menu-child-bg);border-radius:.375rem}ax-side-menu.ax-look-with-line.axp-side-menu--child-bg-darker .ax-side-children{border-start-start-radius:0;border-end-start-radius:0}ax-side-menu.ax-look-with-line.axp-side-menu--child-bg-darker .ax-side-children-content{background-color:transparent;border-radius:0}\n"] }]
|
|
3600
3895
|
}] });
|
|
3601
3896
|
|
|
3602
3897
|
class AXPHorizontalMenuComponent {
|
|
@@ -3839,6 +4134,17 @@ class AXPRootVerticalLayoutComponent {
|
|
|
3839
4134
|
/** Recreates the drawer when switching overlay ↔ push to reset internal layout sizing. */
|
|
3840
4135
|
this.sideMenuDrawerKey = computed(() => this.deviceService.isSmall() || this.deviceService.isMedium() ? 'overlay' : 'push', /* @ts-ignore */
|
|
3841
4136
|
...(ngDevMode ? [{ debugName: "sideMenuDrawerKey" }] : /* istanbul ignore next */ []));
|
|
4137
|
+
/** Compact rail shows mark only; full width shows mark + wordmark. */
|
|
4138
|
+
this.sideMenuLogoFormat = computed(() => this.store.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact ? 'mark' : 'full', /* @ts-ignore */
|
|
4139
|
+
...(ngDevMode ? [{ debugName: "sideMenuLogoFormat" }] : /* istanbul ignore next */ []));
|
|
4140
|
+
/** Mark-only needs a smaller host so it fits the compact drawer (~80px). */
|
|
4141
|
+
this.sideMenuLogoSize = computed(() => this.store.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact ? 28 : 200, /* @ts-ignore */
|
|
4142
|
+
...(ngDevMode ? [{ debugName: "sideMenuLogoSize" }] : /* istanbul ignore next */ []));
|
|
4143
|
+
/** Compact rail: tighter pad so icons stay visually centered. */
|
|
4144
|
+
this.sideMenuHostClass = computed(() => this.store.effectiveMenuVerticalMode() === AXPMenuVerticalMode.Compact
|
|
4145
|
+
? 'block p-2'
|
|
4146
|
+
: 'block p-4', /* @ts-ignore */
|
|
4147
|
+
...(ngDevMode ? [{ debugName: "sideMenuHostClass" }] : /* istanbul ignore next */ []));
|
|
3842
4148
|
/** Logo / profile divider: white on dark menus, black on light menus. */
|
|
3843
4149
|
this.sideMenuDividerBorderClass = computed(() => {
|
|
3844
4150
|
const appearance = this.store.menuAppearance();
|
|
@@ -3872,7 +4178,7 @@ class AXPRootVerticalLayoutComponent {
|
|
|
3872
4178
|
/** Body chrome for dark / light / brand-light / brand-dark menu appearances. */
|
|
3873
4179
|
this.sideMenuSurfaceClass = computed(() => {
|
|
3874
4180
|
const appearance = this.store.menuAppearance();
|
|
3875
|
-
const base = 'axp-side-menu-scroll flex h-full flex-col overflow-x-hidden overflow-y-
|
|
4181
|
+
const base = 'axp-side-menu-scroll flex h-full flex-col overflow-x-hidden overflow-y-auto';
|
|
3876
4182
|
switch (appearance) {
|
|
3877
4183
|
case 'dark':
|
|
3878
4184
|
return `${base} ax-dark bg-lighter dark:bg-darker`;
|
|
@@ -3911,7 +4217,7 @@ class AXPRootVerticalLayoutComponent {
|
|
|
3911
4217
|
this.store.closeSideMenu();
|
|
3912
4218
|
}
|
|
3913
4219
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootVerticalLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3914
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootVerticalLayoutComponent, isStandalone: true, selector: "axp-root-vertical-layout", ngImport: i0, template: "<div
|
|
4220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRootVerticalLayoutComponent, isStandalone: true, selector: "axp-root-vertical-layout", ngImport: i0, template: "<div\n id=\"axp-root-layout\"\n class=\"axp-root-layout\"\n [attr.data-side-menu-open]=\"store.isSideMenuOpen()\"\n>\n <ax-drawer-container class=\"min-h-0 flex-1\">\n @for (drawerKey of [sideMenuDrawerKey()]; track drawerKey) {\n <ax-drawer\n id=\"axp-side-menu-drawer\"\n [axResizable]=\"drawerKey === 'push'\"\n class=\"h-full flex! flex-col dark:border-e dark:border-default\"\n [width]=\"(drawerKey === 'push' ? store.sideMenuDrawerWidth() : undefined)!\"\n [defaultWidth]=\"(drawerKey === 'push' ? store.sideMenuDrawerWidth() : undefined)!\"\n location=\"start\"\n [collapsed]=\"!store.isSideMenuOpen()\"\n [closeOnBackdropClick]=\"false\"\n [mode]=\"drawerKey === 'overlay' ? 'overlay' : 'push'\"\n [dblClickAction]=\"'fit'\"\n (onResizingEnded)=\"handleResizingEnded($event)\"\n (onResizingDblClick)=\"handleResizingEnded($event)\"\n (onBackdropClick)=\"handleBackdropClick()\"\n backdropClass=\"bg-black/50\"\n [class.w-[80%]]=\"drawerKey === 'overlay'\"\n >\n <ax-header\n id=\"axp-side-menu-header\"\n [class]=\"sideMenuHeaderClass()\"\n >\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n [format]=\"sideMenuLogoFormat()\"\n [size]=\"sideMenuLogoSize()\"\n ></axp-logo>\n </ax-header>\n <ax-content\n [class]=\"sideMenuSurfaceClass()\"\n [class.axp-side-menu-scroll--on-dark]=\"sideMenuScrollUsesLightThumb()\"\n [attr.data-menu-appearance]=\"store.menuAppearance()\"\n [attr.data-menu-vertical-mode]=\"store.effectiveMenuVerticalMode()\"\n >\n <axp-component-slot name=\"root-side-menu-header\"></axp-component-slot>\n <div>\n <axp-side-menu\n id=\"axp-side-menu\"\n [class]=\"sideMenuHostClass()\"\n ></axp-side-menu>\n </div>\n <axp-component-slot name=\"root-side-menu-footer\"></axp-component-slot>\n </ax-content>\n </ax-drawer>\n }\n <ax-content\n class=\"flex min-h-0 flex-1 flex-col relative bg-lightest dark:bg-lighter overflow-hidden\"\n >\n @if (store.isNavigationLoading()) {\n <div class=\"axp-navigating-progress\">\n <div></div>\n </div>\n }\n <axp-dashboard-admin-header\n id=\"axp-main-header\"\n class=\"shrink-0\"\n ></axp-dashboard-admin-header>\n\n <div class=\"relative min-h-0 flex-1 overflow-auto\">\n <router-outlet></router-outlet>\n </div>\n\n <!-- ----- Footer aligned with main content (container width) ----- -->\n @if (!store.effectiveMainFooterFullWidth()) {\n <axp-dashboard-admin-footer\n id=\"axp-main-footer\"\n class=\"shrink-0\"\n ></axp-dashboard-admin-footer>\n }\n </ax-content>\n </ax-drawer-container>\n <axp-component-slot name=\"root-layout-overlay\"></axp-component-slot>\n\n <!-- ----- Full-width footer spans the entire viewport (vertical layout only) ----- -->\n @if (store.effectiveMainFooterFullWidth()) {\n <axp-dashboard-admin-footer id=\"axp-main-footer\"></axp-dashboard-admin-footer>\n }\n</div>\n", styles: [".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-root-layout[data-side-menu-open=false] #axp-side-menu-drawer{display:none!important;width:0!important;min-width:0!important;overflow:hidden;pointer-events:none;flex:0 0 0!important}#axp-side-menu-drawer{box-sizing:border-box}#axp-side-menu-drawer:has([data-menu-vertical-mode=compact]) #axp-side-menu-header{padding-inline:.5rem}#axp-side-menu-drawer:has([data-menu-vertical-mode=compact]) #axp-side-menu-header axp-logo{display:inline-flex;justify-content:center;max-width:100%}.axp-navigating-progress{position:absolute;top:0;height:var(--spacing, .25rem);width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200))}@supports (color: color-mix(in lab,red,red)){.axp-navigating-progress{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-200)) 40%,transparent)}}.axp-navigating-progress>div{height:100%;width:100%;background-color:rgba(var(--ax-sys-color-primary-500));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll{--axp-side-menu-scrollbar-size: 8px;--axp-side-menu-scrollbar-radius: 4px;scrollbar-gutter:auto;scrollbar-width:thin}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-vertical-mode=compact] #axp-side-menu{display:flex;flex-direction:column;align-items:center}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-vertical-mode=compact] #axp-side-menu ax-side-menu{width:100%;align-items:center}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar{width:var(--axp-side-menu-scrollbar-size);height:var(--axp-side-menu-scrollbar-size)}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar-track{background:transparent;border-radius:var(--axp-side-menu-scrollbar-radius)}#axp-side-menu-drawer ax-content.axp-side-menu-scroll{--ax-sys-scroller-thumb-color: rgba(0, 0, 0, .35);--ax-sys-scroller-track-color: transparent;scrollbar-color:rgba(0,0,0,.35) transparent}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar-thumb{background:#00000059!important;border-radius:var(--axp-side-menu-scrollbar-radius);min-height:2.5rem}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark{--ax-sys-scroller-thumb-color: rgba(255, 255, 255, .5) !important;--ax-sys-scroller-track-color: transparent !important;scrollbar-color:rgba(255,255,255,.5) transparent!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark::-webkit-scrollbar-thumb{background:#ffffff80!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark::-webkit-scrollbar-thumb:hover{background:#ffffff80!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-appearance=brand-light]:not(.axp-side-menu-scroll--on-dark){--ax-sys-scroller-thumb-color: rgba(255, 255, 255, .5) !important;scrollbar-color:rgba(255,255,255,.5) transparent!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-appearance=brand-light]:not(.axp-side-menu-scroll--on-dark)::-webkit-scrollbar-thumb{background:#ffffff80!important}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i3$2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "transition", "closeOnBackdropClick", "backdropClass", "collapsed", "singleOpenMode"], outputs: ["onBackdropClick", "collapsedStateChanged"] }, { kind: "component", type: i3$2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: AXPLogoComponent, selector: "axp-logo", inputs: ["logoKey", "appearance", "size", "format"] }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "directive", type: AXResizableDirective, selector: "[axResizable]", inputs: ["axResizable", "handles", "minWidth", "maxWidth", "minHeight", "maxHeight", "dblClickAction", "width", "defaultWidth", "height", "defaultHeight", "lockAspectRatio"], outputs: ["axResizableChange", "handlesChange", "minWidthChange", "maxWidthChange", "minHeightChange", "maxHeightChange", "dblClickActionChange", "widthChange", "defaultWidthChange", "heightChange", "defaultHeightChange", "lockAspectRatioChange", "onResizingStarted", "onResizingEnded", "onResizingDblClick"] }, { kind: "component", type: AXPRootLayoutFooterComponent, selector: "axp-dashboard-admin-footer" }, { kind: "component", type: AXPRootLayoutHeaderComponent, selector: "axp-dashboard-admin-header" }, { kind: "component", type: AXPRootLayoutMenuComponent, selector: "axp-side-menu" }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1$3.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3915
4221
|
}
|
|
3916
4222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRootVerticalLayoutComponent, decorators: [{
|
|
3917
4223
|
type: Component,
|
|
@@ -3936,7 +4242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
3936
4242
|
AXPRootLayoutHeaderComponent,
|
|
3937
4243
|
AXPRootLayoutMenuComponent,
|
|
3938
4244
|
AXPComponentSlotModule,
|
|
3939
|
-
], template: "<div
|
|
4245
|
+
], template: "<div\n id=\"axp-root-layout\"\n class=\"axp-root-layout\"\n [attr.data-side-menu-open]=\"store.isSideMenuOpen()\"\n>\n <ax-drawer-container class=\"min-h-0 flex-1\">\n @for (drawerKey of [sideMenuDrawerKey()]; track drawerKey) {\n <ax-drawer\n id=\"axp-side-menu-drawer\"\n [axResizable]=\"drawerKey === 'push'\"\n class=\"h-full flex! flex-col dark:border-e dark:border-default\"\n [width]=\"(drawerKey === 'push' ? store.sideMenuDrawerWidth() : undefined)!\"\n [defaultWidth]=\"(drawerKey === 'push' ? store.sideMenuDrawerWidth() : undefined)!\"\n location=\"start\"\n [collapsed]=\"!store.isSideMenuOpen()\"\n [closeOnBackdropClick]=\"false\"\n [mode]=\"drawerKey === 'overlay' ? 'overlay' : 'push'\"\n [dblClickAction]=\"'fit'\"\n (onResizingEnded)=\"handleResizingEnded($event)\"\n (onResizingDblClick)=\"handleResizingEnded($event)\"\n (onBackdropClick)=\"handleBackdropClick()\"\n backdropClass=\"bg-black/50\"\n [class.w-[80%]]=\"drawerKey === 'overlay'\"\n >\n <ax-header\n id=\"axp-side-menu-header\"\n [class]=\"sideMenuHeaderClass()\"\n >\n <axp-logo\n logoKey=\"platform\"\n appearance=\"onDark\"\n [format]=\"sideMenuLogoFormat()\"\n [size]=\"sideMenuLogoSize()\"\n ></axp-logo>\n </ax-header>\n <ax-content\n [class]=\"sideMenuSurfaceClass()\"\n [class.axp-side-menu-scroll--on-dark]=\"sideMenuScrollUsesLightThumb()\"\n [attr.data-menu-appearance]=\"store.menuAppearance()\"\n [attr.data-menu-vertical-mode]=\"store.effectiveMenuVerticalMode()\"\n >\n <axp-component-slot name=\"root-side-menu-header\"></axp-component-slot>\n <div>\n <axp-side-menu\n id=\"axp-side-menu\"\n [class]=\"sideMenuHostClass()\"\n ></axp-side-menu>\n </div>\n <axp-component-slot name=\"root-side-menu-footer\"></axp-component-slot>\n </ax-content>\n </ax-drawer>\n }\n <ax-content\n class=\"flex min-h-0 flex-1 flex-col relative bg-lightest dark:bg-lighter overflow-hidden\"\n >\n @if (store.isNavigationLoading()) {\n <div class=\"axp-navigating-progress\">\n <div></div>\n </div>\n }\n <axp-dashboard-admin-header\n id=\"axp-main-header\"\n class=\"shrink-0\"\n ></axp-dashboard-admin-header>\n\n <div class=\"relative min-h-0 flex-1 overflow-auto\">\n <router-outlet></router-outlet>\n </div>\n\n <!-- ----- Footer aligned with main content (container width) ----- -->\n @if (!store.effectiveMainFooterFullWidth()) {\n <axp-dashboard-admin-footer\n id=\"axp-main-footer\"\n class=\"shrink-0\"\n ></axp-dashboard-admin-footer>\n }\n </ax-content>\n </ax-drawer-container>\n <axp-component-slot name=\"root-layout-overlay\"></axp-component-slot>\n\n <!-- ----- Full-width footer spans the entire viewport (vertical layout only) ----- -->\n @if (store.effectiveMainFooterFullWidth()) {\n <axp-dashboard-admin-footer id=\"axp-main-footer\"></axp-dashboard-admin-footer>\n }\n</div>\n", styles: [".axp-root-layout{display:flex;height:100%;width:100%;flex-direction:column;justify-content:space-between}.axp-root-layout[data-side-menu-open=false] #axp-side-menu-drawer{display:none!important;width:0!important;min-width:0!important;overflow:hidden;pointer-events:none;flex:0 0 0!important}#axp-side-menu-drawer{box-sizing:border-box}#axp-side-menu-drawer:has([data-menu-vertical-mode=compact]) #axp-side-menu-header{padding-inline:.5rem}#axp-side-menu-drawer:has([data-menu-vertical-mode=compact]) #axp-side-menu-header axp-logo{display:inline-flex;justify-content:center;max-width:100%}.axp-navigating-progress{position:absolute;top:0;height:var(--spacing, .25rem);width:100%;overflow:hidden;background-color:rgba(var(--ax-sys-color-primary-200))}@supports (color: color-mix(in lab,red,red)){.axp-navigating-progress{background-color:color-mix(in oklab,rgba(var(--ax-sys-color-primary-200)) 40%,transparent)}}.axp-navigating-progress>div{height:100%;width:100%;background-color:rgba(var(--ax-sys-color-primary-500));animation:indeterminateAnimation 1.5s infinite cubic-bezier(.65,.815,.735,.395);transform-origin:0% 50%}@keyframes indeterminateAnimation{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(50%) scaleX(.6)}to{transform:translate(100%) scaleX(.4)}}.resize-handle{background-color:transparent!important}.resize-handle:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll{--axp-side-menu-scrollbar-size: 8px;--axp-side-menu-scrollbar-radius: 4px;scrollbar-gutter:auto;scrollbar-width:thin}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-vertical-mode=compact] #axp-side-menu{display:flex;flex-direction:column;align-items:center}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-vertical-mode=compact] #axp-side-menu ax-side-menu{width:100%;align-items:center}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar{width:var(--axp-side-menu-scrollbar-size);height:var(--axp-side-menu-scrollbar-size)}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar-track{background:transparent;border-radius:var(--axp-side-menu-scrollbar-radius)}#axp-side-menu-drawer ax-content.axp-side-menu-scroll{--ax-sys-scroller-thumb-color: rgba(0, 0, 0, .35);--ax-sys-scroller-track-color: transparent;scrollbar-color:rgba(0,0,0,.35) transparent}#axp-side-menu-drawer ax-content.axp-side-menu-scroll::-webkit-scrollbar-thumb{background:#00000059!important;border-radius:var(--axp-side-menu-scrollbar-radius);min-height:2.5rem}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark{--ax-sys-scroller-thumb-color: rgba(255, 255, 255, .5) !important;--ax-sys-scroller-track-color: transparent !important;scrollbar-color:rgba(255,255,255,.5) transparent!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark::-webkit-scrollbar-thumb{background:#ffffff80!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll.axp-side-menu-scroll--on-dark::-webkit-scrollbar-thumb:hover{background:#ffffff80!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-appearance=brand-light]:not(.axp-side-menu-scroll--on-dark){--ax-sys-scroller-thumb-color: rgba(255, 255, 255, .5) !important;scrollbar-color:rgba(255,255,255,.5) transparent!important}#axp-side-menu-drawer ax-content.axp-side-menu-scroll[data-menu-appearance=brand-light]:not(.axp-side-menu-scroll--on-dark)::-webkit-scrollbar-thumb{background:#ffffff80!important}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3940
4246
|
}], ctorParameters: () => [] });
|
|
3941
4247
|
|
|
3942
4248
|
class AXPRootLayoutComponent {
|
|
@@ -4011,22 +4317,37 @@ class AXPRootLayoutComponent {
|
|
|
4011
4317
|
this.#syncMenuSelectionByRoute(event.urlAfterRedirects);
|
|
4012
4318
|
this.contextStore.reset();
|
|
4013
4319
|
});
|
|
4014
|
-
this.eventService
|
|
4015
|
-
|
|
4016
|
-
this.
|
|
4320
|
+
this.eventService
|
|
4321
|
+
.listen(AXPSessionStatus.SignedOut)
|
|
4322
|
+
.pipe(this.unsubscriber.takeUntilDestroy)
|
|
4323
|
+
.subscribe(() => {
|
|
4324
|
+
this.#navigateToLogin();
|
|
4017
4325
|
});
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
const isLoading = await firstValueFrom(this.sessionService.isLoading$);
|
|
4022
|
-
if (isLoading) {
|
|
4023
|
-
console.log('Session is still loading, skipping redirect check');
|
|
4326
|
+
this.sessionService.status$.pipe(this.unsubscriber.takeUntilDestroy).subscribe((status) => {
|
|
4327
|
+
const redirectKeys = [AXPSessionStatus.SignedOut, AXPSessionStatus.Unauthenticated, AXPSessionStatus.Expired];
|
|
4328
|
+
if (!redirectKeys.includes(status)) {
|
|
4024
4329
|
return;
|
|
4025
4330
|
}
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4331
|
+
// Wait out restore/sign-in loading — do not drop the logout redirect.
|
|
4332
|
+
void firstValueFrom(this.sessionService.isLoading$.pipe(filter((loading) => !loading), take(1))).then(async () => {
|
|
4333
|
+
const current = await firstValueFrom(this.sessionService.status$);
|
|
4334
|
+
if (redirectKeys.includes(current)) {
|
|
4335
|
+
this.#navigateToLogin();
|
|
4336
|
+
}
|
|
4337
|
+
});
|
|
4338
|
+
});
|
|
4339
|
+
}
|
|
4340
|
+
#navigateToLogin() {
|
|
4341
|
+
const path = (this.router.url ?? '').split('?')[0];
|
|
4342
|
+
if (path.startsWith('/auth')) {
|
|
4343
|
+
return;
|
|
4344
|
+
}
|
|
4345
|
+
void this.router.navigateByUrl('/auth/login', { replaceUrl: true }).then((navigated) => {
|
|
4346
|
+
const stillOnApp = !(this.router.url ?? '').split('?')[0].startsWith('/auth');
|
|
4347
|
+
if (!navigated && stillOnApp) {
|
|
4348
|
+
queueMicrotask(() => {
|
|
4349
|
+
void this.router.navigateByUrl('/auth/login', { replaceUrl: true });
|
|
4350
|
+
});
|
|
4030
4351
|
}
|
|
4031
4352
|
});
|
|
4032
4353
|
}
|
|
@@ -4380,12 +4701,12 @@ class AXPDefaultThemeModule {
|
|
|
4380
4701
|
viewers: {
|
|
4381
4702
|
root: () => Promise.resolve().then(function () { return rootLayout_component; }).then((c) => c.AXPRootLayoutComponent),
|
|
4382
4703
|
master: {
|
|
4383
|
-
single: () => import('./acorex-platform-framework-client-themes-default-entity-master-single-view.component-
|
|
4704
|
+
single: () => import('./acorex-platform-framework-client-themes-default-entity-master-single-view.component-CkpRT1a9.mjs').then((c) => c.AXPEntityMasterSingleViewComponent),
|
|
4384
4705
|
details: () => import('@acorex-platform/framework-client/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),
|
|
4385
4706
|
///
|
|
4386
|
-
create: () => import('./acorex-platform-framework-client-themes-default-entity-master-create-view.component-
|
|
4707
|
+
create: () => import('./acorex-platform-framework-client-themes-default-entity-master-create-view.component-DlS4v_zb.mjs').then((c) => c.AXPEntityMasterCreateViewComponent),
|
|
4387
4708
|
///
|
|
4388
|
-
modify: () => import('./acorex-platform-framework-client-themes-default-entity-master-modify-view.component-
|
|
4709
|
+
modify: () => import('./acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DBmdBKBL.mjs').then((c) => c.AXPEntityMasterModifyViewComponent),
|
|
4389
4710
|
//
|
|
4390
4711
|
list: () => Promise.resolve().then(function () { return entityMasterListView_component; }).then((c) => c.AXPEntityMasterListViewComponent),
|
|
4391
4712
|
},
|
|
@@ -4417,12 +4738,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4417
4738
|
viewers: {
|
|
4418
4739
|
root: () => Promise.resolve().then(function () { return rootLayout_component; }).then((c) => c.AXPRootLayoutComponent),
|
|
4419
4740
|
master: {
|
|
4420
|
-
single: () => import('./acorex-platform-framework-client-themes-default-entity-master-single-view.component-
|
|
4741
|
+
single: () => import('./acorex-platform-framework-client-themes-default-entity-master-single-view.component-CkpRT1a9.mjs').then((c) => c.AXPEntityMasterSingleViewComponent),
|
|
4421
4742
|
details: () => import('@acorex-platform/framework-client/layout/views').then((c) => c.AXPLayoutDetailsViewComponent),
|
|
4422
4743
|
///
|
|
4423
|
-
create: () => import('./acorex-platform-framework-client-themes-default-entity-master-create-view.component-
|
|
4744
|
+
create: () => import('./acorex-platform-framework-client-themes-default-entity-master-create-view.component-DlS4v_zb.mjs').then((c) => c.AXPEntityMasterCreateViewComponent),
|
|
4424
4745
|
///
|
|
4425
|
-
modify: () => import('./acorex-platform-framework-client-themes-default-entity-master-modify-view.component-
|
|
4746
|
+
modify: () => import('./acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DBmdBKBL.mjs').then((c) => c.AXPEntityMasterModifyViewComponent),
|
|
4426
4747
|
//
|
|
4427
4748
|
list: () => Promise.resolve().then(function () { return entityMasterListView_component; }).then((c) => c.AXPEntityMasterListViewComponent),
|
|
4428
4749
|
},
|