@acorex/platform 19.2.5 → 19.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/app/application.types.d.ts +3 -1
- package/common/lib/settings/settings.service.d.ts +3 -2
- package/common/lib/utils/export-popup.d.ts +2 -1
- package/common/lib/utils/expression-evaluator.service.d.ts +11 -0
- package/common/lib/utils/index.d.ts +1 -0
- package/common/lib/workflows/common.workflow.d.ts +2 -0
- package/fesm2022/acorex-platform-common.mjs +86 -28
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +26 -12
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +14 -14
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +92 -18
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs → acorex-platform-themes-default-entity-master-create-view.component-Bl9f4Rtk.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Bl9f4Rtk.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-De61n012.mjs +389 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-De61n012.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B4aBmc5H.mjs +130 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B4aBmc5H.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-BPQ1z42t.mjs → acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs} +3 -3
- package/fesm2022/{acorex-platform-themes-default-error-401.component-BPQ1z42t.mjs.map → acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CGgD5C7q.mjs → acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs} +3 -3
- package/fesm2022/{acorex-platform-themes-default-error-404.component-CGgD5C7q.mjs.map → acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-CkVGS1HQ.mjs → acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs} +3 -3
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-CkVGS1HQ.mjs.map → acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-search-popup.component-Blkpqvqa.mjs +129 -0
- package/fesm2022/{acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs.map → acorex-platform-themes-default-search-popup.component-Blkpqvqa.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-setting-page.component-BERYnJnp.mjs +74 -0
- package/fesm2022/acorex-platform-themes-default-setting-page.component-BERYnJnp.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-setting-view.component-BagAWM4W.mjs +71 -0
- package/fesm2022/acorex-platform-themes-default-setting-view.component-BagAWM4W.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D-yzbISw.mjs +138 -0
- package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D-yzbISw.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +36 -29
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +114 -56
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-D2-nHqYy.mjs +144 -0
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-D2-nHqYy.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-BBRVgZLu.mjs +48 -0
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-BBRVgZLu.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +586 -109
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/lib/builder/widget-column-renderer.d.ts +3 -1
- package/layout/builder/lib/builder/widget-groups.d.ts +1 -0
- package/layout/builder/lib/builder/widget-map.d.ts +3 -0
- package/layout/builder/lib/builder/widget.types.d.ts +1 -1
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +3 -1
- package/layout/entity/lib/entity.viewmodel.d.ts +2 -0
- package/layout/setting/lib/setting.viewmodel.d.ts +2 -2
- package/package.json +5 -5
- package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +4 -3
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +2 -2
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +4 -4
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +2 -2
- package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +2 -2
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +2 -2
- package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +2 -2
- package/themes/default/lib/pages/theme-palette-preview/theme-palette-preview.page.d.ts +3 -2
- package/themes/shared/lib/components/layout-elements/index.d.ts +1 -0
- package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
- package/themes/shared/lib/components/layout-elements/layout-footer.component.d.ts +5 -0
- package/themes/shared/lib/components/slots/theme-slot.component.d.ts +2 -2
- package/themes/shared/lib/palette.provider.d.ts +2 -2
- package/themes/shared/lib/theme.service.d.ts +2 -2
- package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +7 -2
- package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget-edit.component.d.ts +13 -0
- package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/charts/bar-chart/bar-chart.type.d.ts +15 -0
- package/widgets/lib/widgets/charts/bar-chart/index.d.ts +2 -0
- package/widgets/lib/widgets/charts/chart.type.d.ts +4 -0
- package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget-edit.component.d.ts +14 -0
- package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/charts/donut-chart/donut-chart.type.d.ts +13 -0
- package/widgets/lib/widgets/charts/donut-chart/index.d.ts +2 -0
- package/widgets/lib/widgets/editors/tabular-data/index.d.ts +6 -0
- package/widgets/lib/widgets/editors/tabular-data/table-widget-column.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/tabular-data/table-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/tabular-data/table-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/editors/tabular-data/table-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-edit-popup.component.d.ts +18 -0
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-view-popup.component.d.ts +10 -0
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-widget-edit.component.d.ts +12 -0
- package/widgets/lib/widgets/editors/tabular-data/tabular-data-widget-view.component.d.ts +13 -0
- package/widgets/lib/widgets/editors/tabular-data/tabular-widget.types.d.ts +11 -0
- package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +0 -1
- package/widgets/lib/widgets/index.d.ts +2 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs +0 -369
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs +0 -130
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs +0 -129
- package/fesm2022/acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs +0 -74
- package/fesm2022/acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs +0 -71
- package/fesm2022/acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs +0 -118
- package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs.map +0 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { AXChipsModule } from '@acorex/components/chips';
|
|
2
|
+
import * as i4 from '@acorex/components/common';
|
|
3
|
+
import { AXCommonModule } from '@acorex/components/common';
|
|
4
|
+
import * as i5 from '@acorex/components/decorators';
|
|
5
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
6
|
+
import { AXBasePageComponent } from '@acorex/components/page';
|
|
7
|
+
import * as i7 from '@acorex/components/search-box';
|
|
8
|
+
import { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';
|
|
9
|
+
import * as i9 from '@acorex/components/skeleton';
|
|
10
|
+
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
11
|
+
import * as i6 from '@acorex/core/translation';
|
|
12
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
13
|
+
import { AXPGlobalSearchViewModel } from '@acorex/platform/layout/search';
|
|
14
|
+
import { AXPThemeLayoutBlockComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutHeaderTemplateComponent } from '@acorex/platform/themes/shared';
|
|
15
|
+
import * as i1 from '@angular/common';
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import * as i0 from '@angular/core';
|
|
18
|
+
import { inject, viewChild, viewChildren, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
19
|
+
import * as i2 from '@angular/forms';
|
|
20
|
+
import { FormsModule } from '@angular/forms';
|
|
21
|
+
import { first } from 'rxjs';
|
|
22
|
+
import * as i7$1 from '@acorex/cdk/list-navigation';
|
|
23
|
+
import { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';
|
|
24
|
+
import * as i4$1 from '@acorex/components/button';
|
|
25
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
26
|
+
|
|
27
|
+
class AXPGlobalSearchPopupComponent extends AXBasePageComponent {
|
|
28
|
+
constructor() {
|
|
29
|
+
super(...arguments);
|
|
30
|
+
this.vm = inject(AXPGlobalSearchViewModel);
|
|
31
|
+
this.text = null;
|
|
32
|
+
this.list = viewChild(AXListNavigationDirective);
|
|
33
|
+
this.searchBox = viewChild(AXSearchBoxComponent);
|
|
34
|
+
this.items = viewChildren(AXListNavigationItemDirective);
|
|
35
|
+
}
|
|
36
|
+
async handleTextChanged(e) {
|
|
37
|
+
if (e.isUserInteraction) {
|
|
38
|
+
await this.vm.search(e.value);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
super.ngOnInit();
|
|
43
|
+
//
|
|
44
|
+
this.vm.onItemSelected.pipe(first()).subscribe(item => {
|
|
45
|
+
this.close(item);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
handleSearchKeyDown(e) {
|
|
49
|
+
const event = e.nativeEvent;
|
|
50
|
+
switch (event.code) {
|
|
51
|
+
case 'ArrowDown':
|
|
52
|
+
const item = this.items()[0];
|
|
53
|
+
if (item && this.list()) {
|
|
54
|
+
this.list()?.navigateTo(item);
|
|
55
|
+
}
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
event.stopPropagation();
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
handleClearClick($event) {
|
|
62
|
+
this.vm.clearRecentItems();
|
|
63
|
+
}
|
|
64
|
+
handleListKeyDown(e) {
|
|
65
|
+
switch (e.code) {
|
|
66
|
+
case 'ArrowUp':
|
|
67
|
+
{
|
|
68
|
+
const item = this.items()[0];
|
|
69
|
+
if (item && this.list() && item.isActive()) {
|
|
70
|
+
this.searchBox()?.focus();
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case 'Escape': {
|
|
75
|
+
this.searchBox()?.focus();
|
|
76
|
+
e.preventDefault();
|
|
77
|
+
e.stopPropagation();
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
handleItemKeyDown(e, item) {
|
|
83
|
+
switch (e.code) {
|
|
84
|
+
case 'Enter':
|
|
85
|
+
case 'Space':
|
|
86
|
+
{
|
|
87
|
+
e.preventDefault();
|
|
88
|
+
e.stopPropagation();
|
|
89
|
+
this.vm.execute(item);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
handlePinClick(e, item) {
|
|
95
|
+
e.stopPropagation();
|
|
96
|
+
this.vm.togglePin(item);
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
99
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPGlobalSearchPopupComponent, isStandalone: true, selector: "ng-component", providers: [AXPGlobalSearchViewModel], viewQueries: [{ propertyName: "list", first: true, predicate: AXListNavigationDirective, descendants: true, isSignal: true }, { propertyName: "searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true, isSignal: true }, { propertyName: "items", predicate: AXListNavigationItemDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn\u2019t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" [color]=\"'default'\"\n (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>", styles: ["axp-layout-title{display:block;font-weight:600}axp-layout-description{color:rgba(var(--ax-color-text-default));opacity:.5;margin-top:.25rem;display:block;font-size:.875rem;line-height:1.25rem}axp-layout-side-container{display:block;height:100%;min-width:16rem;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1))}axp-layout-side-container:is(.ax-dark *){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lighter-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}@media (min-width: 1536px){axp-layout-side-container{min-width:18rem}}axp-layout-side-container axp-layout-header-container{gap:.5rem!important;padding:1rem!important}axp-layout-side-container axp-layout-header-container axp-layout-title{font-size:1.25rem;line-height:1.75rem}axp-layout-side-container axp-layout-header-container axp-layout-toolbar{margin-top:.5rem;display:block;padding-left:0;padding-right:0}axp-layout-header-container{display:flex;flex-direction:column;gap:1rem}axp-layout-actions{display:flex;align-items:center;gap:.75rem}axp-layout-title-bar{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.75rem 1rem}@media (min-width: 1280px){axp-layout-title-bar{border-width:0px}}axp-layout-title-bar ax-layout-nav-button{display:flex;align-items:center;justify-content:space-between}axp-layout-toolbar{display:flex;justify-content:space-between;padding-left:1rem;padding-right:1rem}axp-layout-toolbar ax-suffix,axp-layout-toolbar ax-prefix{display:flex;gap:.5rem}axp-layout-toolbar ax-suffix{margin-inline-start:auto;justify-self:end}axp-layout-list{display:flex;flex-direction:column}axp-layout-list>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse));border-style:dashed}axp-layout-list:focus{outline:none}axp-layout-list-group{display:flex;flex-direction:column;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-group>axp-layout-title{padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:600}axp-layout-list-group>axp-layout-header{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-item{margin-top:.25rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem;font-size:.875rem;line-height:1.25rem}axp-layout-list-item:focus{outline:none}axp-layout-list-item.axp-state-focused,axp-layout-list-item:hover{cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lighter-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-lighter-surface),var(--tw-text-opacity, 1))}axp-layout-list-item.axp-state-focused:is(.ax-dark *),axp-layout-list-item:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-light-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-light-surface),var(--tw-text-opacity, 1))}axp-layout-list-item>axp-layout-prefix{margin-inline-end:auto;display:flex;flex-direction:row;gap:.5rem}axp-layout-list-item>axp-layout-content{flex:1 1 0%}axp-layout-list-item>axp-layout-content axp-layout-description{font-size:.75rem!important;line-height:1rem!important;opacity:.65!important}axp-layout-list-item>axp-layout-suffix{margin-inline-start:auto;display:flex;flex-direction:row;gap:.5rem}:host .ax-editor-container:focus-within{outline-style:none}:host axp-layout-content{display:flex;flex-direction:column;width:90vw;max-width:36rem}@media (min-width: 640px){:host axp-layout-content{width:80vw}}@media (min-width: 768px){:host axp-layout-content{width:60vw}}@media (min-width: 1024px){:host axp-layout-content{width:40vw}}@media (min-width: 1280px){:host axp-layout-content{width:30vw}}:host axp-layout-content>axp-layout-header-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}:host axp-layout-content>axp-layout-body{display:flex;flex-direction:column}:host axp-layout-content>axp-layout-body>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}:host axp-layout-content>axp-layout-body{overflow-y:auto;border-radius:.375rem;max-height:50vh;min-height:30vh}@media (min-width: 640px){:host axp-layout-content>axp-layout-body{max-height:60vh;min-height:40vh}}@media (min-width: 768px){:host axp-layout-content>axp-layout-body{max-height:70vh;min-height:50vh}}@media (min-width: 1024px){:host axp-layout-content>axp-layout-body{max-height:80vh;min-height:40vh}}:host axp-layout-content>axp-layout-body .axp-search-recent{display:flex;flex-direction:column;padding:1rem}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-header-container{margin-bottom:.5rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:.875rem;line-height:1.25rem;font-weight:600}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-body{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem;border-radius:.375rem}:host axp-layout-content axp-layout-list-item axp-layout-prefix ax-icon{display:flex;height:2.25rem;width:2.25rem;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-dark-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1));font-size:1rem}:host axp-layout-content axp-layout-list-item.axp-state-focused axp-layout-prefix ax-icon,:host axp-layout-content axp-layout-list-item:hover axp-layout-prefix ax-icon{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
|
|
100
|
+
//
|
|
101
|
+
AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i4.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i7$1.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onPressEnterOrSpace"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i7$1.AXListNavigationItemDirective, selector: "[axListNavigationItem]", exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type:
|
|
102
|
+
//
|
|
103
|
+
AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-toolbar, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXSkeletonModule }, { kind: "component", type: i9.AXSkeletonComponent, selector: "ax-skeleton", inputs: ["animated"] }, { kind: "ngmodule", type: AXChipsModule }, { kind: "component", type: AXPThemeLayoutListComponent, selector: "axp-layout-list" }, { kind: "component", type: AXPThemeLayoutListItemComponent, selector: "axp-layout-list-item" }, { kind: "component", type: AXPThemeLayoutListItemsGroupComponent, selector: "axp-layout-list-group" }, { kind: "component", type: AXPThemeLayoutHeaderTemplateComponent, selector: "axp-layout-header" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
104
|
+
}
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchPopupComponent, decorators: [{
|
|
106
|
+
type: Component,
|
|
107
|
+
args: [{ imports: [
|
|
108
|
+
CommonModule,
|
|
109
|
+
FormsModule,
|
|
110
|
+
//
|
|
111
|
+
AXSearchBoxModule,
|
|
112
|
+
AXCommonModule,
|
|
113
|
+
AXDecoratorModule,
|
|
114
|
+
AXTranslationModule,
|
|
115
|
+
AXListNavigationModule,
|
|
116
|
+
AXButtonModule,
|
|
117
|
+
//
|
|
118
|
+
AXPThemeLayoutBlockComponent,
|
|
119
|
+
AXSkeletonModule,
|
|
120
|
+
AXChipsModule,
|
|
121
|
+
AXPThemeLayoutListComponent,
|
|
122
|
+
AXPThemeLayoutListItemComponent,
|
|
123
|
+
AXPThemeLayoutListItemsGroupComponent,
|
|
124
|
+
AXPThemeLayoutHeaderTemplateComponent
|
|
125
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXPGlobalSearchViewModel], template: "<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn\u2019t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" [color]=\"'default'\"\n (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>", styles: ["axp-layout-title{display:block;font-weight:600}axp-layout-description{color:rgba(var(--ax-color-text-default));opacity:.5;margin-top:.25rem;display:block;font-size:.875rem;line-height:1.25rem}axp-layout-side-container{display:block;height:100%;min-width:16rem;border-inline-end-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lightest-surface),var(--tw-bg-opacity, 1))}axp-layout-side-container:is(.ax-dark *){--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lighter-surface),var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-lighter-surface),var(--tw-bg-opacity, 1))}@media (min-width: 1536px){axp-layout-side-container{min-width:18rem}}axp-layout-side-container axp-layout-header-container{gap:.5rem!important;padding:1rem!important}axp-layout-side-container axp-layout-header-container axp-layout-title{font-size:1.25rem;line-height:1.75rem}axp-layout-side-container axp-layout-header-container axp-layout-toolbar{margin-top:.5rem;display:block;padding-left:0;padding-right:0}axp-layout-header-container{display:flex;flex-direction:column;gap:1rem}axp-layout-actions{display:flex;align-items:center;gap:.75rem}axp-layout-title-bar{display:flex;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.75rem 1rem}@media (min-width: 1280px){axp-layout-title-bar{border-width:0px}}axp-layout-title-bar ax-layout-nav-button{display:flex;align-items:center;justify-content:space-between}axp-layout-toolbar{display:flex;justify-content:space-between;padding-left:1rem;padding-right:1rem}axp-layout-toolbar ax-suffix,axp-layout-toolbar ax-prefix{display:flex;gap:.5rem}axp-layout-toolbar ax-suffix{margin-inline-start:auto;justify-self:end}axp-layout-list{display:flex;flex-direction:column}axp-layout-list>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse));border-style:dashed}axp-layout-list:focus{outline:none}axp-layout-list-group{display:flex;flex-direction:column;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-group>axp-layout-title{padding-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:600}axp-layout-list-group>axp-layout-header{display:flex;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}axp-layout-list-item{margin-top:.25rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem;font-size:.875rem;line-height:1.25rem}axp-layout-list-item:focus{outline:none}axp-layout-list-item.axp-state-focused,axp-layout-list-item:hover{cursor:pointer;border-radius:.25rem;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-lighter-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-lighter-surface),var(--tw-text-opacity, 1))}axp-layout-list-item.axp-state-focused:is(.ax-dark *),axp-layout-list-item:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-primary-light-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-primary-light-surface),var(--tw-text-opacity, 1))}axp-layout-list-item>axp-layout-prefix{margin-inline-end:auto;display:flex;flex-direction:row;gap:.5rem}axp-layout-list-item>axp-layout-content{flex:1 1 0%}axp-layout-list-item>axp-layout-content axp-layout-description{font-size:.75rem!important;line-height:1rem!important;opacity:.65!important}axp-layout-list-item>axp-layout-suffix{margin-inline-start:auto;display:flex;flex-direction:row;gap:.5rem}:host .ax-editor-container:focus-within{outline-style:none}:host axp-layout-content{display:flex;flex-direction:column;width:90vw;max-width:36rem}@media (min-width: 640px){:host axp-layout-content{width:80vw}}@media (min-width: 768px){:host axp-layout-content{width:60vw}}@media (min-width: 1024px){:host axp-layout-content{width:40vw}}@media (min-width: 1280px){:host axp-layout-content{width:30vw}}:host axp-layout-content>axp-layout-header-container{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:.5rem 1rem}:host axp-layout-content>axp-layout-body{display:flex;flex-direction:column}:host axp-layout-content>axp-layout-body>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}:host axp-layout-content>axp-layout-body{overflow-y:auto;border-radius:.375rem;max-height:50vh;min-height:30vh}@media (min-width: 640px){:host axp-layout-content>axp-layout-body{max-height:60vh;min-height:40vh}}@media (min-width: 768px){:host axp-layout-content>axp-layout-body{max-height:70vh;min-height:50vh}}@media (min-width: 1024px){:host axp-layout-content>axp-layout-body{max-height:80vh;min-height:40vh}}:host axp-layout-content>axp-layout-body .axp-search-recent{display:flex;flex-direction:column;padding:1rem}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-header-container{margin-bottom:.5rem;display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:.875rem;line-height:1.25rem;font-weight:600}:host axp-layout-content>axp-layout-body .axp-search-recent>axp-layout-body{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem;border-radius:.375rem}:host axp-layout-content axp-layout-list-item axp-layout-prefix ax-icon{display:flex;height:2.25rem;width:2.25rem;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-dark-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1));font-size:1rem}:host axp-layout-content axp-layout-list-item.axp-state-focused axp-layout-prefix ax-icon,:host axp-layout-content axp-layout-list-item:hover axp-layout-prefix ax-icon{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgba(var(--ax-sys-color-on-surface),var(--tw-text-opacity, 1))}\n"] }]
|
|
126
|
+
}] });
|
|
127
|
+
|
|
128
|
+
export { AXPGlobalSearchPopupComponent };
|
|
129
|
+
//# sourceMappingURL=acorex-platform-themes-default-search-popup.component-Blkpqvqa.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.html"],"sourcesContent":["import { AXChipsModule } from '@acorex/components/chips';\nimport { AXClickEvent, AXCommonModule, AXHtmlEvent, AXValueChangedEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPGlobalSearchViewModel } from '@acorex/platform/layout/search';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, inject, viewChild, viewChildren } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { first } from 'rxjs';\nimport { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXButtonModule } from '@acorex/components/button';\n\n\n@Component({\n templateUrl: 'search-popup.component.html',\n styleUrl: 'search-popup.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n //\n AXSearchBoxModule,\n AXCommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXListNavigationModule,\n AXButtonModule,\n //\n AXPThemeLayoutBlockComponent,\n AXSkeletonModule,\n AXChipsModule,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXPGlobalSearchViewModel]\n})\nexport class AXPGlobalSearchPopupComponent extends AXBasePageComponent {\n\n\n\n protected vm = inject(AXPGlobalSearchViewModel);\n\n protected text: string | null = null;\n\n private list = viewChild(AXListNavigationDirective);\n private searchBox = viewChild(AXSearchBoxComponent);\n private items = viewChildren(AXListNavigationItemDirective);\n\n async handleTextChanged(e: AXValueChangedEvent<string>) {\n if (e.isUserInteraction) {\n await this.vm.search(e.value!);\n }\n }\n\n protected override ngOnInit() {\n super.ngOnInit();\n //\n this.vm.onItemSelected.pipe(first()).subscribe(item => {\n this.close(item)\n })\n }\n\n protected handleSearchKeyDown(e: AXHtmlEvent<KeyboardEvent>) {\n const event = e.nativeEvent!;\n switch (event.code) {\n case 'ArrowDown':\n const item = this.items()[0];\n if (item && this.list()) {\n this.list()?.navigateTo(item);\n }\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n\n protected handleClearClick($event: AXClickEvent) {\n this.vm.clearRecentItems();\n }\n\n\n protected handleListKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowUp':\n {\n const item = this.items()[0];\n if (item && this.list() && item.isActive()) {\n this.searchBox()?.focus();\n }\n break;\n }\n case 'Escape': {\n this.searchBox()?.focus();\n e.preventDefault();\n e.stopPropagation();\n break\n }\n }\n }\n\n protected handleItemKeyDown(e: KeyboardEvent, item: AXPSearchDisplayResult) {\n switch (e.code) {\n case 'Enter':\n case 'Space':\n {\n e.preventDefault();\n e.stopPropagation();\n this.vm.execute(item);\n break;\n }\n }\n }\n\n protected handlePinClick(e: Event, item: any) {\n e.stopPropagation();\n this.vm.togglePin(item);\n }\n}\n","<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn’t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" color=\"ghost\" (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>"],"names":["i3","i7","i8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-themes-default-search-popup.component-Blkpqvqa.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/search-layout/search-popup.component.html"],"sourcesContent":["import { AXChipsModule } from '@acorex/components/chips';\nimport { AXClickEvent, AXCommonModule, AXHtmlEvent, AXValueChangedEvent } from '@acorex/components/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxComponent, AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPGlobalSearchViewModel } from '@acorex/platform/layout/search';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n} from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { Component, ChangeDetectionStrategy, inject, viewChild, viewChildren } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { first } from 'rxjs';\nimport { AXListNavigationDirective, AXListNavigationItemDirective, AXListNavigationModule } from '@acorex/cdk/list-navigation';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXButtonModule } from '@acorex/components/button';\n\n\n@Component({\n templateUrl: 'search-popup.component.html',\n styleUrl: 'search-popup.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n //\n AXSearchBoxModule,\n AXCommonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXListNavigationModule,\n AXButtonModule,\n //\n AXPThemeLayoutBlockComponent,\n AXSkeletonModule,\n AXChipsModule,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutListItemsGroupComponent,\n AXPThemeLayoutHeaderTemplateComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXPGlobalSearchViewModel]\n})\nexport class AXPGlobalSearchPopupComponent extends AXBasePageComponent {\n\n\n\n protected vm = inject(AXPGlobalSearchViewModel);\n\n protected text: string | null = null;\n\n private list = viewChild(AXListNavigationDirective);\n private searchBox = viewChild(AXSearchBoxComponent);\n private items = viewChildren(AXListNavigationItemDirective);\n\n async handleTextChanged(e: AXValueChangedEvent<string>) {\n if (e.isUserInteraction) {\n await this.vm.search(e.value!);\n }\n }\n\n protected override ngOnInit() {\n super.ngOnInit();\n //\n this.vm.onItemSelected.pipe(first()).subscribe(item => {\n this.close(item)\n })\n }\n\n protected handleSearchKeyDown(e: AXHtmlEvent<KeyboardEvent>) {\n const event = e.nativeEvent!;\n switch (event.code) {\n case 'ArrowDown':\n const item = this.items()[0];\n if (item && this.list()) {\n this.list()?.navigateTo(item);\n }\n event.preventDefault();\n event.stopPropagation();\n break;\n }\n }\n\n protected handleClearClick($event: AXClickEvent) {\n this.vm.clearRecentItems();\n }\n\n\n protected handleListKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowUp':\n {\n const item = this.items()[0];\n if (item && this.list() && item.isActive()) {\n this.searchBox()?.focus();\n }\n break;\n }\n case 'Escape': {\n this.searchBox()?.focus();\n e.preventDefault();\n e.stopPropagation();\n break\n }\n }\n }\n\n protected handleItemKeyDown(e: KeyboardEvent, item: AXPSearchDisplayResult) {\n switch (e.code) {\n case 'Enter':\n case 'Space':\n {\n e.preventDefault();\n e.stopPropagation();\n this.vm.execute(item);\n break;\n }\n }\n }\n\n protected handlePinClick(e: Event, item: any) {\n e.stopPropagation();\n this.vm.togglePin(item);\n }\n}\n","<axp-layout-content *translate=\"let t\">\n\n <axp-layout-header-container class=\"ax-lg\">\n <ax-search-box [axAutoFocus] [look]=\"'none'\" [ngModel]=\"vm.text()\" (onValueChanged)=\"handleTextChanged($event)\"\n [placeholder]=\"'Type anything to search...'\" (onKeyDown)=\"handleSearchKeyDown($event)\"></ax-search-box>\n <ax-close-button></ax-close-button>\n </axp-layout-header-container>\n\n <!-- Results Area -->\n <axp-layout-body>\n @if(vm.isBusy())\n {\n <ng-container *ngTemplateOutlet=\"skeleton\"></ng-container>\n }\n @else if(vm.isEmpty())\n {\n <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n }\n @else if(vm.isWelcome())\n {\n <ng-container *ngTemplateOutlet=\"welcome\"></ng-container>\n }\n @else if(vm.isStart())\n {\n <ng-container *ngTemplateOutlet=\"start\"></ng-container>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"result\"></ng-container>\n }\n </axp-layout-body>\n\n <!-- Skeleton Template -->\n <ng-template #skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-10 ax-p-8\">\n @for (item of [1,2,3,4,5]; track $index) {\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-4 ax-h-4 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-flex-1\">\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/4 ax-h-2 ax-rounded\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"ax-w-1/2 ax-h-2 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n }\n </div>\n </ng-template>\n\n <!-- Empty Template -->\n <ng-template #empty>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">No Results Found</h2>\n <p class=\"ax-mt-2\">\n We couldn’t find anything matching your search. Please refine your keywords or try different terms.\n </p>\n </div>\n </div>\n\n </ng-template>\n\n\n <!-- Welcome Template -->\n <ng-template #welcome>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-rounded-md ax-p-8\">\n <!-- Icon -->\n <div class=\"ax-mb-4\">\n <i class=\"fas fa-search ax-text-gray-400 ax-text-4xl\"></i>\n </div>\n <!-- Message -->\n <div class=\"ax-text-center\">\n <h2 class=\"ax-text-lg ax-font-semibold \">Welcome!</h2>\n <p class=\"ax-mt-2\">\n You can search for anything here. Start typing to find what you need.\n </p>\n </div>\n </div>\n </ng-template>\n\n <!-- Start Template -->\n <ng-template #start>\n\n <axp-layout-list *translate=\"let t\" class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\"\n axListNavigation #list=\"axListNavigation\">\n\n @if(vm.pinnedItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-title>Pinned</axp-layout-title>\n @for (item of vm.pinnedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n @if(vm.recentItems().length>0)\n {\n <axp-layout-list-group>\n <axp-layout-header>\n <axp-layout-prefix>\n <axp-layout-title>Recents</axp-layout-title>\n </axp-layout-prefix>\n <axp-layout-prefix class=\"ax-xs\">\n <ax-button [text]=\"'Clear'\" look=\"blank\" [color]=\"'default'\"\n (onClick)=\"handleClearClick($event)\"></ax-button>\n </axp-layout-prefix>\n </axp-layout-header>\n @for (item of vm.recentItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <!-- Result Template -->\n <ng-template #result>\n\n <axp-layout-list class=\"ax-p-4 ax-divide-none\" (keydown)=\"handleListKeyDown($event)\" axListNavigation\n #list=\"axListNavigation\">\n\n @for (group of vm.results(); track $index) {\n <axp-layout-list-group>\n <axp-layout-title> {{ t(group.title) | async}}</axp-layout-title>\n @for (item of group.children; track $index) {\n <axp-layout-list-item (click)=\"vm.execute(item)\" (keydown)=\"handleItemKeyDown($event,item)\"\n class=\"ax-group\" axListNavigationItem #i=\"axListNavigationItem\"\n [class.axp-state-focused]=\"i.isActive()\">\n <ng-container [ngTemplateOutlet]=\"listItem\" [ngTemplateOutletContext]=\"{item}\"></ng-container>\n </axp-layout-list-item>\n }\n </axp-layout-list-group>\n }\n\n </axp-layout-list>\n\n </ng-template>\n\n <ng-template #listItem let-item=\"item\">\n <axp-layout-prefix>\n <ax-icon icon=\"fal {{item.icon}}\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <axp-layout-title>\n <span>{{ t(item.title) | async}}</span>\n <span class=\"ax-ms-3 group-hover:ax-visible\" (click)=\"handlePinClick($event,item)\">\n <i class=\"fa-light fa-thumbtack ax-rotate-45\" [class.fa-solid]=\"vm.isPinned(item)\"\n [class.ax-invisible]=\"!vm.isPinned(item)\"></i>\n </span>\n </axp-layout-title>\n @if(item.parent)\n {\n <axp-layout-description>\n {{ t(item.parent.title) | async}}\n </axp-layout-description>\n }@else if (item.description) {\n <axp-layout-description>\n {{ t(item.description) | async}}\n </axp-layout-description>\n }\n </axp-layout-content>\n <axp-layout-suffix>\n <i class=\"far fa-chevron-right\"></i>\n </axp-layout-suffix>\n </ng-template>\n</axp-layout-content>"],"names":["i3","i7","i8"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as i1 from '@angular/common';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
5
|
+
import { AXPSimplePageLayout } from './acorex-platform-themes-default.mjs';
|
|
6
|
+
import { AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutSideTemplateComponent, AXPThemeLayoutActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutFooterComponent } from '@acorex/platform/themes/shared';
|
|
7
|
+
import * as i7 from '@acorex/components/search-box';
|
|
8
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
9
|
+
import * as i5 from '@acorex/components/decorators';
|
|
10
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
11
|
+
import { AXPSettingsViewModel } from '@acorex/platform/layout/setting';
|
|
12
|
+
import * as i2 from '@angular/forms';
|
|
13
|
+
import { FormsModule } from '@angular/forms';
|
|
14
|
+
import { AXTreeViewModule } from '@acorex/components/tree-view';
|
|
15
|
+
import * as i3 from '@angular/router';
|
|
16
|
+
import { RouterModule } from '@angular/router';
|
|
17
|
+
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
18
|
+
import * as i6 from '@acorex/core/translation';
|
|
19
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
20
|
+
import * as i4 from '@acorex/components/button';
|
|
21
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
22
|
+
import * as i8 from '@acorex/components/tabs';
|
|
23
|
+
import { AXTabsModule } from '@acorex/components/tabs';
|
|
24
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
25
|
+
import * as i5$1 from '@acorex/components/loading';
|
|
26
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
27
|
+
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
28
|
+
|
|
29
|
+
class AXPSettingPageComponent {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.vm = inject(AXPSettingsViewModel);
|
|
32
|
+
}
|
|
33
|
+
handleSerach(e) {
|
|
34
|
+
this.vm.search(e.value);
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPSettingPageComponent, isStandalone: true, selector: "ng-component", providers: [AXPSettingsViewModel], ngImport: i0, template: "<axp-layout-simple-page *translate=\"let t\">\n @if(vm.showSide())\n {\n <axp-layout-side>\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\"\n (onValueChanged)=\"handleSerach($event)\"\n [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content>\n <ax-tabs [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (item of vm.loadedItems(); track $index) {\n <ax-tab-item [text]=\"item.title\" (onClick)=\"vm.handleSelectGroup(item)\"\n [active]=\"vm.activateGroup()==item.name && !vm.isSearching()\">\n <ax-prefix>\n <ax-icon icon=\"far ${{item.icon}}\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </axp-layout-content>\n </axp-layout-side>\n }\n\n @if(vm.hasGroup())\n {\n <axp-layout-header>\n @let group=vm.groups()?.breadcrumb?.[(vm.groups()?.breadcrumb?.length??1)- 1];\n\n @if(!vm.showSide())\n {\n <axp-layout-nav-button>\n <ax-button class=\"ax-xs\" [look]=\"'blank'\" [color]=\"'default'\" (onClick)=\"vm.navigateUpLevel()\">\n <ax-icon icon=\"fa-solid fa-arrow-left\"></ax-icon>\n </ax-button>\n </axp-layout-nav-button>\n }\n\n <axp-layout-title>\n @if(!vm.isSearching())\n {\n {{ (group?.title ?? '') | translate | async }}\n }\n @else {\n {{ t('settings.search',{scope:'platform-management'}) | async }}\n }\n </axp-layout-title>\n\n @if(group?.description && !vm.isSearching() && vm.layout.isLarge())\n {\n <axp-layout-description>\n {{ group?.description }}\n </axp-layout-description>\n }\n <axp-layout-actions>\n @if((!vm.isSearching() || vm.searchResult().length >0))\n {\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('settings.restore-defaults',{scope:'platform-management'}) | async)!\"\n (onClick)=\"vm.resetToDefault();\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-rotate'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item [text]=\"(t('export') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-file-export'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n }\n\n </axp-layout-actions>\n </axp-layout-header>\n }\n @else\n {\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\" (onValueChanged)=\"handleSerach($event)\"\n class=\"ax-w-full\" [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n }\n\n <axp-layout-content id=\"ax-settings\">\n @if(vm.hasGroup() || vm.isSearching())\n {\n <router-outlet></router-outlet>\n }\n @else {\n <axp-layout-list>\n @for (item of vm.loadedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.handleSelectGroup(item)\">\n <axp-layout-prefix>\n <ax-icon icon=\"far ${{item.icon}}\" class=\"ax-text-gray-500\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <a>{{item.title | translate | async}}</a>\n </axp-layout-content>\n <axp-layout-suffix>\n <ax-icon icon=\" far fa-chevron-right\" class=\"ax-text-gray-400\"></ax-icon>\n </axp-layout-suffix>\n </axp-layout-list-item>\n }\n </axp-layout-list>\n }\n </axp-layout-content>\n\n @if(vm.isDirty() )\n {\n <axp-layout-footer>\n <axp-layout-suffix>\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\" [text]=\"t('discard') | async\"\n (onClick)=\"vm.discard()\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\"\n [text]=\"((t(vm.layout.isSmall() ? 'Apply': 'Apply Changes')) | async)!\" (onClick)=\"vm.apply()\"\n [color]=\"'primary'\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer>\n }\n</axp-layout-simple-page>", styles: [":host ax-tabs{--ax-comp-tabs-default-border-radius: 0}:host ax-tabs ax-tab-item{margin-top:0!important;margin-bottom:0!important;padding-top:.75rem!important;padding-bottom:.75rem!important;font-weight:600!important}:host #ax-settings{padding:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type:
|
|
38
|
+
//
|
|
39
|
+
AXSearchBoxModule }, { kind: "component", type: i7.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i5.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: AXTreeViewModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i8.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i8.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type:
|
|
40
|
+
//
|
|
41
|
+
AXPSimplePageLayout, selector: "axp-layout-simple-page" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-toolbar, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPThemeLayoutHeaderTemplateComponent, selector: "axp-layout-header" }, { kind: "component", type: AXPThemeLayoutSideTemplateComponent, selector: "axp-layout-side" }, { kind: "component", type: AXPThemeLayoutActionsComponent, selector: "axp-layout-actions" }, { kind: "component", type: AXPThemeLayoutPageSecondaryActionsComponent, selector: "axp-layout-actions-secondary" }, { kind: "component", type: AXPThemeLayoutListComponent, selector: "axp-layout-list" }, { kind: "component", type: AXPThemeLayoutListItemComponent, selector: "axp-layout-list-item" }, { kind: "component", type: AXPThemeLayoutFooterComponent, selector: "axp-layout-footer" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingPageComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ standalone: true, imports: [
|
|
46
|
+
CommonModule,
|
|
47
|
+
FormsModule,
|
|
48
|
+
RouterModule,
|
|
49
|
+
//
|
|
50
|
+
AXSearchBoxModule,
|
|
51
|
+
AXDecoratorModule,
|
|
52
|
+
AXTreeViewModule,
|
|
53
|
+
AXBreadcrumbsModule,
|
|
54
|
+
AXTranslationModule,
|
|
55
|
+
AXButtonModule,
|
|
56
|
+
AXTabsModule,
|
|
57
|
+
AXBadgeModule,
|
|
58
|
+
AXLoadingModule,
|
|
59
|
+
AXDropdownButtonModule,
|
|
60
|
+
//
|
|
61
|
+
AXPSimplePageLayout,
|
|
62
|
+
AXPThemeLayoutBlockComponent,
|
|
63
|
+
AXPThemeLayoutHeaderTemplateComponent,
|
|
64
|
+
AXPThemeLayoutSideTemplateComponent,
|
|
65
|
+
AXPThemeLayoutActionsComponent,
|
|
66
|
+
AXPThemeLayoutPageSecondaryActionsComponent,
|
|
67
|
+
AXPThemeLayoutListComponent,
|
|
68
|
+
AXPThemeLayoutListItemComponent,
|
|
69
|
+
AXPThemeLayoutFooterComponent
|
|
70
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [AXPSettingsViewModel], template: "<axp-layout-simple-page *translate=\"let t\">\n @if(vm.showSide())\n {\n <axp-layout-side>\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\"\n (onValueChanged)=\"handleSerach($event)\"\n [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content>\n <ax-tabs [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (item of vm.loadedItems(); track $index) {\n <ax-tab-item [text]=\"item.title\" (onClick)=\"vm.handleSelectGroup(item)\"\n [active]=\"vm.activateGroup()==item.name && !vm.isSearching()\">\n <ax-prefix>\n <ax-icon icon=\"far ${{item.icon}}\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </axp-layout-content>\n </axp-layout-side>\n }\n\n @if(vm.hasGroup())\n {\n <axp-layout-header>\n @let group=vm.groups()?.breadcrumb?.[(vm.groups()?.breadcrumb?.length??1)- 1];\n\n @if(!vm.showSide())\n {\n <axp-layout-nav-button>\n <ax-button class=\"ax-xs\" [look]=\"'blank'\" [color]=\"'default'\" (onClick)=\"vm.navigateUpLevel()\">\n <ax-icon icon=\"fa-solid fa-arrow-left\"></ax-icon>\n </ax-button>\n </axp-layout-nav-button>\n }\n\n <axp-layout-title>\n @if(!vm.isSearching())\n {\n {{ (group?.title ?? '') | translate | async }}\n }\n @else {\n {{ t('settings.search',{scope:'platform-management'}) | async }}\n }\n </axp-layout-title>\n\n @if(group?.description && !vm.isSearching() && vm.layout.isLarge())\n {\n <axp-layout-description>\n {{ group?.description }}\n </axp-layout-description>\n }\n <axp-layout-actions>\n @if((!vm.isSearching() || vm.searchResult().length >0))\n {\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('settings.restore-defaults',{scope:'platform-management'}) | async)!\"\n (onClick)=\"vm.resetToDefault();\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-rotate'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item [text]=\"(t('export') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-file-export'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n }\n\n </axp-layout-actions>\n </axp-layout-header>\n }\n @else\n {\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\" (onValueChanged)=\"handleSerach($event)\"\n class=\"ax-w-full\" [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n }\n\n <axp-layout-content id=\"ax-settings\">\n @if(vm.hasGroup() || vm.isSearching())\n {\n <router-outlet></router-outlet>\n }\n @else {\n <axp-layout-list>\n @for (item of vm.loadedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.handleSelectGroup(item)\">\n <axp-layout-prefix>\n <ax-icon icon=\"far ${{item.icon}}\" class=\"ax-text-gray-500\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <a>{{item.title | translate | async}}</a>\n </axp-layout-content>\n <axp-layout-suffix>\n <ax-icon icon=\" far fa-chevron-right\" class=\"ax-text-gray-400\"></ax-icon>\n </axp-layout-suffix>\n </axp-layout-list-item>\n }\n </axp-layout-list>\n }\n </axp-layout-content>\n\n @if(vm.isDirty() )\n {\n <axp-layout-footer>\n <axp-layout-suffix>\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\" [text]=\"t('discard') | async\"\n (onClick)=\"vm.discard()\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\"\n [text]=\"((t(vm.layout.isSmall() ? 'Apply': 'Apply Changes')) | async)!\" (onClick)=\"vm.apply()\"\n [color]=\"'primary'\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer>\n }\n</axp-layout-simple-page>", styles: [":host ax-tabs{--ax-comp-tabs-default-border-radius: 0}:host ax-tabs ax-tab-item{margin-top:0!important;margin-bottom:0!important;padding-top:.75rem!important;padding-bottom:.75rem!important;font-weight:600!important}:host #ax-settings{padding:1rem}\n"] }]
|
|
71
|
+
}] });
|
|
72
|
+
|
|
73
|
+
export { AXPSettingPageComponent };
|
|
74
|
+
//# sourceMappingURL=acorex-platform-themes-default-setting-page.component-BERYnJnp.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-themes-default-setting-page.component-BERYnJnp.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/setting-layout/setting-page/setting-page.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/setting-layout/setting-page/setting-page.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPSimplePageLayout } from '../../base';\nimport {\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutSideTemplateComponent,\n AXPThemeLayoutPagePrimaryActionsComponent,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutFooterComponent\n} from '@acorex/platform/themes/shared';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPSettingsViewModel } from '@acorex/platform/layout/setting';\nimport { FormsModule } from '@angular/forms';\nimport { AXTreeViewModule } from '@acorex/components/tree-view';\nimport { RouterModule } from '@angular/router';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXValueChangedEvent } from '@acorex/components/common';\n@Component({\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n RouterModule,\n //\n AXSearchBoxModule,\n AXDecoratorModule,\n AXTreeViewModule,\n AXBreadcrumbsModule,\n AXTranslationModule,\n AXButtonModule,\n AXTabsModule,\n AXBadgeModule,\n AXLoadingModule,\n AXDropdownButtonModule,\n //\n AXPSimplePageLayout,\n AXPThemeLayoutBlockComponent,\n AXPThemeLayoutHeaderTemplateComponent,\n AXPThemeLayoutSideTemplateComponent,\n AXPThemeLayoutActionsComponent,\n AXPThemeLayoutPageSecondaryActionsComponent,\n AXPThemeLayoutListComponent,\n AXPThemeLayoutListItemComponent,\n AXPThemeLayoutFooterComponent\n ],\n templateUrl: './setting-page.component.html',\n styleUrl: './setting-page.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [AXPSettingsViewModel]\n})\n\nexport class AXPSettingPageComponent {\n\n protected vm = inject(AXPSettingsViewModel);\n\n protected handleSerach(e: AXValueChangedEvent<any>) {\n this.vm.search(e.value);\n }\n\n}","<axp-layout-simple-page *translate=\"let t\">\n @if(vm.showSide())\n {\n <axp-layout-side>\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\"\n (onValueChanged)=\"handleSerach($event)\"\n [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n <axp-layout-content>\n <ax-tabs [look]=\"'with-line-color'\" [location]=\"'end'\" [fitParent]=\"true\">\n @for (item of vm.loadedItems(); track $index) {\n <ax-tab-item [text]=\"item.title\" (onClick)=\"vm.handleSelectGroup(item)\"\n [active]=\"vm.activateGroup()==item.name && !vm.isSearching()\">\n <ax-prefix>\n <ax-icon icon=\"far ${{item.icon}}\"></ax-icon>\n </ax-prefix>\n </ax-tab-item>\n }\n </ax-tabs>\n </axp-layout-content>\n </axp-layout-side>\n }\n\n @if(vm.hasGroup())\n {\n <axp-layout-header>\n @let group=vm.groups()?.breadcrumb?.[(vm.groups()?.breadcrumb?.length??1)- 1];\n\n @if(!vm.showSide())\n {\n <axp-layout-nav-button>\n <ax-button class=\"ax-xs\" [look]=\"'blank'\" [color]=\"'default'\" (onClick)=\"vm.navigateUpLevel()\">\n <ax-icon icon=\"fa-solid fa-arrow-left\"></ax-icon>\n </ax-button>\n </axp-layout-nav-button>\n }\n\n <axp-layout-title>\n @if(!vm.isSearching())\n {\n {{ (group?.title ?? '') | translate | async }}\n }\n @else {\n {{ t('settings.search',{scope:'platform-management'}) | async }}\n }\n </axp-layout-title>\n\n @if(group?.description && !vm.isSearching() && vm.layout.isLarge())\n {\n <axp-layout-description>\n {{ group?.description }}\n </axp-layout-description>\n }\n <axp-layout-actions>\n @if((!vm.isSearching() || vm.searchResult().length >0))\n {\n <axp-layout-actions-secondary>\n <ax-button-item [text]=\"(t('settings.restore-defaults',{scope:'platform-management'}) | async)!\"\n (onClick)=\"vm.resetToDefault();\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-rotate'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n <ax-button-item [text]=\"(t('export') | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"'fa-solid fa-file-export'\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </axp-layout-actions-secondary>\n }\n\n </axp-layout-actions>\n </axp-layout-header>\n }\n @else\n {\n <axp-layout-header>\n <axp-layout-title>{{t(vm.title(),{scope:'platform-management'}) | async}}</axp-layout-title>\n <axp-layout-toolbar>\n <ax-search-box [delayTime]=\"300\" [ngModel]=\"vm.searchExpression()\" (onValueChanged)=\"handleSerach($event)\"\n class=\"ax-w-full\" [placeholder]=\"t('settings.search',{scope:'platform-management'}) | async\">\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </axp-layout-toolbar>\n </axp-layout-header>\n }\n\n <axp-layout-content id=\"ax-settings\">\n @if(vm.hasGroup() || vm.isSearching())\n {\n <router-outlet></router-outlet>\n }\n @else {\n <axp-layout-list>\n @for (item of vm.loadedItems(); track $index) {\n <axp-layout-list-item (click)=\"vm.handleSelectGroup(item)\">\n <axp-layout-prefix>\n <ax-icon icon=\"far ${{item.icon}}\" class=\"ax-text-gray-500\"></ax-icon>\n </axp-layout-prefix>\n <axp-layout-content>\n <a>{{item.title | translate | async}}</a>\n </axp-layout-content>\n <axp-layout-suffix>\n <ax-icon icon=\" far fa-chevron-right\" class=\"ax-text-gray-400\"></ax-icon>\n </axp-layout-suffix>\n </axp-layout-list-item>\n }\n </axp-layout-list>\n }\n </axp-layout-content>\n\n @if(vm.isDirty() )\n {\n <axp-layout-footer>\n <axp-layout-suffix>\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\" [text]=\"t('discard') | async\"\n (onClick)=\"vm.discard()\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n\n <ax-button [class.ax-sm]=\"vm.layout.isSmall()\" [disabled]=\"vm.isBusy()\"\n [text]=\"((t(vm.layout.isSmall() ? 'Apply': 'Apply Changes')) | async)!\" (onClick)=\"vm.apply()\"\n [color]=\"'primary'\">\n @if(vm.isBusy())\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer>\n }\n</axp-layout-simple-page>"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AXBadgeModule } from '@acorex/components/badge';
|
|
2
|
+
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
3
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
4
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
5
|
+
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
6
|
+
import * as i2 from '@acorex/components/form';
|
|
7
|
+
import { AXFormComponent, AXFormModule } from '@acorex/components/form';
|
|
8
|
+
import { AXLoadingModule } from '@acorex/components/loading';
|
|
9
|
+
import { AXSearchBoxModule } from '@acorex/components/search-box';
|
|
10
|
+
import * as i6 from '@acorex/core/translation';
|
|
11
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
12
|
+
import { AXValidationModule } from '@acorex/core/validation';
|
|
13
|
+
import * as i6$1 from '@acorex/platform/layout/builder';
|
|
14
|
+
import { AXPWidgetContainerComponent, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
15
|
+
import { AXPSettingsViewModel } from '@acorex/platform/layout/setting';
|
|
16
|
+
import { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';
|
|
17
|
+
import * as i1 from '@angular/common';
|
|
18
|
+
import { CommonModule } from '@angular/common';
|
|
19
|
+
import * as i0 from '@angular/core';
|
|
20
|
+
import { inject, Injector, viewChild, effect, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
21
|
+
import { FormsModule } from '@angular/forms';
|
|
22
|
+
|
|
23
|
+
class AXPSettingsViewComponent {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.vm = inject(AXPSettingsViewModel);
|
|
26
|
+
this.injector = inject(Injector);
|
|
27
|
+
this.layoutService = inject(AXPLayoutThemeService);
|
|
28
|
+
this.from = viewChild(AXFormComponent);
|
|
29
|
+
this.container = viewChild(AXPWidgetContainerComponent);
|
|
30
|
+
this.#effect1 = effect(() => {
|
|
31
|
+
this.vm.isBusy.set(this.container()?.isBusy() ?? false);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
#effect1;
|
|
35
|
+
ngAfterViewInit() {
|
|
36
|
+
this.vm.form = this.from();
|
|
37
|
+
this.vm.builder = this.container().builderService;
|
|
38
|
+
}
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPSettingsViewComponent, isStandalone: true, selector: "ng-component", host: { classAttribute: "ax-w-full" }, viewQueries: [{ propertyName: "from", first: true, predicate: AXFormComponent, descendants: true, isSignal: true }, { propertyName: "container", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-form>\n <axp-widgets-container\n [context]=\"vm.context()\"\n (onContextChanged)=\"vm.handleContextChanged($event)\"\n *translate=\"let t\"\n >\n @if(vm.isSearching() && vm.searchResult()!.length>0) { @for(group of vm.searchResult(); track group.name;let\n first=$first) {\n <p class=\"ax-text-lg md:ax-text-xl ax-font-semibold ax-py-3 ax-text-neutral-500\" [class.ax-pt-0]=\"first\">\n {{ group.title | translate | async }}\n </p>\n <axp-layout-sections>\n @for (section of group.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } } @else if(vm.isSearching() && vm.searchResult()!.length===0) {\n <div class=\"ax-p-2\">\n <div\n class=\"ax-mt-3 ax-flex ax-flex-col ax-justify-center ax-h-[calc(100vh-236px)] ax-items-center ax-p-10 ax-gap-10\"\n >\n <p class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">\n {{ t('settings.search-not-found', { scope: 'platform-management' }) | async }}\n </p>\n </div>\n </div>\n } @else if(vm.groups()?.sections) {\n <axp-layout-sections>\n @for(section of vm.groups()?.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } @else {\n <div class=\"ax-bg-lightest ax-px-4 ax-border ax-rounded-md\">\n @for(group of vm.groups()?.groups; track $index) {\n <!-- <div class=\"ax-p-4\">\n <a [routerLink]=\"vm.fullRoute + group.name\"\n class=\"ax-text-primary-500 dark:ax-text-primary-200 ax-underline ax-font-bold ax-text-xl\">{{ group.title\n }}</a>\n </div> -->\n }\n </div>\n }\n <ng-template #sectionTpl let-section=\"section\">\n <axp-layout-section-container>\n <axp-layout-header-container>\n <axp-layout-title>\n {{ section.title | translate | async }}\n </axp-layout-title>\n @if(section.description) {\n <axp-layout-description>\n {{ section.description | translate | async }}\n </axp-layout-description>\n }\n </axp-layout-header-container>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-divide-y ax-divide-dashed ax-w-full\">\n @let isSideMenuOpen=layoutService.isSideMenuOpen(); @for(j of section.settings; track j.name){\n <div\n class=\"ax-py-4 ax-px-4 lg:ax-px-6 xl:ax-px-8 2xl:ax-px-10 ax-gap-4 ax-items-center ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 lg:ax-grid-cols-4 xl:ax-grid-cols-6 2xl:ax-grid-cols-10 3xl:ax-grid-cols-12\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <!-- Title and Description Section -->\n <div\n class=\"ax-col-span-1 lg:ax-col-span-3 xl:ax-col-span-2 2xl:ax-col-span-3\"\n [ngClass]=\"{\n 'xl:ax-col-span-2': !isSideMenuOpen,\n 'xl:ax-col-span-3': isSideMenuOpen,\n '3xl:ax-col-span-3': !isSideMenuOpen,\n '3xl:ax-col-span-4': isSideMenuOpen\n }\"\n >\n @if(j.title) {\n <axp-layout-title>{{ j.title | translate | async }}</axp-layout-title>\n } @if(j.description) {\n <axp-layout-description>{{ j.description | translate | async }}</axp-layout-description>\n }\n </div>\n\n <!-- Editor Section -->\n <ax-form-field\n class=\"ax-flex ax-w-full sm:ax-col-span-2 lg:ax-col-span-4 xl:ax-col-span-3 2xl:ax-col-span-5 3xl:ax-col-span-4\"\n [ngClass]=\"{\n 'xl:ax-col-start-3': !isSideMenuOpen,\n 'xl:ax-col-start-4': isSideMenuOpen,\n '3xl:ax-col-start-4': !isSideMenuOpen,\n '3xl:ax-col-start-5': isSideMenuOpen,\n }\"\n >\n <ng-container axp-widget-renderer [node]=\"j.widget\" [mode]=\"'edit'\" #widget=\"widgetRenderer\">\n </ng-container>\n </ax-form-field>\n </div>\n }\n </axp-layout-content>\n <!-- @if(vm.isDirty(section) && !vm.layout.isSmall())\n {\n <axp-layout-footer-container class=\"ax-sm\">\n <axp-layout-suffix>\n <ax-button (onClick)=\"vm.discard(section)\" [text]=\"(t('discard') | async)!\" [disabled]=\"vm.isBusy()\">\n </ax-button>\n <ax-button (onClick)=\"vm.apply(section)\" color=\"primary\" [text]=\"(t('apply') | async)!\"\n [disabled]=\"vm.isBusy()\">\n @if(vm.isSaving() )\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer-container>\n } -->\n </axp-layout-section-container>\n </ng-template>\n </axp-widgets-container>\n</ax-form>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type:
|
|
41
|
+
//
|
|
42
|
+
AXDecoratorModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "directive", type: i6.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type:
|
|
43
|
+
//
|
|
44
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i6$1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6$1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-layout-content, axp-layout-header-container, axp-layout-side-container, axp-layout-sections, axp-layout-section-container, axp-layout-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-toolbar, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsViewComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ imports: [
|
|
49
|
+
CommonModule,
|
|
50
|
+
FormsModule,
|
|
51
|
+
//
|
|
52
|
+
AXDecoratorModule,
|
|
53
|
+
AXBreadcrumbsModule,
|
|
54
|
+
AXButtonModule,
|
|
55
|
+
AXBadgeModule,
|
|
56
|
+
AXTranslationModule,
|
|
57
|
+
AXSearchBoxModule,
|
|
58
|
+
AXDropdownButtonModule,
|
|
59
|
+
AXLoadingModule,
|
|
60
|
+
AXFormModule,
|
|
61
|
+
AXValidationModule,
|
|
62
|
+
//
|
|
63
|
+
AXPLayoutBuilderModule,
|
|
64
|
+
AXPThemeLayoutBlockComponent
|
|
65
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
66
|
+
class: 'ax-w-full',
|
|
67
|
+
}, template: "<ax-form>\n <axp-widgets-container\n [context]=\"vm.context()\"\n (onContextChanged)=\"vm.handleContextChanged($event)\"\n *translate=\"let t\"\n >\n @if(vm.isSearching() && vm.searchResult()!.length>0) { @for(group of vm.searchResult(); track group.name;let\n first=$first) {\n <p class=\"ax-text-lg md:ax-text-xl ax-font-semibold ax-py-3 ax-text-neutral-500\" [class.ax-pt-0]=\"first\">\n {{ group.title | translate | async }}\n </p>\n <axp-layout-sections>\n @for (section of group.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } } @else if(vm.isSearching() && vm.searchResult()!.length===0) {\n <div class=\"ax-p-2\">\n <div\n class=\"ax-mt-3 ax-flex ax-flex-col ax-justify-center ax-h-[calc(100vh-236px)] ax-items-center ax-p-10 ax-gap-10\"\n >\n <p class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">\n {{ t('settings.search-not-found', { scope: 'platform-management' }) | async }}\n </p>\n </div>\n </div>\n } @else if(vm.groups()?.sections) {\n <axp-layout-sections>\n @for(section of vm.groups()?.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } @else {\n <div class=\"ax-bg-lightest ax-px-4 ax-border ax-rounded-md\">\n @for(group of vm.groups()?.groups; track $index) {\n <!-- <div class=\"ax-p-4\">\n <a [routerLink]=\"vm.fullRoute + group.name\"\n class=\"ax-text-primary-500 dark:ax-text-primary-200 ax-underline ax-font-bold ax-text-xl\">{{ group.title\n }}</a>\n </div> -->\n }\n </div>\n }\n <ng-template #sectionTpl let-section=\"section\">\n <axp-layout-section-container>\n <axp-layout-header-container>\n <axp-layout-title>\n {{ section.title | translate | async }}\n </axp-layout-title>\n @if(section.description) {\n <axp-layout-description>\n {{ section.description | translate | async }}\n </axp-layout-description>\n }\n </axp-layout-header-container>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-divide-y ax-divide-dashed ax-w-full\">\n @let isSideMenuOpen=layoutService.isSideMenuOpen(); @for(j of section.settings; track j.name){\n <div\n class=\"ax-py-4 ax-px-4 lg:ax-px-6 xl:ax-px-8 2xl:ax-px-10 ax-gap-4 ax-items-center ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 lg:ax-grid-cols-4 xl:ax-grid-cols-6 2xl:ax-grid-cols-10 3xl:ax-grid-cols-12\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <!-- Title and Description Section -->\n <div\n class=\"ax-col-span-1 lg:ax-col-span-3 xl:ax-col-span-2 2xl:ax-col-span-3\"\n [ngClass]=\"{\n 'xl:ax-col-span-2': !isSideMenuOpen,\n 'xl:ax-col-span-3': isSideMenuOpen,\n '3xl:ax-col-span-3': !isSideMenuOpen,\n '3xl:ax-col-span-4': isSideMenuOpen\n }\"\n >\n @if(j.title) {\n <axp-layout-title>{{ j.title | translate | async }}</axp-layout-title>\n } @if(j.description) {\n <axp-layout-description>{{ j.description | translate | async }}</axp-layout-description>\n }\n </div>\n\n <!-- Editor Section -->\n <ax-form-field\n class=\"ax-flex ax-w-full sm:ax-col-span-2 lg:ax-col-span-4 xl:ax-col-span-3 2xl:ax-col-span-5 3xl:ax-col-span-4\"\n [ngClass]=\"{\n 'xl:ax-col-start-3': !isSideMenuOpen,\n 'xl:ax-col-start-4': isSideMenuOpen,\n '3xl:ax-col-start-4': !isSideMenuOpen,\n '3xl:ax-col-start-5': isSideMenuOpen,\n }\"\n >\n <ng-container axp-widget-renderer [node]=\"j.widget\" [mode]=\"'edit'\" #widget=\"widgetRenderer\">\n </ng-container>\n </ax-form-field>\n </div>\n }\n </axp-layout-content>\n <!-- @if(vm.isDirty(section) && !vm.layout.isSmall())\n {\n <axp-layout-footer-container class=\"ax-sm\">\n <axp-layout-suffix>\n <ax-button (onClick)=\"vm.discard(section)\" [text]=\"(t('discard') | async)!\" [disabled]=\"vm.isBusy()\">\n </ax-button>\n <ax-button (onClick)=\"vm.apply(section)\" color=\"primary\" [text]=\"(t('apply') | async)!\"\n [disabled]=\"vm.isBusy()\">\n @if(vm.isSaving() )\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer-container>\n } -->\n </axp-layout-section-container>\n </ng-template>\n </axp-widgets-container>\n</ax-form>\n" }]
|
|
68
|
+
}] });
|
|
69
|
+
|
|
70
|
+
export { AXPSettingsViewComponent };
|
|
71
|
+
//# sourceMappingURL=acorex-platform-themes-default-setting-view.component-BagAWM4W.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-themes-default-setting-view.component-BagAWM4W.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/setting-layout/setting-view/setting-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/setting-layout/setting-view/setting-view.component.html"],"sourcesContent":["import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXValidationModule } from '@acorex/core/validation';\nimport { AXPLayoutBuilderModule, AXPWidgetContainerComponent } from '@acorex/platform/layout/builder';\nimport { AXPSettingsViewModel } from '@acorex/platform/layout/setting';\nimport { AXPLayoutThemeService, AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, Injector, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n templateUrl: 'setting-view.component.html',\n imports: [\n CommonModule,\n FormsModule,\n //\n AXDecoratorModule,\n AXBreadcrumbsModule,\n AXButtonModule,\n AXBadgeModule,\n AXTranslationModule,\n AXSearchBoxModule,\n AXDropdownButtonModule,\n AXLoadingModule,\n AXFormModule,\n AXValidationModule,\n //\n AXPLayoutBuilderModule,\n AXPThemeLayoutBlockComponent\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ax-w-full',\n }\n})\nexport class AXPSettingsViewComponent {\n protected vm = inject(AXPSettingsViewModel);\n protected injector = inject(Injector);\n protected layoutService = inject(AXPLayoutThemeService);\n private from = viewChild(AXFormComponent);\n private container = viewChild(AXPWidgetContainerComponent);\n\n #effect1 = effect(() => {\n this.vm.isBusy.set(this.container()?.isBusy() ?? false)\n });\n\n ngAfterViewInit() {\n this.vm.form = this.from()!;\n this.vm.builder = this.container()!.builderService;\n }\n}\n","<ax-form>\n <axp-widgets-container\n [context]=\"vm.context()\"\n (onContextChanged)=\"vm.handleContextChanged($event)\"\n *translate=\"let t\"\n >\n @if(vm.isSearching() && vm.searchResult()!.length>0) { @for(group of vm.searchResult(); track group.name;let\n first=$first) {\n <p class=\"ax-text-lg md:ax-text-xl ax-font-semibold ax-py-3 ax-text-neutral-500\" [class.ax-pt-0]=\"first\">\n {{ group.title | translate | async }}\n </p>\n <axp-layout-sections>\n @for (section of group.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } } @else if(vm.isSearching() && vm.searchResult()!.length===0) {\n <div class=\"ax-p-2\">\n <div\n class=\"ax-mt-3 ax-flex ax-flex-col ax-justify-center ax-h-[calc(100vh-236px)] ax-items-center ax-p-10 ax-gap-10\"\n >\n <p class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">\n {{ t('settings.search-not-found', { scope: 'platform-management' }) | async }}\n </p>\n </div>\n </div>\n } @else if(vm.groups()?.sections) {\n <axp-layout-sections>\n @for(section of vm.groups()?.sections; track section.name) {\n <ng-container\n [ngTemplateOutlet]=\"sectionTpl\"\n [ngTemplateOutletContext]=\"{ section }\"\n [ngTemplateOutletInjector]=\"injector\"\n ></ng-container>\n }\n </axp-layout-sections>\n } @else {\n <div class=\"ax-bg-lightest ax-px-4 ax-border ax-rounded-md\">\n @for(group of vm.groups()?.groups; track $index) {\n <!-- <div class=\"ax-p-4\">\n <a [routerLink]=\"vm.fullRoute + group.name\"\n class=\"ax-text-primary-500 dark:ax-text-primary-200 ax-underline ax-font-bold ax-text-xl\">{{ group.title\n }}</a>\n </div> -->\n }\n </div>\n }\n <ng-template #sectionTpl let-section=\"section\">\n <axp-layout-section-container>\n <axp-layout-header-container>\n <axp-layout-title>\n {{ section.title | translate | async }}\n </axp-layout-title>\n @if(section.description) {\n <axp-layout-description>\n {{ section.description | translate | async }}\n </axp-layout-description>\n }\n </axp-layout-header-container>\n <axp-layout-content class=\"ax-flex ax-flex-col ax-divide-y ax-divide-dashed ax-w-full\">\n @let isSideMenuOpen=layoutService.isSideMenuOpen(); @for(j of section.settings; track j.name){\n <div\n class=\"ax-py-4 ax-px-4 lg:ax-px-6 xl:ax-px-8 2xl:ax-px-10 ax-gap-4 ax-items-center ax-grid ax-grid-cols-1 sm:ax-grid-cols-2 lg:ax-grid-cols-4 xl:ax-grid-cols-6 2xl:ax-grid-cols-10 3xl:ax-grid-cols-12\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <!-- Title and Description Section -->\n <div\n class=\"ax-col-span-1 lg:ax-col-span-3 xl:ax-col-span-2 2xl:ax-col-span-3\"\n [ngClass]=\"{\n 'xl:ax-col-span-2': !isSideMenuOpen,\n 'xl:ax-col-span-3': isSideMenuOpen,\n '3xl:ax-col-span-3': !isSideMenuOpen,\n '3xl:ax-col-span-4': isSideMenuOpen\n }\"\n >\n @if(j.title) {\n <axp-layout-title>{{ j.title | translate | async }}</axp-layout-title>\n } @if(j.description) {\n <axp-layout-description>{{ j.description | translate | async }}</axp-layout-description>\n }\n </div>\n\n <!-- Editor Section -->\n <ax-form-field\n class=\"ax-flex ax-w-full sm:ax-col-span-2 lg:ax-col-span-4 xl:ax-col-span-3 2xl:ax-col-span-5 3xl:ax-col-span-4\"\n [ngClass]=\"{\n 'xl:ax-col-start-3': !isSideMenuOpen,\n 'xl:ax-col-start-4': isSideMenuOpen,\n '3xl:ax-col-start-4': !isSideMenuOpen,\n '3xl:ax-col-start-5': isSideMenuOpen,\n }\"\n >\n <ng-container axp-widget-renderer [node]=\"j.widget\" [mode]=\"'edit'\" #widget=\"widgetRenderer\">\n </ng-container>\n </ax-form-field>\n </div>\n }\n </axp-layout-content>\n <!-- @if(vm.isDirty(section) && !vm.layout.isSmall())\n {\n <axp-layout-footer-container class=\"ax-sm\">\n <axp-layout-suffix>\n <ax-button (onClick)=\"vm.discard(section)\" [text]=\"(t('discard') | async)!\" [disabled]=\"vm.isBusy()\">\n </ax-button>\n <ax-button (onClick)=\"vm.apply(section)\" color=\"primary\" [text]=\"(t('apply') | async)!\"\n [disabled]=\"vm.isBusy()\">\n @if(vm.isSaving() )\n {\n <ax-loading></ax-loading>\n }\n </ax-button>\n </axp-layout-suffix>\n </axp-layout-footer-container>\n } -->\n </axp-layout-section-container>\n </ng-template>\n </axp-widgets-container>\n</ax-form>\n"],"names":["i2"],"mappings":"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"}
|