@acorex/platform 19.2.17-next.0 → 19.2.19

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 (140) hide show
  1. package/common/lib/file-storage/file-storage.types.d.ts +4 -0
  2. package/common/lib/layout/menu/menu.types.d.ts +2 -1
  3. package/common/lib/search/search-definition.builder.d.ts +0 -1
  4. package/common/lib/search/search.types.d.ts +12 -0
  5. package/common/lib/utils/filter-cleaner.d.ts +2 -0
  6. package/common/lib/utils/index.d.ts +1 -0
  7. package/core/lib/directives/dbl-click.directive.d.ts +11 -0
  8. package/core/lib/directives/index.d.ts +1 -0
  9. package/core/lib/types.d.ts +8 -0
  10. package/fesm2022/acorex-platform-auth.mjs +1 -1
  11. package/fesm2022/acorex-platform-common.mjs +45 -10
  12. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-core.mjs +41 -2
  14. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-builder.mjs +1 -1
  16. package/fesm2022/acorex-platform-layout-designer.mjs +9 -9
  17. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-entity.mjs +112 -100
  19. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-search.mjs +34 -12
  21. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  22. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Bvwr0PVk.mjs → acorex-platform-themes-default-entity-master-create-view.component-LKhN00ob.mjs} +5 -5
  23. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Bvwr0PVk.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-LKhN00ob.mjs.map} +1 -1
  24. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CdC4eF25.mjs +400 -0
  25. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CdC4eF25.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BAU_s90_.mjs → acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs} +5 -5
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BAU_s90_.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs.map} +1 -1
  28. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ZfUaIxUa.mjs +135 -0
  29. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ZfUaIxUa.mjs.map +1 -0
  30. package/fesm2022/{acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs → acorex-platform-themes-default-error-401.component-Ycz5LYvk.mjs} +2 -2
  31. package/fesm2022/{acorex-platform-themes-default-error-401.component-Brx-zHqH.mjs.map → acorex-platform-themes-default-error-401.component-Ycz5LYvk.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs → acorex-platform-themes-default-error-404.component-DvVSMoRS.mjs} +2 -2
  33. package/fesm2022/{acorex-platform-themes-default-error-404.component-C8mJP9D8.mjs.map → acorex-platform-themes-default-error-404.component-DvVSMoRS.mjs.map} +1 -1
  34. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs → acorex-platform-themes-default-error-offline.component-DU6dstng.mjs} +2 -2
  35. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CwBClgcf.mjs.map → acorex-platform-themes-default-error-offline.component-DU6dstng.mjs.map} +1 -1
  36. package/fesm2022/acorex-platform-themes-default-search-popup.component-CGARdU4C.mjs +128 -0
  37. package/fesm2022/acorex-platform-themes-default-search-popup.component-CGARdU4C.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cd2yaPEZ.mjs +74 -0
  39. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cd2yaPEZ.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs → acorex-platform-themes-default-setting-view.component-B3Aob67f.mjs} +9 -7
  41. package/fesm2022/acorex-platform-themes-default-setting-view.component-B3Aob67f.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DqAngWCf.mjs +146 -0
  43. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DqAngWCf.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-themes-default.mjs +288 -143
  45. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  46. package/fesm2022/acorex-platform-themes-shared.mjs +282 -187
  47. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  48. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BWhqDxGH.mjs → acorex-platform-widgets-button-widget-designer.component-DVhi_mBH.mjs} +3 -3
  49. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-BWhqDxGH.mjs.map → acorex-platform-widgets-button-widget-designer.component-DVhi_mBH.mjs.map} +1 -1
  50. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-C8NRF4BO.mjs → acorex-platform-widgets-checkbox-widget-column.component-BfVyjSLL.mjs} +2 -2
  51. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-C8NRF4BO.mjs.map → acorex-platform-widgets-checkbox-widget-column.component-BfVyjSLL.mjs.map} +1 -1
  52. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-D8KErkus.mjs → acorex-platform-widgets-checkbox-widget-designer.component-CrdfTgeq.mjs} +2 -2
  53. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-D8KErkus.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-CrdfTgeq.mjs.map} +1 -1
  54. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-bf272Wuo.mjs → acorex-platform-widgets-checkbox-widget-view.component-DfSoF52n.mjs} +2 -2
  55. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-bf272Wuo.mjs.map → acorex-platform-widgets-checkbox-widget-view.component-DfSoF52n.mjs.map} +1 -1
  56. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-CG3HEOUD.mjs → acorex-platform-widgets-color-box-widget-designer.component-BM1G-WaN.mjs} +2 -2
  57. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-CG3HEOUD.mjs.map → acorex-platform-widgets-color-box-widget-designer.component-BM1G-WaN.mjs.map} +1 -1
  58. package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-B1HiCGC6.mjs → acorex-platform-widgets-contact-widget-filter.component-B1cKV-TM.mjs} +2 -2
  59. package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-B1HiCGC6.mjs.map → acorex-platform-widgets-contact-widget-filter.component-B1cKV-TM.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-CITselce.mjs → acorex-platform-widgets-page-widget-designer.component-DtwyOnuO.mjs} +2 -2
  61. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-CITselce.mjs.map → acorex-platform-widgets-page-widget-designer.component-DtwyOnuO.mjs.map} +1 -1
  62. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs → acorex-platform-widgets-rich-text-popup.component-CXLjPrFq.mjs} +3 -3
  63. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DYExfz5U.mjs.map → acorex-platform-widgets-rich-text-popup.component-CXLjPrFq.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-Emh145xN.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-u2RCVYRB.mjs} +3 -3
  65. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-Emh145xN.mjs.map → acorex-platform-widgets-tabular-data-edit-popup.component-u2RCVYRB.mjs.map} +1 -1
  66. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Ca6Cwzez.mjs → acorex-platform-widgets-tabular-data-view-popup.component-BiO5M_eY.mjs} +3 -3
  67. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Ca6Cwzez.mjs.map → acorex-platform-widgets-tabular-data-view-popup.component-BiO5M_eY.mjs.map} +1 -1
  68. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-BToPbMjj.mjs → acorex-platform-widgets-text-block-widget-designer.component-C3H0Zldz.mjs} +2 -2
  69. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-BToPbMjj.mjs.map → acorex-platform-widgets-text-block-widget-designer.component-C3H0Zldz.mjs.map} +1 -1
  70. package/fesm2022/acorex-platform-widgets.mjs +1191 -291
  71. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  72. package/fesm2022/acorex-platform-workflow.mjs +1 -1
  73. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +1 -2
  74. package/layout/entity/lib/entity-storage-service.d.ts +4 -0
  75. package/layout/entity/lib/entity.config.d.ts +1 -1
  76. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +1 -0
  77. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +2 -1
  78. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +3 -1
  79. package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +4 -0
  80. package/layout/search/lib/search.viewmodel.d.ts +2 -0
  81. package/layout/setting/lib/setting.viewmodel.d.ts +4 -0
  82. package/package.json +1 -1
  83. package/themes/default/lib/layouts/base/base-page.component.d.ts +83 -0
  84. package/themes/default/lib/layouts/base/base-page.types.d.ts +9 -0
  85. package/themes/default/lib/layouts/base/index.d.ts +3 -1
  86. package/themes/default/lib/layouts/base/simple-page/index.d.ts +1 -0
  87. package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +16 -5
  88. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +4 -0
  89. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +12 -2
  90. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +0 -3
  91. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.d.ts +0 -3
  92. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +4 -0
  93. package/themes/default/lib/layouts/root-layout/components/footer/footer.component.d.ts +1 -1
  94. package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +5 -1
  95. package/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.d.ts +86 -0
  96. package/themes/default/lib/layouts/root-layout/components/{menu/root-menu.component.d.ts → side-menu/side-menu.component.d.ts} +1 -2
  97. package/themes/default/lib/layouts/root-layout/horizontal/horizontal-layout.component.d.ts +79 -0
  98. package/themes/default/lib/layouts/root-layout/index.d.ts +3 -2
  99. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +26 -19
  100. package/themes/default/lib/layouts/root-layout/vertical/vertical-layout.component.d.ts +79 -0
  101. package/themes/default/lib/layouts/search-layout/search-popup.component.d.ts +2 -1
  102. package/themes/default/lib/layouts/setting-layout/setting-page/setting-page.component.d.ts +1 -1
  103. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +4 -0
  104. package/themes/default/lib/pages/theme-palette-preview/theme-palette-preview.page.d.ts +5 -1
  105. package/themes/shared/index.d.ts +1 -0
  106. package/themes/shared/lib/components/drawer/drawer.directive.d.ts +22 -0
  107. package/themes/shared/lib/components/drawer/index.d.ts +1 -0
  108. package/themes/shared/lib/components/layout-elements/index.d.ts +4 -4
  109. package/themes/shared/lib/components/layout-elements/layout-actions.component.d.ts +1 -1
  110. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +1 -1
  111. package/themes/shared/lib/components/layout-elements/layout-footer.component.d.ts +1 -1
  112. package/themes/shared/lib/components/layout-elements/layout-header.component.d.ts +7 -3
  113. package/themes/shared/lib/components/layout-elements/layout-section.component.d.ts +3 -7
  114. package/themes/shared/lib/components/layout-elements/layout-side.component.d.ts +6 -13
  115. package/themes/shared/lib/components/slots/theme-slot.component.d.ts +4 -0
  116. package/themes/shared/lib/setting.keys.d.ts +2 -1
  117. package/themes/shared/lib/theme.service.d.ts +5 -1
  118. package/themes/shared/lib/theme.types.d.ts +4 -0
  119. package/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.d.ts +13 -0
  120. package/widgets/lib/widgets/advance/gallery/index.d.ts +2 -1
  121. package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget-edit.component.d.ts +5 -0
  122. package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget-edit.component.d.ts +32 -2
  123. package/widgets/lib/widgets/charts/donut-chart/donut-chart.type.d.ts +15 -0
  124. package/widgets/lib/widgets/charts/gauge-chart/gauge-chart-widget-edit.component.d.ts +16 -3
  125. package/widgets/lib/widgets/charts/gauge-chart/gauge-chart.type.d.ts +1 -1
  126. package/widgets/lib/widgets/charts/sticky-note/sticky-note-widget-edit.component.d.ts +2 -2
  127. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +1 -0
  128. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLM2kf7R.mjs +0 -405
  129. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLM2kf7R.mjs.map +0 -1
  130. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BmBPyfQY.mjs +0 -130
  131. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BmBPyfQY.mjs.map +0 -1
  132. package/fesm2022/acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs +0 -129
  133. package/fesm2022/acorex-platform-themes-default-search-popup.component-DfeNmpS9.mjs.map +0 -1
  134. package/fesm2022/acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs +0 -75
  135. package/fesm2022/acorex-platform-themes-default-setting-page.component-DtJmPSFo.mjs.map +0 -1
  136. package/fesm2022/acorex-platform-themes-default-setting-view.component-fuHM7W6Y.mjs.map +0 -1
  137. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DkjAgWLn.mjs +0 -138
  138. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DkjAgWLn.mjs.map +0 -1
  139. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-filters/list-view-option-filters.component.d.ts +0 -14
  140. package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +0 -27
