@acorex/platform 19.2.3 → 19.2.5

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.
Files changed (101) hide show
  1. package/common/lib/layout/menu/menu.types.d.ts +2 -1
  2. package/common/lib/search/search-definition.builder.d.ts +1 -1
  3. package/common/lib/search/search-definition.provider.d.ts +1 -0
  4. package/common/lib/search/search.types.d.ts +1 -0
  5. package/common/lib/utils/export-popup.d.ts +19 -0
  6. package/common/lib/utils/export.service.d.ts +21 -0
  7. package/common/lib/utils/index.d.ts +1 -1
  8. package/core/lib/types.d.ts +2 -2
  9. package/fesm2022/acorex-platform-common.mjs +248 -104
  10. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +23 -7
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-designer.mjs +8 -8
  15. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-entity.mjs +42 -67
  17. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-search.mjs +10 -6
  19. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-setting.mjs +1 -1
  21. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs +108 -0
  23. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs.map +1 -0
  24. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs → acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs} +6 -6
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DarhCaO1.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-Btza4YAZ.mjs.map} +1 -1
  26. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs +87 -0
  27. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-U8aBv1Ql.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs → acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs} +4 -4
  29. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-63iOyFsf.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs +129 -0
  31. package/fesm2022/acorex-platform-themes-default-search-popup.component-DZHRY0aM.mjs.map +1 -0
  32. package/fesm2022/{acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs → acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs} +3 -3
  33. package/fesm2022/{acorex-platform-themes-default-setting-page.component-CGjDwlvq.mjs.map → acorex-platform-themes-default-setting-page.component-Cj83wZbs.mjs.map} +1 -1
  34. package/fesm2022/{acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs → acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs} +2 -2
  35. package/fesm2022/{acorex-platform-themes-default-setting-view.component-DK9j13yV.mjs.map → acorex-platform-themes-default-setting-view.component-Ypj7RgOU.mjs.map} +1 -1
  36. package/fesm2022/{acorex-platform-themes-default-theme-palette-preview.page-Cet1sYXJ.mjs → acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs} +4 -4
  37. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D994cHWW.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default.mjs +21 -21
  39. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-themes-shared.mjs +11 -6
  41. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  42. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs} +2 -2
  43. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-B53z9A_A.mjs.map → acorex-platform-widgets-button-widget-designer.component-2iWPztWW.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs} +2 -2
  45. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-CHDMlorX.mjs.map → acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs.map} +1 -1
  46. package/fesm2022/acorex-platform-widgets.mjs +1236 -59
  47. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  48. package/layout/builder/lib/builder/widget-groups.d.ts +2 -1
  49. package/layout/builder/lib/builder/widget-map.d.ts +9 -0
  50. package/layout/builder/lib/builder/widget.types.d.ts +1 -1
  51. package/layout/search/lib/search.viewmodel.d.ts +2 -1
  52. package/package.json +6 -6
  53. package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +2 -1
  54. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  55. package/themes/shared/lib/components/layout-elements/layout-header.component.d.ts +1 -1
  56. package/themes/shared/lib/components/layout-elements/layout-list.component.d.ts +1 -1
  57. package/widgets/lib/properties/groups.d.ts +2 -1
  58. package/widgets/lib/properties/validation.props.d.ts +10 -0
  59. package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -0
  60. package/widgets/lib/widgets/editors/text/text-box-widget-edit.component.d.ts +1 -0
  61. package/widgets/lib/widgets/filters/boolean-filter/boolean-filter-widget-edit.component.d.ts +1 -0
  62. package/widgets/lib/widgets/index.d.ts +9 -0
  63. package/widgets/lib/widgets/layout/advanced-grid/advanced-grid-widget-designer.component.d.ts +0 -1
  64. package/widgets/lib/widgets/validations/base-validation/base-validation.component.d.ts +13 -0
  65. package/widgets/lib/widgets/validations/base-validation/base-validation.d.ts +8 -0
  66. package/widgets/lib/widgets/validations/between-validation/between-validation-widget-edit.component.d.ts +25 -0
  67. package/widgets/lib/widgets/validations/between-validation/between-validation-widget.config.d.ts +7 -0
  68. package/widgets/lib/widgets/validations/between-validation/index.d.ts +2 -0
  69. package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget-edit.component.d.ts +23 -0
  70. package/widgets/lib/widgets/validations/callback-validation/callback-validation-widget.config.d.ts +7 -0
  71. package/widgets/lib/widgets/validations/callback-validation/index.d.ts +2 -0
  72. package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget-edit.component.d.ts +23 -0
  73. package/widgets/lib/widgets/validations/equal-validation/equal-validation-widget.config.d.ts +7 -0
  74. package/widgets/lib/widgets/validations/equal-validation/index.d.ts +2 -0
  75. package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget-edit.component.d.ts +24 -0
  76. package/widgets/lib/widgets/validations/greater-than-validation/greater-than-validation-widget.config.d.ts +7 -0
  77. package/widgets/lib/widgets/validations/greater-than-validation/index.d.ts +2 -0
  78. package/widgets/lib/widgets/validations/less-than-validation/index.d.ts +2 -0
  79. package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget-edit.component.d.ts +24 -0
  80. package/widgets/lib/widgets/validations/less-than-validation/less-than-validation-widget.config.d.ts +7 -0
  81. package/widgets/lib/widgets/validations/max-length-validation/index.d.ts +2 -0
  82. package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget-edit.component.d.ts +23 -0
  83. package/widgets/lib/widgets/validations/max-length-validation/max-length-validation-widget.config.d.ts +7 -0
  84. package/widgets/lib/widgets/validations/min-length-validation/index.d.ts +2 -0
  85. package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget-edit.component.d.ts +23 -0
  86. package/widgets/lib/widgets/validations/min-length-validation/min-length-validation-widget.config.d.ts +7 -0
  87. package/widgets/lib/widgets/validations/regular-expression-validation/index.d.ts +2 -0
  88. package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget-edit.component.d.ts +23 -0
  89. package/widgets/lib/widgets/validations/regular-expression-validation/regular-expression-validation-widget.config.d.ts +7 -0
  90. package/widgets/lib/widgets/validations/required-validation/index.d.ts +2 -0
  91. package/widgets/lib/widgets/validations/required-validation/required-validation-widget-edit.component.d.ts +21 -0
  92. package/widgets/lib/widgets/validations/required-validation/required-validation-widget.config.d.ts +7 -0
  93. package/common/lib/utils/pdf.service.d.ts +0 -25
  94. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs +0 -108
  95. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Yq3pzh9K.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs +0 -87
  97. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CPG4i72f.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bwgawuvl.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs +0 -122
  100. package/fesm2022/acorex-platform-themes-default-search-popup.component-ChZHzvG4.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-Cet1sYXJ.mjs.map +0 -1
