@acorex/modules 19.4.3 → 19.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/conversation/README.md +113 -2
  2. package/conversation/index.d.ts +2 -14
  3. package/conversation/lib/const.d.ts +25 -6
  4. package/conversation/lib/conversation.module.d.ts +32 -3
  5. package/conversation/lib/entities/index.d.ts +2 -0
  6. package/conversation/lib/entities/message/index.d.ts +3 -0
  7. package/conversation/lib/entities/message/message.entity.d.ts +3 -0
  8. package/conversation/lib/entities/message/message.service.d.ts +10 -0
  9. package/conversation/lib/entities/message/message.types.d.ts +20 -0
  10. package/conversation/lib/entities/room/index.d.ts +3 -0
  11. package/conversation/lib/entities/room/room.entity.d.ts +3 -0
  12. package/conversation/lib/entities/room/room.service.d.ts +10 -0
  13. package/conversation/lib/entities/room/room.types.d.ts +8 -0
  14. package/conversation/lib/entity.provider.d.ts +12 -0
  15. package/conversation/lib/features/chat/chat-preview.helper.d.ts +68 -0
  16. package/conversation/lib/features/chat/chat.component.d.ts +42 -0
  17. package/conversation/lib/features/chat/chat.service.d.ts +101 -0
  18. package/conversation/lib/features/chat/chat.type.d.ts +38 -0
  19. package/conversation/lib/{entities → features}/chat/components/chat-item/chat-item.component.d.ts +6 -1
  20. package/conversation/lib/{entities → features}/chat/components/chat-preview/chat-preview.component.d.ts +3 -0
  21. package/conversation/lib/features/chat/index.d.ts +5 -0
  22. package/conversation/lib/{entities/comments/pages → features/comment}/comment-list-view.component.d.ts +12 -12
  23. package/conversation/lib/features/comment/comment.service.d.ts +66 -0
  24. package/conversation/lib/features/comment/comment.type.d.ts +45 -0
  25. package/conversation/lib/features/comment/index.d.ts +4 -0
  26. package/conversation/lib/features/index.d.ts +2 -0
  27. package/document-management/lib/entities/folder/folder.types.d.ts +3 -2
  28. package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +5 -2
  29. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +22 -20
  30. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +22 -2
  31. package/document-management/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.d.ts +52 -33
  32. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +52 -33
  33. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +52 -33
  34. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +52 -33
  35. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +52 -33
  36. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +52 -33
  37. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +52 -33
  38. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +52 -33
  39. package/document-management/lib/features/drive/drive.component.d.ts +52 -31
  40. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +49 -28
  41. package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +6 -6
  42. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +21 -2
  43. package/document-management/lib/features/shared/document-manager.service.d.ts +177 -45
  44. package/document-management/lib/features/shared/document-manager.types.d.ts +2 -1
  45. package/document-management/lib/features/shared/index.d.ts +1 -0
  46. package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs +315 -0
  47. package/fesm2022/acorex-modules-application-management-module-designer.component-BJp8imYd.mjs.map +1 -0
  48. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  49. package/fesm2022/acorex-modules-common.mjs +7 -0
  50. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  51. package/fesm2022/acorex-modules-conversation.mjs +2382 -820
  52. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  53. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BpmG6Dyx.mjs → acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs} +1679 -2019
  54. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BATdoqJi.mjs.map +1 -0
  55. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DIF_t4fE.mjs → acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs} +2 -2
  56. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DIF_t4fE.mjs.map → acorex-modules-document-management-attachment-widget.component-C1-gQepw.mjs.map} +1 -1
  57. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs +144 -0
  58. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ZMvsadWt.mjs.map +1 -0
  59. package/fesm2022/{acorex-modules-document-management-details-view.component-D0RIYrHB.mjs → acorex-modules-document-management-details-view.component-CvHIETNf.mjs} +2 -2
  60. package/fesm2022/{acorex-modules-document-management-details-view.component-D0RIYrHB.mjs.map → acorex-modules-document-management-details-view.component-CvHIETNf.mjs.map} +1 -1
  61. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DMAQr0nK.mjs → acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs} +29 -9
  62. package/fesm2022/acorex-modules-document-management-drive-choose.component-UTy9OISj.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-document-management-drive.component-Crh10Z5J.mjs +363 -0
  64. package/fesm2022/acorex-modules-document-management-drive.component-Crh10Z5J.mjs.map +1 -0
  65. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C686Ec7s.mjs → acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs} +2 -2
  66. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-C686Ec7s.mjs.map → acorex-modules-document-management-large-icons-view.component-BuV7MPG5.mjs.map} +1 -1
  67. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-0GpMVYv5.mjs → acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs} +2 -2
  68. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-0GpMVYv5.mjs.map → acorex-modules-document-management-large-tiles-view.component-CwYwVxoG.mjs.map} +1 -1
  69. package/fesm2022/{acorex-modules-document-management-list-view.component-C1inszTC.mjs → acorex-modules-document-management-list-view.component-BHEwRA3m.mjs} +2 -2
  70. package/fesm2022/{acorex-modules-document-management-list-view.component-C1inszTC.mjs.map → acorex-modules-document-management-list-view.component-BHEwRA3m.mjs.map} +1 -1
  71. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B7lgRLHi.mjs → acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs} +2 -2
  72. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-B7lgRLHi.mjs.map → acorex-modules-document-management-permission-definition.provider-B3qaYwRL.mjs.map} +1 -1
  73. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C9k8WgDG.mjs → acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs} +5 -5
  74. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C9k8WgDG.mjs.map → acorex-modules-document-management-rename-node-dialog.component-CrcJm9jP.mjs.map} +1 -1
  75. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BGcUzNCv.mjs → acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs} +2 -2
  76. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-BGcUzNCv.mjs.map → acorex-modules-document-management-small-icons-view.component-CD5UORaq.mjs.map} +1 -1
  77. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CumumWvO.mjs → acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs} +2 -2
  78. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CumumWvO.mjs.map → acorex-modules-document-management-small-tiles-view.component-cpc_xfbT.mjs.map} +1 -1
  79. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  80. package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-ErtEMU89.mjs → acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs} +5 -5
  81. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs.map +1 -0
  82. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-B6k0Zn9C.mjs → acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs} +2 -2
  83. package/fesm2022/{acorex-modules-issue-management-capture-screen.component-B6k0Zn9C.mjs.map → acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs.map} +1 -1
  84. package/fesm2022/acorex-modules-issue-management.mjs +1 -1
  85. package/fesm2022/acorex-modules-notification-management.mjs +5 -5
  86. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  87. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CP8zz-Bc.mjs → acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs} +1 -2
  88. package/fesm2022/acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs.map +1 -0
  89. package/fesm2022/acorex-modules-organization-management.mjs +2 -2
  90. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-C9ZApxct.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs} +326 -87
  91. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DtXOjIIK.mjs.map +1 -0
  92. package/fesm2022/{acorex-modules-platform-management-list-version.component-D50Xundj.mjs → acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs} +2 -2
  93. package/fesm2022/{acorex-modules-platform-management-list-version.component-D50Xundj.mjs.map → acorex-modules-platform-management-list-version.component-DY4yMd8n.mjs.map} +1 -1
  94. package/fesm2022/{acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs → acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs} +2 -2
  95. package/fesm2022/{acorex-modules-platform-management-settings.provider-DsHGn3AZ.mjs.map → acorex-modules-platform-management-settings.provider-BO-1dmVc.mjs.map} +1 -1
  96. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  97. package/fesm2022/acorex-modules-project-management.mjs +108 -0
  98. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  99. package/fesm2022/acorex-modules-settings-management.mjs +20 -21
  100. package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
  101. package/fesm2022/acorex-modules-training-management.mjs +1 -1
  102. package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
  103. package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs +305 -0
  104. package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs.map +1 -0
  105. package/fesm2022/acorex-modules-workflow-management.mjs +123 -0
  106. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -0
  107. package/package.json +20 -16
  108. package/platform-management/lib/task-board.provider.d.ts +14 -0
  109. package/project-management/lib/task-board.provider.d.ts +14 -0
  110. package/settings-management/lib/settings-management.module.d.ts +1 -1
  111. package/workflow-management/README.md +3 -0
  112. package/workflow-management/index.d.ts +2 -0
  113. package/workflow-management/lib/const.d.ts +11 -0
  114. package/workflow-management/lib/features/task-board/index.d.ts +2 -0
  115. package/workflow-management/lib/features/task-board/settings.keys.d.ts +5 -0
  116. package/workflow-management/lib/features/task-board/task-board.module.d.ts +6 -0
  117. package/workflow-management/lib/features/task-board/task-board.page.d.ts +76 -0
  118. package/workflow-management/lib/features/task-board/task-board.service.d.ts +13 -0
  119. package/workflow-management/lib/features/task-board/task-board.viewmodel.d.ts +20 -0
  120. package/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.page.d.ts +25 -0
  121. package/workflow-management/lib/workflow-management.module.d.ts +8 -0
  122. package/conversation/lib/entities/chat/chat.module.d.ts +0 -28
  123. package/conversation/lib/entities/chat/chat.service.d.ts +0 -14
  124. package/conversation/lib/entities/chat/chat.type.d.ts +0 -22
  125. package/conversation/lib/entities/chat/components/chat-item-footer/chat-item-footer.component.d.ts +0 -5
  126. package/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.d.ts +0 -12
  127. package/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.d.ts +0 -7
  128. package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +0 -23
  129. package/conversation/lib/entities/comments/comment.module.d.ts +0 -26
  130. package/conversation/lib/entities/comments/comments.service.d.ts +0 -13
  131. package/conversation/lib/entities/comments/comments.type.d.ts +0 -74
  132. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-column.component.d.ts +0 -6
  133. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +0 -212
  134. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-print.component.d.ts +0 -6
  135. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-view.component.d.ts +0 -6
  136. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget.config.d.ts +0 -7
  137. package/document-management/lib/features/widgets/document-attachment/index.d.ts +0 -5
  138. package/document-management/lib/features/widgets/index.d.ts +0 -1
  139. package/fesm2022/acorex-modules-application-management-module-designer.component-BRh6mzWA.mjs +0 -315
  140. package/fesm2022/acorex-modules-application-management-module-designer.component-BRh6mzWA.mjs.map +0 -1
  141. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BpmG6Dyx.mjs.map +0 -1
  142. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-CCvKUDsw.mjs +0 -141
  143. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-CCvKUDsw.mjs.map +0 -1
  144. package/fesm2022/acorex-modules-document-management-drive-choose.component-DMAQr0nK.mjs.map +0 -1
  145. package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-ErtEMU89.mjs.map +0 -1
  146. package/fesm2022/acorex-modules-organization-management-org-chart.page-CP8zz-Bc.mjs.map +0 -1
  147. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-C9ZApxct.mjs.map +0 -1
  148. /package/conversation/lib/{entities/comments/pages → features/comment}/comment-lookup-popup.component.d.ts +0 -0
