@acorex/modules 20.0.4 → 20.0.6

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 (66) hide show
  1. package/conversation/index.d.ts +157 -217
  2. package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs} +2 -2
  3. package/fesm2022/{acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map → acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map} +1 -1
  4. package/fesm2022/acorex-modules-application-management.mjs +1 -1
  5. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs} +9 -9
  6. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map → acorex-modules-auth-acorex-modules-auth-Cj4td3eM.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs → acorex-modules-auth-app-chooser.component-C60idNYx.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map → acorex-modules-auth-app-chooser.component-C60idNYx.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs → acorex-modules-auth-login.module-siRdi16m.mjs} +4 -4
  10. package/fesm2022/{acorex-modules-auth-login.module-eC1_ukrb.mjs.map → acorex-modules-auth-login.module-siRdi16m.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs → acorex-modules-auth-master.layout-BJCAe5Ai.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-auth-master.layout-DpfqRgAl.mjs.map → acorex-modules-auth-master.layout-BJCAe5Ai.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs → acorex-modules-auth-password.component-6-EEsfc2.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-auth-password.component-DAB9dWB8.mjs.map → acorex-modules-auth-password.component-6-EEsfc2.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-auth-password.component-rE9yrcGW.mjs → acorex-modules-auth-password.component-VhDUmkMc.mjs} +3 -3
  16. package/fesm2022/acorex-modules-auth-password.component-VhDUmkMc.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs → acorex-modules-auth-routes-BwBn4o81.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-auth-routes-EGvejNu9.mjs.map → acorex-modules-auth-routes-BwBn4o81.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map → acorex-modules-auth-two-factor.module-D7NgZHmC.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map → acorex-modules-auth-user-sessions.component-DhlBCxly.mjs.map} +1 -1
  23. package/fesm2022/acorex-modules-auth.mjs +1 -1
  24. package/fesm2022/acorex-modules-conversation.mjs +1762 -1568
  25. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  26. package/fesm2022/acorex-modules-dashboard-management.mjs +9 -9
  27. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  28. package/fesm2022/acorex-modules-notification-management.mjs +3 -3
  29. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
  31. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs → acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs} +6 -6
  32. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-Dfux0tkB.mjs.map +1 -0
  33. package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-platform-management-list-version.component-DidjxkmH.mjs.map → acorex-modules-platform-management-list-version.component-CSNKxghv.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs → acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs} +35 -25
  36. package/fesm2022/acorex-modules-platform-management-settings.provider-C4RaOgkr.mjs.map +1 -0
  37. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  38. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs +589 -0
  39. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CtEDcg_B.mjs.map +1 -0
  40. package/fesm2022/acorex-modules-report-management.mjs +208 -0
  41. package/fesm2022/acorex-modules-report-management.mjs.map +1 -0
  42. package/fesm2022/acorex-modules-security-management.mjs +582 -72
  43. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  44. package/fesm2022/{acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs → acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs} +2 -2
  45. package/fesm2022/acorex-modules-workflow-management-task-board.page-Bugxqd0W.mjs.map +1 -0
  46. package/fesm2022/acorex-modules-workflow-management.mjs +1 -1
  47. package/package.json +5 -1
  48. package/report-management/README.md +356 -0
  49. package/report-management/index.d.ts +39 -0
  50. package/security-management/index.d.ts +162 -2
  51. package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +0 -1
  52. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs.map +0 -1
  53. package/fesm2022/acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs.map +0 -1
  54. package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs +0 -218
  55. package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +0 -1
  56. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs +0 -41
  57. package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +0 -1
  58. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs +0 -20
  59. package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +0 -1
  60. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs +0 -51
  61. package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +0 -1
  62. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs +0 -21
  63. package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs +0 -20
  65. package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +0 -1
  66. package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map +0 -1