@@ -182,7 +182,7 @@ class AXPGlobalSearchViewModel {
182
182
  this.isValid = computed(() => (this.text()?.length ?? 0) > 2);
183
183
  this.isStart = computed(() => !this.isEmpty() && this.results().length == 0);
184
184
  this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0);
185
- this.recentSelections = signal([]);
185
+ this._recentItems = signal([]);
186
186
  this._pinnedItems = signal([]);
187
187
  this.pinnedItems = this._pinnedItems.asReadonly();
188
188
  this.recentItems = computed(() => this.getTopRecentItems());
@@ -232,21 +232,25 @@ class AXPGlobalSearchViewModel {
232
232
  }
233
233
  async updateSelectionHistory(item) {
234
234
  // Update recent selections
235
- const currentHistory = this.recentSelections();
235
+ const currentHistory = this._recentItems();
236
236
  const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);
237
- this.recentSelections.set(updatedHistory);
237
+ this._recentItems.set(updatedHistory);
238
238
  // Save updated settings
239
239
  await this.saveSettings();
240
240
  }
241
241
  getTopRecentItems() {
242
242
  const pinnedIds = new Set(this._pinnedItems().map(item => item.id));
243
- return this.recentSelections().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
243
+ return this._recentItems().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
244
+ }
245
+ async clearRecentItems() {
246
+ this._recentItems.set([]);
247
+ await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, []);
244
248
  }