@@ -1,9 +1,9 @@
1
1
  import { applySortArray, applyFilterArray, AXPExpressionEvaluatorService } from '@acorex/platform/core';
2
2
  import Dexie from 'dexie';
3
3
  import * as i1$4 from '@acorex/platform/common';
4
- import { AXPDataGenerator, resolveActionLook, AXPFilterOperatorMiddlewareService, AXPEntityCommandScope, getEntityInfo, AXPSettingService, AXPRefreshEvent, AXPSettingScope, AXPWorkflowNavigateAction, AXP_SEARCH_DEFINITION_PROVIDER, AXPToastAction } from '@acorex/platform/common';
4
+ import { AXPDataGenerator, resolveActionLook, AXPFilterOperatorMiddlewareService, AXPEntityCommandScope, getEntityInfo, AXPSettingService, AXPRefreshEvent, AXPSettingScope, AXPCleanNestedFilters, AXPWorkflowNavigateAction, AXPToastAction, AXP_SEARCH_DEFINITION_PROVIDER } from '@acorex/platform/common';
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, inject, Injectable, computed, signal, Injector, effect, Component, ChangeDetectionStrategy, HostBinding, DestroyRef, ViewChild, NgModule } from '@angular/core';
6
+ import { InjectionToken, inject, Injectable, computed, signal, Injector, effect, HostBinding, ChangeDetectionStrategy, Component, DestroyRef, ViewChild, NgModule } from '@angular/core';
7
7
  import * as i2 from '@acorex/components/common';