@@ -1,42 +1,17 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { OnInit, OnDestroy, ElementRef, Injector } from '@angular/core';
3
- import * as i19 from '@acorex/components/tabs';
4
- import { AXTabsComponent } from '@acorex/components/tabs';
5
- import * as _acorex_platform_core from '@acorex/platform/core';
6
- import { AXPContent, AXPUserReference, AXPEntityReference, AXPContentType, AXPQueryRequest, AXPPagedListResult } from '@acorex/platform/core';
2
+ import { Injector, OnInit, OnDestroy } from '@angular/core';
3
+ import * as i1 from '@angular/router';
4
+ import { AXPEntity } from '@acorex/platform/common';
7
5
  import { AXPEntityModel, AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
8
- import * as i9 from '@acorex/components/conversation';
9
- import { AXConversationActionEvent } from '@acorex/components/conversation';
6
+ import { AXPContent, AXPUserReference, AXPEntityReference, AXPBackButton, AXPContentType, AXPQueryRequest, AXPPagedListResult } from '@acorex/platform/core';
7
+ import { AXTabsComponent, AXTabStripChangedEvent } from '@acorex/components/tabs';
8
+ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';
9
+ import { Observable } from 'rxjs';
10
+ import { AXConversationMessage, AXConversationActionEvent, AXConversationMenuOpeningEvent } from '@acorex/components/conversation';
10
11
  import * as _angular_platform_browser from '@angular/platform-browser';
11
12
  import { DomSanitizer } from '@angular/platform-browser';
12
- import * as i22 from '@acorex/components/wysiwyg';
13
13
  import { AXWysiwygContainerComponent } from '@acorex/components/wysiwyg';
14
14
  import { AXStyleLookType } from '@acorex/cdk/common';
15
- import * as i5 from '@angular/common';
16
- import * as i6 from '@angular/forms';
17
- import * as i7 from '@angular/router';
18
- import * as i8 from '@acorex/core/format';
19
- import * as i10 from '@acorex/components/comment';
20
- import * as i11 from '@acorex/core/translation';
21
- import * as i12 from '@acorex/cdk/resizable';
22
- import * as i13 from '@acorex/components/image';
23
- import * as i14 from '@acorex/components/avatar';
24
- import * as i15 from '@acorex/components/badge';
25
- import * as i16 from '@acorex/components/decorators';
26
- import * as i17 from '@acorex/components/text-box';
27
- import * as i18 from '@acorex/components/search-box';
28
- import * as i20 from '@acorex/components/button';
29
- import * as i21 from '@acorex/components/loading';
30
- import * as i23 from '@acorex/components/label';
31
- import * as i24 from '@acorex/components/select-box';
32
- import * as i25 from '@acorex/components/form';
33
- import * as i26 from '@acorex/components/dropdown-button';
34
- import * as i27 from '@acorex/components/dropdown';
35
- import * as i28 from '@acorex/components/toolbar';
36
- import * as i29 from '@acorex/components/skeleton';
37
- import * as i30 from '@acorex/platform/layout/views';
38
- import * as i31 from '@acorex/platform/layout/components';
39
- import { AXPEntity } from '@acorex/platform/common';
40
15
  import { AXBasePageComponent } from '@acorex/components/page';
41
16
  import { AXPWidgetNode, AXPLayoutWidgetComponent, AXPWidgetConfig } from '@acorex/platform/layout/builder';
42
17
 
@@ -67,6 +42,14 @@ declare const RootConfig: {
67
42
  };
68
43
  };
69
44
 
45
+ declare class AXMConversationModule {
46
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMConversationModule, never>;
47
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMConversationModule, never, never, [typeof i1.RouterModule]>;
48
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMConversationModule>;
49
+ }
50
+
51
+ declare function messageFactory(injector: Injector): Promise<AXPEntity | null>;
52
+
70
53
  type AXMSeenType = 'delivered' | 'read';
71
54
  type AXMReactionType = 'like' | 'love' | 'laugh' | 'angry' | 'sad' | string;
