@acorex-platform/module-calendar-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,97 @@
1
+ // Management feature removed - module name is used directly as feature key
2
+ const AXPCalendarManagementFeatureKeys = {};
3
+
4
+ const AXPCalendarManagementMenuKeys = {
5
+ Root: 'CalendarManagement:Menu',
6
+ Calendars: 'CalendarManagement:Menu:Calendars',
7
+ CalendarOccasionTypes: 'CalendarManagement:Menu:CalendarOccasionTypes',
8
+ };
9
+
10
+ /**
11
+ * Collaboration capabilities used by this module.
12
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
13
+ */
14
+ const AXPCollaborationPermissionKeys = {
15
+ Access: 'Collaboration:Permission:Access',
16
+ MaintainConversations: 'Collaboration:Permission:MaintainConversations',
17
+ MaintainMeetings: 'Collaboration:Permission:MaintainMeetings',
18
+ MaintainCalendars: 'Collaboration:Permission:MaintainCalendars',
19
+ MaintainCommunications: 'Collaboration:Permission:MaintainCommunications',
20
+ MaintainReservations: 'Collaboration:Permission:MaintainReservations',
21
+ MaintainHelpDesk: 'Collaboration:Permission:MaintainHelpDesk',
22
+ Setup: 'Collaboration:Permission:Setup',
23
+ };
24
+ const maintainCalendars = AXPCollaborationPermissionKeys.MaintainCalendars;
25
+ const setup = AXPCollaborationPermissionKeys.Setup;
26
+ function calendarCrud() {
27
+ return {
28
+ Management: maintainCalendars,
29
+ View: maintainCalendars,
30
+ Create: maintainCalendars,
31
+ Update: maintainCalendars,
32
+ Delete: maintainCalendars,
33
+ Admin: maintainCalendars,
34
+ };
35
+ }
36
+ function occasionTypeCrud() {
37
+ return {
38
+ Management: setup,
39
+ View: setup,
40
+ Create: setup,
41
+ Update: setup,
42
+ Delete: setup,
43
+ };
44
+ }
45
+ /**
46
+ * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.
47
+ * Legacy nested shape kept so existing imports compile during migration.
48
+ */
49
+ const AXMPermissionsKeys = {
50
+ CalendarManagement: {
51
+ Management: maintainCalendars,
52
+ Calendar: calendarCrud(),
53
+ CalendarOccasionType: occasionTypeCrud(),
54
+ },
55
+ };
56
+
57
+ const config = {
58
+ i18n: 'calendar-management',
59
+ module: 'CalendarManagement'
60
+ };
61
+ const RootConfig = {
62
+ config,
63
+ module: {
64
+ name: config.module,
65
+ title: `@${config.i18n}:module.title`,
66
+ icon: 'fa-light fa-calendar',
67
+ },
68
+ entities: {
69
+ calendar: {
70
+ name: 'Calendar',
71
+ title: `@${config.i18n}:calendars.entities.calendar.title`,
72
+ titlePlural: `@${config.i18n}:calendars.entities.calendar.plural`,
73
+ icon: 'fa-light fa-calendar',
74
+ },
75
+ calendarOccasion: {
76
+ name: 'CalendarOccasion',
77
+ title: `@${config.i18n}:calendar-occasions.entities.calendar-occasion.title`,
78
+ titlePlural: `@${config.i18n}:calendar-occasions.entities.calendar-occasion.plural`,
79
+ icon: 'fa-light fa-calendar-day',
80
+ },
81
+ calendarOccasionType: {
82
+ name: 'CalendarOccasionType',
83
+ title: `@${config.i18n}:calendar-occasion-types.entities.calendar-occasion-type.title`,
84
+ titlePlural: `@${config.i18n}:calendar-occasion-types.entities.calendar-occasion-type.plural`,
85
+ icon: 'fa-light fa-tag',
86
+ },
87
+ },
88
+ };
89
+
90
+ //#region ---- Contracts barrel ----
91
+
92
+ /**
93
+ * Generated bundle index. Do not edit.
94
+ */
95
+
96
+ export { AXMPermissionsKeys, AXPCalendarManagementFeatureKeys, AXPCalendarManagementMenuKeys, AXPCollaborationPermissionKeys, RootConfig };
97
+ //# sourceMappingURL=acorex-platform-module-calendar-management-client-contracts.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-calendar-management-client-contracts.mjs","sources":["../../../../libs/modules/calendar-management/contracts/src/features.keys.ts","../../../../libs/modules/calendar-management/contracts/src/menu.keys.ts","../../../../libs/modules/calendar-management/contracts/src/permission.keys.ts","../../../../libs/modules/calendar-management/contracts/src/root-config.ts","../../../../libs/modules/calendar-management/contracts/src/index.ts","../../../../libs/modules/calendar-management/contracts/src/acorex-platform-module-calendar-management-client-contracts.ts"],"sourcesContent":["// Management feature removed - module name is used directly as feature key\nexport const AXPCalendarManagementFeatureKeys = {} as const;\n\n","export const AXPCalendarManagementMenuKeys = {\n Root: 'CalendarManagement:Menu',\n Calendars: 'CalendarManagement:Menu:Calendars',\n CalendarOccasionTypes: 'CalendarManagement:Menu:CalendarOccasionTypes',\n} as const;\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 maintainCalendars = AXPCollaborationPermissionKeys.MaintainCalendars;\nconst setup = AXPCollaborationPermissionKeys.Setup;\n\nfunction calendarCrud() {\n return {\n Management: maintainCalendars,\n View: maintainCalendars,\n Create: maintainCalendars,\n Update: maintainCalendars,\n Delete: maintainCalendars,\n Admin: maintainCalendars,\n } as const;\n}\n\nfunction occasionTypeCrud() {\n return {\n Management: setup,\n View: setup,\n Create: setup,\n Update: setup,\n Delete: 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 CalendarManagement: {\n Management: maintainCalendars,\n Calendar: calendarCrud(),\n CalendarOccasionType: occasionTypeCrud(),\n },\n} as const;\n","const config = {\n i18n: 'calendar-management',\n module: 'CalendarManagement'\n};\n\nexport const RootConfig = {\n config,\n module: {\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-calendar',\n },\n entities: {\n calendar: {\n name: 'Calendar',\n title: `@${config.i18n}:calendars.entities.calendar.title`,\n titlePlural: `@${config.i18n}:calendars.entities.calendar.plural`,\n icon: 'fa-light fa-calendar',\n },\n calendarOccasion: {\n name: 'CalendarOccasion',\n title: `@${config.i18n}:calendar-occasions.entities.calendar-occasion.title`,\n titlePlural: `@${config.i18n}:calendar-occasions.entities.calendar-occasion.plural`,\n icon: 'fa-light fa-calendar-day',\n },\n calendarOccasionType: {\n name: 'CalendarOccasionType',\n title: `@${config.i18n}:calendar-occasion-types.entities.calendar-occasion-type.title`,\n titlePlural: `@${config.i18n}:calendar-occasion-types.entities.calendar-occasion-type.plural`,\n icon: 'fa-light fa-tag',\n },\n },\n} as const;\n","//#region ---- Contracts barrel ----\n\nexport * from './features.keys';\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":"AAAA;AACO,MAAM,gCAAgC,GAAG;;ACDzC,MAAM,6BAA6B,GAAG;AACzC,IAAA,IAAI,EAAE,yBAAyB;AAC/B,IAAA,SAAS,EAAE,mCAAmC;AAC9C,IAAA,qBAAqB,EAAE,+CAA+C;;;ACH1E;;;AAGG;AACI,MAAM,8BAA8B,GAAG;AAC5C,IAAA,MAAM,EAAE,iCAAiC;AACzC,IAAA,qBAAqB,EAAE,gDAAgD;AACvE,IAAA,gBAAgB,EAAE,2CAA2C;AAC7D,IAAA,iBAAiB,EAAE,4CAA4C;AAC/D,IAAA,sBAAsB,EAAE,iDAAiD;AACzE,IAAA,oBAAoB,EAAE,+CAA+C;AACrE,IAAA,gBAAgB,EAAE,2CAA2C;AAC7D,IAAA,KAAK,EAAE,gCAAgC;;AAGzC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,iBAAiB;AAC1E,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK;AAElD,SAAS,YAAY,GAAA;IACnB,OAAO;AACL,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,MAAM,EAAE,iBAAiB;AACzB,QAAA,KAAK,EAAE,iBAAiB;KAChB;AACZ;AAEA,SAAS,gBAAgB,GAAA;IACvB,OAAO;AACL,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,MAAM,EAAE,KAAK;KACL;AACZ;AAEA;;;AAGG;AACI,MAAM,kBAAkB,GAAG;AAChC,IAAA,kBAAkB,EAAE;AAClB,QAAA,UAAU,EAAE,iBAAiB;QAC7B,QAAQ,EAAE,YAAY,EAAE;QACxB,oBAAoB,EAAE,gBAAgB,EAAE;AACzC,KAAA;;;AChDH,MAAM,MAAM,GAAG;AACX,IAAA,IAAI,EAAE,qBAAqB;AAC3B,IAAA,MAAM,EAAE;CACX;AAEM,MAAM,UAAU,GAAG;IACtB,MAAM;AACN,IAAA,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,QAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,aAAA,CAAe;AACrC,QAAA,IAAI,EAAE,sBAAsB;AAC/B,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,QAAQ,EAAE;AACN,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,kCAAA,CAAoC;AAC1D,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,mCAAA,CAAqC;AACjE,YAAA,IAAI,EAAE,sBAAsB;AAC/B,SAAA;AACD,QAAA,gBAAgB,EAAE;AACd,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,oDAAA,CAAsD;AAC5E,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,qDAAA,CAAuD;AACnF,YAAA,IAAI,EAAE,0BAA0B;AACnC,SAAA;AACD,QAAA,oBAAoB,EAAE;AAClB,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,KAAK,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,8DAAA,CAAgE;AACtF,YAAA,WAAW,EAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAA,+DAAA,CAAiE;AAC7F,YAAA,IAAI,EAAE,iBAAiB;AAC1B,SAAA;AACJ,KAAA;;;AC/BL;;ACAA;;AAEG;;;;"}
@@ -0,0 +1,56 @@
1
+ import { resolveCollectionSkip, resolveCollectionTake } from '@acorex-platform/framework-shared/runtime';
2
+ import { runtimeQuerySuccessCollection, runtimeQueryFailure } from '@acorex-platform/framework-shared/core';
3
+ import { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';
4
+ import { AXTranslationService } from '@acorex/core/translation';
5
+ import * as i0 from '@angular/core';
6
+ import { inject, Injectable } from '@angular/core';
7
+
8
+ //#endregion
9
+ //#region ---- Constants ----
10
+ /** Same ids as the former `calendar-systems` registry data source. */
11
+ const CALENDAR_SYSTEM_IDS = ['gregorian', 'solar-hijri'];
12
+ const CALENDAR_SYSTEMS_I18N_PREFIX = '@calendar-management:calendars.calendar-systems';
13
+ //#endregion
14
+ //#region ---- Query ----
15
+ /**
16
+ * Static calendar system catalog — replaces the `calendar-systems` DI data source.
17
+ */
18
+ class AXMListCalendarSystemsQuery {
19
+ constructor() {
20
+ //#region ---- Services & Dependencies ----
21
+ this.translate = inject(AXTranslationService);
22
+ }
23
+ //#endregion
24
+ //#region ---- Query Execution ----
25
+ async fetch(input) {
26
+ try {
27
+ let items = await Promise.all(CALENDAR_SYSTEM_IDS.map(async (id) => ({
28
+ id,
29
+ title: await this.translate.translateAsync(`${CALENDAR_SYSTEMS_I18N_PREFIX}.${id}`),
30
+ })));
31
+ if (input?.filter) {
32
+ items = applyFilterArray(items, [input.filter]);
33
+ }
34
+ const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];
35
+ const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'id', dir: 'asc' }];
36
+ items = applySortArray(items, sortOpt);
37
+ const skip = resolveCollectionSkip(input?.skip);
38
+ const take = resolveCollectionTake(input?.take);
39
+ const total = items.length;
40
+ const page = items.slice(skip, skip + take);
41
+ return runtimeQuerySuccessCollection({ items: page, total });
42
+ }
43
+ catch (error) {
44
+ return runtimeQueryFailure(error instanceof Error ? error.message : 'Unknown error occurred');
45
+ }
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListCalendarSystemsQuery, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
48
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListCalendarSystemsQuery, providedIn: 'root' }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMListCalendarSystemsQuery, decorators: [{
51
+ type: Injectable,
52
+ args: [{ providedIn: 'root' }]
53
+ }] });
54
+
55
+ export { AXMListCalendarSystemsQuery };
56
+ //# sourceMappingURL=acorex-platform-module-calendar-management-client-list-calendar-systems.query-D9fLB74b.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-calendar-management-client-list-calendar-systems.query-D9fLB74b.mjs","sources":["../../../../libs/modules/calendar-management/client/src/lib/features/queries/list-calendar-systems.query.ts"],"sourcesContent":["import {\n resolveCollectionSkip,\n resolveCollectionTake,\n type AXPCollectionQuery,\n type AXPCollectionQueryInput,\n type AXPQueryCollectionFetchResultPromise,\n} from '@acorex-platform/framework-shared/runtime';\nimport {\n runtimeQueryFailure,\n runtimeQuerySuccessCollection,\n} from '@acorex-platform/framework-shared/core';\nimport { applyFilterArray, applySortArray } from '@acorex-platform/framework-client/core';\nimport { AXTranslationService } from '@acorex/core/translation';\n\nimport { Injectable, inject } from '@angular/core';\n\n//#region ---- Types ----\n\nexport type AXMListCalendarSystemsQueryInput = AXPCollectionQueryInput;\n\nexport interface AXMListCalendarSystemsQueryItem {\n /** Stored calendar system code. */\n id: string;\n /** Localized display title. */\n title: string;\n}\n\n//#endregion\n\n//#region ---- Constants ----\n\n/** Same ids as the former `calendar-systems` registry data source. */\nconst CALENDAR_SYSTEM_IDS = ['gregorian', 'solar-hijri'] as const;\n\nconst CALENDAR_SYSTEMS_I18N_PREFIX = '@calendar-management:calendars.calendar-systems';\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * Static calendar system catalog — replaces the `calendar-systems` DI data source.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMListCalendarSystemsQuery\n implements\n AXPCollectionQuery<AXMListCalendarSystemsQueryInput, AXMListCalendarSystemsQueryItem>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly translate = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMListCalendarSystemsQueryInput | null,\n ): AXPQueryCollectionFetchResultPromise<AXMListCalendarSystemsQueryItem> {\n try {\n let items: AXMListCalendarSystemsQueryItem[] = await Promise.all(\n CALENDAR_SYSTEM_IDS.map(async (id) => ({\n id,\n title: await this.translate.translateAsync(`${CALENDAR_SYSTEMS_I18N_PREFIX}.${id}`),\n })),\n );\n\n if (input?.filter) {\n items = applyFilterArray(items, [input.filter]);\n }\n\n const rawSort = Array.isArray(input?.sort) ? input.sort : input?.sort ? [input.sort] : [];\n const sortOpt = rawSort.length > 0 ? rawSort : [{ field: 'id' as const, dir: 'asc' as const }];\n items = applySortArray(items, sortOpt);\n\n const skip = resolveCollectionSkip(input?.skip);\n const take = resolveCollectionTake(input?.take);\n const total = items.length;\n const page = items.slice(skip, skip + take);\n\n return runtimeQuerySuccessCollection({ items: page, total });\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Unknown error occurred',\n );\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;;;;AA2BA;AAEA;AAEA;AACA,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,aAAa,CAAU;AAEjE,MAAM,4BAA4B,GAAG,iDAAiD;AAEtF;AAEA;AAEA;;AAEG;MAEU,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;;AAOmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAuC1D,IAAA;;;IAjCC,MAAM,KAAK,CACT,KAA+C,EAAA;AAE/C,QAAA,IAAI;AACF,YAAA,IAAI,KAAK,GAAsC,MAAM,OAAO,CAAC,GAAG,CAC9D,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;gBACrC,EAAE;AACF,gBAAA,KAAK,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA,EAAG,4BAA4B,CAAA,CAAA,EAAI,EAAE,EAAE,CAAC;aACpF,CAAC,CAAC,CACJ;AAED,YAAA,IAAI,KAAK,EAAE,MAAM,EAAE;gBACjB,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjD;AAEA,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACzF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,GAAG,EAAE,KAAc,EAAE,CAAC;AAC9F,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;YAEtC,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;AAC/C,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;YAE3C,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC9D;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,wBAAwB,CAClE;QACH;IACF;8GA1CW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;;;"}
@@ -0,0 +1,549 @@
1
+ import { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';
2
+ import { RootConfig, AXPCollaborationPermissionKeys, AXPCalendarManagementMenuKeys } from '@acorex-platform/module-calendar-management-client/contracts';
3
+ import { AXPSettingsService, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXPSearchCommandProvider, createEntityCommandOptions } from '@acorex-platform/framework-client/common';
4
+ import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
5
+ import { provideQuerySetups } from '@acorex-platform/framework-client/runtime';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i0 from '@angular/core';
8
+ import { inject, Injectable, NgModule } from '@angular/core';
9
+ import { AX_DATETIME_HOLIDAYS_LOADER, AXCalendarService } from '@acorex/core/date-time';
10
+ import { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';
11
+ import { resolveMultiLanguageString, AXTranslationService } from '@acorex/core/translation';
12
+ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
13
+ import { AXPCommonMenuKeys, AXPCommonPermissionGroupKeys } from '@acorex-platform/module-common-client/contracts';
14
+
15
+ //#region ---- Imports ----
16
+ //#endregion
17
+ //#region ---- Manifest Definition ----
18
+ /**
19
+ * Calendar Management Module Manifest.
20
+ * Defines module metadata, features, and provider references.
21
+ */
22
+ const CalendarManagementManifest = {
23
+ name: RootConfig.module.name,
24
+ version: '1.0.0',
25
+ title: RootConfig.module.title,
26
+ icon: RootConfig.module.icon,
27
+ i18n: RootConfig.config.i18n,
28
+ type: 'platform',
29
+ domain: 'platform',
30
+ required: true,
31
+ // Module dependencies (optional)
32
+ };
33
+ //#endregion
34
+
35
+ /** Normalizes regional calendar-event setting values to calendar ids. */
36
+ function normalizeRegionalCalendarEventIds(value) {
37
+ if (value == null) {
38
+ return [];
39
+ }
40
+ const values = Array.isArray(value) ? value : [value];
41
+ return [
42
+ ...new Set(values
43
+ .map((item) => {
44
+ if (typeof item === 'string' || typeof item === 'number') {
45
+ return String(item);
46
+ }
47
+ if (item && typeof item === 'object' && 'id' in item) {
48
+ return String(item.id);
49
+ }
50
+ return '';
51
+ })
52
+ .filter(Boolean)),
53
+ ];
54
+ }
55
+
56
+ const STYLE_ELEMENT_ID = 'axm-calendar-occasion-holiday-styles';
57
+ const registeredColorClasses = new Set();
58
+ function hexToRgb(hex) {
59
+ const value = hex.replace('#', '').trim();
60
+ if (!/^[0-9a-fA-F]{6}$/.test(value)) {
61
+ return null;
62
+ }
63
+ return {
64
+ r: Number.parseInt(value.slice(0, 2), 16),
65
+ g: Number.parseInt(value.slice(2, 4), 16),
66
+ b: Number.parseInt(value.slice(4, 6), 16),
67
+ };
68
+ }
69
+ function resolveOccasionColorClass(color) {
70
+ const normalized = color.toLowerCase();
71
+ const token = normalized.replace('#', '');
72
+ const className = `axm-calendar-occasion-${token}`;
73
+ if (registeredColorClasses.has(className)) {
74
+ return className;
75
+ }
76
+ registeredColorClasses.add(className);
77
+ registerOccasionColorStyles(normalized, className);
78
+ return className;
79
+ }
80
+ function registerOccasionColorStyles(color, className) {
81
+ if (typeof document === 'undefined') {
82
+ return;
83
+ }
84
+ let styleElement = document.getElementById(STYLE_ELEMENT_ID);
85
+ if (!styleElement) {
86
+ styleElement = document.createElement('style');
87
+ styleElement.id = STYLE_ELEMENT_ID;
88
+ document.head.appendChild(styleElement);
89
+ }
90
+ const rgb = hexToRgb(color);
91
+ const backgroundColor = rgb ? `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.14)` : 'transparent';
92
+ styleElement.appendChild(document.createTextNode(`
93
+ ax-scheduler .ax-scheduler-month-day-cell.${className},
94
+ ax-calendar .ax-calendar-day.${className} {
95
+ background-color: ${backgroundColor};
96
+ }
97
+
98
+ ax-scheduler .ax-scheduler-month-day-cell.${className} .ax-scheduler-month-day-number,
99
+ ax-scheduler .ax-scheduler-month-header-date-day.${className},
100
+ ax-scheduler .ax-scheduler-week-header-date-day.${className},
101
+ ax-scheduler .ax-scheduler-year-header-date-day.${className},
102
+ ax-scheduler .ax-scheduler-agenda-view-container.${className} .ax-scheduler-agenda-header-date-day,
103
+ ax-calendar .ax-calendar-day.${className} .ax-calendar-day-number {
104
+ color: ${color};
105
+ font-weight: 700;
106
+ }
107
+ `));
108
+ }
109
+ function mapCalendarOccasionToHolidayDate(occasion) {
110
+ if (occasion.isPublicHoliday) {
111
+ return {
112
+ date: occasion.date,
113
+ title: occasion.title,
114
+ description: occasion.description,
115
+ cssClass: 'ax-state-holiday',
116
+ icon: occasion.type.icon,
117
+ isHoliday: true,
118
+ };
119
+ }
120
+ const color = occasion.type.color || '#6b7280';
121
+ return {
122
+ date: occasion.date,
123
+ title: occasion.title,
124
+ description: occasion.description,
125
+ cssClass: resolveOccasionColorClass(color),
126
+ color,
127
+ icon: occasion.type.icon,
128
+ isHoliday: false,
129
+ };
130
+ }
131
+
132
+ function startOfDay(date) {
133
+ const normalized = new Date(date);
134
+ normalized.setHours(0, 0, 0, 0);
135
+ return normalized;
136
+ }
137
+ function parseRecurrenceRule(rule) {
138
+ return Object.fromEntries(rule
139
+ .split(';')
140
+ .map((part) => part.trim())
141
+ .filter(Boolean)
142
+ .map((part) => {
143
+ const [key, value] = part.split('=');
144
+ return [key, value ?? ''];
145
+ }));
146
+ }
147
+ /**
148
+ * Expands occasion occurrences using the canonical ISO (Gregorian) anchor date.
149
+ * Calendar display system does not change which absolute days are matched.
150
+ */
151
+ function expandCalendarOccasionOccurrences(occasion, range) {
152
+ const rangeStart = startOfDay(range.from);
153
+ const rangeEnd = startOfDay(range.end);
154
+ const anchor = startOfDay(new Date(occasion.date));
155
+ if (!occasion.isRecurring) {
156
+ return anchor >= rangeStart && anchor <= rangeEnd ? [anchor] : [];
157
+ }
158
+ const params = occasion.recurrenceRule?.trim()
159
+ ? parseRecurrenceRule(occasion.recurrenceRule)
160
+ : { FREQ: 'YEARLY' };
161
+ if (params['FREQ'] && params['FREQ'] !== 'YEARLY') {
162
+ return anchor >= rangeStart && anchor <= rangeEnd ? [anchor] : [];
163
+ }
164
+ const month = anchor.getMonth();
165
+ const day = anchor.getDate();
166
+ const dates = [];
167
+ const startYear = range.from.getFullYear() - 1;
168
+ const endYear = range.end.getFullYear() + 1;
169
+ for (let year = startYear; year <= endYear; year++) {
170
+ const occurrence = new Date(year, month, day);
171
+ occurrence.setHours(0, 0, 0, 0);
172
+ if (occurrence >= rangeStart && occurrence <= rangeEnd) {
173
+ dates.push(occurrence);
174
+ }
175
+ }
176
+ return dates;
177
+ }
178
+
179
+ function resolveCalendarLocalizedText(value, locale) {
180
+ if (value == null) {
181
+ return '';
182
+ }
183
+ if (typeof value === 'string') {
184
+ return value.trim();
185
+ }
186
+ return resolveMultiLanguageString(value, locale).trim();
187
+ }
188
+
189
+ /** Active calendars only (non-archived, including rows without `isArchived`). */
190
+ const NON_ARCHIVED_CALENDAR_FILTER = {
191
+ logic: 'or',
192
+ filters: [
193
+ { field: 'isArchived', operator: { type: 'equal' }, value: false },
194
+ { field: 'isArchived', operator: { type: 'isNull' } },
195
+ ],
196
+ };
197
+ class AXMCalendarManagementService {
198
+ constructor() {
199
+ this.entityService = inject(AXPEntityService);
200
+ this.translationService = inject(AXTranslationService);
201
+ //#region ---- Data Accessors ----
202
+ this.calendarOccasionDataAccessor = this.entityService
203
+ .withEntity(RootConfig.module.name, RootConfig.entities.calendarOccasion.name)
204
+ .data();
205
+ this.calendarDataAccessor = this.entityService
206
+ .withEntity(RootConfig.module.name, RootConfig.entities.calendar.name)
207
+ .data();
208
+ }
209
+ //#endregion
210
+ //#region ---- Methods ----
211
+ async getCalendars() {
212
+ const calendars = await this.calendarDataAccessor.query({
213
+ skip: 0,
214
+ take: 9999,
215
+ filter: {
216
+ logic: 'and',
217
+ filters: [NON_ARCHIVED_CALENDAR_FILTER],
218
+ },
219
+ });
220
+ const locale = this.translationService.getActiveLang();
221
+ return calendars.items.map((calendar) => ({
222
+ id: calendar.id,
223
+ title: resolveCalendarLocalizedText(calendar.title, locale),
224
+ }));
225
+ }
226
+ async getOccasions(range, calendarIds) {
227
+ if (!calendarIds || calendarIds.length === 0) {
228
+ return [];
229
+ }
230
+ const calendars = await this.calendarDataAccessor.query({
231
+ skip: 0,
232
+ take: 9999,
233
+ filter: {
234
+ logic: 'and',
235
+ filters: [
236
+ { field: 'id', operator: { type: 'in' }, value: calendarIds },
237
+ NON_ARCHIVED_CALENDAR_FILTER,
238
+ ],
239
+ },
240
+ });
241
+ if (calendars.items.length === 0) {
242
+ return [];
243
+ }
244
+ const filters = [
245
+ { field: 'calendarId', operator: { type: 'in' }, value: calendarIds },
246
+ {
247
+ logic: 'or',
248
+ filters: [
249
+ { field: 'isRecurring', operator: { type: 'equal' }, value: true },
250
+ {
251
+ logic: 'and',
252
+ filters: [
253
+ { field: 'date', operator: { type: 'gte' }, value: range.from },
254
+ { field: 'date', operator: { type: 'lte' }, value: range.end },
255
+ ],
256
+ },
257
+ ],
258
+ },
259
+ ];
260
+ const occasions = await this.calendarOccasionDataAccessor.query({
261
+ skip: 0,
262
+ take: 9999,
263
+ filter: {
264
+ logic: 'and',
265
+ filters,
266
+ },
267
+ });
268
+ const locale = this.translationService.getActiveLang();
269
+ const expandedOccasions = [];
270
+ for (const occasion of occasions.items) {
271
+ const occurrenceDates = expandCalendarOccasionOccurrences(occasion, range);
272
+ for (const date of occurrenceDates) {
273
+ expandedOccasions.push({
274
+ date,
275
+ title: resolveCalendarLocalizedText(occasion.title, locale),
276
+ description: resolveCalendarLocalizedText(occasion.description, locale) || undefined,
277
+ isPublicHoliday: occasion.isPublicHoliday ?? occasion.type?.isPublicHoliday ?? false,
278
+ type: {
279
+ color: occasion.type?.color ?? '#6b7280',
280
+ icon: occasion.type?.icon,
281
+ },
282
+ });
283
+ }
284
+ }
285
+ return expandedOccasions.sort((left, right) => left.date.getTime() - right.date.getTime());
286
+ }
287
+ async getHolidayDates(range, calendarIds) {
288
+ const occasions = await this.getOccasions(range, calendarIds);
289
+ return occasions.map((occasion) => mapCalendarOccasionToHolidayDate(occasion));
290
+ }
291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
292
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementService, providedIn: 'root' }); }
293
+ }
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementService, decorators: [{
295
+ type: Injectable,
296
+ args: [{
297
+ providedIn: 'root',
298
+ }]
299
+ }] });
300
+
301
+ function resolveHolidayRange(options) {
302
+ if (options?.range) {
303
+ return {
304
+ from: options.range.start,
305
+ end: options.range.end,
306
+ };
307
+ }
308
+ const now = new Date();
309
+ return {
310
+ from: new Date(now.getFullYear() - 2, 0, 1),
311
+ end: new Date(now.getFullYear() + 2, 11, 31),
312
+ };
313
+ }
314
+ class AXMCalendarManagementHolidaysLoader {
315
+ constructor() {
316
+ this.calendarManagementService = inject(AXMCalendarManagementService);
317
+ this.settingsService = inject(AXPSettingsService);
318
+ }
319
+ async getHolidays(options) {
320
+ const range = resolveHolidayRange(options);
321
+ const calendarIds = await this.resolveCalendarIds();
322
+ if (calendarIds.length === 0) {
323
+ return [];
324
+ }
325
+ const occasions = await this.calendarManagementService.getOccasions(range, calendarIds);
326
+ return occasions.map((occasion) => mapCalendarOccasionToHolidayDate(occasion));
327
+ }
328
+ async resolveCalendarIds() {
329
+ // An empty selection means "no calendars", so no holidays should be loaded.
330
+ // Falling back to every calendar here made the scheduler render all holidays
331
+ // whenever the user cleared the calendar selection.
332
+ return normalizeRegionalCalendarEventIds(await this.settingsService.get(AXPRegionalSetting.CalendarEvents));
333
+ }
334
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
335
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysLoader }); }
336
+ }
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysLoader, decorators: [{
338
+ type: Injectable
339
+ }] });
340
+ const AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER = {
341
+ provide: AX_DATETIME_HOLIDAYS_LOADER,
342
+ useClass: AXMCalendarManagementHolidaysLoader,
343
+ };
344
+
345
+ const HOLIDAY_RELOAD_SETTING_KEYS = [
346
+ AXPRegionalSetting.CalendarEvents,
347
+ AXPRegionalSetting.Language,
348
+ AXPRegionalSetting.LocaleProfile,
349
+ ];
350
+ class AXMCalendarManagementHolidaysSyncService {
351
+ constructor() {
352
+ this.calendarService = inject(AXCalendarService);
353
+ this.settingsService = inject(AXPSettingsService);
354
+ this.settingsService.onLoaded.subscribe(() => {
355
+ void this.reloadHolidays();
356
+ });
357
+ this.settingsService.onChanged.subscribe((change) => {
358
+ if (change.keys.some((key) => HOLIDAY_RELOAD_SETTING_KEYS.includes(key))) {
359
+ void this.reloadHolidays();
360
+ }
361
+ });
362
+ }
363
+ reloadHolidays() {
364
+ return this.calendarService.loadHolidays();
365
+ }
366
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysSyncService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
367
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysSyncService, providedIn: 'root' }); }
368
+ }
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementHolidaysSyncService, decorators: [{
370
+ type: Injectable,
371
+ args: [{ providedIn: 'root' }]
372
+ }], ctorParameters: () => [] });
373
+
374
+ class AXMCalendarManagementModule {
375
+ constructor() {
376
+ inject(AXMCalendarManagementHolidaysSyncService);
377
+ }
378
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
379
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementModule, imports: [CommonModule] }); }
380
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementModule, providers: [
381
+ // Module Manifest Provider
382
+ {
383
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
384
+ useValue: CalendarManagementManifest,
385
+ multi: true,
386
+ },
387
+ // Provider references (now using tokens)
388
+ provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => Promise.resolve().then(function () { return permissionDefinition_provider; }).then(m => m.AXMCalendarManagementPermissionDefinitionProvider)),
389
+ provideLazyProvider(AXP_MENU_PROVIDER, () => Promise.resolve().then(function () { return menu_provider; }).then(m => m.AXMCalendarManagementMenuProvider)),
390
+ provideLazyProvider(AXP_SEARCH_PROVIDER, () => Promise.resolve().then(function () { return searchCommand_provider; }).then(m => m.AXMCalendarManagementSearchCommandProvider)),
391
+ provideQuerySetups([
392
+ {
393
+ key: 'CalendarManagement:ListCalendarSystems',
394
+ loader: () => import('./acorex-platform-module-calendar-management-client-list-calendar-systems.query-D9fLB74b.mjs').then((c) => c.AXMListCalendarSystemsQuery),
395
+ },
396
+ ]),
397
+ AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER,
398
+ ], imports: [CommonModule] }); }
399
+ }
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementModule, decorators: [{
401
+ type: NgModule,
402
+ args: [{
403
+ imports: [
404
+ CommonModule,
405
+ ],
406
+ providers: [
407
+ // Module Manifest Provider
408
+ {
409
+ provide: AXP_MODULE_MANIFEST_PROVIDER,
410
+ useValue: CalendarManagementManifest,
411
+ multi: true,
412
+ },
413
+ // Provider references (now using tokens)
414
+ provideLazyProvider(AXP_PERMISSION_DEFINITION_PROVIDER, () => Promise.resolve().then(function () { return permissionDefinition_provider; }).then(m => m.AXMCalendarManagementPermissionDefinitionProvider)),
415
+ provideLazyProvider(AXP_MENU_PROVIDER, () => Promise.resolve().then(function () { return menu_provider; }).then(m => m.AXMCalendarManagementMenuProvider)),
416
+ provideLazyProvider(AXP_SEARCH_PROVIDER, () => Promise.resolve().then(function () { return searchCommand_provider; }).then(m => m.AXMCalendarManagementSearchCommandProvider)),
417
+ provideQuerySetups([
418
+ {
419
+ key: 'CalendarManagement:ListCalendarSystems',
420
+ loader: () => import('./acorex-platform-module-calendar-management-client-list-calendar-systems.query-D9fLB74b.mjs').then((c) => c.AXMListCalendarSystemsQuery),
421
+ },
422
+ ]),
423
+ AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER,
424
+ ],
425
+ }]
426
+ }], ctorParameters: () => [] });
427
+
428
+ //#region ---- Imports ----
429
+ //#endregion
430
+ //#region ---- Menu Provider ----
431
+ class AXMCalendarManagementMenuProvider {
432
+ constructor() {
433
+ this.entityService = inject(AXPEntityService);
434
+ }
435
+ async provide(context) {
436
+ const module = RootConfig.module;
437
+ const keys = AXPCollaborationPermissionKeys;
438
+ context.find(AXPCommonMenuKeys.DateAndTime).addItems([
439
+ {
440
+ name: AXPCalendarManagementMenuKeys.Calendars,
441
+ text: '@calendar-management:calendars.entities.calendar.plural',
442
+ path: this.entityService.createPath(module.name, RootConfig.entities.calendar.name),
443
+ icon: RootConfig.entities.calendar.icon,
444
+ priority: 2,
445
+ policy: {
446
+ features: [module.name],
447
+ permissions: [keys.MaintainCalendars],
448
+ },
449
+ },
450
+ {
451
+ name: AXPCalendarManagementMenuKeys.CalendarOccasionTypes,
452
+ text: '@calendar-management:calendar-occasion-types.entities.calendar-occasion-type.plural',
453
+ path: this.entityService.createPath(module.name, RootConfig.entities.calendarOccasionType.name),
454
+ icon: RootConfig.entities.calendarOccasionType.icon,
455
+ priority: 3,
456
+ policy: {
457
+ features: [module.name],
458
+ permissions: [keys.Setup],
459
+ },
460
+ },
461
+ ]);
462
+ }
463
+ }
464
+ //#endregion
465
+
466
+ var menu_provider = /*#__PURE__*/Object.freeze({
467
+ __proto__: null,
468
+ AXMCalendarManagementMenuProvider: AXMCalendarManagementMenuProvider
469
+ });
470
+
471
+ //#endregion
472
+ //#region ----- Permission Definition Provider -----
473
+ /**
474
+ * Registers calendar capabilities into the shared Collaboration group.
475
+ */
476
+ class AXMCalendarManagementPermissionDefinitionProvider {
477
+ async define(context) {
478
+ const keys = AXPCollaborationPermissionKeys;
479
+ const groups = AXPCommonPermissionGroupKeys;
480
+ const P = '@common:collaboration.permissions';
481
+ const G = '@common:permission-groups';
482
+ context.addGroup(groups.Collaboration.Root, `${G}.collaboration.title`, `${G}.collaboration.description`, { order: 80 });
483
+ context
484
+ .addGroup(groups.Collaboration.Scheduling, `${G}.collaboration-scheduling.title`, `${G}.collaboration-scheduling.description`, { parent: groups.Collaboration.Root, order: 20 })
485
+ .addPermission(keys.MaintainCalendars, `${P}.maintain-calendars.title`, `${P}.maintain-calendars.description`)
486
+ .endPermission()
487
+ .endGroup();
488
+ }
489
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
490
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider }); }
491
+ }
492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider, decorators: [{
493
+ type: Injectable
494
+ }] });
495
+
496
+ var permissionDefinition_provider = /*#__PURE__*/Object.freeze({
497
+ __proto__: null,
498
+ AXMCalendarManagementPermissionDefinitionProvider: AXMCalendarManagementPermissionDefinitionProvider
499
+ });
500
+
501
+ class AXMCalendarManagementSearchCommandProvider extends AXPSearchCommandProvider {
502
+ constructor() {
503
+ super(...arguments);
504
+ this.commands = [
505
+ {
506
+ id: 'create-calendar',
507
+ group: 'command',
508
+ title: RootConfig.entities.calendar.title,
509
+ icon: RootConfig.entities.calendar.icon,
510
+ description: RootConfig.entities.calendar.titlePlural,
511
+ command: {
512
+ name: 'Entity:Create',
513
+ options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.calendar.name}`, {
514
+ name: RootConfig.entities.calendar.name,
515
+ module: RootConfig.module.name,
516
+ title: RootConfig.entities.calendar.title,
517
+ }),
518
+ },
519
+ },
520
+ {
521
+ id: 'create-calendar-occasion-type',
522
+ group: 'command',
523
+ title: RootConfig.entities.calendarOccasionType.title,
524
+ icon: RootConfig.entities.calendarOccasionType.icon,
525
+ description: RootConfig.entities.calendarOccasionType.titlePlural,
526
+ command: {
527
+ name: 'Entity:Create',
528
+ options: createEntityCommandOptions(`${RootConfig.module.name}.${RootConfig.entities.calendarOccasionType.name}`, {
529
+ name: RootConfig.entities.calendarOccasionType.name,
530
+ module: RootConfig.module.name,
531
+ title: RootConfig.entities.calendarOccasionType.title,
532
+ }),
533
+ },
534
+ },
535
+ ];
536
+ }
537
+ }
538
+
539
+ var searchCommand_provider = /*#__PURE__*/Object.freeze({
540
+ __proto__: null,
541
+ AXMCalendarManagementSearchCommandProvider: AXMCalendarManagementSearchCommandProvider
542
+ });
543
+
544
+ /**
545
+ * Generated bundle index. Do not edit.
546
+ */
547
+
548
+ export { AXMCalendarManagementHolidaysLoader, AXMCalendarManagementHolidaysSyncService, AXMCalendarManagementMenuProvider, AXMCalendarManagementModule, AXMCalendarManagementPermissionDefinitionProvider, AXMCalendarManagementSearchCommandProvider, AXMCalendarManagementService, mapCalendarOccasionToHolidayDate, normalizeRegionalCalendarEventIds };
549
+ //# sourceMappingURL=acorex-platform-module-calendar-management-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-calendar-management-client.mjs","sources":["../../../../libs/modules/calendar-management/client/src/lib/manifest.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-event-ids.utils.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-occasion-holiday.mapper.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-occasion-recurrence.utils.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-localization.utils.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-management.service.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-management-holidays.loader.ts","../../../../libs/modules/calendar-management/client/src/lib/features/shared/calendar-management-holidays.sync.ts","../../../../libs/modules/calendar-management/client/src/lib/calendar-management.module.ts","../../../../libs/modules/calendar-management/client/src/lib/menu.provider.ts","../../../../libs/modules/calendar-management/client/src/lib/permission-definition.provider.ts","../../../../libs/modules/calendar-management/client/src/lib/search-command.provider.ts","../../../../libs/modules/calendar-management/client/src/acorex-platform-module-calendar-management-client.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-client/core';\nimport { RootConfig } from '@acorex-platform/module-calendar-management-client/contracts';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Calendar Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const CalendarManagementManifest: 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 type: 'platform',\n domain: 'platform',\n required: true,\n\n // Module dependencies (optional)\n};\n\n//#endregion\n\n","/** Normalizes regional calendar-event setting values to calendar ids. */\nexport function normalizeRegionalCalendarEventIds(value: unknown): string[] {\n if (value == null) {\n return [];\n }\n\n const values = Array.isArray(value) ? value : [value];\n return [\n ...new Set(\n values\n .map((item) => {\n if (typeof item === 'string' || typeof item === 'number') {\n return String(item);\n }\n if (item && typeof item === 'object' && 'id' in item) {\n return String((item as { id: string | number }).id);\n }\n return '';\n })\n .filter(Boolean),\n ),\n ];\n}\n","import { AXHolidayDate } from '@acorex/core/date-time';\nimport type { AXMCalendarManagementOccasion } from './calendar-management.service';\n\nconst STYLE_ELEMENT_ID = 'axm-calendar-occasion-holiday-styles';\nconst registeredColorClasses = new Set<string>();\n\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const value = hex.replace('#', '').trim();\n if (!/^[0-9a-fA-F]{6}$/.test(value)) {\n return null;\n }\n\n return {\n r: Number.parseInt(value.slice(0, 2), 16),\n g: Number.parseInt(value.slice(2, 4), 16),\n b: Number.parseInt(value.slice(4, 6), 16),\n };\n}\n\nfunction resolveOccasionColorClass(color: string): string {\n const normalized = color.toLowerCase();\n const token = normalized.replace('#', '');\n const className = `axm-calendar-occasion-${token}`;\n\n if (registeredColorClasses.has(className)) {\n return className;\n }\n\n registeredColorClasses.add(className);\n registerOccasionColorStyles(normalized, className);\n return className;\n}\n\nfunction registerOccasionColorStyles(color: string, className: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n let styleElement = document.getElementById(STYLE_ELEMENT_ID) as HTMLStyleElement | null;\n if (!styleElement) {\n styleElement = document.createElement('style');\n styleElement.id = STYLE_ELEMENT_ID;\n document.head.appendChild(styleElement);\n }\n\n const rgb = hexToRgb(color);\n const backgroundColor = rgb ? `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.14)` : 'transparent';\n\n styleElement.appendChild(\n document.createTextNode(`\n ax-scheduler .ax-scheduler-month-day-cell.${className},\n ax-calendar .ax-calendar-day.${className} {\n background-color: ${backgroundColor};\n }\n\n ax-scheduler .ax-scheduler-month-day-cell.${className} .ax-scheduler-month-day-number,\n ax-scheduler .ax-scheduler-month-header-date-day.${className},\n ax-scheduler .ax-scheduler-week-header-date-day.${className},\n ax-scheduler .ax-scheduler-year-header-date-day.${className},\n ax-scheduler .ax-scheduler-agenda-view-container.${className} .ax-scheduler-agenda-header-date-day,\n ax-calendar .ax-calendar-day.${className} .ax-calendar-day-number {\n color: ${color};\n font-weight: 700;\n }\n `),\n );\n}\n\nexport function mapCalendarOccasionToHolidayDate(occasion: AXMCalendarManagementOccasion): AXHolidayDate {\n if (occasion.isPublicHoliday) {\n return {\n date: occasion.date,\n title: occasion.title,\n description: occasion.description,\n cssClass: 'ax-state-holiday',\n icon: occasion.type.icon,\n isHoliday: true,\n };\n }\n\n const color = occasion.type.color || '#6b7280';\n\n return {\n date: occasion.date,\n title: occasion.title,\n description: occasion.description,\n cssClass: resolveOccasionColorClass(color),\n color,\n icon: occasion.type.icon,\n isHoliday: false,\n };\n}\n","import { AXRange } from '@acorex/cdk/common';\n\ninterface RecurrenceSource {\n date: Date;\n isRecurring: boolean;\n recurrenceRule?: string | null;\n}\n\nfunction startOfDay(date: Date): Date {\n const normalized = new Date(date);\n normalized.setHours(0, 0, 0, 0);\n return normalized;\n}\n\nfunction parseRecurrenceRule(rule: string): Record<string, string> {\n return Object.fromEntries(\n rule\n .split(';')\n .map((part) => part.trim())\n .filter(Boolean)\n .map((part) => {\n const [key, value] = part.split('=');\n return [key, value ?? ''];\n }),\n );\n}\n\n/**\n * Expands occasion occurrences using the canonical ISO (Gregorian) anchor date.\n * Calendar display system does not change which absolute days are matched.\n */\nexport function expandCalendarOccasionOccurrences(\n occasion: RecurrenceSource,\n range: AXRange<Date>,\n): Date[] {\n const rangeStart = startOfDay(range.from);\n const rangeEnd = startOfDay(range.end);\n const anchor = startOfDay(new Date(occasion.date));\n\n if (!occasion.isRecurring) {\n return anchor >= rangeStart && anchor <= rangeEnd ? [anchor] : [];\n }\n\n const params = occasion.recurrenceRule?.trim()\n ? parseRecurrenceRule(occasion.recurrenceRule)\n : { FREQ: 'YEARLY' };\n\n if (params['FREQ'] && params['FREQ'] !== 'YEARLY') {\n return anchor >= rangeStart && anchor <= rangeEnd ? [anchor] : [];\n }\n\n const month = anchor.getMonth();\n const day = anchor.getDate();\n const dates: Date[] = [];\n const startYear = range.from.getFullYear() - 1;\n const endYear = range.end.getFullYear() + 1;\n\n for (let year = startYear; year <= endYear; year++) {\n const occurrence = new Date(year, month, day);\n occurrence.setHours(0, 0, 0, 0);\n if (occurrence >= rangeStart && occurrence <= rangeEnd) {\n dates.push(occurrence);\n }\n }\n\n return dates;\n}\n","import { resolveMultiLanguageString } from '@acorex/core/translation';\nimport type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\nexport function resolveCalendarLocalizedText(\n value: AXPMultiLanguageString | string | null | undefined,\n locale: string,\n): string {\n if (value == null) {\n return '';\n }\n\n if (typeof value === 'string') {\n return value.trim();\n }\n\n return resolveMultiLanguageString(value, locale).trim();\n}\n","import { AXDataSourceFilterOption, AXRange } from '@acorex/cdk/common';\nimport { AXHolidayDate } from '@acorex/core/date-time';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { inject, Injectable } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-calendar-management-client/contracts';\nimport { AXMCalendarManagementCalendarOccasionEntityModel } from '@acorex-platform/module-calendar-management-client/contracts';\nimport { AXMCalendarManagementCalendarEntityModel } from '@acorex-platform/module-calendar-management-client/contracts';\nimport { mapCalendarOccasionToHolidayDate } from './calendar-occasion-holiday.mapper';\nimport { expandCalendarOccasionOccurrences } from './calendar-occasion-recurrence.utils';\nimport { resolveCalendarLocalizedText } from './calendar-localization.utils';\n\nexport interface AXMCalendarManagementOccasion {\n date: Date;\n isPublicHoliday: boolean;\n type: {\n color: string;\n icon?: string;\n };\n title: string;\n description?: string;\n}\n\n/** Active calendars only (non-archived, including rows without `isArchived`). */\nconst NON_ARCHIVED_CALENDAR_FILTER: AXDataSourceFilterOption = {\n logic: 'or',\n filters: [\n { field: 'isArchived', operator: { type: 'equal' }, value: false },\n { field: 'isArchived', operator: { type: 'isNull' } },\n ],\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXMCalendarManagementService {\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n\n //#region ---- Data Accessors ----\n\n private readonly calendarOccasionDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.calendarOccasion.name)\n .data<string, AXMCalendarManagementCalendarOccasionEntityModel>();\n\n private readonly calendarDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.calendar.name)\n .data<string, AXMCalendarManagementCalendarEntityModel>();\n\n //#endregion\n\n //#region ---- Methods ----\n\n async getCalendars(): Promise<{ id: string, title: string }[]> {\n const calendars = await this.calendarDataAccessor.query({\n skip: 0,\n take: 9999,\n filter: {\n logic: 'and',\n filters: [NON_ARCHIVED_CALENDAR_FILTER],\n },\n });\n const locale = this.translationService.getActiveLang();\n return calendars.items.map(\n (calendar: AXMCalendarManagementCalendarEntityModel) =>\n ({\n id: calendar.id,\n title: resolveCalendarLocalizedText(calendar.title, locale),\n }),\n );\n }\n\n async getOccasions(range: AXRange<Date>, calendarIds?: string[]): Promise<AXMCalendarManagementOccasion[]> {\n if (!calendarIds || calendarIds.length === 0) {\n return [];\n }\n\n const calendars = await this.calendarDataAccessor.query({\n skip: 0,\n take: 9999,\n filter: {\n logic: 'and',\n filters: [\n { field: 'id', operator: { type: 'in' }, value: calendarIds },\n NON_ARCHIVED_CALENDAR_FILTER,\n ],\n },\n });\n\n if (calendars.items.length === 0) {\n return [];\n }\n\n const filters: AXDataSourceFilterOption[] = [\n { field: 'calendarId', operator: { type: 'in' }, value: calendarIds },\n {\n logic: 'or',\n filters: [\n { field: 'isRecurring', operator: { type: 'equal' }, value: true },\n {\n logic: 'and',\n filters: [\n { field: 'date', operator: { type: 'gte' }, value: range.from },\n { field: 'date', operator: { type: 'lte' }, value: range.end },\n ],\n },\n ],\n },\n ];\n\n const occasions = await this.calendarOccasionDataAccessor.query({\n skip: 0,\n take: 9999,\n filter: {\n logic: 'and',\n filters,\n },\n });\n\n const locale = this.translationService.getActiveLang();\n const expandedOccasions: AXMCalendarManagementOccasion[] = [];\n\n for (const occasion of occasions.items) {\n const occurrenceDates = expandCalendarOccasionOccurrences(occasion, range);\n\n for (const date of occurrenceDates) {\n expandedOccasions.push({\n date,\n title: resolveCalendarLocalizedText(occasion.title, locale),\n description: resolveCalendarLocalizedText(occasion.description, locale) || undefined,\n isPublicHoliday: occasion.isPublicHoliday ?? occasion.type?.isPublicHoliday ?? false,\n type: {\n color: occasion.type?.color ?? '#6b7280',\n icon: occasion.type?.icon,\n },\n });\n }\n }\n\n return expandedOccasions.sort((left, right) => left.date.getTime() - right.date.getTime());\n }\n\n async getHolidayDates(range: AXRange<Date>, calendarIds?: string[]): Promise<AXHolidayDate[]> {\n const occasions = await this.getOccasions(range, calendarIds);\n return occasions.map((occasion) => mapCalendarOccasionToHolidayDate(occasion));\n }\n\n //#endregion\n}\n","import { AXRange } from '@acorex/cdk/common';\nimport {\n AX_DATETIME_HOLIDAYS_LOADER,\n AXCalendarService,\n AXHolidayDate,\n AXHolidaysLoader,\n AXHolidaysLoaderOptions,\n} from '@acorex/core/date-time';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\nimport { normalizeRegionalCalendarEventIds } from './calendar-event-ids.utils';\nimport { mapCalendarOccasionToHolidayDate } from './calendar-occasion-holiday.mapper';\nimport { AXMCalendarManagementService } from './calendar-management.service';\n\nfunction resolveHolidayRange(options?: AXHolidaysLoaderOptions): AXRange<Date> {\n if (options?.range) {\n return {\n from: options.range.start,\n end: options.range.end,\n };\n }\n\n const now = new Date();\n return {\n from: new Date(now.getFullYear() - 2, 0, 1),\n end: new Date(now.getFullYear() + 2, 11, 31),\n };\n}\n\n@Injectable()\nexport class AXMCalendarManagementHolidaysLoader implements AXHolidaysLoader {\n private readonly calendarManagementService = inject(AXMCalendarManagementService);\n private readonly settingsService = inject(AXPSettingsService);\n\n async getHolidays(options?: AXHolidaysLoaderOptions): Promise<AXHolidayDate[]> {\n const range = resolveHolidayRange(options);\n const calendarIds = await this.resolveCalendarIds();\n\n if (calendarIds.length === 0) {\n return [];\n }\n\n const occasions = await this.calendarManagementService.getOccasions(range, calendarIds);\n return occasions.map((occasion) => mapCalendarOccasionToHolidayDate(occasion));\n }\n\n private async resolveCalendarIds(): Promise<string[]> {\n // An empty selection means \"no calendars\", so no holidays should be loaded.\n // Falling back to every calendar here made the scheduler render all holidays\n // whenever the user cleared the calendar selection.\n return normalizeRegionalCalendarEventIds(\n await this.settingsService.get(AXPRegionalSetting.CalendarEvents),\n );\n }\n}\n\nexport const AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER = {\n provide: AX_DATETIME_HOLIDAYS_LOADER,\n useClass: AXMCalendarManagementHolidaysLoader,\n};\n","import { AXCalendarService } from '@acorex/core/date-time';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPRegionalSetting } from '@acorex-platform/framework-shared/core';\nimport { inject, Injectable } from '@angular/core';\n\nconst HOLIDAY_RELOAD_SETTING_KEYS = [\n AXPRegionalSetting.CalendarEvents,\n AXPRegionalSetting.Language,\n AXPRegionalSetting.LocaleProfile,\n] as const;\n\n@Injectable({ providedIn: 'root' })\nexport class AXMCalendarManagementHolidaysSyncService {\n private readonly calendarService = inject(AXCalendarService);\n private readonly settingsService = inject(AXPSettingsService);\n\n constructor() {\n this.settingsService.onLoaded.subscribe(() => {\n void this.reloadHolidays();\n });\n\n this.settingsService.onChanged.subscribe((change) => {\n if (change.keys.some((key) => (HOLIDAY_RELOAD_SETTING_KEYS as readonly string[]).includes(key))) {\n void this.reloadHolidays();\n }\n });\n }\n\n private reloadHolidays(): Promise<void> {\n return this.calendarService.loadHolidays();\n }\n}\n","import { AXP_MODULE_MANIFEST_PROVIDER, provideLazyProvider } from '@acorex-platform/framework-client/core';\nimport { CalendarManagementManifest } 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 { provideQuerySetups } from '@acorex-platform/framework-client/runtime';\nimport { CommonModule } from '@angular/common';\nimport { inject, NgModule } from '@angular/core';\nimport { AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER } from './features/shared/calendar-management-holidays.loader';\nimport { AXMCalendarManagementHolidaysSyncService } from './features/shared/calendar-management-holidays.sync';\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n providers: [\n // Module Manifest Provider\n {\n provide: AXP_MODULE_MANIFEST_PROVIDER,\n useValue: CalendarManagementManifest,\n multi: true,\n },\n // Provider references (now using tokens)\n provideLazyProvider(\n AXP_PERMISSION_DEFINITION_PROVIDER,\n () => import('./permission-definition.provider').then(m => m.AXMCalendarManagementPermissionDefinitionProvider)\n ),\n provideLazyProvider(\n AXP_MENU_PROVIDER,\n () => import('./menu.provider').then(m => m.AXMCalendarManagementMenuProvider)\n ),\n \n provideLazyProvider(\n AXP_SEARCH_PROVIDER,\n () => import('./search-command.provider').then(m => m.AXMCalendarManagementSearchCommandProvider)\n ),\n provideQuerySetups([\n {\n key: 'CalendarManagement:ListCalendarSystems',\n loader: () =>\n import('./features/queries/list-calendar-systems.query').then(\n (c) => c.AXMListCalendarSystemsQuery,\n ),\n },\n ]),\n AXM_CALENDAR_MANAGEMENT_HOLIDAYS_LOADER_PROVIDER,\n ],\n})\nexport class AXMCalendarManagementModule {\n constructor() {\n inject(AXMCalendarManagementHolidaysSyncService);\n }\n}\n","//#region ---- Imports ----\n\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { inject } from '@angular/core';\nimport {\n AXPCommonMenuKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n RootConfig,\n AXPCollaborationPermissionKeys\n} from '@acorex-platform/module-calendar-management-client/contracts';\nimport { AXPCalendarManagementMenuKeys } from '@acorex-platform/module-calendar-management-client/contracts';\n\n//#endregion\n\n//#region ---- Menu Provider ----\n\nexport class AXMCalendarManagementMenuProvider 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 context.find(AXPCommonMenuKeys.DateAndTime).addItems([\n {\n name: AXPCalendarManagementMenuKeys.Calendars,\n text: '@calendar-management:calendars.entities.calendar.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.calendar.name),\n icon: RootConfig.entities.calendar.icon,\n priority: 2,\n policy: {\n features: [module.name],\n permissions: [keys.MaintainCalendars],\n },\n },\n {\n name: AXPCalendarManagementMenuKeys.CalendarOccasionTypes,\n text: '@calendar-management:calendar-occasion-types.entities.calendar-occasion-type.plural',\n path: this.entityService.createPath(module.name, RootConfig.entities.calendarOccasionType.name),\n icon: RootConfig.entities.calendarOccasionType.icon,\n priority: 3,\n policy: {\n features: [module.name],\n permissions: [keys.Setup],\n },\n },\n ]);\n }\n}\n\n//#endregion\n","//#region ----- Imports -----\n\nimport {\n AXPPermissionDefinitionProvider,\n AXPPermissionDefinitionProviderContext,\n} from '@acorex-platform/framework-client/auth';\nimport {\n AXPCommonPermissionGroupKeys\n} from '@acorex-platform/module-common-client/contracts';\nimport {\n AXPCollaborationPermissionKeys\n} from '@acorex-platform/module-calendar-management-client/contracts';\n\nimport { Injectable } from '@angular/core';\n\n//#endregion\n\n//#region ----- Permission Definition Provider -----\n\n/**\n * Registers calendar capabilities into the shared Collaboration group.\n */\n@Injectable()\nexport class AXMCalendarManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {\n async define(context: AXPPermissionDefinitionProviderContext): Promise<void> {\n const keys = AXPCollaborationPermissionKeys;\n const groups = AXPCommonPermissionGroupKeys;\n const P = '@common:collaboration.permissions';\n const G = '@common:permission-groups';\n\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.MaintainCalendars, `${P}.maintain-calendars.title`, `${P}.maintain-calendars.description`)\n .endPermission()\n .endGroup();\n }\n}\n\n//#endregion\n","import { AXPSearchCommandProvider, AXPSearchResult, createEntityCommandOptions } from '@acorex-platform/framework-client/common';\nimport { RootConfig } from '@acorex-platform/module-calendar-management-client/contracts';\n\nexport class AXMCalendarManagementSearchCommandProvider extends AXPSearchCommandProvider {\n commands: AXPSearchResult[] = [\n {\n id: 'create-calendar',\n group: 'command',\n title: RootConfig.entities.calendar.title,\n icon: RootConfig.entities.calendar.icon,\n description: RootConfig.entities.calendar.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.calendar.name}`,\n {\n name: RootConfig.entities.calendar.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.calendar.title,\n }\n ),\n },\n },\n {\n id: 'create-calendar-occasion-type',\n group: 'command',\n title: RootConfig.entities.calendarOccasionType.title,\n icon: RootConfig.entities.calendarOccasionType.icon,\n description: RootConfig.entities.calendarOccasionType.titlePlural,\n command: {\n name: 'Entity:Create',\n options: createEntityCommandOptions(\n `${RootConfig.module.name}.${RootConfig.entities.calendarOccasionType.name}`,\n {\n name: RootConfig.entities.calendarOccasionType.name,\n module: RootConfig.module.name,\n title: RootConfig.entities.calendarOccasionType.title,\n }\n ),\n },\n },\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;AAKA;AAEA;AAEA;;;AAGG;AACI,MAAM,0BAA0B,GAAsB;AAC3D,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;AAC9B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC5B,IAAA,IAAI,EAAE,UAAU;AAChB,IAAA,MAAM,EAAE,UAAU;AAClB,IAAA,QAAQ,EAAE,IAAI;;CAGf;AAED;;AC1BA;AACM,SAAU,iCAAiC,CAAC,KAAc,EAAA;AAC9D,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IACrD,OAAO;QACL,GAAG,IAAI,GAAG,CACR;AACG,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACxD,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB;YACA,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE;AACpD,gBAAA,OAAO,MAAM,CAAE,IAAgC,CAAC,EAAE,CAAC;YACrD;AACA,YAAA,OAAO,EAAE;AACX,QAAA,CAAC;aACA,MAAM,CAAC,OAAO,CAAC,CACnB;KACF;AACH;;ACnBA,MAAM,gBAAgB,GAAG,sCAAsC;AAC/D,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAU;AAEhD,SAAS,QAAQ,CAAC,GAAW,EAAA;AAC3B,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;IAEA,OAAO;AACL,QAAA,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC,QAAA,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC,QAAA,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KAC1C;AACH;AAEA,SAAS,yBAAyB,CAAC,KAAa,EAAA;AAC9C,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE;IACtC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AACzC,IAAA,MAAM,SAAS,GAAG,CAAA,sBAAA,EAAyB,KAAK,EAAE;AAElD,IAAA,IAAI,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACzC,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;AACrC,IAAA,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC;AAClD,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,2BAA2B,CAAC,KAAa,EAAE,SAAiB,EAAA;AACnE,IAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;QACnC;IACF;IAEA,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAA4B;IACvF,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC9C,QAAA,YAAY,CAAC,EAAE,GAAG,gBAAgB;AAClC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;IACzC;AAEA,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC3B,MAAM,eAAe,GAAG,GAAG,GAAG,CAAA,KAAA,EAAQ,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,CAAA,EAAA,EAAK,GAAG,CAAC,CAAC,SAAS,GAAG,aAAa;AAExF,IAAA,YAAY,CAAC,WAAW,CACtB,QAAQ,CAAC,cAAc,CAAC;kDACsB,SAAS,CAAA;qCACtB,SAAS,CAAA;4BAClB,eAAe,CAAA;;;kDAGO,SAAS,CAAA;yDACF,SAAS,CAAA;wDACV,SAAS,CAAA;wDACT,SAAS,CAAA;yDACR,SAAS,CAAA;qCAC7B,SAAS,CAAA;iBAC7B,KAAK,CAAA;;;AAGjB,IAAA,CAAA,CAAC,CACH;AACH;AAEM,SAAU,gCAAgC,CAAC,QAAuC,EAAA;AACtF,IAAA,IAAI,QAAQ,CAAC,eAAe,EAAE;QAC5B,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;AACxB,YAAA,SAAS,EAAE,IAAI;SAChB;IACH;IAEA,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS;IAE9C,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;AACjC,QAAA,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC;QAC1C,KAAK;AACL,QAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI;AACxB,QAAA,SAAS,EAAE,KAAK;KACjB;AACH;;ACnFA,SAAS,UAAU,CAAC,IAAU,EAAA;AAC5B,IAAA,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;IACjC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAA,OAAO,UAAU;AACnB;AAEA,SAAS,mBAAmB,CAAC,IAAY,EAAA;AACvC,IAAA,OAAO,MAAM,CAAC,WAAW,CACvB;SACG,KAAK,CAAC,GAAG;SACT,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;SACzB,MAAM,CAAC,OAAO;AACd,SAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,QAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,QAAA,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CACL;AACH;AAEA;;;AAGG;AACG,SAAU,iCAAiC,CAC/C,QAA0B,EAC1B,KAAoB,EAAA;IAEpB,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElD,IAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AACzB,QAAA,OAAO,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;IACnE;AAEA,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE,IAAI;AAC1C,UAAE,mBAAmB,CAAC,QAAQ,CAAC,cAAc;AAC7C,UAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAEtB,IAAA,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;AACjD,QAAA,OAAO,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;IACnE;AAEA,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAC/B,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE;IAC5B,MAAM,KAAK,GAAW,EAAE;IACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;AAE3C,IAAA,KAAK,IAAI,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QAC7C,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,UAAU,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,EAAE;AACtD,YAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QACxB;IACF;AAEA,IAAA,OAAO,KAAK;AACd;;AC/DM,SAAU,4BAA4B,CAC1C,KAAyD,EACzD,MAAc,EAAA;AAEd,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC,IAAI,EAAE;IACrB;IAEA,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;AACzD;;ACOA;AACA,MAAM,4BAA4B,GAA6B;AAC7D,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,OAAO,EAAE;AACP,QAAA,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAClE,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;AACtD,KAAA;CACF;MAKY,4BAA4B,CAAA;AAHzC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,oBAAoB,CAAC;;QAIjD,IAAA,CAAA,4BAA4B,GAAG,IAAI,CAAC;AAClD,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI;AAC5E,aAAA,IAAI,EAA4D;QAElD,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC;AAC1C,aAAA,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AACpE,aAAA,IAAI,EAAoD;AAqG5D,IAAA;;;AA/FC,IAAA,MAAM,YAAY,GAAA;QAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,CAAC,4BAA4B,CAAC;AACxC,aAAA;AACF,SAAA,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QACtD,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CACxB,CAAC,QAAkD,MAClD;YACC,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,KAAK,EAAE,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;AAC5D,SAAA,CAAC,CACH;IACH;AAEA,IAAA,MAAM,YAAY,CAAC,KAAoB,EAAE,WAAsB,EAAA;QAC7D,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5C,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;AACtD,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC7D,4BAA4B;AAC7B,iBAAA;AACF,aAAA;AACF,SAAA,CAAC;QAEF,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;AACrE,YAAA;AACE,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE;AACP,oBAAA,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAClE,oBAAA;AACE,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,OAAO,EAAE;AACP,4BAAA,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;AAC/D,4BAAA,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE;AAC/D,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;AAC9D,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,KAAK;gBACZ,OAAO;AACR,aAAA;AACF,SAAA,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QACtD,MAAM,iBAAiB,GAAoC,EAAE;AAE7D,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,KAAK,EAAE;YACtC,MAAM,eAAe,GAAG,iCAAiC,CAAC,QAAQ,EAAE,KAAK,CAAC;AAE1E,YAAA,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE;gBAClC,iBAAiB,CAAC,IAAI,CAAC;oBACrB,IAAI;oBACJ,KAAK,EAAE,4BAA4B,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;oBAC3D,WAAW,EAAE,4BAA4B,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,SAAS;oBACpF,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,QAAQ,CAAC,IAAI,EAAE,eAAe,IAAI,KAAK;AACpF,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;AACxC,wBAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI;AAC1B,qBAAA;AACF,iBAAA,CAAC;YACJ;QACF;QAEA,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5F;AAEA,IAAA,MAAM,eAAe,CAAC,KAAoB,EAAE,WAAsB,EAAA;QAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;AAC7D,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAChF;8GA9GW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA,CAAA;;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACnBD,SAAS,mBAAmB,CAAC,OAAiC,EAAA;AAC5D,IAAA,IAAI,OAAO,EAAE,KAAK,EAAE;QAClB,OAAO;AACL,YAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;AACzB,YAAA,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG;SACvB;IACH;AAEA,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;IACtB,OAAO;AACL,QAAA,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3C,QAAA,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;KAC7C;AACH;MAGa,mCAAmC,CAAA;AADhD,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAChE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAsB9D,IAAA;IApBC,MAAM,WAAW,CAAC,OAAiC,EAAA;AACjD,QAAA,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC1C,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAEnD,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;AACvF,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAChF;AAEQ,IAAA,MAAM,kBAAkB,GAAA;;;;AAI9B,QAAA,OAAO,iCAAiC,CACtC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAClE;IACH;8GAvBW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAnC,mCAAmC,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C;;AA2BM,MAAM,gDAAgD,GAAG;AAC9D,IAAA,OAAO,EAAE,2BAA2B;AACpC,IAAA,QAAQ,EAAE,mCAAmC;CAC9C;;ACvDD,MAAM,2BAA2B,GAAG;AAClC,IAAA,kBAAkB,CAAC,cAAc;AACjC,IAAA,kBAAkB,CAAC,QAAQ;AAC3B,IAAA,kBAAkB,CAAC,aAAa;CACxB;MAGG,wCAAwC,CAAA;AAInD,IAAA,WAAA,GAAA;AAHiB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC3C,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAG3D,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;AAC3C,YAAA,KAAK,IAAI,CAAC,cAAc,EAAE;AAC5B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AAClD,YAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAM,2BAAiD,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/F,gBAAA,KAAK,IAAI,CAAC,cAAc,EAAE;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,cAAc,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC5C;8GAlBW,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wCAAwC,cAD3B,MAAM,EAAA,CAAA,CAAA;;2FACnB,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBADpD,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCoCrB,2BAA2B,CAAA;AACpC,IAAA,WAAA,GAAA;QACI,MAAM,CAAC,wCAAwC,CAAC;IACpD;8GAHS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,YAnChC,YAAY,CAAA,EAAA,CAAA,CAAA;AAmCP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,SAAA,EAjCzB;;AAEP,YAAA;AACI,gBAAA,OAAO,EAAE,4BAA4B;AACrC,gBAAA,QAAQ,EAAE,0BAA0B;AACpC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;;YAED,mBAAmB,CACf,kCAAkC,EAClC,MAAM,6EAA0C,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAClH;YACD,mBAAmB,CACf,iBAAiB,EACjB,MAAM,6DAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CACjF;YAED,mBAAmB,CACf,mBAAmB,EACnB,MAAM,sEAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,0CAA0C,CAAC,CACpG;AACD,YAAA,kBAAkB,CAAC;AACf,gBAAA;AACI,oBAAA,GAAG,EAAE,wCAAwC;AAC7C,oBAAA,MAAM,EAAE,MACJ,OAAO,8FAAgD,CAAC,CAAC,IAAI,CACzD,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CACvC;AACR,iBAAA;aACJ,CAAC;YACF,gDAAgD;AACnD,SAAA,EAAA,OAAA,EAAA,CAjCG,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAmCP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBArCvC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;AACf,qBAAA;AACD,oBAAA,SAAS,EAAE;;AAEP,wBAAA;AACI,4BAAA,OAAO,EAAE,4BAA4B;AACrC,4BAAA,QAAQ,EAAE,0BAA0B;AACpC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;;wBAED,mBAAmB,CACf,kCAAkC,EAClC,MAAM,6EAA0C,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAClH;wBACD,mBAAmB,CACf,iBAAiB,EACjB,MAAM,6DAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CACjF;wBAED,mBAAmB,CACf,mBAAmB,EACnB,MAAM,sEAAmC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,0CAA0C,CAAC,CACpG;AACD,wBAAA,kBAAkB,CAAC;AACf,4BAAA;AACI,gCAAA,GAAG,EAAE,wCAAwC;AAC7C,gCAAA,MAAM,EAAE,MACJ,OAAO,8FAAgD,CAAC,CAAC,IAAI,CACzD,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CACvC;AACR,6BAAA;yBACJ,CAAC;wBACF,gDAAgD;AACnD,qBAAA;AACJ,iBAAA;;;AC9CD;AAcA;AAEA;MAEa,iCAAiC,CAAA;AAA9C,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;IA+BpD;IA7BI,MAAM,OAAO,CAAC,OAA+B,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;QAChC,MAAM,IAAI,GAAG,8BAA8B;QAE3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;AACjD,YAAA;gBACI,IAAI,EAAE,6BAA6B,CAAC,SAAS;AAC7C,gBAAA,IAAI,EAAE,yDAAyD;AAC/D,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnF,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AACvC,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE;AACJ,oBAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,oBAAA,WAAW,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACxC,iBAAA;AACJ,aAAA;AACD,YAAA;gBACI,IAAI,EAAE,6BAA6B,CAAC,qBAAqB;AACzD,gBAAA,IAAI,EAAE,qFAAqF;AAC3F,gBAAA,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/F,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;AACnD,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,MAAM,EAAE;AACJ,oBAAA,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,oBAAA,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,iBAAA;AACJ,aAAA;AACJ,SAAA,CAAC;IACN;AACH;AAED;;;;;;;ACrCA;AAEA;AAEA;;AAEG;MAEU,iDAAiD,CAAA;IAC5D,MAAM,MAAM,CAAC,OAA+C,EAAA;QAC1D,MAAM,IAAI,GAAG,8BAA8B;QAC3C,MAAM,MAAM,GAAG,4BAA4B;QAC3C,MAAM,CAAC,GAAG,mCAAmC;QAC7C,MAAM,CAAC,GAAG,2BAA2B;QAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA,EAAG,CAAC,sBAAsB,EAAE,CAAA,EAAG,CAAC,CAAA,0BAAA,CAA4B,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAExH;AACG,aAAA,QAAQ,CACP,MAAM,CAAC,aAAa,CAAC,UAAU,EAC/B,CAAA,EAAG,CAAC,CAAA,+BAAA,CAAiC,EACrC,CAAA,EAAG,CAAC,CAAA,qCAAA,CAAuC,EAC3C,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;AAEjD,aAAA,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAA,EAAG,CAAC,CAAA,yBAAA,CAA2B,EAAE,CAAA,EAAG,CAAC,CAAA,+BAAA,CAAiC;AAC5G,aAAA,aAAa;AACb,aAAA,QAAQ,EAAE;IACf;8GAnBW,iDAAiD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjD,iDAAiD,EAAA,CAAA,CAAA;;2FAAjD,iDAAiD,EAAA,UAAA,EAAA,CAAA;kBAD7D;;;;;;;;ACnBK,MAAO,0CAA2C,SAAQ,wBAAwB,CAAA;AAAxF,IAAA,WAAA,GAAA;;AACE,QAAA,IAAA,CAAA,QAAQ,GAAsB;AAC5B,YAAA;AACE,gBAAA,EAAE,EAAE,iBAAiB;AACrB,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;AACzC,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AACvC,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;AACrD,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAChE;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI;AACvC,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;qBAC1C,CACF;AACF,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,+BAA+B;AACnC,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK;AACrD,gBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;AACnD,gBAAA,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW;AACjE,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,OAAO,EAAE,0BAA0B,CACjC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAC5E;AACE,wBAAA,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI;AACnD,wBAAA,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI;AAC9B,wBAAA,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK;qBACtD,CACF;AACF,iBAAA;AACF,aAAA;SACF;IACH;AAAC;;;;;;;AC1CD;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@acorex-platform/module-calendar-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-calendar-management-client.mjs",
13
+ "typings": "types/acorex-platform-module-calendar-management-client.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/acorex-platform-module-calendar-management-client.d.ts",
20
+ "default": "./fesm2022/acorex-platform-module-calendar-management-client.mjs"
21
+ },
22
+ "./contracts": {
23
+ "types": "./types/acorex-platform-module-calendar-management-client-contracts.d.ts",
24
+ "default": "./fesm2022/acorex-platform-module-calendar-management-client-contracts.mjs"
25
+ }
26
+ },
27
+ "type": "module"
28
+ }
@@ -0,0 +1,129 @@
1
+ import { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';
2
+ import { AXPEntityModel } from '@acorex-platform/framework-shared/entity';
3
+
4
+ declare const AXPCalendarManagementFeatureKeys: {};
5
+
6
+ declare const AXPCalendarManagementMenuKeys: {
7
+ readonly Root: "CalendarManagement:Menu";
8
+ readonly Calendars: "CalendarManagement:Menu:Calendars";
9
+ readonly CalendarOccasionTypes: "CalendarManagement:Menu:CalendarOccasionTypes";
10
+ };
11
+
12
+ /**
13
+ * Collaboration capabilities used by this module.
14
+ * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).
15
+ */
16
+ declare const AXPCollaborationPermissionKeys: {
17
+ readonly Access: "Collaboration:Permission:Access";
18
+ readonly MaintainConversations: "Collaboration:Permission:MaintainConversations";
19
+ readonly MaintainMeetings: "Collaboration:Permission:MaintainMeetings";
20
+ readonly MaintainCalendars: "Collaboration:Permission:MaintainCalendars";
21
+ readonly MaintainCommunications: "Collaboration:Permission:MaintainCommunications";
22
+ readonly MaintainReservations: "Collaboration:Permission:MaintainReservations";
23
+ readonly MaintainHelpDesk: "Collaboration:Permission:MaintainHelpDesk";
24
+ readonly Setup: "Collaboration:Permission:Setup";
25
+ };
26
+ /**
27
+ * @deprecated Prefer {@link AXPCollaborationPermissionKeys}.
28
+ * Legacy nested shape kept so existing imports compile during migration.
29
+ */
30
+ declare const AXMPermissionsKeys: {
31
+ readonly CalendarManagement: {
32
+ readonly Management: "Collaboration:Permission:MaintainCalendars";
33
+ readonly Calendar: {
34
+ readonly Management: "Collaboration:Permission:MaintainCalendars";
35
+ readonly View: "Collaboration:Permission:MaintainCalendars";
36
+ readonly Create: "Collaboration:Permission:MaintainCalendars";
37
+ readonly Update: "Collaboration:Permission:MaintainCalendars";
38
+ readonly Delete: "Collaboration:Permission:MaintainCalendars";
39
+ readonly Admin: "Collaboration:Permission:MaintainCalendars";
40
+ };
41
+ readonly CalendarOccasionType: {
42
+ readonly Management: "Collaboration:Permission:Setup";
43
+ readonly View: "Collaboration:Permission:Setup";
44
+ readonly Create: "Collaboration:Permission:Setup";
45
+ readonly Update: "Collaboration:Permission:Setup";
46
+ readonly Delete: "Collaboration:Permission:Setup";
47
+ };
48
+ };
49
+ };
50
+
51
+ declare const RootConfig: {
52
+ readonly config: {
53
+ i18n: string;
54
+ module: string;
55
+ };
56
+ readonly module: {
57
+ readonly name: string;
58
+ readonly title: `@${string}:module.title`;
59
+ readonly icon: "fa-light fa-calendar";
60
+ };
61
+ readonly entities: {
62
+ readonly calendar: {
63
+ readonly name: "Calendar";
64
+ readonly title: `@${string}:calendars.entities.calendar.title`;
65
+ readonly titlePlural: `@${string}:calendars.entities.calendar.plural`;
66
+ readonly icon: "fa-light fa-calendar";
67
+ };
68
+ readonly calendarOccasion: {
69
+ readonly name: "CalendarOccasion";
70
+ readonly title: `@${string}:calendar-occasions.entities.calendar-occasion.title`;
71
+ readonly titlePlural: `@${string}:calendar-occasions.entities.calendar-occasion.plural`;
72
+ readonly icon: "fa-light fa-calendar-day";
73
+ };
74
+ readonly calendarOccasionType: {
75
+ readonly name: "CalendarOccasionType";
76
+ readonly title: `@${string}:calendar-occasion-types.entities.calendar-occasion-type.title`;
77
+ readonly titlePlural: `@${string}:calendar-occasion-types.entities.calendar-occasion-type.plural`;
78
+ readonly icon: "fa-light fa-tag";
79
+ };
80
+ };
81
+ };
82
+
83
+ interface AXMCalendarManagementCalendarEntityModel extends AXPEntityModel<string> {
84
+ name: string;
85
+ title: AXPMultiLanguageString;
86
+ description?: AXPMultiLanguageString;
87
+ parentId?: string;
88
+ isActive: boolean;
89
+ }
90
+
91
+ interface AXMCalendarManagementCalendarOccasionEntityModel extends AXPEntityModel<string> {
92
+ calendarId: string;
93
+ title: AXPMultiLanguageString;
94
+ description?: AXPMultiLanguageString;
95
+ typeId: string;
96
+ /** Canonical Gregorian calendar day (ISO date). */
97
+ date: Date;
98
+ isRecurring: boolean;
99
+ /** Yearly repeat uses month/day from {@link date}; only FREQ=YEARLY is supported. */
100
+ recurrenceRule?: string;
101
+ /** When set, overrides the occasion type default for calendars and task board. */
102
+ isPublicHoliday?: boolean;
103
+ isActive: boolean;
104
+ order: number;
105
+ calendar?: {
106
+ id: string;
107
+ title: AXPMultiLanguageString;
108
+ };
109
+ type?: {
110
+ id: string;
111
+ title: AXPMultiLanguageString;
112
+ color: string;
113
+ icon?: string;
114
+ isPublicHoliday?: boolean;
115
+ };
116
+ }
117
+
118
+ interface AXMCalendarManagementCalendarOccasionTypeEntityModel extends AXPEntityModel<string> {
119
+ title: AXPMultiLanguageString;
120
+ description?: AXPMultiLanguageString;
121
+ /** Default for new occasions of this type; occasion-level value overrides when set. */
122
+ isPublicHoliday?: boolean;
123
+ color: string;
124
+ icon?: string;
125
+ isActive: boolean;
126
+ }
127
+
128
+ export { AXMPermissionsKeys, AXPCalendarManagementFeatureKeys, AXPCalendarManagementMenuKeys, AXPCollaborationPermissionKeys, RootConfig };
129
+ export type { AXMCalendarManagementCalendarEntityModel, AXMCalendarManagementCalendarOccasionEntityModel, AXMCalendarManagementCalendarOccasionTypeEntityModel };
@@ -0,0 +1,82 @@
1
+ import * as i0 from '@angular/core';
2
+ import * as i1 from '@angular/common';
3
+ import { AXPMenuProvider, AXPMenuProviderContext, AXPSearchCommandProvider, AXPSearchResult } from '@acorex-platform/framework-client/common';
4
+ import { AXPPermissionDefinitionProvider, AXPPermissionDefinitionProviderContext } from '@acorex-platform/framework-client/auth';
5
+ import { AXRange } from '@acorex/cdk/common';
6
+ import { AXHolidayDate, AXHolidaysLoader, AXHolidaysLoaderOptions } from '@acorex/core/date-time';
7
+
8
+ declare class AXMCalendarManagementModule {
9
+ constructor();
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementModule, never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMCalendarManagementModule, never, [typeof i1.CommonModule], never>;
12
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXMCalendarManagementModule>;
13
+ }
14
+
15
+ declare class AXMCalendarManagementMenuProvider implements AXPMenuProvider {
16
+ private entityService;
17
+ provide(context: AXPMenuProviderContext): Promise<void>;
18
+ }
19
+
20
+ /**
21
+ * Registers calendar capabilities into the shared Collaboration group.
22
+ */
23
+ declare class AXMCalendarManagementPermissionDefinitionProvider implements AXPPermissionDefinitionProvider {
24
+ define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
25
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementPermissionDefinitionProvider, never>;
26
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementPermissionDefinitionProvider>;
27
+ }
28
+
29
+ declare class AXMCalendarManagementSearchCommandProvider extends AXPSearchCommandProvider {
30
+ commands: AXPSearchResult[];
31
+ }
32
+
33
+ interface AXMCalendarManagementOccasion {
34
+ date: Date;
35
+ isPublicHoliday: boolean;
36
+ type: {
37
+ color: string;
38
+ icon?: string;
39
+ };
40
+ title: string;
41
+ description?: string;
42
+ }
43
+ declare class AXMCalendarManagementService {
44
+ private readonly entityService;
45
+ private readonly translationService;
46
+ private readonly calendarOccasionDataAccessor;
47
+ private readonly calendarDataAccessor;
48
+ getCalendars(): Promise<{
49
+ id: string;
50
+ title: string;
51
+ }[]>;
52
+ getOccasions(range: AXRange<Date>, calendarIds?: string[]): Promise<AXMCalendarManagementOccasion[]>;
53
+ getHolidayDates(range: AXRange<Date>, calendarIds?: string[]): Promise<AXHolidayDate[]>;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementService, never>;
55
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementService>;
56
+ }
57
+
58
+ declare class AXMCalendarManagementHolidaysLoader implements AXHolidaysLoader {
59
+ private readonly calendarManagementService;
60
+ private readonly settingsService;
61
+ getHolidays(options?: AXHolidaysLoaderOptions): Promise<AXHolidayDate[]>;
62
+ private resolveCalendarIds;
63
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementHolidaysLoader, never>;
64
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementHolidaysLoader>;
65
+ }
66
+
67
+ declare class AXMCalendarManagementHolidaysSyncService {
68
+ private readonly calendarService;
69
+ private readonly settingsService;
70
+ constructor();
71
+ private reloadHolidays;
72
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCalendarManagementHolidaysSyncService, never>;
73
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCalendarManagementHolidaysSyncService>;
74
+ }
75
+
76
+ declare function mapCalendarOccasionToHolidayDate(occasion: AXMCalendarManagementOccasion): AXHolidayDate;
77
+
78
+ /** Normalizes regional calendar-event setting values to calendar ids. */
79
+ declare function normalizeRegionalCalendarEventIds(value: unknown): string[];
80
+
81
+ export { AXMCalendarManagementHolidaysLoader, AXMCalendarManagementHolidaysSyncService, AXMCalendarManagementMenuProvider, AXMCalendarManagementModule, AXMCalendarManagementPermissionDefinitionProvider, AXMCalendarManagementSearchCommandProvider, AXMCalendarManagementService, mapCalendarOccasionToHolidayDate, normalizeRegionalCalendarEventIds };
82
+ export type { AXMCalendarManagementOccasion };