@acorex-platform/module-meeting-management-client 0.0.21

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.
@@ -0,0 +1,126 @@
1
+ const AXPMeetingManagementMenuKeys = {
2
+ Root: 'meeting-management:menu',
3
+ Meetings: 'meeting-management:menu:meetings',
4
+ MeetingTypes: 'meeting-management:menu:meeting-types',
5
+ MeetingRoleTypes: 'meeting-management:menu:meeting-role-types',
6
+ };
7
+
8
+ /**
9
+ * Collaboration capabilities used by this module.
10
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
11
+ */
12
+ const AXPCollaborationPermissionKeys = {
13
+ Access: 'Collaboration:Permission:Access',
14
+ MaintainConversations: 'Collaboration:Permission:MaintainConversations',
15
+ MaintainMeetings: 'Collaboration:Permission:MaintainMeetings',
16
+ MaintainCalendars: 'Collaboration:Permission:MaintainCalendars',
17
+ MaintainCommunications: 'Collaboration:Permission:MaintainCommunications',
18
+ MaintainReservations: 'Collaboration:Permission:MaintainReservations',
19
+ MaintainHelpDesk: 'Collaboration:Permission:MaintainHelpDesk',
20
+ Setup: 'Collaboration:Permission:Setup',
21
+ };
22
+ const maintainMeetings = AXPCollaborationPermissionKeys.MaintainMeetings;
23
+ const setup = AXPCollaborationPermissionKeys.Setup;
24
+ function meetingEntityCrud() {
25
+ return {
26
+ Management: maintainMeetings,
27
+ View: maintainMeetings,
28
+ Edit: maintainMeetings,
29
+ Delete: maintainMeetings,
30
+ Create: maintainMeetings,
31
+ };
32
+ }
33
+ function setupEntityCrud() {
34
+ return {
35
+ Management: setup,
36
+ View: setup,
37
+ Edit: setup,
38
+ Delete: setup,
39
+ Create: setup,
40
+ };
41
+ }
42
+ /**
43
+ * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.
44
+ * Legacy nested shape kept so existing imports compile during migration.
45
+ */
46
+ const AXMPermissionsKeys = {
47
+ MeetingManagement: {
48
+ Management: maintainMeetings,
49
+ Meetings: meetingEntityCrud(),
50
+ MeetingParticipants: meetingEntityCrud(),
51
+ MeetingRoleTypes: setupEntityCrud(),
52
+ MeetingTypes: setupEntityCrud(),
53
+ MeetingFiles: meetingEntityCrud(),
54
+ },
55
+ };
56
+
57
+ const config = {
58
+ i18n: 'meeting-management',
59
+ };
60
+ const RootConfig = {
61
+ config,
62
+ module: {
63
+ name: 'MeetingManagement',
64
+ title: '@meeting-management:module.title',
65
+ icon: 'fa-light fa-calendar-days',
66
+ },
67
+ entities: {
68
+ meeting: {
69
+ name: 'Meeting',
70
+ title: '@meeting-management:meetings.terms.title',
71
+ titlePlural: '@meeting-management:meetings.terms.plural',
72
+ icon: 'fa-light fa-calendar-check',
73
+ },
74
+ meetingParticipant: {
75
+ name: 'MeetingParticipant',
76
+ title: '@meeting-management:meetings.meeting-participants.title',
77
+ titlePlural: '@meeting-management:meetings.meeting-participants.plural',
78
+ icon: 'fa-light fa-user-group',
79
+ },
80
+ meetingRoleType: {
81
+ name: 'MeetingRoleType',
82
+ title: '@meeting-management:meetings.meeting-role-types.title',
83
+ titlePlural: '@meeting-management:meetings.meeting-role-types.plural',
84
+ icon: 'fa-light fa-id-badge',
85
+ },
86
+ meetingType: {
87
+ name: 'MeetingType',
88
+ title: '@meeting-management:meetings.meeting-types.title',
89
+ titlePlural: '@meeting-management:meetings.meeting-types.plural',
90
+ icon: 'fa-light fa-list',
91
+ },
92
+ meetingFiles: {
93
+ name: 'MeetingFiles',
94
+ title: '@meeting-management:meeting-files.entities.meeting-file.title',
95
+ titlePlural: '@meeting-management:meeting-files.entities.meeting-file.plural',
96
+ icon: 'fa-light fa-folder-open',
97
+ },
98
+ meetingSession: {
99
+ name: 'MeetingSession',
100
+ title: '@meeting-management:meetings.meeting-sessions.title',
101
+ titlePlural: '@meeting-management:meetings.meeting-sessions.plural',
102
+ icon: 'fa-light fa-clock',
103
+ },
104
+ meetingTypeFileTemplate: {
105
+ name: 'MeetingTypeFileTemplate',
106
+ title: '@meeting-management:meetings.meeting-type-file-templates.title',
107
+ titlePlural: '@meeting-management:meetings.meeting-type-file-templates.plural',
108
+ icon: 'fa-light fa-file-lines',
109
+ },
110
+ meetingSchedule: {
111
+ name: 'MeetingSchedule',
112
+ title: '@meeting-management:meeting-schedule.individual-title',
113
+ titlePlural: '@meeting-management:meeting-schedule.plural-title',
114
+ icon: 'fa-light fa-calendar-week',
115
+ },
116
+ },
117
+ };
118
+
119
+ //#region ---- Contracts barrel ----
120
+
121
+ /**
122
+ * Generated bundle index. Do not edit.
123
+ */
124
+
125
+ export { AXMPermissionsKeys, AXPCollaborationPermissionKeys, AXPMeetingManagementMenuKeys, RootConfig };
126
+ //# sourceMappingURL=acorex-platform-module-meeting-management-client-contracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-meeting-management-client-contracts.mjs","sources":["../../../../libs/modules/meeting-management/contracts/src/menu.keys.ts","../../../../libs/modules/meeting-management/contracts/src/permission.keys.ts","../../../../libs/modules/meeting-management/contracts/src/root-config.ts","../../../../libs/modules/meeting-management/contracts/src/index.ts","../../../../libs/modules/meeting-management/contracts/src/acorex-platform-module-meeting-management-client-contracts.ts"],"sourcesContent":["export const AXPMeetingManagementMenuKeys = {\n Root: 'meeting-management:menu',\n Meetings: 'meeting-management:menu:meetings',\n MeetingTypes: 'meeting-management:menu:meeting-types',\n MeetingRoleTypes: 'meeting-management:menu:meeting-role-types',\n} as const;\n\n","/**\n * Collaboration capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n */\nexport const AXPCollaborationPermissionKeys = {\n Access: 'Collaboration:Permission:Access',\n MaintainConversations: 'Collaboration:Permission:MaintainConversations',\n MaintainMeetings: 'Collaboration:Permission:MaintainMeetings',\n MaintainCalendars: 'Collaboration:Permission:MaintainCalendars',\n MaintainCommunications: 'Collaboration:Permission:MaintainCommunications',\n MaintainReservations: 'Collaboration:Permission:MaintainReservations',\n MaintainHelpDesk: 'Collaboration:Permission:MaintainHelpDesk',\n Setup: 'Collaboration:Permission:Setup',\n} as const;\n\nconst maintainMeetings = AXPCollaborationPermissionKeys.MaintainMeetings;\nconst setup = AXPCollaborationPermissionKeys.Setup;\n\nfunction meetingEntityCrud() {\n return {\n Management: maintainMeetings,\n View: maintainMeetings,\n Edit: maintainMeetings,\n Delete: maintainMeetings,\n Create: maintainMeetings,\n } as const;\n}\n\nfunction setupEntityCrud() {\n return {\n Management: setup,\n View: setup,\n Edit: setup,\n Delete: setup,\n Create: setup,\n } as const;\n}\n\n/**\n * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n MeetingManagement: {\n Management: maintainMeetings,\n Meetings: meetingEntityCrud(),\n MeetingParticipants: meetingEntityCrud(),\n MeetingRoleTypes: setupEntityCrud(),\n MeetingTypes: setupEntityCrud(),\n MeetingFiles: meetingEntityCrud(),\n },\n} as const;\n","const config = {\n i18n: 'meeting-management',\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: 'MeetingManagement',\n title: '@meeting-management:module.title',\n icon: 'fa-light fa-calendar-days',\n },\n entities: {\n meeting: {\n name: 'Meeting',\n title: '@meeting-management:meetings.terms.title',\n titlePlural: '@meeting-management:meetings.terms.plural',\n icon: 'fa-light fa-calendar-check',\n },\n meetingParticipant: {\n name: 'MeetingParticipant',\n title: '@meeting-management:meetings.meeting-participants.title',\n titlePlural: '@meeting-management:meetings.meeting-participants.plural',\n icon: 'fa-light fa-user-group',\n },\n meetingRoleType: {\n name: 'MeetingRoleType',\n title: '@meeting-management:meetings.meeting-role-types.title',\n titlePlural: '@meeting-management:meetings.meeting-role-types.plural',\n icon: 'fa-light fa-id-badge',\n },\n meetingType: {\n name: 'MeetingType',\n title: '@meeting-management:meetings.meeting-types.title',\n titlePlural: '@meeting-management:meetings.meeting-types.plural',\n icon: 'fa-light fa-list',\n },\n meetingFiles: {\n name: 'MeetingFiles',\n title: '@meeting-management:meeting-files.entities.meeting-file.title',\n titlePlural: '@meeting-management:meeting-files.entities.meeting-file.plural',\n icon: 'fa-light fa-folder-open',\n },\n meetingSession: {\n name: 'MeetingSession',\n title: '@meeting-management:meetings.meeting-sessions.title',\n titlePlural: '@meeting-management:meetings.meeting-sessions.plural',\n icon: 'fa-light fa-clock',\n },\n meetingTypeFileTemplate: {\n name: 'MeetingTypeFileTemplate',\n title: '@meeting-management:meetings.meeting-type-file-templates.title',\n titlePlural: '@meeting-management:meetings.meeting-type-file-templates.plural',\n icon: 'fa-light fa-file-lines',\n },\n meetingSchedule: {\n name: 'MeetingSchedule',\n title: '@meeting-management:meeting-schedule.individual-title',\n titlePlural: '@meeting-management:meeting-schedule.plural-title',\n icon: 'fa-light fa-calendar-week',\n },\n },\n} as const;\n","//#region ---- Contracts barrel ----\n\nexport * from './menu.keys';\nexport * from './permission.keys';\n\nexport * from './root-config';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';
2
+ import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, Injectable } from '@angular/core';
5
+
6
+ //#endregion
7
+ //#region ---- Helpers ----
8
+ function resolveMeetingId(input) {
9
+ if (!input) {
10
+ return undefined;
11
+ }
12
+ return input.options?.id ?? input.data?.id ?? input.id;
13
+ }
14
+ //#endregion
15
+ //#region ---- Meeting publish command ----
16
+ /**
17
+ * Opens the publish meeting dialog, then reloads the entity view when confirmed.
18
+ * Replaces the former `meeting-publish` workflow (popup step + reload step).
19
+ */
20
+ class AXMMeetingPublishCommand {
21
+ constructor() {
22
+ this.layoutBuilder = inject(AXPLayoutBuilderService);
23
+ this.entityEvents = inject(AXPEntityBroadcastService);
24
+ }
25
+ async execute(input = {}) {
26
+ const meetingId = resolveMeetingId(input);
27
+ const dialogRef = await this.layoutBuilder
28
+ .create()
29
+ .dialog((dialog) => {
30
+ dialog
31
+ .setTitle('@meeting-management:meetings.publish-dialog.title')
32
+ .setSize('md')
33
+ .setCloseButton(true)
34
+ .setContext({
35
+ meetingId,
36
+ assignedTo: null,
37
+ publishDate: null,
38
+ })
39
+ .content((flex) => {
40
+ flex
41
+ .setDirection('column')
42
+ .formField('@meeting-management:meetings.publish-dialog.fields.assigned-to.title', (field) => {
43
+ field.path('assignedTo');
44
+ field.lookupBox({
45
+ entity: 'SecurityManagement.User',
46
+ multiple: false,
47
+ look: 'lookup',
48
+ validations: [{ rule: 'required' }],
49
+ });
50
+ })
51
+ .formField('@meeting-management:meetings.publish-dialog.fields.publish-date.title', (field) => {
52
+ field.path('publishDate');
53
+ field.dateTimeBox({
54
+ format: 'date',
55
+ validations: [{ rule: 'required' }],
56
+ });
57
+ });
58
+ })
59
+ .setActions((actions) => {
60
+ actions.cancel('@general:actions.cancel.title');
61
+ actions.submit('@general:actions.publish.title');
62
+ });
63
+ })
64
+ .show();
65
+ if (dialogRef.action() === 'cancel') {
66
+ dialogRef.close();
67
+ return { success: false };
68
+ }
69
+ if (input.entity) {
70
+ this.entityEvents.publishDataReload(input.entity);
71
+ }
72
+ dialogRef.close();
73
+ return { success: true, kind: 'object', data: undefined };
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingPublishCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
76
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingPublishCommand, providedIn: 'root' }); }
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingPublishCommand, decorators: [{
79
+ type: Injectable,
80
+ args: [{ providedIn: 'root' }]
81
+ }] });
82
+
83
+ export { AXMMeetingPublishCommand };
84
+ //# sourceMappingURL=acorex-platform-module-meeting-management-client-meeting-publish.command-BfgOW6Lc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-meeting-management-client-meeting-publish.command-BfgOW6Lc.mjs","sources":["../../../../libs/modules/meeting-management/client/src/lib/features/workflow/meeting-publish/meeting-publish.command.ts"],"sourcesContent":["import { AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\n\n//#region ---- Types ----\n\nexport interface AXMMeetingPublishCommandContext {\n data?: { id?: string };\n entity?: string;\n options?: { id?: string };\n}\n\nexport interface AXMMeetingPublishCommandInput {\n id?: string;\n data?: { id?: string };\n entity?: string;\n options?: { id?: string };\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction resolveMeetingId(input?: AXMMeetingPublishCommandInput | null): string | undefined {\n if (!input) {\n return undefined;\n }\n return input.options?.id ?? input.data?.id ?? input.id;\n}\n\n//#endregion\n\n//#region ---- Meeting publish command ----\n\n/**\n * Opens the publish meeting dialog, then reloads the entity view when confirmed.\n * Replaces the former `meeting-publish` workflow (popup step + reload step).\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMMeetingPublishCommand implements AXPCommand<AXMMeetingPublishCommandInput> {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityEvents = inject(AXPEntityBroadcastService);\n\n async execute(input: AXMMeetingPublishCommandInput = {}): AXPCommandExecuteResultPromise {\n const meetingId = resolveMeetingId(input);\n\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog\n .setTitle('@meeting-management:meetings.publish-dialog.title')\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n meetingId,\n assignedTo: null,\n publishDate: null,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .formField('@meeting-management:meetings.publish-dialog.fields.assigned-to.title', (field) => {\n field.path('assignedTo');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: false,\n look: 'lookup',\n validations: [{ rule: 'required' }],\n });\n })\n .formField('@meeting-management:meetings.publish-dialog.fields.publish-date.title', (field) => {\n field.path('publishDate');\n field.dateTimeBox({\n format: 'date',\n validations: [{ rule: 'required' }],\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit('@general:actions.publish.title');\n });\n })\n .show();\n\n if (dialogRef.action() === 'cancel') {\n dialogRef.close();\n return { success: false };\n }\n\n if (input.entity) {\n this.entityEvents.publishDataReload(input.entity);\n }\n\n dialogRef.close();\n return { success: true, kind: 'object', data: undefined };\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,399 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, inject, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';
5
+ import { provideCommandSetups } from '@acorex-platform/framework-client/runtime';
6
+ import { RootConfig, AXPCollaborationPermissionKeys, AXPMeetingManagementMenuKeys } from '@acorex-platform/module-meeting-management-client/contracts';
7
+ import { AXPSearchCommandProvider, createEntityCommandOptions, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';
8
+ import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
9
+ import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
10
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
11
+ import * as i1 from '@angular/router';
12
+ import { RouterModule } from '@angular/router';
13
+ import { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';
14
+ import { AXPStatusProvider, systemStatusToDefinition, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';
15
+
16
+ //#region ---- Imports ----
17
+ //#endregion
18
+ //#region ---- Manifest Definition ----
19
+ /**
20
+ * Meeting Management Module Manifest.
21
+ * Defines module metadata, features, and provider references.
22
+ */
23
+ const MeetingManagementManifest = {
24
+ name: RootConfig.module.name,
25
+ version: '1.0.0',
26
+ title: RootConfig.module.title,
27
+ icon: RootConfig.module.icon,
28
+ i18n: RootConfig.config.i18n,
29
+ type: 'domain',
30
+ domain: 'operations',
31
+ // Module dependencies (optional)
32
+ };
33
+ //#endregion
34
+
35
+ //#endregion
36
+ //#region ----- Permission Definition Provider -----
37
+ /**
38
+ * Registers meeting capabilities into the shared Collaboration group.
39
+ */
40
+ class AXMPermissionDefinitionProvider {
41
+ async define(context) {
42
+ const keys = AXPCollaborationPermissionKeys;
43
+ const groups = AXPCommonPermissionGroupKeys;
44
+ const P = '@common:collaboration.permissions';
45
+ const G = '@common:permission-groups';
46
+ context.addGroup(groups.Collaboration.Root, `${G}.collaboration.title`, `${G}.collaboration.description`, { order: 80 });
47
+ context
48
+ .addGroup(groups.Collaboration.Scheduling, `${G}.collaboration-scheduling.title`, `${G}.collaboration-scheduling.description`, { parent: groups.Collaboration.Root, order: 20 })
49
+ .addPermission(keys.MaintainMeetings, `${P}.maintain-meetings.title`, `${P}.maintain-meetings.description`)
50
+ .endPermission()
51
+ .endGroup();
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
54
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMPermissionDefinitionProvider, decorators: [{
57
+ type: Injectable
58
+ }] });
59
+
60
+ class AXMMeetingManagementMenuProvider {
61
+ constructor() {
62
+ this.entityService = inject(AXPEntityService);
63
+ }
64
+ async provide(context) {
65
+ const module = RootConfig.module;
66
+ const keys = AXPCollaborationPermissionKeys;
67
+ // Root: Meetings (operational)
68
+ context.addItems([
69
+ {
70
+ name: AXPMeetingManagementMenuKeys.Meetings,
71
+ priority: 8110,
72
+ text: '@meeting-management:meetings.terms.plural',
73
+ path: this.entityService.createPath(module.name, RootConfig.entities.meeting.name),
74
+ icon: RootConfig.entities.meeting.icon,
75
+ policy: {
76
+ features: [module.name],
77
+ permissions: [keys.MaintainMeetings],
78
+ },
79
+ },
80
+ ]);
81
+ // Meeting group under Configuration/Scheduling and Events
82
+ context.find(AXPCommonMenuKeys.SchedulingAndEvents).addItems([
83
+ {
84
+ name: AXPMeetingManagementMenuKeys.MeetingTypes,
85
+ text: '@meeting-management:meetings.meeting-types.plural',
86
+ path: this.entityService.createPath(module.name, RootConfig.entities.meetingType.name),
87
+ icon: RootConfig.entities.meetingType.icon,
88
+ priority: 1,
89
+ policy: {
90
+ features: [module.name],
91
+ permissions: [keys.Setup],
92
+ },
93
+ },
94
+ {
95
+ name: AXPMeetingManagementMenuKeys.MeetingRoleTypes,
96
+ text: '@meeting-management:meetings.meeting-role-types.plural',
97
+ path: this.entityService.createPath(module.name, RootConfig.entities.meetingRoleType.name),
98
+ icon: RootConfig.entities.meetingRoleType.icon,
99
+ priority: 2,
100
+ policy: {
101
+ features: [module.name],
102
+ permissions: [keys.Setup],
103
+ },
104
+ },
105
+ ]);
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementMenuProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
108
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementMenuProvider }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementMenuProvider, decorators: [{
111
+ type: Injectable
112
+ }] });
113
+
114
+ class AXMMeetingManagementSearchCommandProvider extends AXPSearchCommandProvider {
115
+ constructor() {
116
+ super(...arguments);
117
+ this.commands = [
118
+ {
119
+ id: 'create-meeting',
120
+ group: 'command',
121
+ title: RootConfig.entities.meeting.title,
122
+ icon: RootConfig.entities.meeting.icon,
123
+ description: RootConfig.entities.meeting.titlePlural,
124
+ command: {
125
+ name: 'Entity:Create',
126
+ options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.meeting.name}`, {
127
+ name: RootConfig.entities.meeting.name,
128
+ module: RootConfig.module.name,
129
+ title: RootConfig.entities.meeting.title,
130
+ }),
131
+ },
132
+ },
133
+ {
134
+ id: 'create-meeting-type',
135
+ group: 'command',
136
+ title: RootConfig.entities.meetingType.title,
137
+ icon: RootConfig.entities.meetingType.icon,
138
+ description: RootConfig.entities.meetingType.titlePlural,
139
+ command: {
140
+ name: 'Entity:Create',
141
+ options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.meetingType.name}`, {
142
+ name: RootConfig.entities.meetingType.name,
143
+ module: RootConfig.module.name,
144
+ title: RootConfig.entities.meetingType.title,
145
+ }),
146
+ },
147
+ },
148
+ {
149
+ id: 'create-meeting-role-type',
150
+ group: 'command',
151
+ title: RootConfig.entities.meetingRoleType.title,
152
+ icon: RootConfig.entities.meetingRoleType.icon,
153
+ description: RootConfig.entities.meetingRoleType.titlePlural,
154
+ command: {
155
+ name: 'Entity:Create',
156
+ options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.meetingRoleType.name}`, {
157
+ name: RootConfig.entities.meetingRoleType.name,
158
+ module: RootConfig.module.name,
159
+ title: RootConfig.entities.meetingRoleType.title,
160
+ }),
161
+ },
162
+ },
163
+ ];
164
+ }
165
+ }
166
+
167
+ class AXMMeetingManagementModule {
168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
169
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementModule, imports: [CommonModule, i1.RouterModule] }); }
170
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementModule, providers: [
171
+ {
172
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
173
+ useValue: MeetingManagementManifest,
174
+ multi: true,
175
+ },
176
+ {
177
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
178
+ useClass: AXMPermissionDefinitionProvider,
179
+ multi: true,
180
+ },
181
+ {
182
+ provide: AXP_MENU_PROVIDER,
183
+ useClass: AXMMeetingManagementMenuProvider,
184
+ multi: true,
185
+ },
186
+ {
187
+ provide: AXP_SEARCH_PROVIDER,
188
+ useClass: AXMMeetingManagementSearchCommandProvider,
189
+ multi: true,
190
+ },
191
+ provideCommandSetups([
192
+ {
193
+ key: 'meeting-publish',
194
+ command: () => import('./acorex-platform-module-meeting-management-client-meeting-publish.command-BfgOW6Lc.mjs').then((c) => c.AXMMeetingPublishCommand),
195
+ },
196
+ ]),
197
+ ], imports: [CommonModule,
198
+ RouterModule.forChild([
199
+ {
200
+ path: ':app/meetings',
201
+ component: AXPRootLayoutComponent,
202
+ data: { rootLayout: true },
203
+ children: [
204
+ // Add meeting feature pages here as needed
205
+ ]
206
+ }
207
+ ])] }); }
208
+ }
209
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMMeetingManagementModule, decorators: [{
210
+ type: NgModule,
211
+ args: [{
212
+ imports: [
213
+ CommonModule,
214
+ RouterModule.forChild([
215
+ {
216
+ path: ':app/meetings',
217
+ component: AXPRootLayoutComponent,
218
+ data: { rootLayout: true },
219
+ children: [
220
+ // Add meeting feature pages here as needed
221
+ ]
222
+ }
223
+ ]),
224
+ ],
225
+ providers: [
226
+ {
227
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
228
+ useValue: MeetingManagementManifest,
229
+ multi: true,
230
+ },
231
+ {
232
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
233
+ useClass: AXMPermissionDefinitionProvider,
234
+ multi: true,
235
+ },
236
+ {
237
+ provide: AXP_MENU_PROVIDER,
238
+ useClass: AXMMeetingManagementMenuProvider,
239
+ multi: true,
240
+ },
241
+ {
242
+ provide: AXP_SEARCH_PROVIDER,
243
+ useClass: AXMMeetingManagementSearchCommandProvider,
244
+ multi: true,
245
+ },
246
+ provideCommandSetups([
247
+ {
248
+ key: 'meeting-publish',
249
+ command: () => import('./acorex-platform-module-meeting-management-client-meeting-publish.command-BfgOW6Lc.mjs').then((c) => c.AXMMeetingPublishCommand),
250
+ },
251
+ ]),
252
+ ],
253
+ }]
254
+ }] });
255
+
256
+ //#region ---- Imports ----
257
+ //#endregion
258
+ //#region ---- Meeting Status Provider ----
259
+ /**
260
+ * Meeting status provider defining lifecycle states: Pending, InProgress, Approved, Rejected, Cancelled.
261
+ * Used by the status plugin to manage meeting status transitions and metadata.
262
+ */
263
+ class AXMMeetingStatusProvider extends AXPStatusProvider {
264
+ constructor() {
265
+ super(...arguments);
266
+ this.key = 'meeting-management.status.meeting-status';
267
+ this.statuses = [
268
+ systemStatusToDefinition(AXPSystemStatusType.Pending, {
269
+ title: '@meeting-management:meetings.states.pending',
270
+ generateView: true,
271
+ }),
272
+ systemStatusToDefinition(AXPSystemStatusType.InProgress, {
273
+ title: '@meeting-management:meetings.states.in-progress',
274
+ generateView: true,
275
+ }),
276
+ systemStatusToDefinition(AXPSystemStatusType.Approved, {
277
+ title: '@meeting-management:meetings.states.approved',
278
+ generateView: true,
279
+ }),
280
+ systemStatusToDefinition(AXPSystemStatusType.Rejected, {
281
+ title: '@meeting-management:meetings.states.rejected',
282
+ generateView: true,
283
+ }),
284
+ systemStatusToDefinition(AXPSystemStatusType.Cancelled, {
285
+ title: '@meeting-management:meetings.states.cancelled',
286
+ generateView: true,
287
+ }),
288
+ systemStatusToDefinition(AXPSystemStatusType.Published, {
289
+ title: '@meeting-management:meetings.states.is-published',
290
+ generateView: true,
291
+ }),
292
+ systemStatusToDefinition(AXPSystemStatusType.Completed, {
293
+ title: '@meeting-management:meetings.states.completed',
294
+ generateView: true,
295
+ }),
296
+ ];
297
+ this.transitions = [
298
+ {
299
+ from: AXPSystemStatusType.Pending,
300
+ to: AXPSystemStatusType.InProgress,
301
+ title: '@meeting-management:meetings.actions.start',
302
+ },
303
+ {
304
+ from: AXPSystemStatusType.Pending,
305
+ to: AXPSystemStatusType.Approved,
306
+ title: '@general:statuses.transitions.approve',
307
+ },
308
+ {
309
+ from: AXPSystemStatusType.Pending,
310
+ to: AXPSystemStatusType.Rejected,
311
+ title: '@general:statuses.transitions.reject',
312
+ },
313
+ {
314
+ from: AXPSystemStatusType.Pending,
315
+ to: AXPSystemStatusType.Cancelled,
316
+ title: '@general:statuses.transitions.cancel',
317
+ },
318
+ {
319
+ from: AXPSystemStatusType.InProgress,
320
+ to: AXPSystemStatusType.Approved,
321
+ title: '@general:statuses.transitions.approve',
322
+ },
323
+ {
324
+ from: AXPSystemStatusType.InProgress,
325
+ to: AXPSystemStatusType.Rejected,
326
+ title: '@general:statuses.transitions.reject',
327
+ },
328
+ {
329
+ from: AXPSystemStatusType.InProgress,
330
+ to: AXPSystemStatusType.Cancelled,
331
+ title: '@general:statuses.transitions.cancel',
332
+ },
333
+ {
334
+ from: AXPSystemStatusType.Approved,
335
+ to: AXPSystemStatusType.Published,
336
+ title: '@general:statuses.transitions.publish',
337
+ },
338
+ {
339
+ from: AXPSystemStatusType.Published,
340
+ to: AXPSystemStatusType.Completed,
341
+ title: '@general:statuses.transitions.completed',
342
+ },
343
+ ];
344
+ // override readonly workflowActions: AXPStatusWorkflowAction[] = [
345
+ // {
346
+ // name: 'approveMeeting',
347
+ // title: '@general:actions.approve.title',
348
+ // command: {
349
+ // name: 'MeetingManagement.Meeting:Approve',
350
+ // options: {
351
+ // id: '{{ context.eval("id") }}',
352
+ // },
353
+ // },
354
+ // hidden: `{{ context.eval("meetingStatusId") !== "${AXPSystemStatusType.Pending}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.InProgress}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.Rejected}" }}`,
355
+ // priority: 'secondary',
356
+ // type: AXPSystemActionType.Approve,
357
+ // scope: 'individual',
358
+ // },
359
+ // {
360
+ // name: 'rejectMeeting',
361
+ // title: '@general:actions.reject.title',
362
+ // command: {
363
+ // name: 'MeetingManagement.Meeting:Reject',
364
+ // options: {
365
+ // id: '{{ context.eval("id") }}',
366
+ // },
367
+ // },
368
+ // hidden: `{{ context.eval("meetingStatusId") !== "${AXPSystemStatusType.Pending}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.InProgress}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.Approved}" }}`,
369
+ // priority: 'secondary',
370
+ // type: AXPSystemActionType.Reject,
371
+ // scope: 'individual',
372
+ // },
373
+ // {
374
+ // name: 'cancelMeeting',
375
+ // title: '@general:actions.cancel.title',
376
+ // command: {
377
+ // name: 'MeetingManagement.Meeting:Cancel',
378
+ // options: {
379
+ // id: '{{ context.eval("id") }}',
380
+ // },
381
+ // },
382
+ // hidden: `{{ context.eval("meetingStatusId") !== "${AXPSystemStatusType.Pending}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.InProgress}" && context.eval("meetingStatusId") !== "${AXPSystemStatusType.Approved}" }}`,
383
+ // priority: 'secondary',
384
+ // type: AXPSystemActionType.Cancel,
385
+ // scope: 'individual',
386
+ // separated: true,
387
+ // },
388
+ // ];
389
+ this.defaultStatus = AXPSystemStatusType.Pending;
390
+ }
391
+ }
392
+ //#endregion
393
+
394
+ /**
395
+ * Generated bundle index. Do not edit.
396
+ */
397
+
398
+ export { AXMMeetingManagementMenuProvider, AXMMeetingManagementModule, AXMMeetingManagementSearchCommandProvider, AXMMeetingStatusProvider, AXMPermissionDefinitionProvider };
399
+ //# sourceMappingURL=acorex-platform-module-meeting-management-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-meeting-management-client.mjs","sources":["../../../../libs/modules/meeting-management/client/src/lib/manifest.ts","../../../../libs/modules/meeting-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/meeting-management/client/src/lib/menu.provider.ts","../../../../libs/modules/meeting-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/meeting-management/client/src/lib/meeting-management.module.ts","../../../../libs/modules/meeting-management/client/src/lib/features/meeting/meeting-status.provider.ts","../../../../libs/modules/meeting-management/client/src/acorex-platform-module-meeting-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-meeting-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Meeting Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const MeetingManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'operations',\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","//#region ----- Imports -----\r\n\r\nimport {\r\n AXPPermissionDefinitionProvider,\r\n AXPPermissionDefinitionProviderContext,\r\n} from '@acorex-platform/framework-client/auth';\r\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPCollaborationPermissionKeys\n} from '@acorex-platform/module-meeting-management-client/contracts';\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n//#endregion\r\n\r\n//#region ----- Permission Definition Provider -----\r\n\r\n/**\r\n * Registers meeting capabilities into the shared Collaboration group.\r\n */\r\n@Injectable()\r\nexport class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\r\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\r\n const keys = AXPCollaborationPermissionKeys;\r\n const groups = AXPCommonPermissionGroupKeys;\r\n const P = '@common:collaboration.permissions';\r\n const G = '@common:permission-groups';\r\n\r\n context.addGroup(groups.Collaboration.Root, `${G}.collaboration.title`, `${G}.collaboration.description`, { order: 80 });\n\n context\n .addGroup(\n groups.Collaboration.Scheduling,\n `${G}.collaboration-scheduling.title`,\n `${G}.collaboration-scheduling.description`,\n { parent: groups.Collaboration.Root, order: 20 },\n )\n .addPermission(keys.MaintainMeetings, `${P}.maintain-meetings.title`, `${P}.maintain-meetings.description`)\r\n .endPermission()\r\r\n .endGroup();\r\n }\r\n}\r\n\r\n//#endregion\r\n","import {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { Injectable, inject } from '@angular/core';\nimport {\n RootConfig,\n AXPCollaborationPermissionKeys\n} from '@acorex-platform/module-meeting-management-client/contracts';\nimport { AXPMeetingManagementMenuKeys } from '@acorex-platform/module-meeting-management-client/contracts';\n\n@Injectable()\nexport class AXMMeetingManagementMenuProvider implements AXPMenuProvider {\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const module = RootConfig.module;\n const keys = AXPCollaborationPermissionKeys;\n\n // Root: Meetings (operational)\n context.addItems([\n {\n name: AXPMeetingManagementMenuKeys.Meetings,\n priority: 8110,\n text: '@meeting-management:meetings.terms.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.meeting.name),\n icon: RootConfig.entities.meeting.icon,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainMeetings],\n },\n },\n ]);\n\n // Meeting group under Configuration/Scheduling and Events\n context.find(AXPCommonMenuKeys.SchedulingAndEvents).addItems([\n {\n name: AXPMeetingManagementMenuKeys.MeetingTypes,\n text: '@meeting-management:meetings.meeting-types.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.meetingType.name),\n icon: RootConfig.entities.meetingType.icon,\n priority: 1,\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n {\n name: AXPMeetingManagementMenuKeys.MeetingRoleTypes,\n text: '@meeting-management:meetings.meeting-role-types.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.meetingRoleType.name),\n icon: RootConfig.entities.meetingRoleType.icon,\n priority: 2,\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n ]);\n }\n}\n","import { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-meeting-management-client/contracts';\n\nexport class AXMMeetingManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-meeting',\n group: 'command',\n title: RootConfig.entities.meeting.title,\n icon: RootConfig.entities.meeting.icon,\n description: RootConfig.entities.meeting.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.meeting.name}`,\n {\n name: RootConfig.entities.meeting.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.meeting.title,\n }\n ),\n },\n },\n {\n id: 'create-meeting-type',\n group: 'command',\n title: RootConfig.entities.meetingType.title,\n icon: RootConfig.entities.meetingType.icon,\n description: RootConfig.entities.meetingType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.meetingType.name}`,\n {\n name: RootConfig.entities.meetingType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.meetingType.title,\n }\n ),\n },\n },\n {\n id: 'create-meeting-role-type',\n group: 'command',\n title: RootConfig.entities.meetingRoleType.title,\n icon: RootConfig.entities.meetingRoleType.icon,\n description: RootConfig.entities.meetingRoleType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.meetingRoleType.name}`,\n {\n name: RootConfig.entities.meetingRoleType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.meetingRoleType.title,\n }\n ),\n },\n },\n ];\n} ","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXP_MODULE_MANIFEST_PROVIDER } from '@acorex-platform/framework-client/core';\nimport { provideCommandSetups } from '@acorex-platform/framework-client/runtime';\nimport { MeetingManagementManifest } from './manifest';\nimport { AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex-platform/framework-client/common';\nimport { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';\nimport { AXMPermissionDefinitionProvider } from './permission-definition.provider';\nimport { AXMMeetingManagementMenuProvider } from './menu.provider';\n\nimport { AXMMeetingManagementSearchCommandProvider } from './search-command.provider';\n\nimport { RouterModule } from '@angular/router';\nimport { AXPRootLayoutComponent } from '@acorex-platform/framework-client/themes/default';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule.forChild([\n {\n path: ':app/meetings',\n component: AXPRootLayoutComponent,\n data: { rootLayout: true },\n children: [\n // Add meeting feature pages here as needed\n ]\n }\n ]),\n ],\n providers: [\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: MeetingManagementManifest,\n multi: true,\n },\n {\n provide: AXP_PERMISSION_DEFINITION_PROVIDER,\n useClass: AXMPermissionDefinitionProvider,\n multi: true,\n },\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMeetingManagementMenuProvider,\n multi: true,\n },\n \n {\n provide: AXP_SEARCH_PROVIDER,\n useClass: AXMMeetingManagementSearchCommandProvider,\n multi: true,\n },\n provideCommandSetups([\n {\n key: 'meeting-publish',\n command: () =>\n import('./features/workflow/meeting-publish/meeting-publish.command').then((c) => c.AXMMeetingPublishCommand),\n },\n ]),\n ],\n})\nexport class AXMMeetingManagementModule { }\n","//#region ---- Imports ----\n\nimport { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType, systemStatusToDefinition } from '@acorex-platform/framework-shared/core';\n\n//#endregion\n\n//#region ---- Meeting Status Provider ----\n\n/**\n * Meeting status provider defining lifecycle states: Pending, InProgress, Approved, Rejected, Cancelled.\n * Used by the status plugin to manage meeting status transitions and metadata.\n */\nexport class AXMMeetingStatusProvider extends AXPStatusProvider {\n readonly key = 'meeting-management.status.meeting-status';\n\n readonly statuses = [\n systemStatusToDefinition(AXPSystemStatusType.Pending, {\n title: '@meeting-management:meetings.states.pending',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.InProgress, {\n title: '@meeting-management:meetings.states.in-progress',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Approved, {\n title: '@meeting-management:meetings.states.approved',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Rejected, {\n title: '@meeting-management:meetings.states.rejected',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Cancelled, {\n title: '@meeting-management:meetings.states.cancelled',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Published, {\n title: '@meeting-management:meetings.states.is-published',\n generateView: true,\n }),\n systemStatusToDefinition(AXPSystemStatusType.Completed, {\n title: '@meeting-management:meetings.states.completed',\n generateView: true,\n }),\n ];\n\n readonly transitions: AXPStatusTransition[] = [\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.InProgress,\n title: '@meeting-management:meetings.actions.start',\n },\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.Approved,\n title: '@general:statuses.transitions.approve',\n },\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.Rejected,\n title: '@general:statuses.transitions.reject',\n },\n {\n from: AXPSystemStatusType.Pending,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n },\n {\n from: AXPSystemStatusType.InProgress,\n to: AXPSystemStatusType.Approved,\n title: '@general:statuses.transitions.approve',\n },\n {\n from: AXPSystemStatusType.InProgress,\n to: AXPSystemStatusType.Rejected,\n title: '@general:statuses.transitions.reject',\n },\n {\n from: AXPSystemStatusType.InProgress,\n to: AXPSystemStatusType.Cancelled,\n title: '@general:statuses.transitions.cancel',\n },\n {\n from: AXPSystemStatusType.Approved,\n to: AXPSystemStatusType.Published,\n title: '@general:statuses.transitions.publish',\n },\n {\n from: AXPSystemStatusType.Published,\n to: AXPSystemStatusType.Completed,\n title: '@general:statuses.transitions.completed',\n },\n ];\n\n // override readonly workflowActions: AXPStatusWorkflowAction[] = [\n // {\n // name: 'approveMeeting',\n // title: '@general:actions.approve.title',\n // command: {\n // name: 'MeetingManagement.Meeting:Approve',\n // options: {\n // id: '{{ context.eval(\"id\") }}',\n // },\n // },\n // hidden: `{{ context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Pending}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.InProgress}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Rejected}\" }}`,\n // priority: 'secondary',\n // type: AXPSystemActionType.Approve,\n // scope: 'individual',\n // },\n // {\n // name: 'rejectMeeting',\n // title: '@general:actions.reject.title',\n // command: {\n // name: 'MeetingManagement.Meeting:Reject',\n // options: {\n // id: '{{ context.eval(\"id\") }}',\n // },\n // },\n // hidden: `{{ context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Pending}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.InProgress}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Approved}\" }}`,\n // priority: 'secondary',\n // type: AXPSystemActionType.Reject,\n // scope: 'individual',\n // },\n // {\n // name: 'cancelMeeting',\n // title: '@general:actions.cancel.title',\n // command: {\n // name: 'MeetingManagement.Meeting:Cancel',\n // options: {\n // id: '{{ context.eval(\"id\") }}',\n // },\n // },\n // hidden: `{{ context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Pending}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.InProgress}\" && context.eval(\"meetingStatusId\") !== \"${AXPSystemStatusType.Approved}\" }}`,\n // priority: 'secondary',\n // type: AXPSystemActionType.Cancel,\n // scope: 'individual',\n // separated: true,\n // },\n // ];\n\n readonly defaultStatus = AXPSystemStatusType.Pending;\n}\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-meeting-management-client",
3
+ "version": "0.0.21",
4
+ "sideEffects": false,
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.0.0",
7
+ "@angular/core": "^21.0.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "module": "fesm2022/acorex-platform-module-meeting-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-meeting-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-meeting-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-meeting-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-meeting-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-meeting-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,208 @@
1
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
2
+ import { AXPSystemStatuses } from '@acorex-platform/framework-shared/core';
3
+
4
+ declare const AXPMeetingManagementMenuKeys: {
5
+ readonly Root: "meeting-management:menu";
6
+ readonly Meetings: "meeting-management:menu:meetings";
7
+ readonly MeetingTypes: "meeting-management:menu:meeting-types";
8
+ readonly MeetingRoleTypes: "meeting-management:menu:meeting-role-types";
9
+ };
10
+
11
+ /**
12
+ * Collaboration capabilities used by this module.
13
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
14
+ */
15
+ declare const AXPCollaborationPermissionKeys: {
16
+ readonly Access: "Collaboration:Permission:Access";
17
+ readonly MaintainConversations: "Collaboration:Permission:MaintainConversations";
18
+ readonly MaintainMeetings: "Collaboration:Permission:MaintainMeetings";
19
+ readonly MaintainCalendars: "Collaboration:Permission:MaintainCalendars";
20
+ readonly MaintainCommunications: "Collaboration:Permission:MaintainCommunications";
21
+ readonly MaintainReservations: "Collaboration:Permission:MaintainReservations";
22
+ readonly MaintainHelpDesk: "Collaboration:Permission:MaintainHelpDesk";
23
+ readonly Setup: "Collaboration:Permission:Setup";
24
+ };
25
+ /**
26
+ * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.
27
+ * Legacy nested shape kept so existing imports compile during migration.
28
+ */
29
+ declare const AXMPermissionsKeys: {
30
+ readonly MeetingManagement: {
31
+ readonly Management: "Collaboration:Permission:MaintainMeetings";
32
+ readonly Meetings: {
33
+ readonly Management: "Collaboration:Permission:MaintainMeetings";
34
+ readonly View: "Collaboration:Permission:MaintainMeetings";
35
+ readonly Edit: "Collaboration:Permission:MaintainMeetings";
36
+ readonly Delete: "Collaboration:Permission:MaintainMeetings";
37
+ readonly Create: "Collaboration:Permission:MaintainMeetings";
38
+ };
39
+ readonly MeetingParticipants: {
40
+ readonly Management: "Collaboration:Permission:MaintainMeetings";
41
+ readonly View: "Collaboration:Permission:MaintainMeetings";
42
+ readonly Edit: "Collaboration:Permission:MaintainMeetings";
43
+ readonly Delete: "Collaboration:Permission:MaintainMeetings";
44
+ readonly Create: "Collaboration:Permission:MaintainMeetings";
45
+ };
46
+ readonly MeetingRoleTypes: {
47
+ readonly Management: "Collaboration:Permission:Setup";
48
+ readonly View: "Collaboration:Permission:Setup";
49
+ readonly Edit: "Collaboration:Permission:Setup";
50
+ readonly Delete: "Collaboration:Permission:Setup";
51
+ readonly Create: "Collaboration:Permission:Setup";
52
+ };
53
+ readonly MeetingTypes: {
54
+ readonly Management: "Collaboration:Permission:Setup";
55
+ readonly View: "Collaboration:Permission:Setup";
56
+ readonly Edit: "Collaboration:Permission:Setup";
57
+ readonly Delete: "Collaboration:Permission:Setup";
58
+ readonly Create: "Collaboration:Permission:Setup";
59
+ };
60
+ readonly MeetingFiles: {
61
+ readonly Management: "Collaboration:Permission:MaintainMeetings";
62
+ readonly View: "Collaboration:Permission:MaintainMeetings";
63
+ readonly Edit: "Collaboration:Permission:MaintainMeetings";
64
+ readonly Delete: "Collaboration:Permission:MaintainMeetings";
65
+ readonly Create: "Collaboration:Permission:MaintainMeetings";
66
+ };
67
+ };
68
+ };
69
+
70
+ declare const RootConfig: {
71
+ readonly config: {
72
+ i18n: string;
73
+ };
74
+ readonly module: {
75
+ readonly name: "MeetingManagement";
76
+ readonly title: "@meeting-management:module.title";
77
+ readonly icon: "fa-light fa-calendar-days";
78
+ };
79
+ readonly entities: {
80
+ readonly meeting: {
81
+ readonly name: "Meeting";
82
+ readonly title: "@meeting-management:meetings.terms.title";
83
+ readonly titlePlural: "@meeting-management:meetings.terms.plural";
84
+ readonly icon: "fa-light fa-calendar-check";
85
+ };
86
+ readonly meetingParticipant: {
87
+ readonly name: "MeetingParticipant";
88
+ readonly title: "@meeting-management:meetings.meeting-participants.title";
89
+ readonly titlePlural: "@meeting-management:meetings.meeting-participants.plural";
90
+ readonly icon: "fa-light fa-user-group";
91
+ };
92
+ readonly meetingRoleType: {
93
+ readonly name: "MeetingRoleType";
94
+ readonly title: "@meeting-management:meetings.meeting-role-types.title";
95
+ readonly titlePlural: "@meeting-management:meetings.meeting-role-types.plural";
96
+ readonly icon: "fa-light fa-id-badge";
97
+ };
98
+ readonly meetingType: {
99
+ readonly name: "MeetingType";
100
+ readonly title: "@meeting-management:meetings.meeting-types.title";
101
+ readonly titlePlural: "@meeting-management:meetings.meeting-types.plural";
102
+ readonly icon: "fa-light fa-list";
103
+ };
104
+ readonly meetingFiles: {
105
+ readonly name: "MeetingFiles";
106
+ readonly title: "@meeting-management:meeting-files.entities.meeting-file.title";
107
+ readonly titlePlural: "@meeting-management:meeting-files.entities.meeting-file.plural";
108
+ readonly icon: "fa-light fa-folder-open";
109
+ };
110
+ readonly meetingSession: {
111
+ readonly name: "MeetingSession";
112
+ readonly title: "@meeting-management:meetings.meeting-sessions.title";
113
+ readonly titlePlural: "@meeting-management:meetings.meeting-sessions.plural";
114
+ readonly icon: "fa-light fa-clock";
115
+ };
116
+ readonly meetingTypeFileTemplate: {
117
+ readonly name: "MeetingTypeFileTemplate";
118
+ readonly title: "@meeting-management:meetings.meeting-type-file-templates.title";
119
+ readonly titlePlural: "@meeting-management:meetings.meeting-type-file-templates.plural";
120
+ readonly icon: "fa-light fa-file-lines";
121
+ };
122
+ readonly meetingSchedule: {
123
+ readonly name: "MeetingSchedule";
124
+ readonly title: "@meeting-management:meeting-schedule.individual-title";
125
+ readonly titlePlural: "@meeting-management:meeting-schedule.plural-title";
126
+ readonly icon: "fa-light fa-calendar-week";
127
+ };
128
+ };
129
+ };
130
+
131
+ type AXMMeetingmanagementMeetingStatus = typeof AXPSystemStatuses.Pending.name | typeof AXPSystemStatuses.InProgress.name | typeof AXPSystemStatuses.Approved.name | typeof AXPSystemStatuses.Rejected.name | typeof AXPSystemStatuses.Cancelled.name;
132
+ interface AXMMeetingmanagementMeetingEntityModel extends AXPEntityModel<string> {
133
+ title: string;
134
+ meetingNotes: string;
135
+ meetingType: string;
136
+ meetingProviderType: string;
137
+ joinUrl: string;
138
+ hostUrl: string;
139
+ isRecorded: boolean;
140
+ setInGoogleCalendar?: boolean;
141
+ meetingStatusId: AXMMeetingmanagementMeetingStatus;
142
+ meetingStatus: {
143
+ id: AXMMeetingmanagementMeetingStatus;
144
+ title?: string;
145
+ };
146
+ meetingFiles: string;
147
+ meetingParticipants: string;
148
+ meetingLocationId: string;
149
+ meetingScheduleId: string;
150
+ }
151
+
152
+ interface AXMMeetingmanagementMeetingFilesEntityModel extends AXPEntityModel<string> {
153
+ meetingId: string;
154
+ documentId: string;
155
+ description?: string;
156
+ }
157
+
158
+ type AXMMeetingmanagementMeetingParticipantStatus = 'absent' | 'present' | 'accept' | 'decline';
159
+ interface AXMMeetingmanagementMeetingParticipantEntityModel extends AXPEntityModel<string> {
160
+ meetingId: string;
161
+ jointime: Date;
162
+ leftTime: Date;
163
+ duration: number;
164
+ signOffAt: Date;
165
+ participantStatusId: AXMMeetingmanagementMeetingParticipantStatus;
166
+ participantStatus: {
167
+ id: AXMMeetingmanagementMeetingParticipantStatus;
168
+ title?: string;
169
+ };
170
+ employeeId: string;
171
+ meetingRoleTypeIds: string;
172
+ }
173
+
174
+ interface AXMMeetingmanagementMeetingRoleTypeEntityModel extends AXPEntityModel<string> {
175
+ title: string;
176
+ meetingParticipantId: string;
177
+ }
178
+
179
+ interface AXMMeetingmanagementMeetingScheduleEntityModel extends AXPEntityModel<string> {
180
+ meetingId: string;
181
+ scheduleRule: string;
182
+ }
183
+
184
+ interface AXMMeetingmanagementMeetingSessionEntityModel extends AXPEntityModel<string> {
185
+ title: string;
186
+ meetingId: string;
187
+ scheduleDate: Date;
188
+ startTime: Date;
189
+ endTime: string;
190
+ actualDate?: Date;
191
+ actualStartTime?: Date;
192
+ actualEndTime?: Date;
193
+ }
194
+
195
+ interface AXMMeetingmanagementMeetingTypeEntityModel extends AXPEntityModel<string> {
196
+ meetingId: string;
197
+ title: string;
198
+ templateIds: string;
199
+ }
200
+
201
+ interface AXMMeetingmanagementMeetingTypeFileTemplateEntityModel extends AXPEntityModel<string> {
202
+ title: string;
203
+ templateId: string;
204
+ typeId: string;
205
+ }
206
+
207
+ export { AXMPermissionsKeys, AXPCollaborationPermissionKeys, AXPMeetingManagementMenuKeys, RootConfig };
208
+ export type { AXMMeetingmanagementMeetingEntityModel, AXMMeetingmanagementMeetingFilesEntityModel, AXMMeetingmanagementMeetingParticipantEntityModel, AXMMeetingmanagementMeetingParticipantStatus, AXMMeetingmanagementMeetingRoleTypeEntityModel, AXMMeetingmanagementMeetingScheduleEntityModel, AXMMeetingmanagementMeetingSessionEntityModel, AXMMeetingmanagementMeetingStatus, AXMMeetingmanagementMeetingTypeEntityModel, AXMMeetingmanagementMeetingTypeFileTemplateEntityModel };
@@ -0,0 +1,46 @@
1
+ import * as i0 from '@angular/core';
2
+ import * as i1 from '@angular/common';
3
+ import * as i2 from '@angular/router';
4
+ import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex-platform/framework-client/common';
5
+ import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
6
+ import * as _acorex_platform_framework_shared_core from '@acorex-platform/framework-shared/core';
7
+ import { AXPStatusProvider, AXPStatusTransition, AXPSystemStatusType } from '@acorex-platform/framework-shared/core';
8
+
9
+ declare class AXMMeetingManagementModule {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMMeetingManagementModule, never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMMeetingManagementModule, never, [typeof i1.CommonModule, typeof i2.RouterModule], never>;
12
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMMeetingManagementModule>;
13
+ }
14
+
15
+ declare class AXMMeetingManagementMenuProvider implements AXPMenuProvider {
16
+ private entityService;
17
+ provide(context: AXPMenuProviderContext): Promise<void>;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMMeetingManagementMenuProvider, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMMeetingManagementMenuProvider>;
20
+ }
21
+
22
+ declare class AXMMeetingManagementSearchCommandProvider extends AXPSearchCommandProvider {
23
+ commands: AXPSearchResult[];
24
+ }
25
+
26
+ /**
27
+ * Registers meeting capabilities into the shared Collaboration group.
28
+ */
29
+ declare class AXMPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
30
+ define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMPermissionDefinitionProvider, never>;
32
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMPermissionDefinitionProvider>;
33
+ }
34
+
35
+ /**
36
+ * Meeting status provider defining lifecycle states: Pending, InProgress, Approved, Rejected, Cancelled.
37
+ * Used by the status plugin to manage meeting status transitions and metadata.
38
+ */
39
+ declare class AXMMeetingStatusProvider extends AXPStatusProvider {
40
+ readonly key = "meeting-management.status.meeting-status";
41
+ readonly statuses: _acorex_platform_framework_shared_core.AXPStatusDefinition[];
42
+ readonly transitions: AXPStatusTransition[];
43
+ readonly defaultStatus = AXPSystemStatusType.Pending;
44
+ }
45
+
46
+ export { AXMMeetingManagementMenuProvider, AXMMeetingManagementModule, AXMMeetingManagementSearchCommandProvider, AXMMeetingStatusProvider, AXMPermissionDefinitionProvider };