72
55
  interface AXMConversationReaction {
@@ -82,10 +65,21 @@ interface AXMConversationMessage extends AXPEntityModel<string> {
82
65
  message: AXPContent;
83
66
  author: AXPUserReference;
84
67
  replyId?: string | null;
85
- reactions?: AXMConversationReaction[];
86
- seen?: AXMConversationSeen[];
68
+ reactions: AXMConversationReaction[];
69
+ seen: AXMConversationSeen[];
70
+ isPinned?: boolean;
87
71
  }
88
72
 
73
+ declare abstract class AXMMessageService extends AXMEntityCrudServiceImpl<string, AXMConversationMessage> {
74
+ }
75
+ declare class AXMMessageServiceImpl extends AXMMessageService {
76
+ constructor();
77
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMessageServiceImpl, never>;
78
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMessageServiceImpl>;
79
+ }
80
+
81
+ declare function roomFactory(injector: Injector): Promise<AXPEntity | null>;
82
+
89
83
  interface AXMConversationRoom extends AXPEntityModel<string> {
90
84
  title?: string;
91
85
  members: AXPUserReference[];
@@ -93,24 +87,18 @@ interface AXMConversationRoom extends AXPEntityModel<string> {
93
87
  topic?: 'support' | 'group' | 'channel' | 'personal' | string;
94
88
  }
95
89
 
96
- /**
97
- * Extended user interface for chat members with UI-specific properties
98
- */
99
- interface AXMChatMember {
100
- id: string;
101
- firstName: string;
102
- lastName: string;
103
- fullName: string;
104
- avatar?: string;
105
- isOnline?: boolean;
90
+ declare abstract class AXMRoomService extends AXMEntityCrudServiceImpl<string, AXMConversationRoom> {
106
91
  }
92
+ declare class AXMRoomServiceImpl extends AXMRoomService {
93
+ constructor();
94
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRoomServiceImpl, never>;
95
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMRoomServiceImpl>;
96
+ }
97
+
107
98
  /**
108
99
  * Extended message interface for chat messages with UI-specific properties
109
100
  */
110
101
  interface AXMChatMessage extends AXMConversationMessage {
111
- isFromCurrentUser?: boolean;
112
- formattedDate?: string;
113
- hasSeen?: boolean;
114
102
  }
115
103
  /**
116
104
  * Extended room interface for chat rooms with UI-specific properties
@@ -118,23 +106,18 @@ interface AXMChatMessage extends AXMConversationMessage {
118
106
  interface AXMChatRoom extends AXMConversationRoom {
119
107
  lastMessage?: AXMChatMessage;
120
108
  unreadCount: number;
121
- roomMembers: AXMChatMember[];
122
- }
123
- /**
124
- * Data transfer object for creating a new chat message
125
- */
126
- interface AXMCreateChatMessageDto {
127
- roomId: string;
128
- content: string;
129
- contentType?: string;
130
- replyId?: string | null;
131
109
  }
132
110
 
133
- declare class AXMChatComponent implements OnInit {
134
- private route;
135
- private router;
111
+ declare class AXMChatComponent extends AXPPageLayoutBaseComponent implements OnInit, OnDestroy {
112
+ private activatedRoute;
136
113
  private chatService;
114
+ private userService;
115
+ private popupService;
116
+ private router;
117
+ private unsubscribe;
118
+ private messageSentSubscription?;
137
119
  tab: _angular_core.Signal<AXTabsComponent | undefined>;
120
+ container: _angular_core.Signal<AXPPageLayoutComponent | undefined>;
138
121
  rooms: _angular_core.WritableSignal<AXMChatRoom[]>;
139
122
  allRooms: _angular_core.WritableSignal<AXMChatRoom[]>;
140
123
  selectedRoom: _angular_core.WritableSignal<AXMChatRoom | null>;
@@ -145,79 +128,158 @@ declare class AXMChatComponent implements OnInit {
145
128
  searchQuery: _angular_core.WritableSignal<string>;
146
129
  showSearch: _angular_core.WritableSignal<boolean>;
147
130
  placeholder: _angular_core.WritableSignal<string>;
148
- filteredRooms: _angular_core.Signal<AXMChatRoom[]>;
131
+ filteredRooms: _angular_core.WritableSignal<AXMChatRoom[]>;
132
+ searchEffect: _angular_core.EffectRef;
149
133
  unreadCount: _angular_core.Signal<number>;
150
134
  allCount: _angular_core.Signal<number>;
151
135
  hasUnread: _angular_core.Signal<boolean>;
152
136
  totalCount: _angular_core.Signal<number>;
153
- constructor();
137
+ af: _angular_core.AfterRenderRef;
138
+ onTabChange(event: AXTabStripChangedEvent): void;
154
139
  ngOnInit(): Promise<void>;
155
- getPageTitle(): string;
140
+ private loadFromRoute;
141
+ getPageTitle(): Promise<string>;
156
142
  getPageDescription(): string;
157
- getMenuItems(): any[];
143
+ getBackButton(): Promise<AXPBackButton | null>;
144
+ onBackButtonClick(): void | Promise<void>;
158
145
  loadChats(): Promise<void>;
159
146
  refreshChat(): Promise<void>;
160
147
  markChatAsRead(chatId: string): Promise<void>;
161
148
  searchChat(query: string): void;
162
- goBack(): void;
163
149
  onSearch(query: string): void;
164
150
  clearSearch(): void;
165
- onNewConversation(): void;
166
- emitBack(): void;
151
+ onNewConversation(): Promise<void>;
167
152
  ngOnDestroy(): void;
168
153
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatComponent, never>;
169
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatComponent, "axm-chat", never, {}, {}, never, never, false, never>;
154
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatComponent, "axm-chat", never, {}, {}, never, never, true, never>;
155
+ }
156
+
157
+ declare abstract class AXMChatService {
158
+ abstract createRoom(memberIds: string[], title?: string): Promise<AXMChatRoom>;
159
+ abstract getRoom(roomId: string): Promise<AXMChatRoom>;
160
+ abstract listRooms(skip?: number, take?: number): Promise<{
161
+ items: AXMChatRoom[];
162
+ total: number;
163
+ }>;
164
+ abstract updateRoom(roomId: string, data: Partial<AXMConversationRoom>): Promise<AXMConversationRoom>;
165
+ abstract deleteRoom(roomId: string): Promise<boolean>;
166
+ abstract addParticipant(roomId: string, userId: string): Promise<AXMConversationRoom>;
167
+ abstract removeParticipant(roomId: string, userId: string): Promise<AXMConversationRoom>;
168
+ abstract sendMessage(roomId: string, content: string, contentType?: AXPContentType, replyId?: string): Promise<AXMChatMessage>;
169
+ abstract getMessages(roomId: string, skip?: number, take?: number): Promise<{
170
+ items: AXMChatMessage[];
171
+ total: number;
172
+ }>;
173
+ abstract getMessage(messageId: string): Promise<AXMChatMessage>;
174
+ abstract editMessage(messageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
175
+ abstract deleteMessage(messageId: string): Promise<boolean>;
176
+ abstract replyMessage(replyToMessageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
177
+ abstract pinMessage(messageId: string): Promise<AXMConversationMessage>;
178
+ abstract unpinMessage(messageId: string): Promise<AXMConversationMessage>;
179
+ abstract addReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
180
+ abstract removeReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
181
+ abstract getReactions(messageId: string): Promise<AXMConversationReaction[]>;
182
+ abstract markSeen(messageId: string): Promise<AXMConversationMessage>;
183
+ abstract getSeenBy(messageId: string): Promise<AXMConversationSeen[]>;
184
+ abstract markRoomSeen(roomId: string): Promise<boolean>;
185
+ abstract readonly messageSent$: Observable<AXMChatMessage>;
186
+ }
187
+ declare class AXMChatServiceImpl implements AXMChatService {
188
+ private readonly roomService;
189
+ private readonly messageService;
190
+ private readonly sessionService;
191
+ private readonly usersService;
192
+ private readonly _messageSent$;
193
+ readonly messageSent$: Observable<AXMChatMessage>;
194
+ private getCurrentUser;
195
+ private getUserInfo;
196
+ private formatMessage;
197
+ private getUnreadCount;
198
+ createRoom(memberIds: string[], title?: string): Promise<AXMChatRoom>;
199
+ getRoom(roomId: string): Promise<AXMChatRoom>;
200
+ listRooms(skip?: number, take?: number): Promise<{
201
+ items: AXMChatRoom[];
202
+ total: number;
203
+ }>;
204
+ updateRoom(roomId: string, data: Partial<AXMConversationRoom>): Promise<AXMConversationRoom>;
205
+ deleteRoom(roomId: string): Promise<boolean>;
206
+ addParticipant(roomId: string, userId: string): Promise<AXMConversationRoom>;
207
+ removeParticipant(roomId: string, userId: string): Promise<AXMConversationRoom>;
208
+ sendMessage(roomId: string, content: string, contentType?: AXPContentType, replyId?: string): Promise<AXMChatMessage>;
209
+ getMessages(roomId: string, skip?: number, take?: number): Promise<{
210
+ items: AXMChatMessage[];
211
+ total: number;
212
+ }>;
213
+ getMessage(messageId: string): Promise<AXMChatMessage>;
214
+ editMessage(messageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
215
+ deleteMessage(messageId: string): Promise<boolean>;
216
+ replyMessage(replyToMessageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
217
+ pinMessage(messageId: string): Promise<AXMConversationMessage>;
218
+ unpinMessage(messageId: string): Promise<AXMConversationMessage>;
219
+ addReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
220
+ removeReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
221
+ getReactions(messageId: string): Promise<AXMConversationReaction[]>;
222
+ markSeen(messageId: string): Promise<AXMConversationMessage>;
223
+ getSeenBy(messageId: string): Promise<AXMConversationSeen[]>;
224
+ markRoomSeen(roomId: string): Promise<boolean>;
225
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatServiceImpl, never>;
226
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatServiceImpl>;
170
227
  }
171
228
 
172
229
  declare class AXMChatItemComponent {
230
+ #private;
173
231
  data: _angular_core.InputSignal<AXMChatRoom>;
174
232
  pressChatItem: _angular_core.OutputEmitterRef<string>;
175
233
  private sessionService;
176
- private router;
177
- private activatedRoute;
178
- protected fullName: _angular_core.Signal<string>;
179
- protected lastMessage: _angular_core.Signal<string>;
180
- protected lastMessageDate: _angular_core.Signal<string>;
234
+ private userService;
235
+ private datePipe;
236
+ protected chatName: _angular_core.WritableSignal<{
237
+ fullName: string;
238
+ id: string;
239
+ }>;
240
+ protected formattedLastMessageDate: _angular_core.Signal<string | null>;
241
+ protected lastMessage: _angular_core.Signal<{
242
+ content: string;
243
+ contentType: string;
244
+ }>;
181
245
  protected hasUnread: _angular_core.Signal<boolean>;
182
246
  protected unreadCount: _angular_core.Signal<string>;
183
- protected isOnline: _angular_core.Signal<boolean>;
184
- protected myId: string | undefined;
185
- protected extractInitials(name: string): string;
186
247
  protected onPressChatItem(id: string): void;
187
248
  protected messageSeenStatus(): string;
188
249
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatItemComponent, never>;
189
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, false, never>;
250
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, true, never>;
190
251
  }
191
252
 
192
- declare class AXMChatPreviewComponent implements OnDestroy {
193
- private elRef;
253
+ declare class AXMChatPreviewComponent {
194
254
  private activatedRoute;
195
255
  private fileService;
196
256
  private chatService;
257
+ private sessionService;
258
+ private toastService;
259
+ protected chatData: _angular_core.WritableSignal<AXConversationMessage[]>;
260
+ protected isEditing: _angular_core.WritableSignal<boolean>;
261
+ protected editId: _angular_core.WritableSignal<string | null>;
262
+ protected height: _angular_core.WritableSignal<number>;
263
+ protected isLoading: _angular_core.WritableSignal<boolean>;
264
+ protected error: _angular_core.WritableSignal<string | null>;
265
+ protected setHeight(height: number): void;
197
266
  protected options: _angular_core.WritableSignal<{
198
267
  disabled: boolean;
199
268
  readonly: boolean;
200
269
  value: string;
201
270
  }>;
202
- protected conversationViewMaxHeight: _angular_core.WritableSignal<string>;
203
- private resizeObserver;
204
- private initialTextAreaHeight;
205
- private textareaHeight;
206
- private messageId;
207
- constructor(elRef: ElementRef);
208
- protected dynamicHeight: _angular_core.Signal<string>;
209
- ngOnDestroy(): void;
271
+ protected roomId: string;
272
+ ngOnInit(): void;
210
273
  handleFileChange(event: any): void;
211
274
  handleCancelRecord(event: any): void;
212
275
  handleEndRecord(event: any): void;
213
276
  handleOnSend(e: any): void;
214
277
  handleOnAction(e: AXConversationActionEvent): void;
215
278
  scrollToEnd(): void;
216
- addMockMessage(): void;
217
279
  loadMessages(roomId: string): Promise<void>;
218
- loadDemoMessages(): void;
280
+ protected addItemHandler(e: AXConversationMenuOpeningEvent): void;
219
281
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatPreviewComponent, never>;
220
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatPreviewComponent, "axm-chat-preview", never, {}, {}, never, never, false, never>;
282
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMChatPreviewComponent, "axm-chat-preview", never, {}, {}, never, never, true, never>;
221
283
  }
222
284
 
223
285
  /**
@@ -322,135 +384,13 @@ declare class AXMCommentListViewComponent implements OnInit {
322
384
  scrollMain(): void;
323
385
  calcDefrenetTime(date: Date | undefined): number | undefined;
324
386
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMCommentListViewComponent, never>;
325
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMCommentListViewComponent, "axm-comment-list-view", never, {}, {}, never, never, false, never>;
326
- }
327
-
328
- declare class AXMConversationModule {
329
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMConversationModule, never>;
330
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXMConversationModule, [typeof AXMChatComponent, typeof AXMChatItemComponent, typeof AXMChatPreviewComponent, typeof AXMCommentListViewComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i7.RouterModule, typeof i8.AXFormatModule, typeof i9.AXConversationModule, typeof i10.AXCommentModule, typeof i11.AXTranslationModule, typeof i12.AXResizableDirective, typeof i13.AXImageModule, typeof i14.AXAvatarModule, typeof i15.AXBadgeModule, typeof i16.AXDecoratorModule, typeof i17.AXTextBoxModule, typeof i18.AXSearchBoxModule, typeof i19.AXTabsModule, typeof i20.AXButtonModule, typeof i21.AXLoadingModule, typeof i22.AXWysiwygModule, typeof i23.AXLabelModule, typeof i24.AXSelectBoxModule, typeof i25.AXFormModule, typeof i26.AXDropdownButtonModule, typeof i27.AXDropdownModule, typeof i28.AXToolBarModule, typeof i29.AXSkeletonModule, typeof i30.AXPPageLayoutComponent, typeof i31.AXPThemeLayoutBlockComponent, typeof i31.AXPThemeLayoutStartSideComponent, typeof i31.AXPThemeLayoutHeaderComponent, typeof i31.AXPThemeLayoutToolbarComponent], [typeof AXMChatItemComponent, typeof AXMChatPreviewComponent, typeof AXMCommentListViewComponent, typeof i7.RouterModule]>;
331
- static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXMConversationModule>;
332
- }
333
-
334
- declare function messageFactory(injector: Injector): Promise<AXPEntity | null>;
335
-
336
- declare abstract class AXMMessageService extends AXMEntityCrudServiceImpl<string, AXMConversationMessage> {
337
- }
338
- declare class AXMMessageServiceImpl extends AXMMessageService {
339
- constructor();
340
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMMessageServiceImpl, never>;
341
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMMessageServiceImpl>;
342
- }
343
-
344
- declare function roomFactory(injector: Injector): Promise<AXPEntity | null>;
345
-
346
- declare abstract class AXMRoomService extends AXMEntityCrudServiceImpl<string, AXMConversationRoom> {
347
- }
348
- declare class AXMRoomServiceImpl extends AXMRoomService {
349
- constructor();
350
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMRoomServiceImpl, never>;
351
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMRoomServiceImpl>;
352
- }
353
-
354
- /**
355
- * Abstract Chat Service defining the contract for chat functionality
356
- */
357
- declare abstract class AXMChatService {
358
- /**
359
- * Get all chat rooms available to the current user
360
- */
361
- abstract getAllChatRooms(skip?: number, take?: number): Promise<{
362
- items: AXMChatRoom[];
363
- total: number;
364
- }>;
365
- /**
366
- * Get details of a specific chat room
367
- */
368
- abstract getChatRoom(roomId: string): Promise<AXMChatRoom>;
369
- /**
370
- * Get messages for a specific chat room
371
- */
372
- abstract getChatMessages(roomId: string, skip?: number, take?: number): Promise<{
373
- items: AXMChatMessage[];
374
- total: number;
375
- }>;
376
- /**
377
- * Send a message to a chat room
378
- */
379
- abstract sendMessage(roomId: string, content: string, contentType?: AXPContentType, replyId?: string): Promise<AXMConversationMessage>;
380
- /**
381
- * Mark all messages in a chat room as read
382
- */
383
- abstract markChatAsRead(roomId: string): Promise<boolean>;
384
- /**
385
- * Edit an existing message
386
- */
387
- abstract editMessage(messageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
388
- /**
389
- * Delete a message
390
- */
391
- abstract deleteMessage(messageId: string): Promise<boolean>;
392
- /**
393
- * Create a new conversation with specified members
394
- */
395
- abstract createNewConversation(memberIds: string[]): Promise<AXMChatRoom>;
396
- /**
397
- * Add a reaction to a message
398
- */
399
- abstract addReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
400
- /**
401
- * Remove a reaction from a message
402
- */
403
- abstract removeReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
404
- /**
405
- * Add a member to a chat room
406
- */
407
- abstract addRoomMember(roomId: string, userId: string): Promise<AXMConversationRoom>;
408
- /**
409
- * Remove a member from a chat room
410
- */
411
- abstract removeRoomMember(roomId: string, memberId: string): Promise<AXMConversationRoom>;
412
- }
413
- declare class AXMChatServiceImpl implements AXMChatService {
414
- private readonly roomService;
415
- private readonly messageService;
416
- private readonly sessionService;
417
- private readonly usersService;
418
- private getCurrentUser;
419
- private getUserInfo;
420
- private formatMessage;
421
- private formatMember;
422
- getRoomList(skip?: number, take?: number): Promise<_acorex_platform_core.AXPPagedListResult<AXMConversationRoom>>;
423
- getRoomDetails(roomId: string): Promise<AXMConversationRoom>;
424
- createRoom(roomData: Omit<AXMConversationRoom, 'id'>): Promise<string>;
425
- addRoomMember(roomId: string, userId: string): Promise<AXMConversationRoom>;
426
- removeRoomMember(roomId: string, memberId: string): Promise<AXMConversationRoom>;
427
- deleteRoom(roomId: string): Promise<void>;
428
- listMessages(roomId: string, skip?: number, take?: number): Promise<_acorex_platform_core.AXPPagedListResult<AXMConversationMessage>>;
429
- sendMessage(roomId: string, content: string, contentType?: AXPContentType, replyId?: string): Promise<AXMConversationMessage>;
430
- editMessage(messageId: string, content: string, contentType?: AXPContentType): Promise<AXMConversationMessage>;
431
- deleteMessage(messageId: string): Promise<boolean>;
432
- markAsSeen(messageId: string): Promise<AXMConversationMessage>;
433
- addReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
434
- removeReaction(messageId: string, type: AXMReactionType): Promise<AXMConversationMessage>;
435
- markChatAsRead(roomId: string): Promise<boolean>;
436
- getUnreadCount(roomId: string): Promise<number>;
437
- getChatRoom(roomId: string): Promise<AXMChatRoom>;
438
- getAllChatRooms(skip?: number, take?: number): Promise<{
439
- items: AXMChatRoom[];
440
- total: number;
441
- }>;
442
- getChatMessages(roomId: string, skip?: number, take?: number): Promise<{
443
- items: AXMChatMessage[];
444
- total: number;
445
- }>;
446
- createNewConversation(memberIds: string[]): Promise<AXMChatRoom>;
447
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMChatServiceImpl, never>;
448
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMChatServiceImpl>;
387
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMCommentListViewComponent, "axm-comment-list-view", never, {}, {}, never, never, true, never>;
449
388
  }
450
389
 
451
390
  declare class AXMCommentLookupPopup extends AXBasePageComponent {
452
391
  protected lookupNode: AXPWidgetNode;
453
- context: {};
392
+ protected titleNode: AXPWidgetNode;
393
+ context: _angular_core.WritableSignal<any>;
454
394
  handleClose(): void;
455
395
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMCommentLookupPopup, never>;
456
396
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMCommentLookupPopup, "ng-component", never, {}, {}, never, never, true, never>;
@@ -582,4 +522,4 @@ declare class AXMCommentWidgetViewComponent extends AXPLayoutWidgetComponent imp
582
522
  declare const AXPCommentWidget: AXPWidgetConfig;
583
523
 
584
524
  export { AXMChatComponent, AXMChatItemComponent, AXMChatPreviewComponent, AXMChatService, AXMChatServiceImpl, AXMCommentListViewComponent, AXMCommentLookupPopup, AXMCommentService, AXMCommentServiceImpl, AXMCommentWidgetViewComponent, AXMConversationModule, AXMMessageService, AXMMessageServiceImpl, AXMRoomService, AXMRoomServiceImpl, AXPCommentWidget, RootConfig, messageFactory, roomFactory };
585
- export type { AXMChatMember, AXMChatMessage, AXMChatRoom, AXMCommentMessage, AXMCommentRoom, AXMCommentUser, AXMConversationMessage, AXMConversationReaction, AXMConversationRoom, AXMConversationSeen, AXMCreateChatMessageDto, AXMCreateCommentDto, AXMReactionType, AXMSeenType };
525
+ export type { AXMChatMessage, AXMChatRoom, AXMCommentMessage, AXMCommentRoom, AXMCommentUser, AXMConversationMessage, AXMConversationReaction, AXMConversationRoom, AXMConversationSeen, AXMCreateCommentDto, AXMReactionType, AXMSeenType };
@@ -291,7 +291,7 @@ class AXMModuleDesignerComponent {
291
291
  set(target, 'data', data);
292
292
  }
293
293
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMModuleDesignerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", 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", "text", "look"] }, { 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 }); }
294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", 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
295
  }
296
296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMModuleDesignerComponent, decorators: [{
297
297
  type: Component,
@@ -312,4 +312,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
312
312
  }], ctorParameters: () => [] });
313
313
 
314
314
  export { AXMModuleDesignerComponent };
315
- //# sourceMappingURL=acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map
315
+ //# sourceMappingURL=acorex-modules-application-management-module-designer.component-oGgCaUDu.mjs.map