245
249
  async loadSettings() {
246
250
  // Load recent selections
247
251
  const recent = await this.settingService.get(this.settingKeys.recent);
248
252
  if (recent) {
249
- this.recentSelections.set(recent.slice(0, 5));
253
+ this._recentItems.set(recent.slice(0, 5));
250
254
  }
251
255
  // Load pinned items
252
256
  const pinned = await this.settingService.get(this.settingKeys.pinned);
@@ -256,7 +260,7 @@ class AXPGlobalSearchViewModel {
256
260
  }
257
261
  async saveSettings() {
258
262
  // Save recent selections
259
- await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, this.recentSelections().slice(0, 5));
263
+ await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, this._recentItems().slice(0, 5));
260
264
  // Save pinned items
261
265
  await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));
262
266
  }
@@ -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';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\n\n@Component({\n template: `\n <ax-button color=\"primary\" class=\"ax-flex md:ax-hidden\" (onClick)=\"startSearch()\">\n <ax-icon class=\"fa-regular fa-search\">\n </ax-icon>\n </ax-button>\n <div class=\"ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text\" (click)=\"startSearch()\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <i class=\"fa-light fa-search ax-text-xl\"></i>\n <span>Search ...</span>\n </div>\n <kbd class=\"ax-text-sm\">Ctrl+K</kbd>\n </div>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXTextBoxModule]\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-start': [\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
+ {"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';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\n\n@Component({\n template: `\n <ax-button color=\"primary\" class=\"ax-flex md:ax-hidden\" (onClick)=\"startSearch()\">\n <ax-icon class=\"fa-regular fa-search\">\n </ax-icon>\n </ax-button>\n <div class=\"ax-bg-primary-200/15 ax-h-10 ax-w-72 ax-rounded-default ax-cursor-pointer ax-justify-between ax-hidden md:ax-flex ax-items-center ax-px-3 hover:ax-bg-primary-200/30 ax-text-primary-text\" (click)=\"startSearch()\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <i class=\"fa-light fa-search ax-text-xl\"></i>\n <span>Search ...</span>\n </div>\n <kbd class=\"ax-text-sm\">Ctrl+K</kbd>\n </div>\n `,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXTextBoxModule]\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-start': [\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 _recentItems = 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._recentItems();\n const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);\n this._recentItems.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._recentItems().filter(item => !pinnedIds.has(item.id)).slice(0, 5);\n }\n\n public async clearRecentItems() {\n this._recentItems.set([]);\n await this.settingService.scope(AXPSettingScope.User).set(this.settingKeys.recent, []);\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._recentItems.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._recentItems().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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"}
@@ -409,7 +409,7 @@ class AXPSettingSearchProvider {
409
409
 
410
410
  class AXPSettingSearchDefinitionProvider {
411
411
  async provide(context) {
412
- context.addDefinition('setting', 'Setting', 'fa-solid fa-gear', 3, {
412
+ context.addDefinition('setting', 'Setting', 'setting', 'fa-solid fa-gear', 3, {
413
413
  format: {
414
414
  id: '{{data.name}}',
415
415
  },
@@ -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/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 (event) => {\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 //this.apply();\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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"}
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 (event) => {\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 //this.apply();\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', '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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"}
@@ -0,0 +1,108 @@
1
+ import * as i4 from '@acorex/components/button';
2
+ import { AXButtonModule } from '@acorex/components/button';
3
+ import * as i5 from '@acorex/components/decorators';
4
+ import { AXDecoratorModule } from '@acorex/components/decorators';
5
+ import { AXDialogModule } from '@acorex/components/dialog';
6
+ import * as i7 from '@acorex/components/dropdown-button';
7
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
8
+ import * as i2 from '@acorex/components/form';
9
+ import { AXFormModule } from '@acorex/components/form';
10
+ import * as i6 from '@acorex/components/label';
11
+ import { AXLabelModule } from '@acorex/components/label';
12
+ import * as i5$1 from '@acorex/components/loading';
13
+ import { AXLoadingModule } from '@acorex/components/loading';
14
+ import { AXBasePageComponent } from '@acorex/components/page';
15
+ import { AXTabsModule } from '@acorex/components/tabs';
16
+ import { AXTooltipModule } from '@acorex/components/tooltip';
17
+ import * as i1 from '@angular/common';
18
+ import { CommonModule } from '@angular/common';
19
+ import * as i0 from '@angular/core';
20
+ import { inject, Component, ChangeDetectionStrategy } from '@angular/core';
21
+ import { FormsModule } from '@angular/forms';
22
+ import { AXValidationModule } from '@acorex/core/validation';
23
+ import { AXDropdownModule } from '@acorex/components/dropdown';
24
+ import * as i6$1 from '@acorex/core/translation';
25
+ import { AXTranslationModule } from '@acorex/core/translation';
26
+ import { AXPGridLayoutDirective } from '@acorex/platform/common';
27
+ import * as i6$2 from '@acorex/platform/layout/builder';
28
+ import { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
29
+ import { AXPWidgetsModule } from '@acorex/platform/widgets';
30
+ import { AXPWorkflowService } from '@acorex/platform/workflow';
31
+
32
+ class AXPEntityMasterCreateViewComponent extends AXBasePageComponent {
33
+ constructor() {
34
+ super(...arguments);
35
+ this.workflow = inject(AXPWorkflowService);
36
+ }
37
+ handleCloseClick() {
38
+ this.close();
39
+ }
40
+ async handleBackClick() {
41
+ //await this.vm.executeCommand('back');
42
+ }
43
+ async handleNextClick(form) {
44
+ // const formResult = await form.validate();
45
+ // if (formResult.result) {
46
+ // await this.vm.executeCommand('next');
47
+ // }
48
+ }
49
+ async handleSaveClick(form) {
50
+ const formResult = await form.validate();
51
+ if (formResult.result) {
52
+ try {
53
+ const record = await this.vm.save();
54
+ this.close({ save: true, recordId: record?.id, item: record, redirect: this.vm.redirect() });
55
+ }
56
+ catch (error) {
57
+ console.log(error);
58
+ }
59
+ }
60
+ }
61
+ async handleSaveAndNewClick(form) {
62
+ const formResult = await form.validate();
63
+ if (formResult.result) {
64
+ try {
65
+ const record = await this.vm.save();
66
+ this.close({ save: true, recordId: record.id, redirect: false });
67
+ await this.vm.createNewOne();
68
+ }
69
+ catch (error) {
70
+ console.log(error);
71
+ }
72
+ }
73
+ }
74
+ async handleContextChange(e) {
75
+ this.vm.context.set(e.data);
76
+ }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterCreateViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPEntityMasterCreateViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div>\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n @if(vm.sections().length>1 && !section.description()) {\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() | translate | async }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n }\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{\n attr.title() | translate | async\n }}</ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n @if(vm.canCreateNewOne()) {\n <ax-dropdown-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\"\n >\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'save' | translate | async\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { 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: AXDecoratorModule }, { 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: 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: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i5$1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i6.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i7.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6$1.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type:
79
+ //
80
+ AXPLayoutBuilderModule }, { kind: "component", type: i6$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityMasterCreateViewComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ imports: [
85
+ CommonModule,
86
+ FormsModule,
87
+ AXFormModule,
88
+ AXDecoratorModule,
89
+ CommonModule,
90
+ AXButtonModule,
91
+ AXDialogModule,
92
+ AXLoadingModule,
93
+ AXTabsModule,
94
+ AXTooltipModule,
95
+ AXValidationModule,
96
+ AXLabelModule,
97
+ AXDropdownModule,
98
+ AXDropdownButtonModule,
99
+ AXTranslationModule,
100
+ //
101
+ AXPLayoutBuilderModule,
102
+ AXPWidgetsModule,
103
+ AXPGridLayoutDirective,
104
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n @if(vm.sections().length>1 && !section.description()) {\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() | translate | async }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n }\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{\n attr.title() | translate | async\n }}</ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n @if(vm.canCreateNewOne()) {\n <ax-dropdown-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\"\n >\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'save' | translate | async\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n</div>\n" }]
105
+ }] });
106
+
107
+ export { AXPEntityMasterCreateViewComponent };
108
+ //# sourceMappingURL=acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-themes-default-entity-master-create-view.component-CgyBuwTc.mjs","sources":["../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.ts","../../../../libs/platform/themes/default/src/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXValidationModule } from '@acorex/core/validation';\n\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPGridLayoutDirective } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';\nimport { AXPEntityMasterCreateViewModel } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\n\n@Component({\n templateUrl: './entity-master-create-view.component.html',\n imports: [\n CommonModule,\n FormsModule,\n AXFormModule,\n AXDecoratorModule,\n CommonModule,\n AXButtonModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXTooltipModule,\n AXValidationModule,\n AXLabelModule,\n AXDropdownModule,\n AXDropdownButtonModule,\n AXTranslationModule,\n //\n AXPLayoutBuilderModule,\n AXPWidgetsModule,\n AXPGridLayoutDirective,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPEntityMasterCreateViewComponent extends AXBasePageComponent {\n protected vm!: AXPEntityMasterCreateViewModel;\n\n protected workflow = inject(AXPWorkflowService);\n\n protected handleCloseClick() {\n this.close();\n }\n\n protected async handleBackClick() {\n //await this.vm.executeCommand('back');\n }\n\n protected async handleNextClick(form: AXFormComponent) {\n // const formResult = await form.validate();\n // if (formResult.result) {\n // await this.vm.executeCommand('next');\n // }\n }\n\n protected async handleSaveClick(form: AXFormComponent) {\n const formResult = await form.validate();\n if (formResult.result) {\n try {\n const record = await this.vm.save();\n this.close({ save: true, recordId: record?.id, item: record, redirect: this.vm.redirect() });\n } catch (error) {\n console.log(error);\n }\n }\n }\n\n protected async handleSaveAndNewClick(form: AXFormComponent) {\n const formResult = await form.validate();\n if (formResult.result) {\n try {\n const record = await this.vm.save();\n this.close({ save: true, recordId: record.id, redirect: false });\n await this.vm.createNewOne();\n } catch (error) {\n console.log(error);\n }\n }\n }\n\n protected async handleContextChange(e: AXPLayoutContextChangeEvent) {\n this.vm.context.set(e.data);\n }\n}\n","<div>\n <axp-widgets-container [context]=\"vm.context()\" (onContextChanged)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n @if(vm.sections().length>1 && !section.description()) {\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() | translate | async }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n }\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field\n class=\"ax-flex ax-flex-col ax-gap-1\"\n [gridLayout]=\"attr.layout()\"\n [class.ax-hidden]=\"widget.options()['visibility'] == false\"\n >\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{\n attr.title() | translate | async\n }}</ax-label>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'edit'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n @if(vm.canCreateNewOne()) {\n <ax-dropdown-button\n [disabled]=\"vm.isInProgress()\"\n color=\"primary\"\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n (onClick)=\"handleSaveClick(form)\"\n >\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item\n [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\"\n >\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n }@else {\n <ax-button look=\"solid\" color=\"primary\" [text]=\"'save' | translate | async\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n </ax-button>\n }\n </ax-suffix>\n </ax-footer>\n</div>\n"],"names":["i3","i5","i8","i9"],"mappings":"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"}