@acorex/platform 19.1.8 → 19.1.9
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 +4 -0
- package/common/lib/common.module.d.ts +2 -2
- package/common/lib/layout/menu/menu.types.d.ts +2 -1
- package/common/lib/search/search-definition.builder.d.ts +5 -2
- package/common/lib/search/search.provider.d.ts +1 -1
- package/common/lib/search/search.service.d.ts +1 -0
- package/common/lib/search/search.types.d.ts +21 -5
- package/common/lib/settings/settings.service.d.ts +11 -5
- package/common/lib/workflows/navigate.workflow.d.ts +4 -0
- package/fesm2022/acorex-platform-common.mjs +105 -126
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1 -0
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +3 -3
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +107 -62
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-search.mjs +76 -17
- package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-setting.mjs +111 -5
- package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-BUL6ti4U.mjs → acorex-platform-themes-default-entity-master-list-view.component-BDjcOo6R.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BDjcOo6R.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-search-popup.component-gkiSZXm-.mjs +122 -0
- package/fesm2022/acorex-platform-themes-default-search-popup.component-gkiSZXm-.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +11 -11
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +9 -9
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +1236 -832
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +10 -3
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/lib/builder/widget-map.d.ts +1 -0
- package/layout/designer/lib/preview/preview.component.d.ts +2 -2
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +6 -6
- package/layout/entity/lib/search-definition-command.provider.d.ts +4 -0
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +1 -1
- package/layout/search/lib/search.viewmodel.d.ts +17 -1
- package/layout/setting/index.d.ts +1 -0
- package/{common/lib/settings → layout/setting/lib}/search-definition.provider.d.ts +1 -1
- package/layout/setting/lib/search.provider.d.ts +9 -0
- package/layout/setting/lib/settings.module.d.ts +9 -0
- package/package.json +9 -9
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +2 -2
- package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +7 -0
- package/themes/shared/lib/components/layout-elements/layout-list.component.d.ts +3 -3
- package/widgets/lib/widgets/index.d.ts +1 -0
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-designer.component.d.ts +29 -0
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-view.component.d.ts +9 -0
- package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/layout/advanced-grid/index.d.ts +3 -0
- package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +6 -3
- package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.d.ts +6 -6
- package/widgets/lib/widgets/property-editors/grid-options/grid-options-widget-editor.component.d.ts +23 -12
- package/widgets/lib/widgets/property-editors/grid-options/grid-options-widget.type.d.ts +4 -2
- package/widgets/lib/widgets/property-editors/property-editor-helper.d.ts +2 -2
- package/widgets/lib/widgets/property-editors/property-editor.type.d.ts +5 -0
- package/workflow/lib/workflow.service.d.ts +1 -0
- package/workflow/lib/workflow.types.d.ts +1 -1
- package/common/lib/settings/search.provider.d.ts +0 -10
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BUL6ti4U.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-search-popup.component-BiKt6Mvr.mjs +0 -84
- package/fesm2022/acorex-platform-themes-default-search-popup.component-BiKt6Mvr.mjs.map +0 -1
- package/layout/entity/lib/search.provider.d.ts +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, inject, Component, HostListener, Injectable, NgModule, signal, computed } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@acorex/platform/common';
|
|
4
|
-
import { AXPComponentSlotModule, AXPSearchService } from '@acorex/platform/common';
|
|
4
|
+
import { AXPComponentSlotModule, AXPSearchService, AXPSettingService, AXPSettingScope } from '@acorex/platform/common';
|
|
5
5
|
import * as i2$1 from '@acorex/platform/workflow';
|
|
6
6
|
import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
|
7
7
|
import * as i1 from '@acorex/components/button';
|
|
@@ -23,7 +23,7 @@ class AXPGlobalSearchSlotComponent {
|
|
|
23
23
|
await this.workflow.execute('global-search');
|
|
24
24
|
}
|
|
25
25
|
async handleKeyboardEvent(event) {
|
|
26
|
-
if (event.ctrlKey
|
|
26
|
+
if (event.ctrlKey) {
|
|
27
27
|
switch (event.code) {
|
|
28
28
|
case 'KeyK':
|
|
29
29
|
event.preventDefault();
|
|
@@ -66,7 +66,7 @@ class AXPGlobalSearchStartAction extends AXPWorkflowAction {
|
|
|
66
66
|
}
|
|
67
67
|
async execute(context) {
|
|
68
68
|
const component = await this.config.window();
|
|
69
|
-
const
|
|
69
|
+
const popup = await this.popupService.open(component, {
|
|
70
70
|
title: 'Search...',
|
|
71
71
|
size: 'fit',
|
|
72
72
|
closeOnBackdropClick: true,
|
|
@@ -75,10 +75,9 @@ class AXPGlobalSearchStartAction extends AXPWorkflowAction {
|
|
|
75
75
|
},
|
|
76
76
|
header: false,
|
|
77
77
|
});
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const command = result.data.data.command;
|
|
78
|
+
if (popup.data) {
|
|
79
|
+
//TODO: remove command
|
|
80
|
+
const command = Object.entries(popup.data.commands).map(c => ({ name: c[0], options: c[1] }))[0];
|
|
82
81
|
this.workflow.execute(command.name, command.options);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
@@ -152,7 +151,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
152
151
|
|
|
153
152
|
class AXPGlobalSearchViewModel {
|
|
154
153
|
constructor() {
|
|
154
|
+
this.settingKeys = {
|
|
155
|
+
recent: "global-search:recents:items",
|
|
156
|
+
pinned: "global-search:pinned:items"
|
|
157
|
+
};
|
|
155
158
|
this.searchService = inject(AXPSearchService);
|
|
159
|
+
this.settingService = inject(AXPSettingService);
|
|
156
160
|
this._text = signal(null);
|
|
157
161
|
this.text = this._text.asReadonly();
|
|
158
162
|
this._results = signal([]);
|
|
@@ -161,30 +165,85 @@ class AXPGlobalSearchViewModel {
|
|
|
161
165
|
this.isBusy = this._isBusy.asReadonly();
|
|
162
166
|
this.isEmpty = computed(() => this.text() && this.results().length == 0);
|
|
163
167
|
this.isValid = computed(() => (this.text()?.length ?? 0) > 2);
|
|
164
|
-
this.isStart = computed(() => !this.
|
|
165
|
-
this.
|
|
168
|
+
this.isStart = computed(() => !this.isEmpty() && this.results().length == 0);
|
|
169
|
+
this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0);
|
|
170
|
+
this.recentSelections = signal([]);
|
|
171
|
+
this._pinnedItems = signal([]);
|
|
172
|
+
this.pinnedItems = this._pinnedItems.asReadonly();
|
|
173
|
+
this.recentItems = computed(() => this.getTopRecentItems());
|
|
174
|
+
this.onItemSelected = new Subject();
|
|
175
|
+
this.loadSettings();
|
|
166
176
|
}
|
|
167
177
|
async search(text) {
|
|
168
178
|
this._isBusy.set(true);
|
|
169
179
|
this._text.set(text);
|
|
170
|
-
//
|
|
171
180
|
if (!this.isValid()) {
|
|
172
181
|
this._results.set([]);
|
|
173
182
|
}
|
|
174
183
|
else {
|
|
175
|
-
await new Promise((resolve) =>
|
|
176
|
-
setTimeout(() => {
|
|
177
|
-
resolve(0);
|
|
178
|
-
}, 100);
|
|
179
|
-
});
|
|
184
|
+
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
180
185
|
const results = await this.searchService.search(text);
|
|
181
186
|
this._results.set(results);
|
|
182
187
|
}
|
|
183
|
-
//
|
|
184
188
|
this._isBusy.set(false);
|
|
185
189
|
}
|
|
186
190
|
async execute(item) {
|
|
187
|
-
this.
|
|
191
|
+
this.onItemSelected.next(item);
|
|
192
|
+
await this.updateSelectionHistory(item);
|
|
193
|
+
}
|
|
194
|
+
async pin(item) {
|
|
195
|
+
const currentPinned = this._pinnedItems();
|
|
196
|
+
if (!currentPinned.some(i => i.id === item.id)) {
|
|
197
|
+
this._pinnedItems.set([item, ...currentPinned].slice(0, 5));
|
|
198
|
+
await this.saveSettings();
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async unpin(item) {
|
|
202
|
+
const currentPinned = this._pinnedItems();
|
|
203
|
+
this._pinnedItems.set(currentPinned.filter(i => i.id !== item.id));
|
|
204
|
+
await this.saveSettings();
|
|
205
|
+
}
|
|
206
|
+
async togglePin(item) {
|
|
207
|
+
if (this.isPinned(item)) {
|
|
208
|
+
await this.unpin(item);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
await this.pin(item);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
isPinned(item) {
|
|
215
|
+
const currentPinned = this._pinnedItems();
|
|
216
|
+
return currentPinned.some(i => i.id === item.id);
|
|
217
|
+
}
|
|
218
|
+
async updateSelectionHistory(item) {
|
|
219
|
+
// Update recent selections
|
|
220
|
+
const currentHistory = this.recentSelections();
|
|
221
|
+
const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);
|
|
222
|
+
this.recentSelections.set(updatedHistory);
|
|
223
|
+
// Save updated settings
|
|
224
|
+
await this.saveSettings();
|
|
225
|
+
}
|
|
226
|
+
getTopRecentItems() {
|
|
227
|
+
const pinnedIds = new Set(this._pinnedItems().map(item => item.id));
|
|
228
|
+
return this.recentSelections().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
|
|
229
|
+
}
|
|
230
|
+
async loadSettings() {
|
|
231
|
+
// Load recent selections
|
|
232
|
+
const recent = await this.settingService.get(this.settingKeys.recent);
|
|
233
|
+
if (recent) {
|
|
234
|
+
this.recentSelections.set(recent.slice(0, 5));
|
|
235
|
+
}
|
|
236
|
+
// Load pinned items
|
|
237
|
+
const pinned = await this.settingService.get(this.settingKeys.pinned);
|
|
238
|
+
if (pinned) {
|
|
239
|
+
this._pinnedItems.set(pinned.slice(0, 5));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async saveSettings() {
|
|
243
|
+
// Save recent selections
|
|
244
|
+
await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, this.recentSelections().slice(0, 5));
|
|
245
|
+
// Save pinned items
|
|
246
|
+
await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));
|
|
188
247
|
}
|
|
189
248
|
}
|
|
190
249
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-search.mjs","sources":["../../../../libs/platform/layout/search/src/lib/search.config.ts","../../../../libs/platform/layout/search/src/lib/search-slot.component.ts","../../../../libs/platform/layout/search/src/lib/workflows/search.workflow.ts","../../../../libs/platform/layout/search/src/lib/search.module.ts","../../../../libs/platform/layout/search/src/lib/search.viewmodel.ts","../../../../libs/platform/layout/search/src/acorex-platform-layout-search.ts"],"sourcesContent":["import { InjectionToken, Type } from \"@angular/core\";\n\nexport interface AXPGlobalSearchConfigs {\n window: () => Type<any>;\n}\n\nexport const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken<AXPGlobalSearchConfigs>('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\n\n@Component({\n template: `\n <ax-button look=\"blank\" (onClick)=\"startSearch()\">\n <ax-icon class=\"fa-regular fa-search\">\n </ax-icon>\n </ax-button>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule]\n})\nexport class AXPGlobalSearchSlotComponent {\n\n protected workflow = inject(AXPWorkflowService);\n\n protected async startSearch() {\n await this.workflow.execute('global-search')\n }\n\n @HostListener('document:keydown', ['$event'])\n private async handleKeyboardEvent(event: KeyboardEvent) {\n if (event.ctrlKey && event.target == document.body) {\n switch (event.code) {\n case 'KeyK':\n event.preventDefault();\n event.stopPropagation();\n await this.startSearch();\n break;\n }\n }\n\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, AXPWorkflowService } from '@acorex/platform/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '../search.config';\n\n@Injectable()\nexport class AXPGlobalSearchStartAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private workflow = inject(AXPWorkflowService);\n private config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n\n override async execute(context: AXPWorkflowContext): Promise<void> {\n const component = await this.config.window();\n const result = await this.popupService.open(component, {\n title: 'Search...',\n size: 'fit',\n closeOnBackdropClick: true,\n data: {\n text: context.getVariable('text'),\n },\n header: false,\n });\n if (result.data) {\n console.log(result.data);\n context.setOutput('item', result.data);\n const command = result.data.data.command;\n this.workflow.execute(command.name, command.options);\n }\n }\n}\n\nexport const AXPGlobalSearchWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'AXPGlobalSearchStartAction',\n },\n },\n};\n","import { AXPAppStartUpService, AXPComponentSlotModule } from '@acorex/platform/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXPGlobalSearchSlotComponent } from './search-slot.component';\nimport { AXPGlobalSearchStartAction, AXPGlobalSearchWorkflow } from './workflows/search.workflow';\n\n@NgModule({\n imports: [\n AXPComponentSlotModule.forChild({\n 'header-end': [\n {\n priority: 0,\n name: 'search',\n component: AXPGlobalSearchSlotComponent,\n },\n ],\n }),\n //\n AXPWorkflowModule.forChild({\n actions: {\n AXPGlobalSearchStartAction\n },\n workflows: {\n 'global-search': AXPGlobalSearchWorkflow,\n },\n })\n ],\n exports: [],\n declarations: [],\n providers: []\n})\nexport class AXPGlobalSearchModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n\n }\n}\n","import { AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchService } from \"@acorex/platform/common\";\nimport { computed, inject, signal } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\nexport class AXPGlobalSearchViewModel {\n\n private searchService = inject(AXPSearchService);\n\n private _text = signal<string | null>(null);\n public text = this._text.asReadonly();\n\n private _results = signal<AXPSearchDisplayGroupResult[]>([]);\n public results = this._results.asReadonly();\n\n private _isBusy = signal(false);\n public isBusy = this._isBusy.asReadonly();\n\n public isEmpty = computed(() => this.text() && this.results().length == 0);\n\n public isValid = computed(() => (this.text()?.length ?? 0) > 2);\n\n public isStart = computed(() => !this.text() && this.results().length == 0);\n\n\n\n public readonly onItemClick = new Subject<AXPSearchDisplayResult>();\n\n public async search(text: string): Promise<void> {\n this._isBusy.set(true)\n this._text.set(text);\n //\n if (!this.isValid()) {\n this._results.set([]);\n }\n else {\n await new Promise((resolve) => {\n setTimeout(() => {\n resolve(0)\n }, 100);\n });\n const results = await this.searchService.search(text);\n this._results.set(results);\n }\n //\n this._isBusy.set(false)\n }\n\n\n public async execute(item: AXPSearchDisplayResult): Promise<void> {\n this.onItemClick.next(item);\n }\n\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-search.mjs","sources":["../../../../libs/platform/layout/search/src/lib/search.config.ts","../../../../libs/platform/layout/search/src/lib/search-slot.component.ts","../../../../libs/platform/layout/search/src/lib/workflows/search.workflow.ts","../../../../libs/platform/layout/search/src/lib/search.module.ts","../../../../libs/platform/layout/search/src/lib/search.viewmodel.ts","../../../../libs/platform/layout/search/src/acorex-platform-layout-search.ts"],"sourcesContent":["import { InjectionToken, Type } from \"@angular/core\";\n\nexport interface AXPGlobalSearchConfigs {\n window: () => Type<any>;\n}\n\nexport const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken<AXPGlobalSearchConfigs>('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { CommonModule } from '@angular/common';\nimport { Component, HostListener, inject } from '@angular/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\n\n@Component({\n template: `\n <ax-button look=\"blank\" (onClick)=\"startSearch()\">\n <ax-icon class=\"fa-regular fa-search\">\n </ax-icon>\n </ax-button>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule]\n})\nexport class AXPGlobalSearchSlotComponent {\n\n protected workflow = inject(AXPWorkflowService);\n\n protected async startSearch() {\n await this.workflow.execute('global-search')\n }\n\n @HostListener('document:keydown', ['$event'])\n private async handleKeyboardEvent(event: KeyboardEvent) {\n if (event.ctrlKey) {\n switch (event.code) {\n case 'KeyK':\n event.preventDefault();\n event.stopPropagation();\n await this.startSearch();\n break;\n }\n }\n\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext, AXPWorkflowService } from '@acorex/platform/workflow';\nimport { inject, Injectable } from '@angular/core';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '../search.config';\n\n@Injectable()\nexport class AXPGlobalSearchStartAction extends AXPWorkflowAction {\n private popupService = inject(AXPopupService);\n private workflow = inject(AXPWorkflowService);\n private config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n\n override async execute(context: AXPWorkflowContext): Promise<void> {\n const component = await this.config.window();\n const popup = await this.popupService.open(component, {\n title: 'Search...',\n size: 'fit',\n closeOnBackdropClick: true,\n data: {\n text: context.getVariable('text'),\n },\n header: false,\n });\n if (popup.data) {\n //TODO: remove command \n const command = Object.entries(popup.data.commands).map(c => ({ name: c[0], options: c[1] }))[0];\n this.workflow.execute(command.name, command.options);\n }\n }\n}\n\nexport const AXPGlobalSearchWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'AXPGlobalSearchStartAction',\n },\n },\n};\n","import { AXPAppStartUpService, AXPComponentSlotModule } from '@acorex/platform/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPWorkflowModule } from '@acorex/platform/workflow';\nimport { AXPGlobalSearchSlotComponent } from './search-slot.component';\nimport { AXPGlobalSearchStartAction, AXPGlobalSearchWorkflow } from './workflows/search.workflow';\n\n@NgModule({\n imports: [\n AXPComponentSlotModule.forChild({\n 'header-end': [\n {\n priority: 0,\n name: 'search',\n component: AXPGlobalSearchSlotComponent,\n },\n ],\n }),\n //\n AXPWorkflowModule.forChild({\n actions: {\n AXPGlobalSearchStartAction\n },\n workflows: {\n 'global-search': AXPGlobalSearchWorkflow,\n },\n })\n ],\n exports: [],\n declarations: [],\n providers: []\n})\nexport class AXPGlobalSearchModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n\n }\n}\n","import { AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchService, AXPSettingScope, AXPSettingService } from \"@acorex/platform/common\";\nimport { computed, inject, signal } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\nexport class AXPGlobalSearchViewModel {\n\n private settingKeys = {\n recent: \"global-search:recents:items\",\n pinned: \"global-search:pinned:items\"\n }\n\n private searchService = inject(AXPSearchService);\n private settingService = inject(AXPSettingService);\n\n private _text = signal<string | null>(null);\n public text = this._text.asReadonly();\n\n private _results = signal<AXPSearchDisplayGroupResult[]>([]);\n public results = this._results.asReadonly();\n\n private _isBusy = signal(false);\n public isBusy = this._isBusy.asReadonly();\n\n public isEmpty = computed(() => this.text() && this.results().length == 0);\n\n public isValid = computed(() => (this.text()?.length ?? 0) > 2);\n\n public isStart = computed(() => !this.isEmpty() && this.results().length == 0);\n\n public isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0);\n\n private recentSelections = signal<AXPSearchDisplayResult[]>([]);\n private _pinnedItems = signal<AXPSearchDisplayResult[]>([]);\n public pinnedItems = this._pinnedItems.asReadonly();\n public recentItems = computed(() => this.getTopRecentItems());\n\n public readonly onItemSelected = new Subject<AXPSearchDisplayResult>();\n\n constructor() {\n this.loadSettings();\n }\n\n public async search(text: string): Promise<void> {\n this._isBusy.set(true);\n this._text.set(text);\n\n if (!this.isValid()) {\n this._results.set([]);\n } else {\n await new Promise((resolve) => setTimeout(resolve, 250));\n\n const results = await this.searchService.search(text);\n this._results.set(results);\n }\n\n this._isBusy.set(false);\n }\n\n public async execute(item: AXPSearchDisplayResult): Promise<void> {\n this.onItemSelected.next(item);\n await this.updateSelectionHistory(item);\n }\n\n public async pin(item: AXPSearchDisplayResult): Promise<void> {\n const currentPinned = this._pinnedItems();\n if (!currentPinned.some(i => i.id === item.id)) {\n this._pinnedItems.set([item, ...currentPinned].slice(0, 5));\n await this.saveSettings();\n }\n }\n\n public async unpin(item: AXPSearchDisplayResult): Promise<void> {\n const currentPinned = this._pinnedItems();\n this._pinnedItems.set(currentPinned.filter(i => i.id !== item.id));\n await this.saveSettings();\n }\n\n public async togglePin(item: AXPSearchDisplayResult): Promise<void> {\n if (this.isPinned(item)) {\n await this.unpin(item);\n } else {\n await this.pin(item);\n }\n }\n\n public isPinned(item: AXPSearchDisplayResult): boolean {\n const currentPinned = this._pinnedItems();\n return currentPinned.some(i => i.id === item.id);\n }\n\n private async updateSelectionHistory(item: AXPSearchDisplayResult): Promise<void> {\n // Update recent selections\n const currentHistory = this.recentSelections();\n const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);\n this.recentSelections.set(updatedHistory);\n\n // Save updated settings\n await this.saveSettings();\n }\n\n private getTopRecentItems(): AXPSearchDisplayResult[] {\n const pinnedIds = new Set(this._pinnedItems().map(item => item.id));\n return this.recentSelections().filter(item => !pinnedIds.has(item.id)).slice(0, 5);\n }\n\n private async loadSettings(): Promise<void> {\n // Load recent selections\n const recent = await this.settingService.get<AXPSearchDisplayResult[]>(this.settingKeys.recent);\n if (recent) {\n this.recentSelections.set(recent.slice(0, 5));\n }\n\n // Load pinned items\n const pinned = await this.settingService.get<AXPSearchDisplayResult[]>(this.settingKeys.pinned);\n if (pinned) {\n this._pinnedItems.set(pinned.slice(0, 5));\n }\n }\n\n private async saveSettings(): Promise<void> {\n // Save recent selections\n await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, this.recentSelections().slice(0, 5));\n\n // Save pinned items\n await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
2
2
|
import { AXToastService } from '@acorex/components/toast';
|
|
3
|
-
import
|
|
3
|
+
import * as i1 from '@acorex/platform/common';
|
|
4
|
+
import { AXPSettingScope, AXPSettingDefinitionProviderService, AXPSettingService, AXP_SEARCH_PROVIDER, AXP_SEARCH_DEFINITION_PROVIDER } from '@acorex/platform/common';
|
|
4
5
|
import { AXHighlightService } from '@acorex/platform/core';
|
|
5
6
|
import { AXPPageStatus } from '@acorex/platform/layout/builder';
|
|
6
7
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
7
8
|
import * as i0 from '@angular/core';
|
|
8
|
-
import { inject, signal, computed, effect, Injectable } from '@angular/core';
|
|
9
|
+
import { inject, signal, computed, effect, Injectable, NgModule } from '@angular/core';
|
|
9
10
|
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
|
|
10
|
-
import { isNil, isEmpty, get, isEqual } from 'lodash-es';
|
|
11
|
+
import { isNil, isEmpty, get, isEqual, sortBy } from 'lodash-es';
|
|
11
12
|
import { filter, take } from 'rxjs';
|
|
13
|
+
import { AXPSessionService } from '@acorex/platform/auth';
|
|
12
14
|
|
|
13
15
|
function searchSettings(groups, search) {
|
|
14
16
|
const sectionMatchResult = [];
|
|
@@ -76,7 +78,7 @@ class AXPSettingsViewModel {
|
|
|
76
78
|
constructor() {
|
|
77
79
|
this.router = inject(Router);
|
|
78
80
|
this.settingDefinitionService = inject(AXPSettingDefinitionProviderService);
|
|
79
|
-
this.settingValueService = inject(
|
|
81
|
+
this.settingValueService = inject(AXPSettingService);
|
|
80
82
|
this.toastService = inject(AXToastService);
|
|
81
83
|
this.dialogService = inject(AXDialogService);
|
|
82
84
|
this.highlightService = inject(AXHighlightService);
|
|
@@ -356,9 +358,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
356
358
|
type: Injectable
|
|
357
359
|
}], ctorParameters: () => [] });
|
|
358
360
|
|
|
361
|
+
class AXPSettingSearchProvider {
|
|
362
|
+
constructor() {
|
|
363
|
+
this.settingService = inject(AXPSettingDefinitionProviderService);
|
|
364
|
+
this.sessionService = inject(AXPSessionService);
|
|
365
|
+
}
|
|
366
|
+
async search(text) {
|
|
367
|
+
const groupsSetting = this.settingService.getList(AXPSettingScope.User);
|
|
368
|
+
if (groupsSetting.length == 0) {
|
|
369
|
+
groupsSetting.push(...(await this.settingService.getListAsync(AXPSettingScope.User)));
|
|
370
|
+
}
|
|
371
|
+
// Step 2: Flatten settings from groups
|
|
372
|
+
const allSettings = [];
|
|
373
|
+
const extractSettings = (group) => {
|
|
374
|
+
for (const section of group.sections) {
|
|
375
|
+
allSettings.push(...section.settings.map((x) => ({ ...x, group })));
|
|
376
|
+
}
|
|
377
|
+
for (const subGroup of group.groups) {
|
|
378
|
+
extractSettings(subGroup); // Recursive extraction
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
for (const group of groupsSetting) {
|
|
382
|
+
extractSettings(group);
|
|
383
|
+
}
|
|
384
|
+
// Step 3: Search settings by title
|
|
385
|
+
const searchResults = allSettings.filter((setting) => setting.title.toLowerCase().includes(text.toLowerCase()));
|
|
386
|
+
return sortBy(searchResults.map((setting) => ({
|
|
387
|
+
title: setting.title,
|
|
388
|
+
description: setting.description,
|
|
389
|
+
group: 'setting',
|
|
390
|
+
data: setting,
|
|
391
|
+
commands: {
|
|
392
|
+
navigate: {
|
|
393
|
+
type: 'router',
|
|
394
|
+
options: {
|
|
395
|
+
path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
parent: setting.group
|
|
400
|
+
? {
|
|
401
|
+
title: setting.group.title,
|
|
402
|
+
data: setting.group,
|
|
403
|
+
}
|
|
404
|
+
: undefined,
|
|
405
|
+
})), ['title']);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
class AXPSettingSearchDefinitionProvider {
|
|
410
|
+
async provide(context) {
|
|
411
|
+
context.addDefinition('setting', 'Setting', 'fa-solid fa-gear', 3, {
|
|
412
|
+
format: {
|
|
413
|
+
id: '{{data.name}}',
|
|
414
|
+
},
|
|
415
|
+
actions: [
|
|
416
|
+
{
|
|
417
|
+
name: 'navigate',
|
|
418
|
+
type: 'view',
|
|
419
|
+
priority: 'primary',
|
|
420
|
+
},
|
|
421
|
+
],
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
class AXPSettingsModule {
|
|
427
|
+
constructor(appInitService, injector) {
|
|
428
|
+
}
|
|
429
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsModule, deps: [{ token: i1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
430
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsModule }); }
|
|
431
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsModule, providers: [
|
|
432
|
+
{
|
|
433
|
+
provide: AXP_SEARCH_PROVIDER,
|
|
434
|
+
useClass: AXPSettingSearchProvider,
|
|
435
|
+
multi: true,
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
provide: AXP_SEARCH_DEFINITION_PROVIDER,
|
|
439
|
+
useClass: AXPSettingSearchDefinitionProvider,
|
|
440
|
+
multi: true,
|
|
441
|
+
},
|
|
442
|
+
] }); }
|
|
443
|
+
}
|
|
444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSettingsModule, decorators: [{
|
|
445
|
+
type: NgModule,
|
|
446
|
+
args: [{
|
|
447
|
+
imports: [],
|
|
448
|
+
exports: [],
|
|
449
|
+
declarations: [],
|
|
450
|
+
providers: [
|
|
451
|
+
{
|
|
452
|
+
provide: AXP_SEARCH_PROVIDER,
|
|
453
|
+
useClass: AXPSettingSearchProvider,
|
|
454
|
+
multi: true,
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
provide: AXP_SEARCH_DEFINITION_PROVIDER,
|
|
458
|
+
useClass: AXPSettingSearchDefinitionProvider,
|
|
459
|
+
multi: true,
|
|
460
|
+
},
|
|
461
|
+
]
|
|
462
|
+
}]
|
|
463
|
+
}], ctorParameters: () => [{ type: i1.AXPAppStartUpService }, { type: i0.Injector }] });
|
|
464
|
+
|
|
359
465
|
/**
|
|
360
466
|
* Generated bundle index. Do not edit.
|
|
361
467
|
*/
|
|
362
468
|
|
|
363
|
-
export { AXPSettingsViewModel };
|
|
469
|
+
export { AXPSettingsModule, AXPSettingsViewModel };
|
|
364
470
|
//# sourceMappingURL=acorex-platform-layout-setting.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-layout-setting.mjs","sources":["../../../../libs/platform/layout/setting/src/lib/convert-setting-data.ts","../../../../libs/platform/layout/setting/src/lib/setting.viewmodel.ts","../../../../libs/platform/layout/setting/src/acorex-platform-layout-setting.ts"],"sourcesContent":["import { AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex/platform/common';\n\n\nexport function searchSettings(groups: AXPSettingDefinitionGroup[], search: string): AXPSettingDefinitionGroup[] {\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter(\n (setting) =>\n setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase())\n );\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXToastService } from '@acorex/components/toast';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingValueProviderService,\n} from '@acorex/platform/common';\nimport { AXHighlightService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { get, isEmpty, isEqual, isNil } from 'lodash-es';\nimport { filter, take } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\n\n@Injectable()\nexport class AXPSettingsViewModel {\n private readonly router = inject(Router);\n private readonly settingDefinitionService = inject(AXPSettingDefinitionProviderService);\n private readonly settingValueService = inject(AXPSettingValueProviderService);\n private readonly toastService = inject(AXToastService);\n private readonly dialogService = inject(AXDialogService);\n private readonly highlightService = inject(AXHighlightService);\n public readonly layout = inject(AXPLayoutThemeService);\n private activatedRoute = inject(ActivatedRoute);\n\n public form: AXFormComponent;\n public builder: AXPLayoutBuilderService;\n\n public searchExpression = signal('');\n private isValidQuery = (expression: string) => !isNil(expression) && !isEmpty(expression);\n public isSearching = computed(() => this.isValidQuery(this.searchExpression()));\n\n public searchResult = signal<AXPSettingDefinitionGroup[]>([]);\n public isSaving = signal(false);\n\n public isBusy = signal(false);\n\n public activateGroup = signal<string | undefined>(undefined);\n private activeScope = signal<AXPSettingScopeKey>('U');\n\n public loadedItems = signal<AXPSettingDefinitionGroup[] | null>(null);\n\n private scopeName = () => {\n return this.activatedRoute?.snapshot?.paramMap?.get('scope')?.trim().toLowerCase() ?? 'user';\n };\n\n private resolveScopeKey(name: string): AXPSettingScopeKey {\n const scopeMap: Record<string, AXPSettingScopeKey> = {\n environment: AXPSettingScope.Environment,\n global: AXPSettingScope.Global,\n tenant: AXPSettingScope.Tenant,\n user: AXPSettingScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPSettingScope.User;\n }\n\n private resolveScope(): AXPSettingScope {\n return this.resolveScopeKey(this.scopeName()) as AXPSettingScope;\n }\n\n public title = computed(() => {\n // fake change detect simulate\n this.activeScope();\n //\n return `settings.${this.scopeName()}.title`;\n });\n\n groups = computed<AXPGroupSearchResult | null>(() => {\n if (this.activateGroup()) {\n return this.settingDefinitionService.findGroup(this.activeScope(), this.activateGroup()!);\n } else {\n return null;\n }\n });\n\n public hasGroup = computed(() => this.activateGroup() != null);\n public showSide = computed(() => this.layout.isLarge() && this.hasGroup());\n\n #effect2 = effect(() => {\n if (this.searchExpression()) {\n this.searchResult.set(searchSettings(this.loadedItems()!, this.searchExpression()));\n }\n });\n\n /**\n * @ignore\n */\n constructor() {\n this.settingValueService.onChanged.pipe(filter((c) => c.scope == this.resolveScope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(this.context(), k);\n const previousValue = get(this.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n this.previousContext.update((prev) => ({\n ...prev,\n [k]: currentValue, // Use backend-provided value\n }));\n this.context.update((ctx) => ({\n ...ctx,\n [k]: currentValue,\n }));\n }\n });\n });\n this.load();\n //\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(async () => {\n await this.updateGroupParam();\n });\n }\n\n async load() {\n //\n this.activeScope.set(this.resolveScope());\n //\n const items = await this.settingDefinitionService.getListAsync(this.activeScope());\n this.loadedItems.set(items);\n const currentContext = await this.settingValueService.scope(this.resolveScope()).all();\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n this.context.set({ ...defaults, ...currentContext });\n this.previousContext.set(this.context());\n //\n await this.updateGroupParam();\n if (!this.activateGroup() && this.layout.isLarge() && !this.isSearching()) {\n await this.redirectToFirstGroup();\n }\n }\n\n private async updateGroupParam(): Promise<void> {\n const query = this.activatedRoute.snapshot.queryParams['q'];\n const scope = this.resolveScope();\n const group = this.activatedRoute.snapshot.paramMap.get('group');\n\n if ((this.activeScope() && this.activeScope() != scope) || this.activateGroup() != group) {\n this.activateGroup.set(undefined);\n await this.load();\n return;\n }\n\n if (this.isValidQuery(query)) {\n this.searchExpression.set(query);\n }\n if (this.isSearching()) {\n setTimeout(() => {\n this.highlightService.highlight('#ax-settings', this.searchExpression());\n }, 100);\n } else {\n this.highlightService.clear();\n }\n\n // If no child routes exist, set activateGroup to undefined\n if (this.activatedRoute.children.length === 0) {\n this.activateGroup.set(undefined);\n return;\n }\n // Traverse child routes to check for the group parameter\n for (const childRoute of this.activatedRoute.children) {\n const params = await childRoute.paramMap.pipe(take(1)).toPromise();\n const group = params?.get('group');\n if (group) {\n this.activateGroup.set(group);\n }\n }\n }\n\n public async redirectToFirstGroup(): Promise<void> {\n const firstGroup = this.determineFirstGroup();\n if (firstGroup) {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope, firstGroup], { replaceUrl: true });\n }\n }\n\n public async navigateUpLevel(): Promise<void> {\n const func = async () => {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope]);\n };\n\n if (this.isDirty()) {\n const dialogResult = await this.dialogService.confirm(\n 'Unsaved Changes',\n 'You have unsaved changes. Are you sure you want to go back without saving?',\n 'warning'\n );\n if (dialogResult.result) {\n await func();\n }\n } else {\n await func();\n }\n }\n\n private determineFirstGroup(): string | null {\n const groups = this.loadedItems();\n return groups && groups.length > 0 ? groups[0].name : null;\n }\n\n public handleSelectGroup(item: AXPSettingDefinitionGroup) {\n this.router.navigate([`${item.name}`], { relativeTo: this.activatedRoute });\n this.searchExpression.set('');\n }\n\n context = signal<Record<any, any>>({});\n private previousContext = signal<Record<any, any>>({});\n\n async handleContextChanged(e: AXPLayoutContextChangeEvent) {\n if (e.state == 'initiated') {\n this.previousContext.set(e.data);\n } else {\n this.context.set(e.data);\n }\n }\n\n isDirty(section?: AXPSettingDefinitionSection): boolean {\n if (section) {\n // Check for changes in the specific section\n return section.settings.some((c) => !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name)));\n } else {\n // Check for changes globally based on loadedItems keys\n return (\n this.loadedItems()?.some((group) =>\n group.sections.some((sec) =>\n sec.settings.some((setting) => {\n const currentValue = get(this.context(), setting.name);\n const previousValue = get(this.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n })\n )\n ) || false\n );\n }\n }\n\n // Save settings logic\n public async apply(section?: AXPSettingDefinitionSection): Promise<void> {\n try {\n this.isSaving.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n\n const formResult = await this.form.validate();\n if (!formResult.result) {\n this.toastService.show({\n color: 'danger',\n title: 'Review Needed',\n content: 'Invalid configuration detected. Please review your inputs.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.isSaving.set(false);\n this.builder.setStatus(AXPPageStatus.Error);\n return;\n }\n\n if (section) {\n // Apply changes for the specific section\n const changes: Record<string, any> = {};\n section.settings.forEach((c) => {\n changes[c.name] = get(this.context(), c.name);\n });\n if (!isEmpty(changes)) {\n await this.settingValueService.scope(this.resolveScope()).set(changes);\n }\n } else {\n // Save the settings\n await this.settingValueService.scope(this.resolveScope()).set(this.context());\n }\n this.builder.setStatus(AXPPageStatus.Submitted);\n // Show success notification\n this.toastService.show({\n color: 'success',\n title: 'Settings Saved',\n content: 'Your changes have been saved successfully.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n } catch (error: any) {\n // Handle and show errors\n this.builder.setStatus(AXPPageStatus.Error);\n console.error('Error saving settings:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Save Failed',\n content: error?.['message'] || 'An error occurred while saving your settings. Please try again.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n } finally {\n this.isSaving.set(false);\n }\n }\n\n // discard settings logic\n public async discard(section?: AXPSettingDefinitionSection): Promise<void> {\n this.form.resetErrors();\n if (section) {\n // Discard changes for the specific section\n section.settings.forEach((c) => {\n const previousValue = get(this.previousContext(), c.name);\n this.context.update((ctx) => ({\n ...ctx,\n [c.name]: previousValue,\n }));\n });\n } else {\n // Discard changes for all sections\n this.context.set(this.previousContext());\n }\n }\n\n // Cancel settings logic\n public async resetToDefault(): Promise<void> {\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n // Update the context with the defaults\n this.context.set(defaults);\n //\n await this.apply();\n }\n\n public async search(expression: string) {\n this.searchExpression.set(expression);\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n //\n if (this.isValidQuery(expression)) {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], {\n queryParams: { q: expression },\n });\n } else {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? '']);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-layout-setting.mjs","sources":["../../../../libs/platform/layout/setting/src/lib/convert-setting-data.ts","../../../../libs/platform/layout/setting/src/lib/setting.viewmodel.ts","../../../../libs/platform/layout/setting/src/lib/search.provider.ts","../../../../libs/platform/layout/setting/src/lib/search-definition.provider.ts","../../../../libs/platform/layout/setting/src/lib/settings.module.ts","../../../../libs/platform/layout/setting/src/acorex-platform-layout-setting.ts"],"sourcesContent":["import { AXPSettingDefinitionGroup, AXPSettingDefinitionSection } from '@acorex/platform/common';\n\n\nexport function searchSettings(groups: AXPSettingDefinitionGroup[], search: string): AXPSettingDefinitionGroup[] {\n const sectionMatchResult: AXPSettingDefinitionGroup[] = [];\n const settingMatchResult: AXPSettingDefinitionGroup[] = [];\n const processedGroups = new Set<string>();\n\n const createGroupIdentifier = (group: AXPSettingDefinitionGroup): string => `${group.name}-${group.title}`;\n\n const addGroupToResult = (\n group: AXPSettingDefinitionGroup,\n sections: AXPSettingDefinitionSection[],\n resultArray: AXPSettingDefinitionGroup[]\n ) => {\n const groupId = createGroupIdentifier(group);\n if (!processedGroups.has(groupId)) {\n resultArray.push({\n ...group,\n sections,\n groups: [], // Exclude nested groups\n });\n processedGroups.add(groupId);\n }\n };\n\n const processSections = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => boolean\n ) => {\n const matchedSections = group.sections.filter(filterFn);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, sectionMatchResult);\n }\n };\n\n const processSettings = (\n group: AXPSettingDefinitionGroup,\n filterFn: (section: AXPSettingDefinitionSection) => AXPSettingDefinitionSection | null\n ) => {\n const matchedSections = group.sections\n .map(filterFn)\n .filter((section): section is AXPSettingDefinitionSection => section !== null);\n if (matchedSections.length > 0) {\n addGroupToResult(group, matchedSections, settingMatchResult);\n }\n };\n\n const sectionMatches = (section: AXPSettingDefinitionSection): boolean =>\n section.name.toLowerCase().includes(search.toLowerCase()) ||\n section.title.toLowerCase().includes(search.toLowerCase());\n\n const filterSettings = (section: AXPSettingDefinitionSection): AXPSettingDefinitionSection | null => {\n const matchedSettings = section.settings.filter(\n (setting) =>\n setting.name.toLowerCase().includes(search.toLowerCase()) ||\n setting.title.toLowerCase().includes(search.toLowerCase())\n );\n return matchedSettings.length > 0 ? { ...section, settings: matchedSettings } : null;\n };\n\n const processGroupRecursively = (group: AXPSettingDefinitionGroup) => {\n processSections(group, sectionMatches); // Match sections with all settings\n processSettings(group, filterSettings); // Match settings within sections\n group.groups.forEach(processGroupRecursively); // Recurse into nested groups\n };\n\n groups.forEach(processGroupRecursively);\n\n return [...sectionMatchResult, ...settingMatchResult];\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXFormComponent } from '@acorex/components/form';\nimport { AXToastService } from '@acorex/components/toast';\nimport {\n AXPGroupSearchResult,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingDefinitionSection,\n AXPSettingScope,\n AXPSettingScopeKey,\n AXPSettingService,\n} from '@acorex/platform/common';\nimport { AXHighlightService } from '@acorex/platform/core';\nimport { AXPLayoutBuilderService, AXPLayoutContextChangeEvent, AXPPageStatus } from '@acorex/platform/layout/builder';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { get, isEmpty, isEqual, isNil } from 'lodash-es';\nimport { filter, take } from 'rxjs';\nimport { searchSettings } from './convert-setting-data';\n\n@Injectable()\nexport class AXPSettingsViewModel {\n private readonly router = inject(Router);\n private readonly settingDefinitionService = inject(AXPSettingDefinitionProviderService);\n private readonly settingValueService = inject(AXPSettingService);\n private readonly toastService = inject(AXToastService);\n private readonly dialogService = inject(AXDialogService);\n private readonly highlightService = inject(AXHighlightService);\n public readonly layout = inject(AXPLayoutThemeService);\n private activatedRoute = inject(ActivatedRoute);\n\n public form: AXFormComponent;\n public builder: AXPLayoutBuilderService;\n\n public searchExpression = signal('');\n private isValidQuery = (expression: string) => !isNil(expression) && !isEmpty(expression);\n public isSearching = computed(() => this.isValidQuery(this.searchExpression()));\n\n public searchResult = signal<AXPSettingDefinitionGroup[]>([]);\n public isSaving = signal(false);\n\n public isBusy = signal(false);\n\n public activateGroup = signal<string | undefined>(undefined);\n private activeScope = signal<AXPSettingScopeKey>('U');\n\n public loadedItems = signal<AXPSettingDefinitionGroup[] | null>(null);\n\n private scopeName = () => {\n return this.activatedRoute?.snapshot?.paramMap?.get('scope')?.trim().toLowerCase() ?? 'user';\n };\n\n private resolveScopeKey(name: string): AXPSettingScopeKey {\n const scopeMap: Record<string, AXPSettingScopeKey> = {\n environment: AXPSettingScope.Environment,\n global: AXPSettingScope.Global,\n tenant: AXPSettingScope.Tenant,\n user: AXPSettingScope.User,\n };\n return scopeMap[name.toLowerCase()] ?? AXPSettingScope.User;\n }\n\n private resolveScope(): AXPSettingScope {\n return this.resolveScopeKey(this.scopeName()) as AXPSettingScope;\n }\n\n public title = computed(() => {\n // fake change detect simulate\n this.activeScope();\n //\n return `settings.${this.scopeName()}.title`;\n });\n\n groups = computed<AXPGroupSearchResult | null>(() => {\n if (this.activateGroup()) {\n return this.settingDefinitionService.findGroup(this.activeScope(), this.activateGroup()!);\n } else {\n return null;\n }\n });\n\n public hasGroup = computed(() => this.activateGroup() != null);\n public showSide = computed(() => this.layout.isLarge() && this.hasGroup());\n\n #effect2 = effect(() => {\n if (this.searchExpression()) {\n this.searchResult.set(searchSettings(this.loadedItems()!, this.searchExpression()));\n }\n });\n\n /**\n * @ignore\n */\n constructor() {\n this.settingValueService.onChanged.pipe(filter((c) => c.scope == this.resolveScope())).subscribe((e) => {\n e.keys.forEach((k) => {\n const currentValue = e.values[k];\n const contextValue = get(this.context(), k);\n const previousValue = get(this.previousContext(), k);\n // Update only if there are actual changes\n if (!isEqual(previousValue, currentValue) || !isEqual(currentValue, contextValue)) {\n this.previousContext.update((prev) => ({\n ...prev,\n [k]: currentValue, // Use backend-provided value\n }));\n this.context.update((ctx) => ({\n ...ctx,\n [k]: currentValue,\n }));\n }\n });\n });\n this.load();\n //\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe(async () => {\n await this.updateGroupParam();\n });\n }\n\n async load() {\n //\n this.activeScope.set(this.resolveScope());\n //\n const items = await this.settingDefinitionService.getListAsync(this.activeScope());\n this.loadedItems.set(items);\n const currentContext = await this.settingValueService.scope(this.resolveScope()).all();\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n this.context.set({ ...defaults, ...currentContext });\n this.previousContext.set(this.context());\n //\n await this.updateGroupParam();\n if (!this.activateGroup() && this.layout.isLarge() && !this.isSearching()) {\n await this.redirectToFirstGroup();\n }\n }\n\n private async updateGroupParam(): Promise<void> {\n const query = this.activatedRoute.snapshot.queryParams['q'];\n const scope = this.resolveScope();\n const group = this.activatedRoute.snapshot.paramMap.get('group');\n\n if ((this.activeScope() && this.activeScope() != scope) || this.activateGroup() != group) {\n this.activateGroup.set(undefined);\n await this.load();\n return;\n }\n\n if (this.isValidQuery(query)) {\n this.searchExpression.set(query);\n }\n if (this.isSearching()) {\n setTimeout(() => {\n this.highlightService.highlight('#ax-settings', this.searchExpression());\n }, 100);\n } else {\n this.highlightService.clear();\n }\n\n // If no child routes exist, set activateGroup to undefined\n if (this.activatedRoute.children.length === 0) {\n this.activateGroup.set(undefined);\n return;\n }\n // Traverse child routes to check for the group parameter\n for (const childRoute of this.activatedRoute.children) {\n const params = await childRoute.paramMap.pipe(take(1)).toPromise();\n const group = params?.get('group');\n if (group) {\n this.activateGroup.set(group);\n }\n }\n }\n\n public async redirectToFirstGroup(): Promise<void> {\n const firstGroup = this.determineFirstGroup();\n if (firstGroup) {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope, firstGroup], { replaceUrl: true });\n }\n }\n\n public async navigateUpLevel(): Promise<void> {\n const func = async () => {\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n await this.router.navigate([app, 'settings', scope]);\n };\n\n if (this.isDirty()) {\n const dialogResult = await this.dialogService.confirm(\n 'Unsaved Changes',\n 'You have unsaved changes. Are you sure you want to go back without saving?',\n 'warning'\n );\n if (dialogResult.result) {\n await func();\n }\n } else {\n await func();\n }\n }\n\n private determineFirstGroup(): string | null {\n const groups = this.loadedItems();\n return groups && groups.length > 0 ? groups[0].name : null;\n }\n\n public handleSelectGroup(item: AXPSettingDefinitionGroup) {\n this.router.navigate([`${item.name}`], { relativeTo: this.activatedRoute });\n this.searchExpression.set('');\n }\n\n context = signal<Record<any, any>>({});\n private previousContext = signal<Record<any, any>>({});\n\n async handleContextChanged(e: AXPLayoutContextChangeEvent) {\n if (e.state == 'initiated') {\n this.previousContext.set(e.data);\n } else {\n this.context.set(e.data);\n }\n }\n\n isDirty(section?: AXPSettingDefinitionSection): boolean {\n if (section) {\n // Check for changes in the specific section\n return section.settings.some((c) => !isEqual(get(this.context(), c.name), get(this.previousContext(), c.name)));\n } else {\n // Check for changes globally based on loadedItems keys\n return (\n this.loadedItems()?.some((group) =>\n group.sections.some((sec) =>\n sec.settings.some((setting) => {\n const currentValue = get(this.context(), setting.name);\n const previousValue = get(this.previousContext(), setting.name);\n return !isEqual(currentValue, previousValue);\n })\n )\n ) || false\n );\n }\n }\n\n // Save settings logic\n public async apply(section?: AXPSettingDefinitionSection): Promise<void> {\n try {\n this.isSaving.set(true);\n this.builder.setStatus(AXPPageStatus.Submitting);\n\n const formResult = await this.form.validate();\n if (!formResult.result) {\n this.toastService.show({\n color: 'danger',\n title: 'Review Needed',\n content: 'Invalid configuration detected. Please review your inputs.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n this.isSaving.set(false);\n this.builder.setStatus(AXPPageStatus.Error);\n return;\n }\n\n if (section) {\n // Apply changes for the specific section\n const changes: Record<string, any> = {};\n section.settings.forEach((c) => {\n changes[c.name] = get(this.context(), c.name);\n });\n if (!isEmpty(changes)) {\n await this.settingValueService.scope(this.resolveScope()).set(changes);\n }\n } else {\n // Save the settings\n await this.settingValueService.scope(this.resolveScope()).set(this.context());\n }\n this.builder.setStatus(AXPPageStatus.Submitted);\n // Show success notification\n this.toastService.show({\n color: 'success',\n title: 'Settings Saved',\n content: 'Your changes have been saved successfully.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 3000,\n timeOutProgress: true,\n });\n } catch (error: any) {\n // Handle and show errors\n this.builder.setStatus(AXPPageStatus.Error);\n console.error('Error saving settings:', error);\n this.toastService.show({\n color: 'danger',\n title: 'Save Failed',\n content: error?.['message'] || 'An error occurred while saving your settings. Please try again.',\n location: 'bottom-center',\n closeButton: true,\n timeOut: 5000,\n timeOutProgress: true,\n });\n } finally {\n this.isSaving.set(false);\n }\n }\n\n // discard settings logic\n public async discard(section?: AXPSettingDefinitionSection): Promise<void> {\n this.form.resetErrors();\n if (section) {\n // Discard changes for the specific section\n section.settings.forEach((c) => {\n const previousValue = get(this.previousContext(), c.name);\n this.context.update((ctx) => ({\n ...ctx,\n [c.name]: previousValue,\n }));\n });\n } else {\n // Discard changes for all sections\n this.context.set(this.previousContext());\n }\n }\n\n // Cancel settings logic\n public async resetToDefault(): Promise<void> {\n const defaults = await this.settingValueService.scope(this.resolveScope()).defaultValues();\n // Update the context with the defaults\n this.context.set(defaults);\n //\n await this.apply();\n }\n\n public async search(expression: string) {\n this.searchExpression.set(expression);\n const app = this.activatedRoute.snapshot.params['app'];\n const scope = this.activatedRoute.snapshot.params['scope'];\n //\n if (this.isValidQuery(expression)) {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? ''], {\n queryParams: { q: expression },\n });\n } else {\n await this.router.navigate([app, 'settings', scope, this.activateGroup() ?? '']);\n }\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport {\n AXPSearchProvider,\n AXPSearchResult,\n AXPSettingDefinition,\n AXPSettingDefinitionGroup,\n AXPSettingDefinitionProviderService,\n AXPSettingScope,\n} from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { sortBy } from 'lodash-es';\n\nexport interface AXPSettingDefinitionSearch extends AXPSettingDefinition {\n group: AXPSettingDefinitionGroup;\n}\n\nexport class AXPSettingSearchProvider implements AXPSearchProvider {\n private settingService = inject(AXPSettingDefinitionProviderService);\n private sessionService = inject(AXPSessionService);\n\n async search(text: string): Promise<AXPSearchResult[]> {\n const groupsSetting = this.settingService.getList(AXPSettingScope.User);\n if (groupsSetting.length == 0) {\n groupsSetting.push(...(await this.settingService.getListAsync(AXPSettingScope.User)));\n }\n\n // Step 2: Flatten settings from groups\n const allSettings: AXPSettingDefinitionSearch[] = [];\n const extractSettings = (group: AXPSettingDefinitionGroup) => {\n for (const section of group.sections) {\n allSettings.push(...section.settings.map((x) => ({ ...x, group } as AXPSettingDefinitionSearch)));\n }\n for (const subGroup of group.groups) {\n extractSettings(subGroup); // Recursive extraction\n }\n };\n\n for (const group of groupsSetting) {\n extractSettings(group);\n }\n\n // Step 3: Search settings by title\n const searchResults = allSettings.filter((setting) => setting.title.toLowerCase().includes(text.toLowerCase()));\n\n return sortBy(\n searchResults.map<AXPSearchResult>((setting) => ({\n title: setting.title,\n description: setting.description,\n group: 'setting',\n data: setting,\n commands: {\n navigate: {\n type: 'router',\n options: {\n path: `/${this.sessionService.application?.name}/settings/user/${setting.group.name}#${setting.title}`,\n },\n },\n },\n parent: setting.group\n ? {\n title: setting.group.title,\n data: setting.group as AXPSettingDefinitionGroup,\n }\n : undefined,\n })),\n ['title']\n );\n }\n}\n","import { AXPSearchDefinitionProvider, AXPSearchDefinitionProviderContext } from '@acorex/platform/common';\n\nexport class AXPSettingSearchDefinitionProvider implements AXPSearchDefinitionProvider {\n async provide(context: AXPSearchDefinitionProviderContext): Promise<void> {\n context.addDefinition('setting', 'Setting', 'fa-solid fa-gear', 3, {\n format: {\n id: '{{data.name}}',\n },\n actions: [\n {\n name: 'navigate',\n type: 'view',\n priority: 'primary',\n },\n ],\n });\n }\n}\n","import { AXP_SEARCH_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER, AXPAppStartUpService } from '@acorex/platform/common';\nimport { Injector, NgModule } from '@angular/core';\nimport { AXPSettingSearchProvider } from './search.provider';\nimport { AXPSettingSearchDefinitionProvider } from './search-definition.provider';\n\n@NgModule({\n imports: [\n ],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXPSettingSearchProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_DEFINITION_PROVIDER,\n useClass: AXPSettingSearchDefinitionProvider,\n multi: true,\n },\n ]\n})\nexport class AXPSettingsModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ import * as i6 from '@acorex/core/translation';
|
|
|
31
31
|
import { AXTranslationModule, translateSync } from '@acorex/core/translation';
|
|
32
32
|
import * as i4$2 from '@acorex/platform/auth';
|
|
33
33
|
import { AXPAuthModule } from '@acorex/platform/auth';
|
|
34
|
-
import {
|
|
34
|
+
import { AXPSettingService, AXPStickyDirective } from '@acorex/platform/common';
|
|
35
35
|
import * as i6$1 from '@acorex/platform/layout/builder';
|
|
36
36
|
import { AXPLayoutBuilderService, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
|
37
37
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
@@ -93,7 +93,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
93
93
|
|
|
94
94
|
class AXPListViewOptionsColumnsComponent {
|
|
95
95
|
constructor() {
|
|
96
|
-
this.settings = inject(
|
|
96
|
+
this.settings = inject(AXPSettingService);
|
|
97
97
|
this.onClosed = new EventEmitter();
|
|
98
98
|
this.columnsChanged = effect(() => {
|
|
99
99
|
this.vm.onColumnsChanged(this.vm.columns());
|
|
@@ -366,4 +366,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
|
366
366
|
}] } });
|
|
367
367
|
|
|
368
368
|
export { AXPEntityMasterListViewComponent };
|
|
369
|
-
//# sourceMappingURL=acorex-platform-themes-default-entity-master-list-view.component-
|
|
369
|
+
//# sourceMappingURL=acorex-platform-themes-default-entity-master-list-view.component-BDjcOo6R.mjs.map
|