@@ -0,0 +1,315 @@
1
+ import * as i7 from '@acorex/components/badge';
2
+ import { AXBadgeModule } from '@acorex/components/badge';
3
+ import * as i6 from '@acorex/components/button';
4
+ import { AXButtonModule } from '@acorex/components/button';
5
+ import * as i6$1 from '@acorex/components/collapse';
6
+ import { AXCollapseModule } from '@acorex/components/collapse';
7
+ import * as i2$1 from '@acorex/components/decorators';
8
+ import { AXDecoratorModule } from '@acorex/components/decorators';
9
+ import * as i2 from '@acorex/components/drawer';
10
+ import { AXDrawerModule } from '@acorex/components/drawer';
11
+ import * as i8$1 from '@acorex/components/menu';
12
+ import { AXMenuModule } from '@acorex/components/menu';
13
+ import { AXPopoverModule } from '@acorex/components/popover';
14
+ import { AXSelectionListModule } from '@acorex/components/selection-list';
15
+ import { AXSideMenuModule } from '@acorex/components/side-menu';
16
+ import * as i8 from '@acorex/core/translation';
17
+ import { AXTranslationModule } from '@acorex/core/translation';
18
+ import { AXPEntityDeletedEvent, AXPEntityCreateEvent } from '@acorex/platform/layout/entity';
19
+ import { AXPWorkflowService, ofType } from '@acorex/platform/workflow';
20
+ import * as i1 from '@angular/common';
21
+ import { CommonModule } from '@angular/common';
22
+ import * as i0 from '@angular/core';
23
+ import { inject, signal, Injectable, ChangeDetectorRef, viewChild, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
24
+ import * as i2$2 from '@angular/router';
25
+ import { RouterModule } from '@angular/router';
26
+ import { set } from 'lodash-es';
27
+ import { Subject, takeUntil } from 'rxjs';
28
+ import { AXPModuleDesignerService } from './acorex-modules-application-management.mjs';
29
+
30
+ class AXMModuleDesignerContextMenuService {
31
+ constructor() {
32
+ this.workflow = inject(AXPWorkflowService);
33
+ this.copiedRecord = signal(null);
34
+ this.elementData = signal(null);
35
+ this.menuItems = [
36
+ {
37
+ name: 'create',
38
+ text: 'Create',
39
+ icon: 'fas fa-plus',
40
+ color: 'primary',
41
+ },
42
+ {
43
+ name: 'delete',
44
+ text: 'Delete',
45
+ icon: 'fas fa-trash',
46
+ color: 'danger',
47
+ },
48
+ {
49
+ name: 'details',
50
+ text: 'Details',
51
+ icon: 'fas fa-eye',
52
+ color: 'default',
53
+ },
54
+ {
55
+ name: 'copy',
56
+ text: 'Copy',
57
+ icon: 'fas fa-copy',
58
+ color: 'default',
59
+ },
60
+ {
61
+ name: 'paste',
62
+ text: 'Paste',
63
+ icon: 'fas fa-paste',
64
+ color: 'default',
65
+ disabled: false,
66
+ },
67
+ ];
68
+ }
69
+ open(e) {
70
+ const target = e.targetElement;
71
+ const elementType = target?.getAttribute('data-elementType');
72
+ const { data } = target;
73
+ if (elementType == 'module' || elementType == 'subModule') {
74
+ const moduleId = target?.getAttribute('data-moduleId');
75
+ const entityType = target?.getAttribute('data-entityType');
76
+ if (elementType == 'module') {
77
+ this.elementData.set({
78
+ entityType,
79
+ moduleId: moduleId,
80
+ record: {
81
+ id: moduleId,
82
+ },
83
+ });
84
+ e.items = this.getMenuItems(['details', 'delete']);
85
+ }
86
+ else {
87
+ this.elementData.set({
88
+ entityType,
89
+ moduleId: moduleId,
90
+ record: undefined,
91
+ });
92
+ const items = this.getMenuItems(['create', 'paste']);
93
+ const customMenuItems = items.map((i) => i.name == 'paste' ? { ...i, disabled: entityType == this.copiedRecord()?.type ? false : true } : i);
94
+ e.items = customMenuItems;
95
+ }
96
+ }
97
+ else if (elementType == 'subModuleItem') {
98
+ this.elementData.set(data);
99
+ e.items = this.getMenuItems(['delete', 'copy', 'details']);
100
+ }
101
+ else {
102
+ e.items = [];
103
+ e.canceled = true;
104
+ }
105
+ }
106
+ itemClick(e) {
107
+ if (this.elementData()) {
108
+ switch (e.item.name) {
109
+ case 'create':
110
+ this.createEntity(this.elementData()?.entityType, this.elementData()?.moduleId);
111
+ break;
112
+ case 'details':
113
+ this.showDetails(this.elementData()?.entityType, this.elementData()?.record.id);
114
+ break;
115
+ case 'delete':
116
+ this.deleteEntity(this.elementData()?.entityType, this.elementData()?.record.id, this.elementData()?.moduleId);
117
+ break;
118
+ case 'copy':
119
+ this.copyRecord(this.elementData()?.entityType, this.elementData()?.record);
120
+ break;
121
+ case 'paste':
122
+ this.pasteRecord(this.elementData()?.moduleId);
123
+ break;
124
+ default:
125
+ break;
126
+ }
127
+ }
128
+ }
129
+ async createEntity(entityType, moduleId) {
130
+ await this.workflow.execute('create-module-entity', {
131
+ entity: `application-management.${entityType}`,
132
+ data: {
133
+ moduleId,
134
+ },
135
+ meta: {
136
+ type: entityType,
137
+ moduleId,
138
+ },
139
+ });
140
+ }
141
+ async showDetails(entityType, id) {
142
+ await this.workflow.execute('show-module-entity-details', {
143
+ entity: `application-management.${entityType}`,
144
+ data: {
145
+ id,
146
+ },
147
+ });
148
+ }
149
+ copyRecord(entityType, record) {
150
+ const newRecord = { ...record, moduleId: undefined, id: undefined };
151
+ this.copiedRecord.set({ type: entityType, record: newRecord });
152
+ }
153
+ async pasteRecord(moduleId) {
154
+ if (this.copiedRecord()) {
155
+ await this.workflow.execute('create-module-entity', {
156
+ entity: `application-management.${this.copiedRecord()?.type}`,
157
+ data: {
158
+ ...this.copiedRecord()?.record,
159
+ moduleId,
160
+ },
161
+ meta: {
162
+ type: this.copiedRecord()?.type,
163
+ moduleId,
164
+ },
165
+ });
166
+ }
167
+ }
168
+ async deleteEntity(entityType, id, moduleId) {
169
+ await this.workflow.execute('delete-entity', {
170
+ entity: `application-management.${entityType}`,
171
+ data: {
172
+ id,
173
+ },
174
+ meta: {
175
+ moduleId,
176
+ type: entityType,
177
+ },
178
+ });
179
+ }
180
+ getMenuItems(includeItems) {
181
+ return this.menuItems.filter((i) => includeItems.includes(i.name));
182
+ }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMModuleDesignerContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
184
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMModuleDesignerContextMenuService, providedIn: 'root' }); }
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMModuleDesignerContextMenuService, decorators: [{
187
+ type: Injectable,
188
+ args: [{
189
+ providedIn: 'root',
190
+ }]
191
+ }] });
192
+
193
+ class AXMModuleDesignerComponent {
194
+ constructor() {
195
+ this.cdr = inject(ChangeDetectorRef);
196
+ this.contextMenu = viewChild('contextMenu');
197
+ this.dataProvider = inject(AXPModuleDesignerService);
198
+ this.workflow = inject(AXPWorkflowService);
199
+ this.contextMenuService = inject(AXMModuleDesignerContextMenuService);
200
+ this.modules = signal([]);
201
+ this.moduleDataCache = new Map();
202
+ this.destroyed = new Subject();
203
+ this.subscribeActionEvents();
204
+ }
205
+ ngOnInit() {
206
+ this.loadModules();
207
+ }
208
+ subscribeActionEvents() {
209
+ this.workflow.events$
210
+ .pipe(ofType(AXPEntityDeletedEvent, AXPEntityCreateEvent))
211
+ .pipe(takeUntil(this.destroyed))
212
+ .subscribe((event) => {
213
+ const { meta } = event.payload;
214
+ if (meta.type === 'module') {
215
+ this.loadModules();
216
+ }
217
+ else {
218
+ this.loadModuleData(meta.moduleId, meta.type, true);
219
+ }
220
+ this.cdr.markForCheck();
221
+ });
222
+ }
223
+ async loadModules() {
224
+ try {
225
+ const modules = await this.dataProvider.getModules();
226
+ this.modules.set(modules.items);
227
+ this.refreshContextMenu();
228
+ }
229
+ catch (error) {
230
+ console.error('Error loading modules:', error);
231
+ }
232
+ }
233
+ async handleCollapseItemClick(moduleId, e, dataType) {
234
+ if (e.component.isCollapsed) {
235
+ e.handled = true;
236
+ e.component.isLoading = true;
237
+ await this.loadModuleData(moduleId, dataType);
238
+ e.component.toggle();
239
+ e.component.isLoading = false;
240
+ e.component['cdr'].markForCheck();
241
+ this.refreshContextMenu();
242
+ }
243
+ }
244
+ refreshContextMenu() {
245
+ setTimeout(() => {
246
+ this.contextMenu()?.refresh();
247
+ }, 0);
248
+ }
249
+ async loadModuleData(moduleId, dataType, hardReload = false) {
250
+ const cacheKey = `${moduleId}-${dataType}`;
251
+ let dataItems = this.moduleDataCache.get(cacheKey);
252
+ // if (!dataItems || hardReload) {
253
+ try {
254
+ const methodMap = {
255
+ entity: this.dataProvider.getEntities,
256
+ permission: this.dataProvider.getPermissions,
257
+ feature: this.dataProvider.getFeatures,
258
+ };
259
+ const data = await methodMap[dataType].call(this.dataProvider, moduleId);
260
+ dataItems = data.items;
261
+ this.moduleDataCache.set(cacheKey, dataItems);
262
+ }
263
+ catch (error) {
264
+ console.error(`Error loading ${dataType}:`, error);
265
+ }
266
+ // }
267
+ }
268
+ getEntities(moduleId) {
269
+ return this.moduleDataCache.get(`${moduleId}-entity`) || [];
270
+ }
271
+ getPermissions(moduleId) {
272
+ return this.moduleDataCache.get(`${moduleId}-permission`) || [];
273
+ }
274
+ getFeatures(moduleId) {
275
+ return this.moduleDataCache.get(`${moduleId}-feature`) || [];
276
+ }
277
+ openingContextMenu(e) {
278
+ this.contextMenuService.open(e);
279
+ }
280
+ handleActionClick(e) {
281
+ this.contextMenuService.itemClick(e);
282
+ }
283
+ createModule() {
284
+ this.contextMenuService.createEntity('module');
285
+ }
286
+ destroy() {
287
+ this.destroyed.next();
288
+ this.destroyed.complete();
289
+ }
290
+ assignData(target, data) {
291
+ set(target, 'data', data);
292
+ }
293
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMModuleDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.10", type: AXMModuleDesignerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["contextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\" ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\">\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse class=\"ctx\" icon=\"fas fa-folder ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\"\n look=\"none\" data-elementType=\"module\" [attr.data-moduleId]=\"m.id\" data-entityType=\"module\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse class=\"ctx\" icon=\"fas fa-box ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"entity\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-star ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"feature\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-key ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"permission\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\" (onClick)=\"createModule()\"\n look=\"solid\" color=\"primary\">\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n\n <div #d (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"ctx ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\">\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge [look]=\"'twotone'\" [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\">\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu #contextMenu (onItemClick)=\"handleActionClick($event)\" [items]=\"[]\" [target]=\"'.ctx'\"\n [orientation]=\"'vertical'\" [closeOn]=\"'leave'\" (onOpening)=\"openingContextMenu($event)\">\n</ax-context-menu>", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\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: AXDrawerModule }, { kind: "component", type: i2.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "closeOthers", "collapsed"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i2.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.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: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.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: AXTranslationModule }, { kind: "pipe", type: i8.AXTranslatorPipe, name: "translate" }, { kind: "ngmodule", type: AXSideMenuModule }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i6$1.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i6$1.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i8$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
295
+ }
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AXMModuleDesignerComponent, decorators: [{
297
+ type: Component,
298
+ args: [{ encapsulation: ViewEncapsulation.None, imports: [
299
+ CommonModule,
300
+ AXDrawerModule,
301
+ AXButtonModule,
302
+ AXDecoratorModule,
303
+ AXTranslationModule,
304
+ AXSideMenuModule,
305
+ AXCollapseModule,
306
+ AXPopoverModule,
307
+ AXSelectionListModule,
308
+ AXBadgeModule,
309
+ AXMenuModule,
310
+ RouterModule,
311
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\" ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\">\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse class=\"ctx\" icon=\"fas fa-folder ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\"\n look=\"none\" data-elementType=\"module\" [attr.data-moduleId]=\"m.id\" data-entityType=\"module\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse class=\"ctx\" icon=\"fas fa-box ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"entity\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-star ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"feature\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-key ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"permission\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\" (onClick)=\"createModule()\"\n look=\"solid\" color=\"primary\">\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n\n <div #d (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"ctx ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\">\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge [look]=\"'twotone'\" [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\">\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu #contextMenu (onItemClick)=\"handleActionClick($event)\" [items]=\"[]\" [target]=\"'.ctx'\"\n [orientation]=\"'vertical'\" [closeOn]=\"'leave'\" (onOpening)=\"openingContextMenu($event)\">\n</ax-context-menu>", styles: [".ax-collapse-header{padding:.25rem .5rem!important}.ax-collapse-header:hover{border-radius:.375rem;--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.ax-collapse-header:hover:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.ax-collapse-body-content{padding:.25rem!important;padding-inline-start:0!important}\n"] }]
312
+ }], ctorParameters: () => [] });
313
+
314
+ export { AXMModuleDesignerComponent };
315
+ //# sourceMappingURL=acorex-modules-application-management-module-designer.component-BJp8imYd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-application-management-module-designer.component-BJp8imYd.mjs","sources":["../../../../libs/modules/application-management/src/lib/services/context-menu.service.ts","../../../../libs/modules/application-management/src/lib/module-designer/module-designer.component.ts","../../../../libs/modules/application-management/src/lib/module-designer/module-designer.component.html"],"sourcesContent":["import { AXContextMenuItemsClickEvent, AXContextMenuOpeningEvent, AXMenuItem } from '@acorex/components/menu';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { AXMModuleItem } from '../module-designer/module-designer.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMModuleDesignerContextMenuService {\n private workflow = inject(AXPWorkflowService);\n protected copiedRecord = signal<{ type: AXMModuleItem; record: any } | null>(null);\n protected elementData = signal<{ entityType: AXMModuleItem; record: any; moduleId: string } | null>(null);\n\n private menuItems: AXMenuItem[] = [\n {\n name: 'create',\n text: 'Create',\n icon: 'fas fa-plus',\n color: 'primary',\n },\n {\n name: 'delete',\n text: 'Delete',\n icon: 'fas fa-trash',\n color: 'danger',\n },\n {\n name: 'details',\n text: 'Details',\n icon: 'fas fa-eye',\n color: 'default',\n },\n {\n name: 'copy',\n text: 'Copy',\n icon: 'fas fa-copy',\n color: 'default',\n },\n {\n name: 'paste',\n text: 'Paste',\n icon: 'fas fa-paste',\n color: 'default',\n disabled: false,\n },\n ];\n\n open(e: AXContextMenuOpeningEvent) {\n const target = e.targetElement;\n const elementType = target?.getAttribute('data-elementType');\n\n const { data } = target as any;\n\n if (elementType == 'module' || elementType == 'subModule') {\n const moduleId = target?.getAttribute('data-moduleId');\n const entityType = target?.getAttribute('data-entityType') as AXMModuleItem;\n if (elementType == 'module') {\n this.elementData.set({\n entityType,\n moduleId: moduleId as string,\n record: {\n id: moduleId,\n },\n });\n e.items = this.getMenuItems(['details', 'delete']);\n } else {\n this.elementData.set({\n entityType,\n moduleId: moduleId as string,\n record: undefined,\n });\n const items = this.getMenuItems(['create', 'paste']);\n const customMenuItems = items.map((i) =>\n i.name == 'paste' ? { ...i, disabled: entityType == this.copiedRecord()?.type ? false : true } : i\n );\n e.items = customMenuItems;\n }\n } else if (elementType == 'subModuleItem') {\n this.elementData.set(data);\n e.items = this.getMenuItems(['delete', 'copy', 'details']);\n } else {\n e.items = [];\n e.canceled = true;\n }\n }\n\n itemClick(e: AXContextMenuItemsClickEvent) {\n if (this.elementData()) {\n switch (e.item.name) {\n case 'create':\n this.createEntity(this.elementData()?.entityType as AXMModuleItem, this.elementData()?.moduleId);\n break;\n\n case 'details':\n this.showDetails(this.elementData()?.entityType as AXMModuleItem | 'module', this.elementData()?.record.id);\n break;\n\n case 'delete':\n this.deleteEntity(\n this.elementData()?.entityType as AXMModuleItem | 'module',\n this.elementData()?.record.id,\n this.elementData()?.moduleId\n );\n break;\n\n case 'copy':\n this.copyRecord(this.elementData()?.entityType as AXMModuleItem, this.elementData()?.record);\n break;\n\n case 'paste':\n this.pasteRecord(this.elementData()?.moduleId as string);\n break;\n\n default:\n break;\n }\n }\n }\n\n async createEntity(entityType: 'module' | AXMModuleItem, moduleId?: string) {\n await this.workflow.execute('create-module-entity', {\n entity: `application-management.${entityType}`,\n data: {\n moduleId,\n },\n meta: {\n type: entityType,\n moduleId,\n },\n });\n }\n\n async showDetails(entityType: 'module' | AXMModuleItem, id: string) {\n await this.workflow.execute('show-module-entity-details', {\n entity: `application-management.${entityType}`,\n data: {\n id,\n },\n });\n }\n\n private copyRecord(entityType: AXMModuleItem, record: any) {\n const newRecord = { ...record, moduleId: undefined, id: undefined };\n this.copiedRecord.set({ type: entityType, record: newRecord });\n }\n\n private async pasteRecord(moduleId: string) {\n if (this.copiedRecord()) {\n await this.workflow.execute('create-module-entity', {\n entity: `application-management.${this.copiedRecord()?.type}`,\n data: {\n ...this.copiedRecord()?.record,\n moduleId,\n },\n meta: {\n type: this.copiedRecord()?.type,\n moduleId,\n },\n });\n }\n }\n\n private async deleteEntity(entityType: 'module' | AXMModuleItem, id: string[] | string, moduleId?: string) {\n await this.workflow.execute('delete-entity', {\n entity: `application-management.${entityType}`,\n data: {\n id,\n },\n meta: {\n moduleId,\n type: entityType,\n },\n });\n }\n\n private getMenuItems(includeItems: string[]) {\n return this.menuItems.filter((i) => includeItems.includes(i.name as string));\n }\n}\n","import { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCollapseClickEvent, AXCollapseModule } from '@acorex/components/collapse';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport {\n AXContextMenuComponent,\n AXContextMenuItemsClickEvent,\n AXContextMenuOpeningEvent,\n AXMenuModule,\n} from '@acorex/components/menu';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXSelectionListModule } from '@acorex/components/selection-list';\nimport { AXSideMenuModule } from '@acorex/components/side-menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPEntityCreateEvent, AXPEntityDeletedEvent } from '@acorex/platform/layout/entity';\nimport { AXPWorkflowService, ofType } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n OnInit,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { set } from 'lodash-es';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXMModuleDesignerContextMenuService } from '../services/context-menu.service';\nimport { AXPModuleDesignerService } from './module-designer.service';\nimport { AXMModuleItem } from './module-designer.type';\n\n@Component({\n templateUrl: './module-designer.component.html',\n styleUrls: ['./module-designer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXDrawerModule,\n AXButtonModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXSideMenuModule,\n AXCollapseModule,\n AXPopoverModule,\n AXSelectionListModule,\n AXBadgeModule,\n AXMenuModule,\n RouterModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMModuleDesignerComponent implements OnInit {\n protected cdr: ChangeDetectorRef = inject(ChangeDetectorRef);\n protected contextMenu = viewChild<AXContextMenuComponent>('contextMenu');\n\n protected dataProvider = inject(AXPModuleDesignerService);\n private workflow = inject(AXPWorkflowService);\n protected contextMenuService = inject(AXMModuleDesignerContextMenuService);\n\n protected modules = signal<any[]>([]);\n\n protected moduleDataCache = new Map<string, any[]>();\n\n private readonly destroyed = new Subject<void>();\n\n constructor() {\n this.subscribeActionEvents();\n }\n\n ngOnInit() {\n this.loadModules();\n }\n\n protected subscribeActionEvents() {\n this.workflow.events$\n .pipe(ofType(AXPEntityDeletedEvent, AXPEntityCreateEvent))\n .pipe(takeUntil(this.destroyed))\n .subscribe((event) => {\n const { meta } = event.payload;\n if (meta.type === 'module') {\n this.loadModules();\n } else {\n this.loadModuleData(meta.moduleId, meta.type, true);\n }\n this.cdr.markForCheck();\n });\n }\n\n protected async loadModules() {\n try {\n const modules = await this.dataProvider.getModules();\n this.modules.set(modules.items);\n this.refreshContextMenu();\n } catch (error) {\n console.error('Error loading modules:', error);\n }\n }\n\n protected async handleCollapseItemClick(moduleId: string, e: AXCollapseClickEvent, dataType: AXMModuleItem) {\n if (e.component.isCollapsed) {\n e.handled = true;\n e.component.isLoading = true;\n\n await this.loadModuleData(moduleId, dataType);\n\n e.component.toggle();\n e.component.isLoading = false;\n e.component['cdr'].markForCheck();\n this.refreshContextMenu();\n }\n }\n\n protected refreshContextMenu() {\n setTimeout(() => {\n this.contextMenu()?.refresh();\n }, 0);\n }\n\n protected async loadModuleData(moduleId: string, dataType: AXMModuleItem, hardReload = false) {\n const cacheKey = `${moduleId}-${dataType}`;\n\n let dataItems = this.moduleDataCache.get(cacheKey);\n // if (!dataItems || hardReload) {\n try {\n const methodMap = {\n entity: this.dataProvider.getEntities,\n permission: this.dataProvider.getPermissions,\n feature: this.dataProvider.getFeatures,\n };\n const data = await methodMap[dataType].call(this.dataProvider, moduleId);\n\n dataItems = data.items as any[];\n this.moduleDataCache.set(cacheKey, dataItems);\n } catch (error) {\n console.error(`Error loading ${dataType}:`, error);\n }\n // }\n }\n\n protected getEntities(moduleId: string) {\n return this.moduleDataCache.get(`${moduleId}-entity`) || [];\n }\n\n protected getPermissions(moduleId: string) {\n return this.moduleDataCache.get(`${moduleId}-permission`) || [];\n }\n\n protected getFeatures(moduleId: string) {\n return this.moduleDataCache.get(`${moduleId}-feature`) || [];\n }\n\n protected openingContextMenu(e: AXContextMenuOpeningEvent) {\n this.contextMenuService.open(e);\n }\n\n protected handleActionClick(e: AXContextMenuItemsClickEvent) {\n this.contextMenuService.itemClick(e);\n }\n\n protected createModule() {\n this.contextMenuService.createEntity('module');\n }\n\n protected destroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n\n protected assignData(target: HTMLElement, data: any): void {\n set(target, 'data', data);\n }\n}\n","<ax-drawer-container class=\"ax-overflow-hidden\">\n <ax-drawer #drawer location=\"start\" [collapsed]=\"false\" [mode]=\"'push'\">\n <ax-content class=\" ax-w-80 ax-relative ax-border-e ax-px-4 ax-py-2\">\n <div class=\"ax-overflow-auto ax-h-[calc(100vh-180px)]\">\n <span class=\"ax-font-bold ax-text-xl\">{{ 'designer.modules' | translate | async }}</span>\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n @if(modules().length){\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n @for(m of modules();track $index){\n <ax-collapse class=\"ctx\" icon=\"fas fa-folder ax-text-warning\" [isCollapsed]=\"true\" [caption]=\"m.title\"\n look=\"none\" data-elementType=\"module\" [attr.data-moduleId]=\"m.id\" data-entityType=\"module\">\n <div class=\"ax-mx-3\">\n <ax-collapse-group [accordion]=\"false\" look=\"blank\">\n <ax-collapse class=\"ctx\" icon=\"fas fa-box ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'entity')\"\n [caption]=\"('designer.entities' | translate | async) ?? 'Entities'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"entity\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'entity', items: getEntities(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-star ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'feature')\"\n [caption]=\"('designer.features' | translate | async) ?? 'Features'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"feature\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'feature', items: getFeatures(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n\n <ax-collapse class=\"ctx\" icon=\"fas fa-key ax-text-neutral-400\" [isCollapsed]=\"true\"\n (onClick)=\"handleCollapseItemClick(m.id, $event, 'permission')\"\n [caption]=\"('designer.permissions' | translate | async) ?? 'Permissions'\" look=\"none\"\n data-elementType=\"subModule\" [attr.data-moduleId]=\"m.id\" data-entityType=\"permission\">\n <ng-container [ngTemplateOutlet]=\"childTemplate\" [ngTemplateOutletContext]=\"{\n $implicit: { type: 'permission', items: getPermissions(m.id), moduleId: m.id }\n }\"></ng-container>\n </ax-collapse>\n </ax-collapse-group>\n </div>\n </ax-collapse>\n }\n </ax-collapse-group>\n } @else {\n <div class=\"ax-h-full ax-flex ax-items-center ax-justify-center\">\n <span class=\"ax-text-neutral-500 ax-text-sm\">{{ 'designer.emptyModulesText' | translate | async }}</span>\n </div>\n }\n </div>\n <ax-button class=\"ax-absolute ax-bottom-4 ax-w-72\"\n [text]=\"('designer.createModule' | translate | async) ?? 'Create New Module'\" (onClick)=\"createModule()\"\n look=\"solid\" color=\"primary\">\n <ax-icon class=\"fas fa-plus\"> </ax-icon>\n </ax-button>\n </div>\n </ax-content>\n\n <ng-template #childTemplate let-child>\n <div class=\"ax-flex ax-flex-col ax-cursor-pointer ax-select-none ax-border-s ax-ms-[14px] ax-ps-2\">\n @for (item of child.items; track $index) {\n\n <div #d (click)=\"contextMenuService.showDetails(child.type, item.id)\"\n class=\"ctx ax-px-2 ax-py-1 ax-flex ax-items-center ax-justify-between hover:ax-bg-neutral-100 dark:hover:ax-bg-neutral-700 hover:ax-rounded-md\"\n data-elementType=\"subModuleItem\">\n {{ assignData(d, { record: item, entityType: child.type, moduleId: child.moduleId }) }}\n <span>{{ item.title }}</span>\n <ax-badge [look]=\"'twotone'\" [color]=\"item.isArchived ? 'danger' : 'success'\"\n [text]=\"item.isArchived ? 'Off' : 'On'\">\n </ax-badge>\n </div>\n }\n </div>\n </ng-template>\n </ax-drawer>\n <ax-content>\n <router-outlet></router-outlet>\n </ax-content>\n</ax-drawer-container>\n\n<ax-context-menu #contextMenu (onItemClick)=\"handleActionClick($event)\" [items]=\"[]\" [target]=\"'.ctx'\"\n [orientation]=\"'vertical'\" [closeOn]=\"'leave'\" (onOpening)=\"openingContextMenu($event)\">\n</ax-context-menu>"],"names":["i3","i4","i6","i8","i9"],"mappings":"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"}
@@ -93,7 +93,7 @@ const AXMApplcationManagementroutes = [
93
93
  children: [
94
94
  {
95
95
  path: 'module-designer',
96
- loadComponent: () => import('./acorex-modules-application-management-module-designer.component-BRh6mzWA.mjs').then((c) => c.AXMModuleDesignerComponent),
96
+ loadComponent: () => import('./acorex-modules-application-management-module-designer.component-BJp8imYd.mjs').then((c) => c.AXMModuleDesignerComponent),
97
97
  children: [
98
98
  {
99
99
  path: 'm/:module',
@@ -109,6 +109,13 @@ class AXMMenuProvider {
109
109
  requiredPermission: 'admin',
110
110
  },
111
111
  },
112
+ {
113
+ name: 'task-board',
114
+ text: `Task Board`,
115
+ type: 'menu',
116
+ icon: 'fa-light fa-list-check',
117
+ path: `/${appName}/task-board`,
118
+ },
112
119
  ]);
113
120
  }
114
121
  }
@@ -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/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 { 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';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\n\n@NgModule({\n imports: [\n AXPComponentSlotModule.forChild({\n 'root-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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"}
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","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 name: 'task-board',\n text: `Task Board`,\n type: 'menu',\n icon: 'fa-light fa-list-check',\n path: `/${appName}/task-board`,\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 { 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';\nimport { AXPComponentSlotModule } from '@acorex/platform/layout/components';\n\n@NgModule({\n imports: [\n AXPComponentSlotModule.forChild({\n 'root-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, AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { inject, 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 { Routes, ROUTES } from '@angular/router';\nimport { AXPGlobalSearchModule } from './features/global-search';\n\n\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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"}