8
8
  import { AXDataSource, AXCommonModule } from '@acorex/components/common';
9
9
  import { AXFormatService } from '@acorex/core/format';
@@ -11,7 +11,7 @@ import * as i2$2 from '@acorex/platform/workflow';
11
11
  import { AXPWorkflowService, ofType, createWorkFlowEvent, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
12
12
  import { get, cloneDeep, set, merge, isNil, sortBy } from 'lodash-es';
13
13
  import * as i7 from '@acorex/platform/layout/builder';
14
- import { AXPPageStatus, AXPWidgetRegistryService, AXPWidgetComponent, AXPLayoutBuilderModule, AXPColumnWidgetComponent, AXP_WIDGETS_EDITOR_GROUP, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
14
+ import { AXPPageStatus, AXPWidgetRegistryService, AXPWidgetComponent, AXPLayoutBuilderModule, AXPColumnWidgetComponent, AXPWidgetsCatalog, AXP_WIDGETS_EDITOR_GROUP } from '@acorex/platform/layout/builder';
15
15
  import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
16
16
  import { AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
17
17
  import { Subject, takeUntil } from 'rxjs';
@@ -37,7 +37,7 @@ import { AXFormModule } from '@acorex/components/form';
37
37
  import * as i5$1 from '@acorex/components/select-box';
38
38
  import { AXSelectBoxModule } from '@acorex/components/select-box';
39
39
  import * as i2$1 from '@acorex/components/text-box';
40
- import { AXTextBoxComponent, AXTextBoxModule } from '@acorex/components/text-box';
40
+ import { AXTextBoxModule, AXTextBoxComponent } from '@acorex/components/text-box';
41
41
  import { AXValidationModule } from '@acorex/core/validation';
42
42
  import * as i1$3 from '@angular/forms';
43
43
  import { FormsModule } from '@angular/forms';
@@ -1131,7 +1131,7 @@ class AXPEntityMasterListViewModel {
1131
1131
  this.inlineFilters.filters?.length && this.inlineFilters,
1132
1132
  this.simpleFilters().filters?.length && this.simpleFilters(),
1133
1133
  ].filter(Boolean);
1134
- const cleanedAllFilters = this.cleanNestedFilters(allFilters);
1134
+ const cleanedAllFilters = AXPCleanNestedFilters(allFilters);
1135
1135
  this.lastFiltersApplied.set(this.simpleFilters());
1136
1136
  this.dataSource.filter(this.filterOperatorMiddleware.transformFilter({
1137
1137
  field: null,
@@ -1141,28 +1141,6 @@ class AXPEntityMasterListViewModel {
1141
1141
  }));
1142
1142
  this.dataSource.refresh();
1143
1143
  }
1144
- cleanNestedFilters(filters) {
1145
- return filters
1146
- .map((filter) => {
1147
- if (!filter)
1148
- return undefined;
1149
- if (filter.filters?.length) {
1150
- const cleanedNestedFilters = this.cleanNestedFilters(filter.filters);
1151
- if (!filter.field && !filter.operator && cleanedNestedFilters.length === 0) {
1152
- return undefined;
1153
- }
1154
- return {
1155
- ...filter,
1156
- filters: cleanedNestedFilters.filter(Boolean),
1157
- };
1158
- }
1159
- if (!filter.value || filter.value === 'unknown') {
1160
- return undefined;
1161
- }
1162
- return filter;
1163
- })
1164
- .filter(Boolean);
1165
- }
1166
1144
  resetColumns() {
1167
1145
  this.applyViewColumns();
1168
1146
  }
@@ -1275,25 +1253,42 @@ class AXPEntityPerformDeleteAction extends AXPWorkflowAction {
1275
1253
  }
1276
1254
  async execute(context) {
1277
1255
  const moduleEntity = context.getVariable('entity');
1278
- const [moduleName, entityName] = moduleEntity.split('.');
1279
1256
  const data = context.getVariable('data');
1280
1257
  const meta = context.getVariable('meta');
1281
1258
  const options = context.getVariable('options');
1282
1259
  const process = options?.['process'];
1283
1260
  const showResult = process?.showResult ?? true;
1284
- const ids = Array.isArray(data) ? data.map((c) => c.id) : [data.id];
1285
- const entity = await this.entityRegistery.resolve(moduleName, entityName);
1286
- if (entity.parentKey && data[entity.parentKey]) {
1287
- context.setVariable('meta', { ...meta, refreshTargetId: data[entity.parentKey] });
1261
+ const entities = [];
1262
+ if (moduleEntity != null) {
1263
+ const ids = Array.isArray(data) ? data.map((c) => c.id) : [data.id];
1264
+ entities.push({
1265
+ source: moduleEntity,
1266
+ ids: ids,
1267
+ });
1288
1268
  }
1269
+ else {
1270
+ const listEntities = context.getVariable('entities');
1271
+ entities.push(...listEntities);
1272
+ }
1273
+ const entityDefinitions = {};
1289
1274
  let deletedCount = 0;
1290
1275
  context.setVariable('deleteSuccessful', false);
1276
+ for await (const entity of entities) {
1277
+ const [moduleName, entityName] = entity.source.split('.');
1278
+ const entityDefinition = await this.entityRegistery.resolve(moduleName, entityName);
1279
+ if (entityDefinition.parentKey && data[entityDefinition.parentKey]) {
1280
+ context.setVariable('meta', { ...meta, refreshTargetId: data[entityDefinition.parentKey] });
1281
+ }
1282
+ entityDefinitions[entity.source] = entityDefinition;
1283
+ }
1284
+ // Compute consolidated ids from all entities
1285
+ const idLength = entities.reduce((acc, curr) => acc + curr.ids.length, 0);
1291
1286
  const dialog = this.loadingDialog.show({
1292
1287
  title: await this.translationService.translateAsync('workflow.deleting'),
1293
1288
  mode: 'determinate',
1294
1289
  status: 'Deleting...',
1295
1290
  progressValue: 0,
1296
- text: `0/${ids.length}`,
1291
+ text: `0/${idLength}`,
1297
1292
  buttons: [
1298
1293
  {
1299
1294
  text: await this.translationService.translateAsync('cancel'),
@@ -1304,68 +1299,75 @@ class AXPEntityPerformDeleteAction extends AXPWorkflowAction {
1304
1299
  },
1305
1300
  ],
1306
1301
  });
1307
- if (entity.commands?.delete != null) {
1308
- const deleteExec = entity.commands?.delete?.execute;
1309
- const wrappedPromises = ids
1310
- .map((id, i) => {
1311
- return new Promise((resolve) => {
1312
- setTimeout(() => {
1313
- resolve(deleteExec(id));
1314
- }, i * 200);
1315
- });
1316
- })
1317
- .map((p) => p?.then((value) => {
1318
- deletedCount++;
1319
- dialog.setProgressText(`${deletedCount}/${ids.length}`);
1320
- dialog.setProgressValue((deletedCount / ids.length) * 100);
1321
- return { status: 'fulfilled', value };
1322
- }, (reason) => ({ status: 'rejected', reason })));
1323
- const results = await Promise.all(wrappedPromises);
1324
- const successfulPromises = results.filter((result) => result?.status === 'fulfilled').length;
1325
- const failedPromises = results.filter((result) => result?.status === 'rejected').length;
1326
- setTimeout(() => {
1327
- dialog.close();
1328
- }, 300);
1329
- // Handle different scenarios for alerts
1330
- if (successfulPromises > 0 && failedPromises === 0) {
1331
- // All items deleted successfully
1332
- if (showResult) {
1333
- await this.dialogService.alert(await this.translationService.translateAsync('workflow.success-delete-title'), await this.translationService.translateAsync('workflow.success-delete-body', {
1334
- params: { item: successfulPromises },
1335
- }), //TODO test translation
1336
- 'success');
1337
- }
1338
- // Dispatch actions
1339
- this.dispatch(AXPEntityDeletedEvent({ entity: moduleEntity, ids: ids, meta: meta }));
1340
- this.dispatch(AXPRefreshEvent({ entity: moduleEntity, meta: context.getVariable('meta') }));
1302
+ let allPromises = [];
1303
+ for (const entity of entities) {
1304
+ const entityDefinition = entityDefinitions[entity.source];
1305
+ if (entityDefinition.commands?.delete != null) {
1306
+ const deleteExec = entityDefinition.commands?.delete?.execute;
1307
+ const entityPromises = entity.ids
1308
+ .map((id, i) => {
1309
+ return new Promise((resolve) => {
1310
+ setTimeout(() => {
1311
+ resolve(deleteExec(id));
1312
+ }, i * 200);
1313
+ });
1314
+ })
1315
+ .map((p) => p?.then((value) => {
1316
+ deletedCount++;
1317
+ dialog.setProgressText(`${deletedCount}/${idLength}`);
1318
+ dialog.setProgressValue((deletedCount / idLength) * 100);
1319
+ return { status: 'fulfilled', value };
1320
+ }, (reason) => ({ status: 'rejected', reason })));
1321
+ allPromises = allPromises.concat(entityPromises);
1341
1322
  }
1342
- else if (successfulPromises > 0 && failedPromises > 0) {
1343
- // Some items deleted successfully, some failed
1344
- if (showResult) {
1345
- await this.dialogService.alert(await this.translationService.translateAsync('workflow.success-partial-delete-title'), await this.translationService.translateAsync('workflow.partial-delete-body', {
1346
- params: { success: successfulPromises, fail: failedPromises },
1347
- }), 'warning');
1348
- }
1349
- // Dispatch actions
1350
- this.dispatch(AXPEntityDeletedEvent({ entity: moduleEntity, ids: ids, meta: meta }));
1323
+ else {
1324
+ throw new Error(`The delete operation cannot be performed on ${entityDefinition.title}. This action might be restricted or not applicable for the selected item.`);
1351
1325
  }
1352
- else if (successfulPromises === 0 && failedPromises > 0) {
1353
- // No items deleted, all failed
1354
- if (showResult) {
1355
- await this.dialogService.alert(await this.translationService.translateAsync('workflow.fail-delete-title'), await this.translationService.translateAsync('workflow.fail-delete-body', {
1356
- params: { item: failedPromises },
1357
- }), 'danger');
1358
- }
1326
+ }
1327
+ const results = await Promise.all(allPromises);
1328
+ const successfulPromises = results.filter((result) => result?.status === 'fulfilled').length;
1329
+ const failedPromises = results.filter((result) => result?.status === 'rejected').length;
1330
+ setTimeout(() => {
1331
+ dialog.close();
1332
+ }, 300);
1333
+ // Store the last entity for use in event dispatching
1334
+ const lastEntity = entities[entities.length - 1];
1335
+ // Handle different scenarios for alerts
1336
+ if (successfulPromises > 0 && failedPromises === 0) {
1337
+ // All items deleted successfully
1338
+ if (showResult) {
1339
+ await this.dialogService.alert(await this.translationService.translateAsync('workflow.success-delete-title'), await this.translationService.translateAsync('workflow.success-delete-body', {
1340
+ params: { item: successfulPromises },
1341
+ }), //TODO test translation
1342
+ 'success');
1359
1343
  }
1360
- else {
1361
- // No items to delete (no successful or failed promises)
1362
- if (showResult) {
1363
- await this.dialogService.alert(await this.translationService.translateAsync('workflow.no-need'), await this.translationService.translateAsync('workflow.no-item'), 'primary');
1364
- }
1344
+ // Dispatch actions
1345
+ this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));
1346
+ this.dispatch(AXPRefreshEvent({ entity: lastEntity.source, meta: context.getVariable('meta') }));
1347
+ }
1348
+ else if (successfulPromises > 0 && failedPromises > 0) {
1349
+ // Some items deleted successfully, some failed
1350
+ if (showResult) {
1351
+ await this.dialogService.alert(await this.translationService.translateAsync('workflow.success-partial-delete-title'), await this.translationService.translateAsync('workflow.partial-delete-body', {
1352
+ params: { success: successfulPromises, fail: failedPromises },
1353
+ }), 'warning');
1354
+ }
1355
+ // Dispatch actions
1356
+ this.dispatch(AXPEntityDeletedEvent({ entity: lastEntity.source, ids: lastEntity.ids, meta: meta }));
1357
+ }
1358
+ else if (successfulPromises === 0 && failedPromises > 0) {
1359
+ // No items deleted, all failed
1360
+ if (showResult) {
1361
+ await this.dialogService.alert(await this.translationService.translateAsync('workflow.fail-delete-title'), await this.translationService.translateAsync('workflow.fail-delete-body', {
1362
+ params: { item: failedPromises },
1363
+ }), 'danger');
1365
1364
  }
1366
1365
  }
1367
1366
  else {
1368
- throw new Error(`The delete operation cannot be performed on ${entity.title}. This action might be restricted or not applicable for the selected item.`);
1367
+ // No items to delete (no successful or failed promises)
1368
+ if (showResult) {
1369
+ await this.dialogService.alert(await this.translationService.translateAsync('workflow.no-need'), await this.translationService.translateAsync('workflow.no-item'), 'primary');
1370
+ }
1369
1371
  }
1370
1372
  }
1371
1373
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPEntityPerformDeleteAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -2047,9 +2049,6 @@ var lookupWidgetView_component = /*#__PURE__*/Object.freeze({
2047
2049
  });
2048
2050
 
2049
2051
  class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
2050
- // protected override ngOnInit(): void {
2051
- // super.ngOnInit();
2052
- // }
2053
2052
  ngAfterViewInit() {
2054
2053
  if (this.searchTerm) {
2055
2054
  this.vm.applyInlineFilter(this.searchTerm);
@@ -2152,7 +2151,7 @@ class AXPLookupWidgetSelectorComponent extends AXBasePageComponent {
2152
2151
  }
2153
2152
  </ax-suffix>
2154
2153
  </ax-footer>
2155
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.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: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.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: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i5.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "parentField", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i7.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2154
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXCommonModule }, { kind: "directive", type: i2.AXAutoFocusDirective, selector: "[axAutoFocus]", inputs: ["axAutoFocus", "axAutoFocusTime"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.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: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i5.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "parentField", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i7.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2156
2155
  }
2157
2156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPLookupWidgetSelectorComponent, decorators: [{
2158
2157
  type: Component,
@@ -2243,11 +2242,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
2243
2242
  }] });
2244
2243
 
2245
2244
  class AXPLookupWidgetSelectorViewModel {
2246
- constructor(injector, entityDef, parentFilters = null) {
2245
+ constructor(injector, entityDef, parentFilters = null, customFilter = null) {
2247
2246
  this.injector = injector;
2248
2247
  this.entityDef = entityDef;
2249
2248
  this.parentFilters = parentFilters;
2249
+ this.customFilter = customFilter;
2250
2250
  this.workflow = this.injector.get(AXPWorkflowService);
2251
+ this.filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);
2251
2252
  this.dataSource = new AXDataSource({
2252
2253
  byKey: (key) => {
2253
2254
  const func = this.entityDef.queries.byKey.execute;
@@ -2317,7 +2318,7 @@ class AXPLookupWidgetSelectorViewModel {
2317
2318
  this.applyFilterAndSort();
2318
2319
  }
2319
2320
  applyFilterAndSort() {
2320
- this.dataSource.clearFilter();
2321
+ // this.dataSource.clearFilter();
2321
2322
  //
2322
2323
  //this.dataSource.sort(...this.sortedFields().map(s => ({ dir: s.dir, field: s.name } as AXDataSourceSortOption)));
2323
2324
  //
@@ -2326,6 +2327,11 @@ class AXPLookupWidgetSelectorViewModel {
2326
2327
  const hasParentFilters = (this.parentFilters?.filters?.length ?? 0) > 0;
2327
2328
  // Construct the filters array based on the presence of filters
2328
2329
  const filters = [];
2330
+ console.log(this.customFilter);
2331
+ if (this.customFilter) {
2332
+ const cleanedFilters = AXPCleanNestedFilters([this.customFilter]);
2333
+ filters.push(this.filterOperatorMiddleware.transformFilter(cleanedFilters[0]));
2334
+ }
2329
2335
  if (hasInlineFilters) {
2330
2336
  filters.push(this.inlineFilters);
2331
2337
  }
@@ -2360,6 +2366,7 @@ class AXPLookupWidgetEditComponent extends AXPWidgetComponent {
2360
2366
  this.translateService = inject(AXTranslationService);
2361
2367
  this.expose = computed(() => this.options()['expose']);
2362
2368
  this.entity = computed(() => this.options()['entity']);
2369
+ this.customFilter = computed(() => this.options()['filter']);
2363
2370
  this.textField = computed(() => {
2364
2371
  return (this.entityDef()?.formats.lookup ?? this.entityDef()?.properties.find((c) => c.name != 'id')?.name ?? 'title');
2365
2372
  });
@@ -2421,7 +2428,7 @@ class AXPLookupWidgetEditComponent extends AXPWidgetComponent {
2421
2428
  title: `${this.translateService.translateSync('widget.lookup.search')} ${this.translateService.translateSync(this.entityDef()?.formats.plural ?? '')}`,
2422
2429
  size: (this.vm()?.columns().length ?? 0) > 3 ? 'lg' : 'md',
2423
2430
  data: {
2424
- vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef(), this.filter),
2431
+ vm: new AXPLookupWidgetSelectorViewModel(this.injector, this.entityDef(), this.filter, this.customFilter()),
2425
2432
  searchTerm: this.searchTerm() == this.displayText() ? null : this.searchTerm(),
2426
2433
  },
2427
2434
  })
@@ -2535,7 +2542,7 @@ class AXPLookupWidgetEditComponent extends AXPWidgetComponent {
2535
2542
  </ax-button>
2536
2543
  </ax-suffix>
2537
2544
  </ax-text-box>
2538
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2$1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.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: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2545
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2$1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2539
2546
  }
2540
2547
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPLookupWidgetEditComponent, decorators: [{
2541
2548
  type: Component,
@@ -2848,7 +2855,9 @@ class AXPTagableBoxWidgetEditComponent extends AXPWidgetComponent {
2848
2855
  </ax-prefix>
2849
2856
  </ax-button>
2850
2857
  </div>
2851
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.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: AXValidationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.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: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i5$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2858
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i4.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: AXValidationModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type:
2859
+ // AXTagBoxModule,
2860
+ AXSelectBoxModule }, { kind: "component", type: i5$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i6.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2852
2861
  }
2853
2862
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTagableBoxWidgetEditComponent, decorators: [{
2854
2863
  type: Component,
@@ -2901,6 +2910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
2901
2910
  AXDecoratorModule,
2902
2911
  AXValidationModule,
2903
2912
  AXButtonModule,
2913
+ // AXTagBoxModule,
2904
2914
  AXSelectBoxModule,
2905
2915
  AXSearchBoxModule,
2906
2916
  ],
@@ -3143,7 +3153,7 @@ class AXPWidgetSelectorWidgetEditComponent extends AXPWidgetComponent {
3143
3153
  <axp-widget-property-viewer [widget]="selectedWidgetNode()!" (onChanged)="handleChangeWidget($event)">
3144
3154
  </axp-widget-property-viewer>
3145
3155
  }
3146
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2$1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.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: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget"], outputs: ["onChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3156
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2$1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i6$1.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message"] }, { kind: "component", type: AXPWidgetPropertyViewerComponent, selector: "axp-widget-property-viewer", inputs: ["widget"], outputs: ["onChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3147
3157
  }
3148
3158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPWidgetSelectorWidgetEditComponent, decorators: [{
3149
3159
  type: Component,
@@ -3484,7 +3494,9 @@ function routesFacory() {
3484
3494
  routes = [
3485
3495
  {
3486
3496
  path: ':app/m',
3487
- component: config.viewers.root(),
3497
+ loadComponent: () => {
3498
+ return config.viewers.root();
3499
+ },
3488
3500
  canActivate: [AXPAuthGuard],
3489
3501
  children: [
3490
3502
  {