@acorex/modules 19.3.2 → 19.3.3-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/index.d.ts +1 -0
- package/common/lib/common.module.d.ts +3 -2
- package/common/lib/features/global-search/index.d.ts +3 -0
- package/common/lib/features/global-search/search-popup.component.d.ts +22 -0
- package/common/lib/features/global-search/search-slot.component.d.ts +9 -0
- package/common/lib/features/global-search/search.config.d.ts +5 -0
- package/common/lib/features/global-search/search.module.d.ts +11 -0
- package/common/lib/features/global-search/search.viewmodel.d.ts +34 -0
- package/common/lib/features/global-search/workflows/search.workflow.d.ts +11 -0
- package/dashboard-management/lib/menu.provider.d.ts +1 -0
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +1 -0
- package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +1 -0
- package/document-management/lib/features/drive/drive.component.d.ts +1 -0
- package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +1 -0
- package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +1 -0
- package/document-management/lib/features/shared/document-manager.types.d.ts +2 -0
- package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +4 -3
- package/document-management/lib/permission-definition.provider.d.ts +4 -0
- package/document-management/lib/permission.keys.d.ts +19 -0
- package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs +128 -0
- package/fesm2022/acorex-modules-common-search-popup.component-C3XUb6pF.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +289 -7
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/{acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs → acorex-modules-dashboard-management-acorex-modules-dashboard-management-DKGnh_V9.mjs} +33 -8
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-DKGnh_V9.mjs.map +1 -0
- package/fesm2022/{acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs → acorex-modules-dashboard-management-home-dashboard-By3lZP-J.mjs} +55 -29
- package/fesm2022/acorex-modules-dashboard-management-home-dashboard-By3lZP-J.mjs.map +1 -0
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs → acorex-modules-document-management-acorex-modules-document-management-hMEt0yZI.mjs} +61 -41
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-hMEt0yZI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs → acorex-modules-document-management-create-folder-dialog.component-D_FfCqY8.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bc_IX3gT.mjs.map → acorex-modules-document-management-create-folder-dialog.component-D_FfCqY8.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs → acorex-modules-document-management-details-view.component-Oxtnvogq.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-_9f5TQJi.mjs.map → acorex-modules-document-management-details-view.component-Oxtnvogq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs → acorex-modules-document-management-drive-choose.component-BqZyAAAw.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-CFOb0_MF.mjs.map → acorex-modules-document-management-drive-choose.component-BqZyAAAw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs → acorex-modules-document-management-large-icons-view.component-9APgNKIu.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-D9es4CBl.mjs.map → acorex-modules-document-management-large-icons-view.component-9APgNKIu.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs → acorex-modules-document-management-large-tiles-view.component-Byt-Hl3M.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Q1Sjg47F.mjs.map → acorex-modules-document-management-large-tiles-view.component-Byt-Hl3M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs → acorex-modules-document-management-list-view.component-BeuXrgYL.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-BUu5vrul.mjs.map → acorex-modules-document-management-list-view.component-BeuXrgYL.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-9KjrOZc6.mjs +31 -0
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-9KjrOZc6.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs → acorex-modules-document-management-rename-node-dialog.component-BHayM-mO.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BMRmdslE.mjs.map → acorex-modules-document-management-rename-node-dialog.component-BHayM-mO.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs → acorex-modules-document-management-small-icons-view.component-CNVZaLv2.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-ChSS7z9z.mjs.map → acorex-modules-document-management-small-icons-view.component-CNVZaLv2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs → acorex-modules-document-management-small-tiles-view.component-BDv_sH9f.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ci33qbBY.mjs.map → acorex-modules-document-management-small-tiles-view.component-BDv_sH9f.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs} +33 -15
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-CJ2Qoott.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DPVwQW4X.mjs.map → acorex-modules-form-template-management-category.entity-BjNsUAZq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs → acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs} +2 -21
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CqZ8ytjA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-iwOUp0iw.mjs.map → acorex-modules-form-template-management-settings.provider-LrzsYkiL.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BkR3x74p.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BP75i9zU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-template.entity-NgmH7r8R.mjs.map → acorex-modules-form-template-management-template.entity-CCaHPkWq.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs} +2 -2
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-Cq33xA62.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CUOsh6e5.mjs.map} +1 -1
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-U5EJyG5e.mjs → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs} +2 -3
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-U5EJyG5e.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-DcmAnBue.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-3ZAOJBfn.mjs → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs} +2 -2
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-3ZAOJBfn.mjs.map → acorex-modules-issue-management-capture-screen.component-BMpafdHr.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +3 -8
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +2 -2
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs} +3 -3
- package/fesm2022/{acorex-modules-organization-management-add-item.component-DW0TneoX.mjs.map → acorex-modules-organization-management-add-item.component-DE0Ek0dk.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs +124 -0
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-RuvkSheN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs → acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs} +59 -19
- package/fesm2022/acorex-modules-organization-management-org-chart.page-C2qYJxpY.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management.mjs +7 -7
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-5lToZD6T.mjs → acorex-modules-platform-management-acorex-modules-platform-management-CJZ86Oon.mjs} +134 -59
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CJZ86Oon.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-BElZjmXr.mjs → acorex-modules-platform-management-list-version.component-a_szjudb.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-list-version.component-BElZjmXr.mjs.map → acorex-modules-platform-management-list-version.component-a_szjudb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-platform-management-settings.provider-CemrvnbH.mjs → acorex-modules-platform-management-settings.provider-D_lPw5D4.mjs} +2 -2
- package/fesm2022/{acorex-modules-platform-management-settings.provider-CemrvnbH.mjs.map → acorex-modules-platform-management-settings.provider-D_lPw5D4.mjs.map} +1 -1
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs +219 -0
- package/fesm2022/acorex-modules-settings-management-setting-page.component-XDFtTqft.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs +103 -0
- package/fesm2022/acorex-modules-settings-management-setting-view.component-B_6RIU9e.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +442 -0
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -0
- package/fesm2022/acorex-modules-training-management.mjs +0 -2
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +7 -61
- package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +8 -61
- package/package.json +5 -1
- package/platform-management/lib/const.d.ts +2 -6
- package/platform-management/lib/entities/promotion/promotion.datasource.d.ts +7 -0
- package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +11 -13
- package/settings-management/README.md +3 -0
- package/settings-management/index.d.ts +2 -0
- package/settings-management/lib/features/settings/convert-setting-data.d.ts +2 -0
- package/settings-management/lib/features/settings/search-definition.provider.d.ts +4 -0
- package/settings-management/lib/features/settings/search.provider.d.ts +9 -0
- package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +65 -0
- package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +135 -0
- package/settings-management/lib/features/settings/settings.viewmodel.d.ts +46 -0
- package/settings-management/lib/settings-management.module.d.ts +9 -0
- package/fesm2022/acorex-modules-dashboard-management-acorex-modules-dashboard-management-VORBD1g-.mjs.map +0 -1
- package/fesm2022/acorex-modules-dashboard-management-home-dashboard-DiPn_RhH.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-vYaqbxKs.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-Cv92x_9Z.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-BrWbwKTK.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs +0 -92
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DFqOS0So.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-DnRbGIWN.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-5lToZD6T.mjs.map +0 -1
@@ -1,10 +1,25 @@
|
|
1
1
|
import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
|
2
|
-
import
|
2
|
+
import * as i2$1 from '@acorex/platform/common';
|
3
|
+
import { AXPHomePageService, AXPSearchCommandProvider, AXPComponentSlotModule, AXPSearchService, AXPSettingService, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
|
3
4
|
import { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
4
5
|
import * as i0 from '@angular/core';
|
5
|
-
import { inject, Injector, Injectable, NgModule } from '@angular/core';
|
6
|
-
import { firstValueFrom } from 'rxjs';
|
6
|
+
import { inject, Injector, Injectable, InjectionToken, HostListener, Component, NgModule, signal, computed } from '@angular/core';
|
7
|
+
import { firstValueFrom, Subject } from 'rxjs';
|
7
8
|
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
9
|
+
import * as i3$1 from '@acorex/platform/workflow';
|
10
|
+
import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
11
|
+
import * as i2 from '@acorex/components/button';
|
12
|
+
import { AXButtonModule } from '@acorex/components/button';
|
13
|
+
import * as i3 from '@acorex/components/decorators';
|
14
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
15
|
+
import * as i1 from '@angular/common';
|
16
|
+
import { CommonModule } from '@angular/common';
|
17
|
+
import * as i4 from '@acorex/core/translation';
|
18
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
19
|
+
import { AXTextBoxModule } from '@acorex/components/text-box';
|
20
|
+
import { AXPopupService } from '@acorex/components/popup';
|
21
|
+
import * as i1$1 from '@acorex/platform/core';
|
22
|
+
import { AXPPlatformScope } from '@acorex/platform/core';
|
8
23
|
|
9
24
|
const config = {
|
10
25
|
i18n: 'common',
|
@@ -156,9 +171,276 @@ class AXMSettingProvider {
|
|
156
171
|
}
|
157
172
|
}
|
158
173
|
|
174
|
+
const AXP_GLOBAL_SEARCH_CONFIG_TOKEN = new InjectionToken('AXP_GLOBAL_SEARCH_CONFIG_TOKEN');
|
175
|
+
|
176
|
+
class AXPGlobalSearchSlotComponent {
|
177
|
+
constructor() {
|
178
|
+
this.workflow = inject(AXPWorkflowService);
|
179
|
+
}
|
180
|
+
async startSearch() {
|
181
|
+
await this.workflow.execute('global-search');
|
182
|
+
}
|
183
|
+
async handleKeyboardEvent(event) {
|
184
|
+
if (event.ctrlKey) {
|
185
|
+
switch (event.code) {
|
186
|
+
case 'KeyK':
|
187
|
+
event.preventDefault();
|
188
|
+
event.stopPropagation();
|
189
|
+
await this.startSearch();
|
190
|
+
break;
|
191
|
+
}
|
192
|
+
}
|
193
|
+
}
|
194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPGlobalSearchSlotComponent, isStandalone: true, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: `
|
196
|
+
<ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
|
197
|
+
<ax-icon class="fa-regular fa-search">
|
198
|
+
</ax-icon>
|
199
|
+
</ax-button>
|
200
|
+
<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()" *translate="let t">
|
201
|
+
<div class="ax-flex ax-items-center ax-gap-2">
|
202
|
+
<i class="fa-light fa-search ax-text-xl"></i>
|
203
|
+
<span>{{ t('search-placeholder',{scope:'global-search'}) | async}}</span>
|
204
|
+
</div>
|
205
|
+
<kbd class="ax-text-sm">Ctrl+K</kbd>
|
206
|
+
</div>
|
207
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.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: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i4.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXTextBoxModule }] }); }
|
208
|
+
}
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchSlotComponent, decorators: [{
|
210
|
+
type: Component,
|
211
|
+
args: [{
|
212
|
+
template: `
|
213
|
+
<ax-button color="primary" class="ax-flex md:ax-hidden" (onClick)="startSearch()">
|
214
|
+
<ax-icon class="fa-regular fa-search">
|
215
|
+
</ax-icon>
|
216
|
+
</ax-button>
|
217
|
+
<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()" *translate="let t">
|
218
|
+
<div class="ax-flex ax-items-center ax-gap-2">
|
219
|
+
<i class="fa-light fa-search ax-text-xl"></i>
|
220
|
+
<span>{{ t('search-placeholder',{scope:'global-search'}) | async}}</span>
|
221
|
+
</div>
|
222
|
+
<kbd class="ax-text-sm">Ctrl+K</kbd>
|
223
|
+
</div>
|
224
|
+
`,
|
225
|
+
imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXTextBoxModule]
|
226
|
+
}]
|
227
|
+
}], propDecorators: { handleKeyboardEvent: [{
|
228
|
+
type: HostListener,
|
229
|
+
args: ['document:keydown', ['$event']]
|
230
|
+
}] } });
|
231
|
+
|
232
|
+
class AXPGlobalSearchStartAction extends AXPWorkflowAction {
|
233
|
+
constructor() {
|
234
|
+
super(...arguments);
|
235
|
+
this.popupService = inject(AXPopupService);
|
236
|
+
this.workflow = inject(AXPWorkflowService);
|
237
|
+
this.config = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);
|
238
|
+
}
|
239
|
+
async execute(context) {
|
240
|
+
const component = await this.config.window();
|
241
|
+
const popup = await this.popupService.open(component, {
|
242
|
+
title: 'Search...',
|
243
|
+
size: 'fit',
|
244
|
+
closeOnBackdropClick: true,
|
245
|
+
data: {
|
246
|
+
text: context.getVariable('text'),
|
247
|
+
},
|
248
|
+
header: false,
|
249
|
+
});
|
250
|
+
if (popup.data) {
|
251
|
+
const result = popup.data;
|
252
|
+
if (result && result.command) {
|
253
|
+
this.workflow.execute(result.command?.name, result.command?.options);
|
254
|
+
}
|
255
|
+
}
|
256
|
+
}
|
257
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
258
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction }); }
|
259
|
+
}
|
260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchStartAction, decorators: [{
|
261
|
+
type: Injectable
|
262
|
+
}] });
|
263
|
+
const AXPGlobalSearchWorkflow = {
|
264
|
+
startStepId: 'start',
|
265
|
+
steps: {
|
266
|
+
start: {
|
267
|
+
action: 'AXPGlobalSearchStartAction',
|
268
|
+
},
|
269
|
+
},
|
270
|
+
};
|
271
|
+
|
272
|
+
class AXPGlobalSearchModule {
|
273
|
+
constructor(appInitService, injector) {
|
274
|
+
}
|
275
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, deps: [{ token: i1$1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
276
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, imports: [i2$1.AXPComponentSlotModule, i3$1.AXPWorkflowModule] }); }
|
277
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, providers: [
|
278
|
+
{
|
279
|
+
provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
|
280
|
+
useValue: {
|
281
|
+
window: () => import('./acorex-modules-common-search-popup.component-C3XUb6pF.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
|
282
|
+
},
|
283
|
+
},
|
284
|
+
], imports: [AXPComponentSlotModule.forChild({
|
285
|
+
'header-start': [
|
286
|
+
{
|
287
|
+
priority: 0,
|
288
|
+
name: 'search',
|
289
|
+
component: AXPGlobalSearchSlotComponent,
|
290
|
+
},
|
291
|
+
],
|
292
|
+
}),
|
293
|
+
//
|
294
|
+
AXPWorkflowModule.forChild({
|
295
|
+
actions: {
|
296
|
+
AXPGlobalSearchStartAction
|
297
|
+
},
|
298
|
+
workflows: {
|
299
|
+
'global-search': AXPGlobalSearchWorkflow,
|
300
|
+
},
|
301
|
+
})] }); }
|
302
|
+
}
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPGlobalSearchModule, decorators: [{
|
304
|
+
type: NgModule,
|
305
|
+
args: [{
|
306
|
+
imports: [
|
307
|
+
AXPComponentSlotModule.forChild({
|
308
|
+
'header-start': [
|
309
|
+
{
|
310
|
+
priority: 0,
|
311
|
+
name: 'search',
|
312
|
+
component: AXPGlobalSearchSlotComponent,
|
313
|
+
},
|
314
|
+
],
|
315
|
+
}),
|
316
|
+
//
|
317
|
+
AXPWorkflowModule.forChild({
|
318
|
+
actions: {
|
319
|
+
AXPGlobalSearchStartAction
|
320
|
+
},
|
321
|
+
workflows: {
|
322
|
+
'global-search': AXPGlobalSearchWorkflow,
|
323
|
+
},
|
324
|
+
})
|
325
|
+
],
|
326
|
+
exports: [],
|
327
|
+
declarations: [],
|
328
|
+
providers: [
|
329
|
+
{
|
330
|
+
provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,
|
331
|
+
useValue: {
|
332
|
+
window: () => import('./acorex-modules-common-search-popup.component-C3XUb6pF.mjs').then((c) => c.AXPGlobalSearchPopupComponent),
|
333
|
+
},
|
334
|
+
},
|
335
|
+
]
|
336
|
+
}]
|
337
|
+
}], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
|
338
|
+
|
339
|
+
class AXPGlobalSearchViewModel {
|
340
|
+
constructor() {
|
341
|
+
this.settingKeys = {
|
342
|
+
recent: "global-search:recents:items",
|
343
|
+
pinned: "global-search:pinned:items"
|
344
|
+
};
|
345
|
+
this.searchService = inject(AXPSearchService);
|
346
|
+
this.settingService = inject(AXPSettingService);
|
347
|
+
this._text = signal(null);
|
348
|
+
this.text = this._text.asReadonly();
|
349
|
+
this._results = signal([]);
|
350
|
+
this.results = this._results.asReadonly();
|
351
|
+
this._isBusy = signal(false);
|
352
|
+
this.isBusy = this._isBusy.asReadonly();
|
353
|
+
this.isEmpty = computed(() => this.text() && this.results().length == 0);
|
354
|
+
this.isValid = computed(() => (this.text()?.length ?? 0) > 2);
|
355
|
+
this.isStart = computed(() => !this.isEmpty() && this.results().length == 0);
|
356
|
+
this.isWelcome = computed(() => this.isStart() && this.pinnedItems().length == 0 && this.recentItems().length == 0);
|
357
|
+
this._recentItems = signal([]);
|
358
|
+
this._pinnedItems = signal([]);
|
359
|
+
this.pinnedItems = this._pinnedItems.asReadonly();
|
360
|
+
this.recentItems = computed(() => this.getTopRecentItems());
|
361
|
+
this.onItemSelected = new Subject();
|
362
|
+
this.loadSettings();
|
363
|
+
}
|
364
|
+
async search(text) {
|
365
|
+
this._isBusy.set(true);
|
366
|
+
this._text.set(text);
|
367
|
+
if (!this.isValid()) {
|
368
|
+
this._results.set([]);
|
369
|
+
}
|
370
|
+
else {
|
371
|
+
await new Promise((resolve) => setTimeout(resolve, 250));
|
372
|
+
const results = await this.searchService.search(text);
|
373
|
+
this._results.set(results);
|
374
|
+
}
|
375
|
+
this._isBusy.set(false);
|
376
|
+
}
|
377
|
+
async execute(item) {
|
378
|
+
this.onItemSelected.next(item);
|
379
|
+
await this.updateSelectionHistory(item);
|
380
|
+
}
|
381
|
+
async pin(item) {
|
382
|
+
const currentPinned = this._pinnedItems();
|
383
|
+
if (!currentPinned.some(i => i.id === item.id)) {
|
384
|
+
this._pinnedItems.set([item, ...currentPinned].slice(0, 5));
|
385
|
+
await this.saveSettings();
|
386
|
+
}
|
387
|
+
}
|
388
|
+
async unpin(item) {
|
389
|
+
const currentPinned = this._pinnedItems();
|
390
|
+
this._pinnedItems.set(currentPinned.filter(i => i.id !== item.id));
|
391
|
+
await this.saveSettings();
|
392
|
+
}
|
393
|
+
async togglePin(item) {
|
394
|
+
if (this.isPinned(item)) {
|
395
|
+
await this.unpin(item);
|
396
|
+
}
|
397
|
+
else {
|
398
|
+
await this.pin(item);
|
399
|
+
}
|
400
|
+
}
|
401
|
+
isPinned(item) {
|
402
|
+
const currentPinned = this._pinnedItems();
|
403
|
+
return currentPinned.some(i => i.id === item.id);
|
404
|
+
}
|
405
|
+
async updateSelectionHistory(item) {
|
406
|
+
// Update recent selections
|
407
|
+
const currentHistory = this._recentItems();
|
408
|
+
const updatedHistory = [item, ...currentHistory.filter(i => i.id !== item.id)].slice(0, 5);
|
409
|
+
this._recentItems.set(updatedHistory);
|
410
|
+
// Save updated settings
|
411
|
+
await this.saveSettings();
|
412
|
+
}
|
413
|
+
getTopRecentItems() {
|
414
|
+
const pinnedIds = new Set(this._pinnedItems().map(item => item.id));
|
415
|
+
return this._recentItems().filter(item => !pinnedIds.has(item.id)).slice(0, 5);
|
416
|
+
}
|
417
|
+
async clearRecentItems() {
|
418
|
+
this._recentItems.set([]);
|
419
|
+
await this.settingService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, []);
|
420
|
+
}
|
421
|
+
async loadSettings() {
|
422
|
+
// Load recent selections
|
423
|
+
const recent = await this.settingService.get(this.settingKeys.recent);
|
424
|
+
if (recent) {
|
425
|
+
this._recentItems.set(recent.slice(0, 5));
|
426
|
+
}
|
427
|
+
// Load pinned items
|
428
|
+
const pinned = await this.settingService.get(this.settingKeys.pinned);
|
429
|
+
if (pinned) {
|
430
|
+
this._pinnedItems.set(pinned.slice(0, 5));
|
431
|
+
}
|
432
|
+
}
|
433
|
+
async saveSettings() {
|
434
|
+
// Save recent selections
|
435
|
+
await this.settingService.scope(AXPPlatformScope.User).set(this.settingKeys.recent, this._recentItems().slice(0, 5));
|
436
|
+
// Save pinned items
|
437
|
+
await this.settingService.scope(AXPPlatformScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));
|
438
|
+
}
|
439
|
+
}
|
440
|
+
|
159
441
|
class AXMCommonModule {
|
160
442
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
161
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXMCommonModule, imports: [AXPWidgetsModule] }); }
|
443
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXMCommonModule, imports: [AXPGlobalSearchModule, AXPWidgetsModule] }); }
|
162
444
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMCommonModule, providers: [
|
163
445
|
{
|
164
446
|
provide: AXP_MENU_PROVIDER,
|
@@ -185,12 +467,12 @@ class AXMCommonModule {
|
|
185
467
|
useClass: AXMPermissionDefinitionProvider,
|
186
468
|
multi: true,
|
187
469
|
},
|
188
|
-
], imports: [AXPWidgetsModule] }); }
|
470
|
+
], imports: [AXPGlobalSearchModule, AXPWidgetsModule] }); }
|
189
471
|
}
|
190
472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMCommonModule, decorators: [{
|
191
473
|
type: NgModule,
|
192
474
|
args: [{
|
193
|
-
imports: [AXPWidgetsModule],
|
475
|
+
imports: [AXPGlobalSearchModule, AXPWidgetsModule],
|
194
476
|
exports: [],
|
195
477
|
declarations: [],
|
196
478
|
providers: [
|
@@ -267,5 +549,5 @@ const AXPWidgetsList = {
|
|
267
549
|
* Generated bundle index. Do not edit.
|
268
550
|
*/
|
269
551
|
|
270
|
-
export { AXMCommonModule, AXMEntityProvider, AXMMenuProvider, AXMSearchCommandProvider, AXMSettingProvider, AXPWidgetsList, RootConfig };
|
552
|
+
export { AXMCommonModule, AXMEntityProvider, AXMMenuProvider, AXMSearchCommandProvider, AXMSettingProvider, AXPGlobalSearchModule, AXPGlobalSearchViewModel, AXPWidgetsList, AXP_GLOBAL_SEARCH_CONFIG_TOKEN, RootConfig };
|
271
553
|
//# sourceMappingURL=acorex-modules-common.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-common.mjs","sources":["../../../../libs/modules/common/src/lib/const.ts","../../../../libs/modules/common/src/lib/entity.provider.ts","../../../../libs/modules/common/src/lib/menu.provider.ts","../../../../libs/modules/common/src/lib/permission-definition.provider.ts","../../../../libs/modules/common/src/lib/search-command.provider.ts","../../../../libs/modules/common/src/lib/settings.provider.ts","../../../../libs/modules/common/src/lib/common.module.ts","../../../../libs/modules/common/src/lib/widgets-names-list.ts","../../../../libs/modules/common/src/acorex-modules-common.ts"],"sourcesContent":["const config = {\n i18n: 'common',\n};\nexport const RootConfig = {\n config,\n module: {\n module: 'common',\n name: 'Common',\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-file-invoice',\n },\n entities: {\n\n },\n};\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n\n }\n }\n return null;\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService, AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n private homePageService = inject(AXPHomePageService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n //\n const homePagePath = this.homePageService.getCurrent().path;\n if (homePagePath) {\n context.addItems([\n {\n priority: -9,\n text: `t('home',{scope:'common'})`,\n path: homePagePath,\n icon: 'fa-light fa-grid-2',\n data: {\n //requiredPermission: '',\n },\n },\n ]);\n }\n\n context.find('user-profile').addItems([\n {\n text: `t('user.title', {scope: \"settings\"})`,\n name: 'user-settings',\n icon: 'fa-light fa-gear',\n path: `/${this.sessionService.application?.name}/settings/user`,\n },\n ]);\n\n context.addItems([\n {\n name: 'tenant-application-settings',\n priority: 10000,\n text: `t('tenant.title', {scope: \"settings\"})`,\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n data: {\n requiredPermission: 'admin',\n },\n },\n ]);\n }\n}\n","import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\n\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n // context.addPermissions([\n // {\n // name: 'view_templates',\n // title: 'Permission to view templates',\n // isArchived: false,\n // },\n // ]);\n }\n}\n","import { AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';\n\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n // {\n // group: 'command',\n // title: 'New Form Template',\n // icon: RootConfig.entities.template.icon,\n // description: 'Create a new form template for designing reusable forms.', // Added description\n // commands: {\n // 'create-entity': {\n // entity: `${RootConfig.module.name}.${RootConfig.entities.template.name}`,\n // },\n // },\n // }\n ];\n}\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex/platform/common';\n\nexport class AXMSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // context\n // // Add Form Template Group\n // .addGroup('form-template', 'Form Template', 'Settings related to form templates.', RootConfig.module.icon)\n // // Start Interface Section\n // .addSection('interface', 'UI Interface', 'Customize the user interface for forms.')\n // .addSetting({\n // key: 'history-panel',\n // title: 'Show History Panel',\n // scope: 'U',\n // isInherited: true,\n // defaultValue: false,\n // widget: {\n // type: AXPWidgetsCatalog.toggle,\n // },\n // description: 'Enable or disable the history panel for forms.',\n // validationRules: [\n // {\n // rule: 'required',\n // },\n // ],\n // })\n // .endSection()\n // .endGroup();\n }\n}\n","import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { NgModule } from '@angular/core';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMSettingProvider } from './settings.provider';\n\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\n\n@NgModule({\n imports: [AXPWidgetsModule],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n ],\n})\nexport class AXMCommonModule {}\n","\nexport const AXPWidgetsList = {\n Editors: {\n DocumentAttachment: 'document-attachment-editor',\n TagBox: 'tagable-editor',\n CheckBox: 'checkbox-editor',\n ColorBox: 'color-editor',\n DateTimeBox: 'date-time-editor',\n LargeTextBox: 'large-text-editor',\n NumberBox: 'number-editor',\n UnitValueBox: 'number-unit-editor',\n PasswordBox: 'password-editor',\n RichText: 'rich-text-editor',\n SelectBox: 'select-editor',\n SelectionList: 'selection-list-editor',\n TextBox: 'text-editor',\n InlineDataTable: 'table-editor',\n ToggleSwitch: 'toggle-editor',\n FileTypeExtension: 'file-type-extension',\n MapBox: 'map',\n MediaGallery: 'gallery',\n SignatureBox: 'signature',\n LookupBox: 'lookup-editor',\n },\n Layouts: {\n BlockLayout: 'block-layout',\n RepeaterLayout: 'repeater-layout',\n TextBlockLayout: 'text-block-layout',\n FormField: 'form-field',\n },\n Actions: {\n ActionButton: 'button-action',\n },\n Advanced: {\n QRCode: 'qrcode',\n },\n Templates: {\n Designer: 'template-designer',\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-modules-common.mjs","sources":["../../../../libs/modules/common/src/lib/const.ts","../../../../libs/modules/common/src/lib/entity.provider.ts","../../../../libs/modules/common/src/lib/menu.provider.ts","../../../../libs/modules/common/src/lib/permission-definition.provider.ts","../../../../libs/modules/common/src/lib/search-command.provider.ts","../../../../libs/modules/common/src/lib/settings.provider.ts","../../../../libs/modules/common/src/lib/features/global-search/search.config.ts","../../../../libs/modules/common/src/lib/features/global-search/search-slot.component.ts","../../../../libs/modules/common/src/lib/features/global-search/workflows/search.workflow.ts","../../../../libs/modules/common/src/lib/features/global-search/search.module.ts","../../../../libs/modules/common/src/lib/features/global-search/search.viewmodel.ts","../../../../libs/modules/common/src/lib/common.module.ts","../../../../libs/modules/common/src/lib/widgets-names-list.ts","../../../../libs/modules/common/src/acorex-modules-common.ts"],"sourcesContent":["const config = {\n i18n: 'common',\n};\nexport const RootConfig = {\n config,\n module: {\n module: 'common',\n name: 'Common',\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-light fa-file-invoice',\n },\n entities: {\n\n },\n};\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n\n }\n }\n return null;\n }\n}\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPHomePageService, AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n private homePageService = inject(AXPHomePageService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n //\n const homePagePath = this.homePageService.getCurrent().path;\n if (homePagePath) {\n context.addItems([\n {\n priority: -9,\n text: `t('home',{scope:'common'})`,\n path: homePagePath,\n icon: 'fa-light fa-grid-2',\n data: {\n //requiredPermission: '',\n },\n },\n ]);\n }\n\n context.find('user-profile').addItems([\n {\n text: `t('user.title', {scope: \"settings\"})`,\n name: 'user-settings',\n icon: 'fa-light fa-gear',\n path: `/${this.sessionService.application?.name}/settings/user`,\n },\n ]);\n\n context.addItems([\n {\n name: 'tenant-application-settings',\n priority: 10000,\n text: `t('tenant.title', {scope: \"settings\"})`,\n type: 'menu',\n icon: 'fa-light fa-gear',\n path: `/${appName}/settings/tenant`,\n data: {\n requiredPermission: 'admin',\n },\n },\n ]);\n }\n}\n","import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex/platform/auth';\n\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n // context.addPermissions([\n // {\n // name: 'view_templates',\n // title: 'Permission to view templates',\n // isArchived: false,\n // },\n // ]);\n }\n}\n","import { AXPSearchCommandProvider, AXPSearchResult } from '@acorex/platform/common';\n\nexport class AXMSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n // {\n // group: 'command',\n // title: 'New Form Template',\n // icon: RootConfig.entities.template.icon,\n // description: 'Create a new form template for designing reusable forms.', // Added description\n // commands: {\n // 'create-entity': {\n // entity: `${RootConfig.module.name}.${RootConfig.entities.template.name}`,\n // },\n // },\n // }\n ];\n}\n","import { AXPSettingDefinitionProvider, AXPSettingDefinitionProviderContext } from '@acorex/platform/common';\n\nexport class AXMSettingProvider implements AXPSettingDefinitionProvider {\n async provide(context: AXPSettingDefinitionProviderContext): Promise<void> {\n // context\n // // Add Form Template Group\n // .addGroup('form-template', 'Form Template', 'Settings related to form templates.', RootConfig.module.icon)\n // // Start Interface Section\n // .addSection('interface', 'UI Interface', 'Customize the user interface for forms.')\n // .addSetting({\n // key: 'history-panel',\n // title: 'Show History Panel',\n // scope: 'U',\n // isInherited: true,\n // defaultValue: false,\n // widget: {\n // type: AXPWidgetsCatalog.toggle,\n // },\n // description: 'Enable or disable the history panel for forms.',\n // validationRules: [\n // {\n // rule: 'required',\n // },\n // ],\n // })\n // .endSection()\n // .endGroup();\n }\n}\n","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()\" *translate=\"let t\">\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <i class=\"fa-light fa-search ax-text-xl\"></i>\n <span>{{ t('search-placeholder',{scope:'global-search'}) | async}}</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';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\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 const result = popup.data as AXPSearchDisplayResult;\n if (result && result.command) {\n this.workflow.execute(result.command?.name, result.command?.options);\n }\n }\n }\n}\n\nexport const AXPGlobalSearchWorkflow: AXPWorkflow = {\n startStepId: 'start',\n steps: {\n start: {\n action: 'AXPGlobalSearchStartAction',\n },\n },\n};\n","import { 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';\nimport { AXPAppStartUpService } from '@acorex/platform/core';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from './search.config';\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 {\n provide: AXP_GLOBAL_SEARCH_CONFIG_TOKEN,\n useValue: {\n window: () =>\n import('./search-popup.component').then((c) => c.AXPGlobalSearchPopupComponent),\n },\n },\n ]\n})\nexport class AXPGlobalSearchModule {\n constructor(\n appInitService: AXPAppStartUpService,\n injector: Injector\n ) {\n\n }\n}\n","import { AXPSearchDisplayGroupResult, AXPSearchDisplayResult, AXPSearchService, AXPSettingService } from \"@acorex/platform/common\";\nimport { AXPPlatformScope } from \"@acorex/platform/core\";\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(AXPPlatformScope.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(AXPPlatformScope.User).set(this.settingKeys.recent, this._recentItems().slice(0, 5));\n\n // Save pinned items\n await this.settingService.scope(AXPPlatformScope.User).set(this.settingKeys.pinned, this._pinnedItems().slice(0, 5));\n }\n}\n","import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { NgModule } from '@angular/core';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXMMenuProvider } from './menu.provider';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMSearchCommandProvider } from './search-command.provider';\nimport { AXMSettingProvider } from './settings.provider';\n\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { AXPGlobalSearchModule } from './features/global-search';\n\n@NgModule({\n imports: [AXPGlobalSearchModule, AXPWidgetsModule],\n exports: [],\n declarations: [],\n providers: [\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_SETTING_DEFINITION_PROVIDER,\n useClass: AXMSettingProvider,\n multi: true,\n },\n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMSearchCommandProvider,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n\n ],\n})\nexport class AXMCommonModule { }\n","\nexport const AXPWidgetsList = {\n Editors: {\n DocumentAttachment: 'document-attachment-editor',\n TagBox: 'tagable-editor',\n CheckBox: 'checkbox-editor',\n ColorBox: 'color-editor',\n DateTimeBox: 'date-time-editor',\n LargeTextBox: 'large-text-editor',\n NumberBox: 'number-editor',\n UnitValueBox: 'number-unit-editor',\n PasswordBox: 'password-editor',\n RichText: 'rich-text-editor',\n SelectBox: 'select-editor',\n SelectionList: 'selection-list-editor',\n TextBox: 'text-editor',\n InlineDataTable: 'table-editor',\n ToggleSwitch: 'toggle-editor',\n FileTypeExtension: 'file-type-extension',\n MapBox: 'map',\n MediaGallery: 'gallery',\n SignatureBox: 'signature',\n LookupBox: 'lookup-editor',\n },\n Layouts: {\n BlockLayout: 'block-layout',\n RepeaterLayout: 'repeater-layout',\n TextBlockLayout: 'text-block-layout',\n FormField: 'form-field',\n },\n Actions: {\n ActionButton: 'button-action',\n },\n Advanced: {\n QRCode: 'qrcode',\n },\n Templates: {\n Designer: 'template-designer',\n },\n};\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import { AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
|
|
2
2
|
import { createAllQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXP_HOME_PAGES, AXP_MENU_PROVIDER, AXP_HOME_PAGE_DEFAULT_KEY } from '@acorex/platform/common';
|
3
3
|
import * as i3$1 from '@acorex/platform/layout/builder';
|
4
4
|
import { AXPWidgetsCatalog, AXPValueWidgetComponent, cloneProperty, AXPWidgetGroupEnum, AXPLayoutWidgetComponent, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
|
5
|
-
import { AXMEntityCrudServiceImpl, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
5
|
+
import { AXMEntityCrudServiceImpl, AXPEntityService, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
|
6
6
|
import { AXP_APPEARANCE_PROPERTY_GROUP, AXP_STYLING_PROPERTY_GROUP, AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_BG_COLOR_PROPERTY, plainTextDefaultProperty, AXP_DATA_PROPERTY_GROUP, AXP_COLOR_PROPERTY, AXPWidgetsModule } from '@acorex/platform/widgets';
|
7
7
|
import * as i0 from '@angular/core';
|
8
8
|
import { Injectable, inject, Injector, computed, ChangeDetectionStrategy, Component, ChangeDetectorRef, signal, viewChild, ElementRef, HostListener, output, InjectionToken, effect, HostBinding, NgModule } from '@angular/core';
|
@@ -36,16 +36,16 @@ import { AXCheckBoxModule } from '@acorex/components/check-box';
|
|
36
36
|
import { AXImageModule } from '@acorex/components/image';
|
37
37
|
import { AXLabelModule } from '@acorex/components/label';
|
38
38
|
import { AXTabsModule } from '@acorex/components/tabs';
|
39
|
-
import * as
|
39
|
+
import * as i6 from '@acorex/core/translation';
|
40
40
|
import { AXTranslationModule } from '@acorex/core/translation';
|
41
41
|
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
42
42
|
import { AXPopupService } from '@acorex/components/popup';
|
43
|
+
import { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/modules/common';
|
43
44
|
import { AXPDataGenerator } from '@acorex/platform/core';
|
44
|
-
import { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/platform/layout/search';
|
45
45
|
import { AXPWorkflowService } from '@acorex/platform/workflow';
|
46
46
|
|
47
47
|
const config = {
|
48
|
-
i18n: '
|
48
|
+
i18n: 'dashboard',
|
49
49
|
};
|
50
50
|
const RootConfig = {
|
51
51
|
config,
|
@@ -2244,7 +2244,7 @@ class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
2244
2244
|
return Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
2245
2245
|
}
|
2246
2246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTaskListWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
2247
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPTaskListWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick", taskCompleted: "taskCompleted" }, providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-size-full ax-p-4\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <h3 class=\"ax-text-lg ax-font-semibold\">{{ 'widget.tasklist.title' | translate | async }}</h3>\n <div class=\"ax-flex ax-gap-2\">\n @if(getPendingTaskCount() > 0){\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('widget.tasklist.pending' | translate | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n } @if(getCompletedTaskCount() > 0){\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('widget.tasklist.completed' | translate | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-2\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-3\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-2 ax-h-5\">\n <h4 class=\"ax-font-medium ax-text-gray-700\">{{ category }}</h4>\n @if(getCategoryTaskCount(category)){\n <ax-badge [text]=\"getCategoryTaskCount(category).toString()\" [color]=\"'primary'\" size=\"sm\"></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n } } @else {\n <!-- Uncategorized Tasks -->\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-12 ax-px-4 ax-text-gray-400\">\n <ax-icon class=\"ax-text-4xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center\">{{ 'widget.tasklist.noTasks' | translate | async }}</p>\n </div>\n } }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-py-2 ax-border-b ax-border-gray-100 last:ax-border-0\">\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6\n class=\"ax-font-semibold ax-truncate ax-pb-1\"\n [class.ax-line-through]=\"task.completed\"\n [class.ax-text-gray-400]=\"task.completed\"\n >\n {{ task.title }}\n </h6>\n @if(showPriority() && task.priority) {\n <ax-badge [color]=\"getPriorityColor(task.priority)\" [text]=\"task.priority\" size=\"sm\" class=\"ax-ml-1\"></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-1 ax-text-xs ax-text-gray-500\">\n @if(showDate() && task.dueDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1\" [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\">\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n } @if(showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i3.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type:
|
2247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPTaskListWidgetViewComponent, isStandalone: true, selector: "ng-component", outputs: { taskClick: "taskClick", taskCompleted: "taskCompleted" }, providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-size-full ax-p-4\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <h3 class=\"ax-text-lg ax-font-semibold\">{{ 'widget.tasklist.title' | translate | async }}</h3>\n <div class=\"ax-flex ax-gap-2\">\n @if(getPendingTaskCount() > 0){\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('widget.tasklist.pending' | translate | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n } @if(getCompletedTaskCount() > 0){\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('widget.tasklist.completed' | translate | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-2\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-3\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-2 ax-h-5\">\n <h4 class=\"ax-font-medium ax-text-gray-700\">{{ category }}</h4>\n @if(getCategoryTaskCount(category)){\n <ax-badge [text]=\"getCategoryTaskCount(category).toString()\" [color]=\"'primary'\" size=\"sm\"></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n } } @else {\n <!-- Uncategorized Tasks -->\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-12 ax-px-4 ax-text-gray-400\">\n <ax-icon class=\"ax-text-4xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center\">{{ 'widget.tasklist.noTasks' | translate | async }}</p>\n </div>\n } }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-py-2 ax-border-b ax-border-gray-100 last:ax-border-0\">\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6\n class=\"ax-font-semibold ax-truncate ax-pb-1\"\n [class.ax-line-through]=\"task.completed\"\n [class.ax-text-gray-400]=\"task.completed\"\n >\n {{ task.title }}\n </h6>\n @if(showPriority() && task.priority) {\n <ax-badge [color]=\"getPriorityColor(task.priority)\" [text]=\"task.priority\" size=\"sm\" class=\"ax-ml-1\"></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-1 ax-text-xs ax-text-gray-500\">\n @if(showDate() && task.dueDate) {\n <span class=\"ax-flex ax-items-center ax-gap-1\" [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\">\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n } @if(showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;height:100%;width:100%}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i3.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXImageModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "checked", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
2248
2248
|
}
|
2249
2249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTaskListWidgetViewComponent, decorators: [{
|
2250
2250
|
type: Component,
|
@@ -3531,7 +3531,7 @@ class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {
|
|
3531
3531
|
<span class="ax-text-xl ax-font-semibold">Add Shortcut</span>
|
3532
3532
|
</div>
|
3533
3533
|
}
|
3534
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type:
|
3534
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
3535
3535
|
}
|
3536
3536
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, decorators: [{
|
3537
3537
|
type: Component,
|
@@ -3606,11 +3606,30 @@ const AXPDashboardShortcutWidget = {
|
|
3606
3606
|
class AXMMenuProvider {
|
3607
3607
|
constructor() {
|
3608
3608
|
this.sessionService = inject(AXPSessionService);
|
3609
|
+
this.entityService = inject(AXPEntityService);
|
3609
3610
|
}
|
3610
3611
|
async provide(context) {
|
3611
3612
|
const scope = RootConfig.config.i18n;
|
3612
3613
|
const module = RootConfig.module;
|
3613
3614
|
const appName = this.sessionService.application?.name;
|
3615
|
+
context.addItems([
|
3616
|
+
{
|
3617
|
+
priority: 9001,
|
3618
|
+
text: `t('root-menu', {scope: "${scope}"})`,
|
3619
|
+
icon: RootConfig.module.icon,
|
3620
|
+
data: {
|
3621
|
+
// requiredPermission: 'demo.admin.settings',
|
3622
|
+
},
|
3623
|
+
children: [
|
3624
|
+
{
|
3625
|
+
text: `t('dashboards', {scope: "${scope}"})`,
|
3626
|
+
path: `${this.sessionService.application?.name}/dashboard/management`,
|
3627
|
+
icon: RootConfig.entities.dashboard.icon,
|
3628
|
+
priority: 1,
|
3629
|
+
},
|
3630
|
+
],
|
3631
|
+
},
|
3632
|
+
]);
|
3614
3633
|
const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);
|
3615
3634
|
if (!isAuthorized) {
|
3616
3635
|
return;
|
@@ -3629,7 +3648,13 @@ function routesFactory() {
|
|
3629
3648
|
children: [
|
3630
3649
|
{
|
3631
3650
|
path: 'dashboard',
|
3632
|
-
loadComponent: () => import('./acorex-modules-dashboard-management-home-dashboard-
|
3651
|
+
loadComponent: () => import('./acorex-modules-dashboard-management-home-dashboard-By3lZP-J.mjs').then((c) => c.AXMDashboardHomeComponent),
|
3652
|
+
children: [
|
3653
|
+
{
|
3654
|
+
path: 'management',
|
3655
|
+
loadComponent: () => import('./acorex-modules-dashboard-management-home-dashboard-By3lZP-J.mjs').then((c) => c.AXMDashboardHomeComponent),
|
3656
|
+
},
|
3657
|
+
],
|
3633
3658
|
},
|
3634
3659
|
],
|
3635
3660
|
};
|
@@ -3752,4 +3777,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
|
|
3752
3777
|
*/
|
3753
3778
|
|
3754
3779
|
export { AXMDashboardService as A, RootConfig as R, AXMDashboardManagementModule as a, AXPBarChartWidgetViewComponent as b, AXPBarChartWidget as c, AXP_WIDGETS_CHART_CATEGORY as d, AXP_WIDGETS_UTILITY_CATEGORY as e, AXPClockCalendarWidgetViewComponent as f, AXPClockCalendarWidget as g, AXP_TIMEZONE_OPTIONS as h, AXP_DATE_FORMAT_OPTIONS as i, AXPDonutChartWidgetViewComponent as j, AXPDonutChartWidget as k, AXPGaugeChartWidgetViewComponent as l, AXPGaugeChartWidget as m, AXPLineChartWidgetViewComponent as n, AXPLineChartWidget as o, AXPStickyNoteWidgetViewComponent as p, AXPStickyNoteWidget as q, AXPTaskListWidgetViewComponent as r, AXPTaskListWidget as s, AXPWeatherApiAbstract as t, AXPWeatherApiMockService as u, AXPWeatherApiService as v, AXPWeatherWidgetViewComponent as w, AXPWeatherWidget as x };
|
3755
|
-
//# sourceMappingURL=acorex-modules-dashboard-management-acorex-modules-dashboard-management-
|
3780
|
+
//# sourceMappingURL=acorex-modules-dashboard-management-acorex-modules-dashboard-management-DKGnh_V9.mjs.map
|