@acorex/modules 20.0.11 → 20.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/calendar-management/README.md +271 -0
  2. package/calendar-management/index.d.ts +156 -0
  3. package/contact-management/README.md +150 -0
  4. package/contact-management/index.d.ts +15 -4
  5. package/fesm2022/acorex-modules-calendar-management.mjs +1509 -0
  6. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -0
  7. package/fesm2022/acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs +128 -0
  8. package/fesm2022/acorex-modules-common-search-popup.component-B_bJ0ZRM.mjs.map +1 -0
  9. package/fesm2022/acorex-modules-common.mjs +2 -2
  10. package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs +2548 -0
  11. package/fesm2022/acorex-modules-contact-management-acorex-modules-contact-management-DVjMlS0K.mjs.map +1 -0
  12. package/fesm2022/{acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs → acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs} +65 -38
  13. package/fesm2022/acorex-modules-contact-management-address-type.entity-CWIBwWfZ.mjs.map +1 -0
  14. package/fesm2022/{acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs → acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs} +49 -95
  15. package/fesm2022/acorex-modules-contact-management-contact-address.entity-DO6GizbS.mjs.map +1 -0
  16. package/fesm2022/{acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs → acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs} +67 -69
  17. package/fesm2022/acorex-modules-contact-management-contact-method.entity-tEtMSV4f.mjs.map +1 -0
  18. package/fesm2022/{acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs → acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs} +34 -63
  19. package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-C-B5aOoq.mjs.map +1 -0
  20. package/fesm2022/{acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs → acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs} +67 -40
  21. package/fesm2022/acorex-modules-contact-management-contact-source.entity-Dw8jwcox.mjs.map +1 -0
  22. package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs +680 -0
  23. package/fesm2022/acorex-modules-contact-management-emergency-contact-category.entity-BJOOhcD1.mjs.map +1 -0
  24. package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs +1062 -0
  25. package/fesm2022/acorex-modules-contact-management-emergency-contact.entity-Cr7_5JKD.mjs.map +1 -0
  26. package/fesm2022/acorex-modules-contact-management.mjs +1 -2331
  27. package/fesm2022/acorex-modules-contact-management.mjs.map +1 -1
  28. package/fesm2022/acorex-modules-content-management.mjs +23 -0
  29. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-EsaVgkdd.mjs.map +1 -1
  31. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-TWTBqgn6.mjs → acorex-modules-platform-management-acorex-modules-platform-management-BLhzWiXM.mjs} +29 -5
  32. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-BLhzWiXM.mjs.map +1 -0
  33. package/fesm2022/{acorex-modules-platform-management-list-version.component-DQ3Gp9kl.mjs → acorex-modules-platform-management-list-version.component-CgF5pvTa.mjs} +2 -2
  34. package/fesm2022/{acorex-modules-platform-management-list-version.component-DQ3Gp9kl.mjs.map → acorex-modules-platform-management-list-version.component-CgF5pvTa.mjs.map} +1 -1
  35. package/fesm2022/{acorex-modules-platform-management-settings.provider-FXMK1_44.mjs → acorex-modules-platform-management-settings.provider-intHn3XI.mjs} +2 -2
  36. package/fesm2022/{acorex-modules-platform-management-settings.provider-FXMK1_44.mjs.map → acorex-modules-platform-management-settings.provider-intHn3XI.mjs.map} +1 -1
  37. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  38. package/fesm2022/{acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs → acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs} +4 -4
  39. package/fesm2022/{acorex-modules-report-management-report-create-root.component-CcNJIUk2.mjs.map → acorex-modules-report-management-report-create-root.component-DqrLa6vh.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs → acorex-modules-report-management-report-runner-root-page.component-S8qyvs79.mjs} +41 -24
  41. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-S8qyvs79.mjs.map +1 -0
  42. package/fesm2022/acorex-modules-report-management.mjs +670 -8
  43. package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
  44. package/fesm2022/acorex-modules-security-management.mjs +4 -2
  45. package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
  46. package/package.json +9 -5
  47. package/report-management/index.d.ts +303 -5
  48. package/fesm2022/acorex-modules-common-search-popup.component-CNh7TFpe.mjs +0 -128
  49. package/fesm2022/acorex-modules-common-search-popup.component-CNh7TFpe.mjs.map +0 -1
  50. package/fesm2022/acorex-modules-contact-management-address-type.entity-QMEODkhx.mjs.map +0 -1
  51. package/fesm2022/acorex-modules-contact-management-contact-address.entity-0f4Vaw_k.mjs.map +0 -1
  52. package/fesm2022/acorex-modules-contact-management-contact-method.entity-ChEz1jW0.mjs.map +0 -1
  53. package/fesm2022/acorex-modules-contact-management-contact-relationship.entity-DLfiEEfk.mjs.map +0 -1
  54. package/fesm2022/acorex-modules-contact-management-contact-source.entity-hopVxiIT.mjs.map +0 -1
  55. package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-TWTBqgn6.mjs.map +0 -1
  56. package/fesm2022/acorex-modules-report-management-report-runner-root-page.component-CAxcD_pe.mjs.map +0 -1
@@ -0,0 +1,1509 @@
1
+ import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
2
+ import { AXPSearchCommandProvider, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, createAllQueryView, AXPEntityQueryType, AXPEntityCommandScope } from '@acorex/platform/common';
3
+ import { AXMEntityCrudServiceImpl, AXPEntityService, AXP_ENTITY_DEFINITION_LOADER, entityMasterCrudActions, entityMasterDeleteAction, entityDetailsSimpleCondition, entityDetailsCrudActions } from '@acorex/platform/layout/entity';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i0 from '@angular/core';
6
+ import { Injectable, inject, Injector, NgModule } from '@angular/core';
7
+ import { AXTranslationService } from '@acorex/core/translation';
8
+ import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
9
+
10
+ const config = {
11
+ i18n: 'calendar-management',
12
+ module: 'CalendarManagement'
13
+ };
14
+ const RootConfig = {
15
+ config,
16
+ module: {
17
+ name: config.module,
18
+ title: `@${config.i18n}:module-name`,
19
+ icon: 'fa-light fa-calendar',
20
+ },
21
+ entities: {
22
+ calendar: {
23
+ name: 'Calendar',
24
+ title: `@${config.i18n}:calendar.individual-title`,
25
+ titlePlural: `@${config.i18n}:calendar.plural-title`,
26
+ icon: 'fa-light fa-calendar',
27
+ },
28
+ calendarEvent: {
29
+ name: 'CalendarEvent',
30
+ title: `@${config.i18n}:calendar-event.individual-title`,
31
+ titlePlural: `@${config.i18n}:calendar-event.plural-title`,
32
+ icon: 'fa-light fa-calendar-day',
33
+ },
34
+ calendarEventType: {
35
+ name: 'CalendarEventType',
36
+ title: `@${config.i18n}:calendar-event-type.individual-title`,
37
+ titlePlural: `@${config.i18n}:calendar-event-type.plural-title`,
38
+ icon: 'fa-light fa-tag',
39
+ },
40
+ },
41
+ };
42
+
43
+ class AXMCalendarService extends AXMEntityCrudServiceImpl {
44
+ }
45
+ class AXMCalendarServiceImpl extends AXMCalendarService {
46
+ constructor() {
47
+ super(`${RootConfig.module.name}.${RootConfig.entities.calendar.name}`);
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarServiceImpl }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarServiceImpl, decorators: [{
53
+ type: Injectable
54
+ }], ctorParameters: () => [] });
55
+
56
+ //#region ---- Abstract Service ----
57
+ class AXMCalendarEventService extends AXMEntityCrudServiceImpl {
58
+ }
59
+ //#endregion
60
+ //#region ---- Concrete Implementation ----
61
+ class AXMCalendarEventServiceImpl extends AXMCalendarEventService {
62
+ constructor() {
63
+ super(`${RootConfig.module.name}.${RootConfig.entities.calendarEvent.name}`);
64
+ }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventServiceImpl }); }
67
+ }
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventServiceImpl, decorators: [{
69
+ type: Injectable
70
+ }], ctorParameters: () => [] });
71
+
72
+ //#region ---- Abstract Service ----
73
+ class AXMCalendarEventTypeService extends AXMEntityCrudServiceImpl {
74
+ }
75
+ //#endregion
76
+ //#region ---- Concrete Implementation ----
77
+ class AXMCalendarEventTypeServiceImpl extends AXMCalendarEventTypeService {
78
+ constructor() {
79
+ super(`${RootConfig.module.name}.${RootConfig.entities.calendarEventType.name}`);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventTypeServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
82
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventTypeServiceImpl }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarEventTypeServiceImpl, decorators: [{
85
+ type: Injectable
86
+ }], ctorParameters: () => [] });
87
+
88
+ class AXMCalendarManagementEntityProvider {
89
+ constructor() {
90
+ this.injector = inject(Injector);
91
+ }
92
+ preload() {
93
+ const module = RootConfig.module.name;
94
+ return Array.from(Object.values(RootConfig.entities)).map((entity) => ({
95
+ module: module,
96
+ entity: entity.name,
97
+ }));
98
+ }
99
+ async get(moduleName, entityName) {
100
+ if (moduleName == RootConfig.module.name) {
101
+ switch (entityName) {
102
+ case RootConfig.entities.calendar.name:
103
+ return (await Promise.resolve().then(function () { return calendar_entity; })).calendarFactory(this.injector);
104
+ case RootConfig.entities.calendarEvent.name:
105
+ return (await Promise.resolve().then(function () { return calendarEvent_entity; })).calendarEventFactory(this.injector);
106
+ case RootConfig.entities.calendarEventType.name:
107
+ return (await Promise.resolve().then(function () { return calendarEventType_entity; })).calendarEventTypeFactory(this.injector);
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
113
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementEntityProvider }); }
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementEntityProvider, decorators: [{
116
+ type: Injectable
117
+ }] });
118
+
119
+ class AXMCalendarManagementMenuProvider {
120
+ constructor() {
121
+ this.entityService = inject(AXPEntityService);
122
+ }
123
+ async provide(context) {
124
+ const module = RootConfig.module;
125
+ context.addItems([
126
+ {
127
+ priority: 9003,
128
+ text: '@calendar-management:root-menu',
129
+ icon: module.icon,
130
+ data: {
131
+ requiredPermissions: ['calendar.management']
132
+ },
133
+ children: [
134
+ {
135
+ text: '@calendar-management:calendar.plural-title',
136
+ path: this.entityService.createPath(module.name, RootConfig.entities.calendar.name),
137
+ icon: RootConfig.entities.calendar.icon,
138
+ priority: 1,
139
+ },
140
+ {
141
+ text: '@calendar-management:calendar-event-type.plural-title',
142
+ path: this.entityService.createPath(module.name, RootConfig.entities.calendarEventType.name),
143
+ icon: RootConfig.entities.calendarEventType.icon,
144
+ priority: 3,
145
+ },
146
+ ],
147
+ },
148
+ ]);
149
+ }
150
+ }
151
+
152
+ class AXMCalendarManagementPermissionDefinitionProvider {
153
+ constructor(injector) {
154
+ this.injector = injector;
155
+ this.translateService = this.injector.get(AXTranslationService);
156
+ }
157
+ async define(context) {
158
+ const trans = async (key) => await this.translateService.translateAsync(`permissions.calendar-management.${key}`, {
159
+ scope: 'calendar-management'
160
+ });
161
+ context.addGroup('calendar-management', await trans('manage.title'))
162
+ // Calendar Management
163
+ .addPermission('calendar.management', await trans('calendar.manage.title'))
164
+ .addChild('calendar.view', await trans('calendar.view.title'))
165
+ .addChild('calendar.create', await trans('calendar.create.title'))
166
+ .addChild('calendar.update', await trans('calendar.update.title'))
167
+ .addChild('calendar.delete', await trans('calendar.delete.title'))
168
+ .endPermission()
169
+ // Calendar Event Type Management
170
+ .addPermission('calendar-event-type.management', await trans('calendar-event-type.manage.title'))
171
+ .addChild('calendar-event-type.view', await trans('calendar-event-type.view.title'))
172
+ .addChild('calendar-event-type.create', await trans('calendar-event-type.create.title'))
173
+ .addChild('calendar-event-type.update', await trans('calendar-event-type.update.title'))
174
+ .addChild('calendar-event-type.delete', await trans('calendar-event-type.delete.title'))
175
+ .endPermission()
176
+ // Administrative Permissions
177
+ .addPermission('calendar.admin', await trans('calendar.admin.title'))
178
+ .endPermission()
179
+ .endGroup();
180
+ }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
182
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider }); }
183
+ }
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementPermissionDefinitionProvider, decorators: [{
185
+ type: Injectable
186
+ }], ctorParameters: () => [{ type: i0.Injector }] });
187
+
188
+ class AXMCalendarManagementSearchCommandProvider extends AXPSearchCommandProvider {
189
+ constructor() {
190
+ super(...arguments);
191
+ this.commands = [];
192
+ }
193
+ }
194
+
195
+ class AXMCalendarManagementModule {
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
197
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementModule, imports: [CommonModule] }); }
198
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementModule, providers: [
199
+ // Entity Services
200
+ {
201
+ provide: AXMCalendarService,
202
+ useClass: AXMCalendarServiceImpl,
203
+ },
204
+ {
205
+ provide: AXMCalendarEventService,
206
+ useClass: AXMCalendarEventServiceImpl,
207
+ },
208
+ {
209
+ provide: AXMCalendarEventTypeService,
210
+ useClass: AXMCalendarEventTypeServiceImpl,
211
+ },
212
+ // Module Providers
213
+ {
214
+ provide: AXP_ENTITY_DEFINITION_LOADER,
215
+ useClass: AXMCalendarManagementEntityProvider,
216
+ multi: true,
217
+ },
218
+ {
219
+ provide: AXP_MENU_PROVIDER,
220
+ useClass: AXMCalendarManagementMenuProvider,
221
+ multi: true,
222
+ },
223
+ {
224
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
225
+ useClass: AXMCalendarManagementPermissionDefinitionProvider,
226
+ multi: true,
227
+ },
228
+ {
229
+ provide: AXP_SEARCH_PROVIDER,
230
+ useClass: AXMCalendarManagementSearchCommandProvider,
231
+ multi: true,
232
+ },
233
+ ], imports: [CommonModule] }); }
234
+ }
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXMCalendarManagementModule, decorators: [{
236
+ type: NgModule,
237
+ args: [{
238
+ imports: [
239
+ CommonModule,
240
+ ],
241
+ providers: [
242
+ // Entity Services
243
+ {
244
+ provide: AXMCalendarService,
245
+ useClass: AXMCalendarServiceImpl,
246
+ },
247
+ {
248
+ provide: AXMCalendarEventService,
249
+ useClass: AXMCalendarEventServiceImpl,
250
+ },
251
+ {
252
+ provide: AXMCalendarEventTypeService,
253
+ useClass: AXMCalendarEventTypeServiceImpl,
254
+ },
255
+ // Module Providers
256
+ {
257
+ provide: AXP_ENTITY_DEFINITION_LOADER,
258
+ useClass: AXMCalendarManagementEntityProvider,
259
+ multi: true,
260
+ },
261
+ {
262
+ provide: AXP_MENU_PROVIDER,
263
+ useClass: AXMCalendarManagementMenuProvider,
264
+ multi: true,
265
+ },
266
+ {
267
+ provide: AXP_PERMISSION_DEFINITION_PROVIDER,
268
+ useClass: AXMCalendarManagementPermissionDefinitionProvider,
269
+ multi: true,
270
+ },
271
+ {
272
+ provide: AXP_SEARCH_PROVIDER,
273
+ useClass: AXMCalendarManagementSearchCommandProvider,
274
+ multi: true,
275
+ },
276
+ ],
277
+ }]
278
+ }] });
279
+
280
+ async function calendarFactory(injector) {
281
+ const dataService = injector.get(AXMCalendarService);
282
+ const i18n = RootConfig.config.i18n;
283
+ const entityDef = {
284
+ module: RootConfig.module.name,
285
+ name: RootConfig.entities.calendar.name,
286
+ source: '',
287
+ title: RootConfig.entities.calendar.title,
288
+ formats: {
289
+ individual: RootConfig.entities.calendar.title,
290
+ plural: RootConfig.entities.calendar.titlePlural,
291
+ searchResult: {
292
+ title: '{{ title }}',
293
+ description: '{{ calendarType.title }}',
294
+ },
295
+ },
296
+ //#region ---- Related Entities ----
297
+ relatedEntities: [
298
+ {
299
+ entity: `${RootConfig.module.name}.${RootConfig.entities.calendarEvent.name}`,
300
+ title: RootConfig.entities.calendarEvent.titlePlural,
301
+ columns: ['date', 'typeId', 'title', 'isRecurring', 'isActive'],
302
+ conditions: [
303
+ entityDetailsSimpleCondition('calendarId')
304
+ ],
305
+ },
306
+ ],
307
+ //#endregion
308
+ //#region ---- Property Groups ----
309
+ groups: [
310
+ {
311
+ id: 'basic-info',
312
+ title: '@general:terms.basic-info',
313
+ },
314
+ {
315
+ id: 'inheritance',
316
+ title: '@calendar-management:calendar.inheritance',
317
+ },
318
+ {
319
+ id: 'week-config',
320
+ title: '@calendar-management:calendar.week-configuration',
321
+ },
322
+ {
323
+ id: 'working-hours',
324
+ title: '@calendar-management:calendar.working-hours',
325
+ },
326
+ {
327
+ id: 'settings',
328
+ title: '@general:terms.settings',
329
+ },
330
+ ],
331
+ //#endregion
332
+ //#region ---- Properties ----
333
+ properties: [
334
+ // Basic Information
335
+ {
336
+ name: 'title',
337
+ title: '@general:terms.title',
338
+ groupId: 'basic-info',
339
+ options: {
340
+ sort: { enabled: true },
341
+ filter: {
342
+ advance: { enabled: true },
343
+ inline: { enabled: true },
344
+ },
345
+ },
346
+ schema: {
347
+ dataType: 'string',
348
+ interface: {
349
+ type: AXPWidgetsCatalog.text,
350
+ options: {
351
+ placeholder: 'Enter calendar title',
352
+ },
353
+ },
354
+ },
355
+ validations: [
356
+ { rule: 'required' },
357
+ ],
358
+ },
359
+ {
360
+ name: 'description',
361
+ title: '@general:terms.description',
362
+ groupId: 'basic-info',
363
+ options: {
364
+ sort: { enabled: false },
365
+ filter: {
366
+ advance: { enabled: true },
367
+ inline: { enabled: false },
368
+ },
369
+ },
370
+ schema: {
371
+ dataType: 'string',
372
+ interface: {
373
+ type: AXPWidgetsCatalog.largeText,
374
+ options: {
375
+ rows: 3,
376
+ placeholder: 'Enter calendar description',
377
+ },
378
+ },
379
+ },
380
+ },
381
+ {
382
+ name: 'calendarTypeId',
383
+ title: '@calendar-management:calendar.calendar-type',
384
+ groupId: 'basic-info',
385
+ options: {
386
+ sort: { enabled: true },
387
+ filter: {
388
+ advance: { enabled: true },
389
+ inline: { enabled: true },
390
+ },
391
+ },
392
+ schema: {
393
+ dataType: 'object',
394
+ interface: {
395
+ type: AXPWidgetsCatalog.select,
396
+ options: {
397
+ valueField: 'value',
398
+ textField: 'text',
399
+ multiple: false,
400
+ dataSource: [
401
+ { value: 'gregorian', text: 'Gregorian' },
402
+ { value: 'solar-hijri', text: 'Solar Hijri' },
403
+ ],
404
+ },
405
+ },
406
+ },
407
+ validations: [
408
+ { rule: 'required' },
409
+ ],
410
+ },
411
+ // Inheritance
412
+ {
413
+ name: 'parentId',
414
+ title: '@calendar-management:calendar.parent-calendar',
415
+ groupId: 'inheritance',
416
+ options: {
417
+ sort: { enabled: true },
418
+ filter: {
419
+ advance: { enabled: true },
420
+ inline: { enabled: true },
421
+ },
422
+ },
423
+ schema: {
424
+ dataType: 'object',
425
+ interface: {
426
+ type: AXPWidgetsCatalog.lookup,
427
+ options: {
428
+ look: 'select',
429
+ entity: `${RootConfig.module.name}.${RootConfig.entities.calendar.name}`,
430
+ expose: [
431
+ { source: 'id', target: 'parent.id' },
432
+ { source: 'title', target: 'parent.title' },
433
+ ],
434
+ },
435
+ },
436
+ },
437
+ },
438
+ // Week Configuration
439
+ {
440
+ name: 'weekends',
441
+ title: '@calendar-management:calendar.weekend-pattern',
442
+ groupId: 'week-config',
443
+ options: {
444
+ sort: { enabled: false },
445
+ filter: {
446
+ advance: { enabled: true },
447
+ inline: { enabled: false },
448
+ },
449
+ },
450
+ schema: {
451
+ dataType: 'object',
452
+ interface: {
453
+ type: AXPWidgetsCatalog.select,
454
+ options: {
455
+ valueField: 'id',
456
+ textField: 'title',
457
+ multiple: true,
458
+ dataSource: [
459
+ { id: 'sunday', title: 'Sunday' },
460
+ { id: 'monday', title: 'Monday' },
461
+ { id: 'tuesday', title: 'Tuesday' },
462
+ { id: 'wednesday', title: 'Wednesday' },
463
+ { id: 'thursday', title: 'Thursday' },
464
+ { id: 'friday', title: 'Friday' },
465
+ { id: 'saturday', title: 'Saturday' },
466
+ ],
467
+ },
468
+ },
469
+ },
470
+ validations: [
471
+ { rule: 'required' },
472
+ ],
473
+ },
474
+ {
475
+ name: 'firstDayOfWeek',
476
+ title: '@calendar-management:calendar.first-day-of-week',
477
+ groupId: 'week-config',
478
+ options: {
479
+ sort: { enabled: true },
480
+ filter: {
481
+ advance: { enabled: true },
482
+ inline: { enabled: true },
483
+ },
484
+ },
485
+ schema: {
486
+ dataType: 'object',
487
+ interface: {
488
+ type: AXPWidgetsCatalog.select,
489
+ options: {
490
+ valueField: 'id',
491
+ textField: 'title',
492
+ multiple: false,
493
+ dataSource: [
494
+ { id: 'sunday', title: 'Sunday' },
495
+ { id: 'monday', title: 'Monday' },
496
+ { id: 'tuesday', title: 'Tuesday' },
497
+ { id: 'wednesday', title: 'Wednesday' },
498
+ { id: 'thursday', title: 'Thursday' },
499
+ { id: 'friday', title: 'Friday' },
500
+ { id: 'saturday', title: 'Saturday' },
501
+ ],
502
+ },
503
+ },
504
+ },
505
+ validations: [
506
+ { rule: 'required' },
507
+ ],
508
+ },
509
+ // // Working Hours
510
+ // {
511
+ // name: 'workingHours',
512
+ // title: '@calendar-management:calendar.working-hours-config',
513
+ // groupId: 'working-hours',
514
+ // options: {
515
+ // sort: { enabled: false },
516
+ // filter: {
517
+ // advance: { enabled: false },
518
+ // inline: { enabled: false },
519
+ // },
520
+ // },
521
+ // schema: {
522
+ // dataType: 'string',
523
+ // interface: {
524
+ // type: AXPWidgetsCatalog.flexLayout,
525
+ // options: {
526
+ // rows: 5,
527
+ // placeholder: 'JSON configuration for working hours',
528
+ // },
529
+ // children:[
530
+ // {
531
+ // }
532
+ // ]
533
+ // },
534
+ // },
535
+ // },
536
+ // Settings
537
+ {
538
+ name: 'isActive',
539
+ title: '@general:terms.is-active',
540
+ groupId: 'settings',
541
+ options: {
542
+ sort: { enabled: true },
543
+ filter: {
544
+ advance: { enabled: true },
545
+ inline: { enabled: true },
546
+ },
547
+ },
548
+ schema: {
549
+ dataType: 'boolean',
550
+ interface: {
551
+ type: AXPWidgetsCatalog.toggle,
552
+ },
553
+ },
554
+ },
555
+ {
556
+ name: 'isTemplate',
557
+ title: '@calendar-management:calendar.is-template',
558
+ groupId: 'settings',
559
+ options: {
560
+ sort: { enabled: true },
561
+ filter: {
562
+ advance: { enabled: true },
563
+ inline: { enabled: true },
564
+ },
565
+ },
566
+ schema: {
567
+ dataType: 'boolean',
568
+ interface: {
569
+ type: AXPWidgetsCatalog.toggle,
570
+ },
571
+ },
572
+ },
573
+ {
574
+ name: 'order',
575
+ title: '@general:terms.order',
576
+ groupId: 'settings',
577
+ options: {
578
+ sort: { enabled: true },
579
+ filter: {
580
+ advance: { enabled: true },
581
+ inline: { enabled: false },
582
+ },
583
+ },
584
+ schema: {
585
+ dataType: 'number',
586
+ interface: {
587
+ type: AXPWidgetsCatalog.number,
588
+ options: {
589
+ minValue: 0,
590
+ maxValue: 9999,
591
+ },
592
+ },
593
+ },
594
+ },
595
+ ],
596
+ //#endregion
597
+ //#region ---- Table Columns ----
598
+ columns: [
599
+ { name: 'title' },
600
+ { name: 'calendarTypeId', options: { dataPath: 'calendarType.title' } },
601
+ { name: 'parentId', options: { dataPath: 'parent.title' } },
602
+ { name: 'scopeType' },
603
+ { name: 'isTemplate' },
604
+ { name: 'isActive' },
605
+ ],
606
+ //#region ---- Commands ----
607
+ commands: {
608
+ create: {
609
+ execute: async (data) => {
610
+ const res = await dataService.insertOne(data);
611
+ return { id: res };
612
+ },
613
+ },
614
+ delete: {
615
+ execute: async (id) => {
616
+ return await dataService.deleteOne(id);
617
+ },
618
+ },
619
+ update: {
620
+ execute: async (data) => {
621
+ return await dataService.updateOne(data.id, data);
622
+ },
623
+ },
624
+ },
625
+ //#region ---- Queries ----
626
+ queries: {
627
+ byKey: {
628
+ execute: async (id) => {
629
+ return await dataService.getOne(id);
630
+ },
631
+ type: AXPEntityQueryType.Single,
632
+ },
633
+ list: {
634
+ execute: async (e) => {
635
+ return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
636
+ },
637
+ type: AXPEntityQueryType.List,
638
+ },
639
+ },
640
+ //#endregion
641
+ //#region ---- Interface Layouts ----
642
+ interfaces: {
643
+ master: {
644
+ create: {
645
+ sections: [
646
+ { id: 'basic-info' },
647
+ { id: 'inheritance' },
648
+ { id: 'week-config' },
649
+ { id: 'working-hours' },
650
+ { id: 'settings' },
651
+ ],
652
+ properties: [
653
+ // Basic Info
654
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
655
+ { name: 'calendarTypeId', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
656
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
657
+ // Inheritance
658
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 5 } } } },
659
+ // Week Config
660
+ { name: 'weekends', layout: { positions: { lg: { colSpan: 12, order: 8 } } } },
661
+ { name: 'firstDayOfWeek', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
662
+ // Working Hours
663
+ //{ name: 'workingHours', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
664
+ // Settings
665
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 10 } } } },
666
+ { name: 'isTemplate', layout: { positions: { lg: { colSpan: 4, order: 11 } } } },
667
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 12 } } } },
668
+ ],
669
+ },
670
+ update: {
671
+ sections: [
672
+ { id: 'basic-info' },
673
+ { id: 'inheritance' },
674
+ { id: 'week-config' },
675
+ { id: 'working-hours' },
676
+ { id: 'settings' },
677
+ ],
678
+ properties: [
679
+ // Basic Info
680
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
681
+ { name: 'calendarTypeId', layout: { positions: { lg: { colSpan: 6, order: 3 } } } },
682
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
683
+ // Inheritance
684
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 5 } } } },
685
+ // Week Config
686
+ { name: 'weekends', layout: { positions: { lg: { colSpan: 12, order: 8 } } } },
687
+ { name: 'firstDayOfWeek', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
688
+ // Working Hours
689
+ //{ name: 'workingHours', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
690
+ // Settings
691
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 10 } } } },
692
+ { name: 'isTemplate', layout: { positions: { lg: { colSpan: 4, order: 11 } } } },
693
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 12 } } } },
694
+ ],
695
+ },
696
+ single: {
697
+ title: '{{title}}',
698
+ sections: [
699
+ { id: 'basic-info' },
700
+ { id: 'inheritance' },
701
+ { id: 'week-config' },
702
+ { id: 'working-hours' },
703
+ { id: 'settings' },
704
+ ],
705
+ properties: [
706
+ // Basic Info
707
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
708
+ { name: 'calendarTypeId', layout: { positions: { lg: { colSpan: 6, order: 3 } } }, dataPath: 'calendarType.title' },
709
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
710
+ // Inheritance
711
+ { name: 'parentId', layout: { positions: { lg: { colSpan: 12, order: 5 } } } },
712
+ // Week Config
713
+ { name: 'weekends', layout: { positions: { lg: { colSpan: 12, order: 8 } } } },
714
+ { name: 'firstDayOfWeek', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
715
+ // Working Hours
716
+ //{ name: 'workingHours', layout: { positions: { lg: { colSpan: 12, order: 9 } } } },
717
+ // Settings
718
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 10 } } } },
719
+ { name: 'isTemplate', layout: { positions: { lg: { colSpan: 4, order: 11 } } } },
720
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 12 } } } },
721
+ ],
722
+ actions: [
723
+ entityMasterDeleteAction()
724
+ ],
725
+ },
726
+ list: {
727
+ actions: [
728
+ ...entityMasterCrudActions()
729
+ ],
730
+ views: [
731
+ createAllQueryView({
732
+ sorts: [{ name: 'title', dir: 'asc' }]
733
+ }),
734
+ ],
735
+ },
736
+ },
737
+ },
738
+ //#endregion
739
+ };
740
+ return entityDef;
741
+ }
742
+
743
+ var calendar_entity = /*#__PURE__*/Object.freeze({
744
+ __proto__: null,
745
+ calendarFactory: calendarFactory
746
+ });
747
+
748
+ async function calendarEventFactory(injector) {
749
+ const dataService = injector.get(AXMCalendarEventService);
750
+ const i18n = RootConfig.config.i18n;
751
+ const entityDef = {
752
+ module: RootConfig.module.name,
753
+ name: RootConfig.entities.calendarEvent.name,
754
+ source: '',
755
+ title: RootConfig.entities.calendarEvent.title,
756
+ formats: {
757
+ individual: RootConfig.entities.calendarEvent.title,
758
+ plural: RootConfig.entities.calendarEvent.titlePlural,
759
+ searchResult: {
760
+ title: '{{ title }} - {{ date }}',
761
+ description: '{{ calendar.title }} - {{ type }}',
762
+ },
763
+ },
764
+ //#region ---- Property Groups ----
765
+ groups: [
766
+ {
767
+ id: 'basic-info',
768
+ title: '@general:terms.basic-info',
769
+ },
770
+ {
771
+ id: 'date',
772
+ title: '@general:terms.date',
773
+ },
774
+ {
775
+ id: 'appearance',
776
+ title: '@general:terms.appearance',
777
+ },
778
+ {
779
+ id: 'settings',
780
+ title: '@general:terms.settings',
781
+ },
782
+ ],
783
+ //#endregion
784
+ //#region ---- Properties ----
785
+ properties: [
786
+ // Basic Information
787
+ {
788
+ name: 'calendarId',
789
+ title: '@calendar-management:calendar-event.calendar',
790
+ groupId: 'basic-info',
791
+ options: {
792
+ sort: { enabled: true },
793
+ filter: {
794
+ advance: { enabled: true },
795
+ inline: { enabled: true },
796
+ },
797
+ },
798
+ schema: {
799
+ dataType: 'object',
800
+ interface: {
801
+ type: AXPWidgetsCatalog.lookup,
802
+ options: {
803
+ entity: `${RootConfig.module.name}.${RootConfig.entities.calendar.name}`,
804
+ expose: [
805
+ { source: 'id', target: 'calendar.id' },
806
+ { source: 'title', target: 'calendar.title' },
807
+ ],
808
+ },
809
+ },
810
+ },
811
+ validations: [
812
+ { rule: 'required' },
813
+ ],
814
+ },
815
+ {
816
+ name: 'title',
817
+ title: '@general:terms.title',
818
+ groupId: 'basic-info',
819
+ options: {
820
+ sort: { enabled: true },
821
+ filter: {
822
+ advance: { enabled: true },
823
+ inline: { enabled: true },
824
+ },
825
+ },
826
+ schema: {
827
+ dataType: 'string',
828
+ interface: {
829
+ type: AXPWidgetsCatalog.text,
830
+ options: {
831
+ placeholder: 'Enter event title',
832
+ },
833
+ },
834
+ },
835
+ validations: [
836
+ { rule: 'required' },
837
+ ],
838
+ },
839
+ {
840
+ name: 'description',
841
+ title: '@general:terms.description',
842
+ groupId: 'basic-info',
843
+ options: {
844
+ sort: { enabled: false },
845
+ filter: {
846
+ advance: { enabled: true },
847
+ inline: { enabled: false },
848
+ },
849
+ },
850
+ schema: {
851
+ dataType: 'string',
852
+ interface: {
853
+ type: AXPWidgetsCatalog.largeText,
854
+ options: {
855
+ rows: 3,
856
+ placeholder: 'Enter event description',
857
+ },
858
+ },
859
+ },
860
+ },
861
+ {
862
+ name: 'typeId',
863
+ title: '@calendar-management:calendar-event.type',
864
+ groupId: 'basic-info',
865
+ options: {
866
+ sort: { enabled: true },
867
+ filter: {
868
+ advance: { enabled: true },
869
+ inline: { enabled: true },
870
+ },
871
+ },
872
+ schema: {
873
+ dataType: 'object',
874
+ interface: {
875
+ type: AXPWidgetsCatalog.lookup,
876
+ options: {
877
+ look: 'select',
878
+ entity: `${RootConfig.module.name}.${RootConfig.entities.calendarEventType.name}`,
879
+ expose: [
880
+ { source: 'id', target: 'type.id' },
881
+ { source: 'title', target: 'type.title' },
882
+ { source: 'color', target: 'type.color' },
883
+ { source: 'icon', target: 'type.icon' },
884
+ ],
885
+ },
886
+ },
887
+ },
888
+ validations: [
889
+ { rule: 'required' },
890
+ ],
891
+ },
892
+ // Date & Time
893
+ {
894
+ name: 'date',
895
+ title: '@general:terms.date',
896
+ groupId: 'date',
897
+ options: {
898
+ sort: { enabled: true },
899
+ filter: {
900
+ advance: { enabled: true },
901
+ inline: { enabled: true },
902
+ },
903
+ },
904
+ schema: {
905
+ dataType: 'date',
906
+ interface: {
907
+ type: AXPWidgetsCatalog.dateTime,
908
+ options: {
909
+ showTime: false,
910
+ },
911
+ },
912
+ },
913
+ validations: [
914
+ { rule: 'required' },
915
+ ],
916
+ },
917
+ // Recurrence
918
+ {
919
+ name: 'isRecurring',
920
+ title: '@calendar-management:calendar-event.is-recurring',
921
+ groupId: 'date',
922
+ options: {
923
+ sort: { enabled: true },
924
+ filter: {
925
+ advance: { enabled: true },
926
+ inline: { enabled: true },
927
+ },
928
+ },
929
+ schema: {
930
+ dataType: 'boolean',
931
+ defaultValue: false,
932
+ interface: {
933
+ type: AXPWidgetsCatalog.toggle,
934
+ },
935
+ },
936
+ },
937
+ {
938
+ name: 'recurrenceRule',
939
+ title: '@calendar-management:calendar-event.recurrence-rule',
940
+ groupId: 'date',
941
+ options: {
942
+ sort: { enabled: false },
943
+ filter: {
944
+ advance: { enabled: true },
945
+ inline: { enabled: false },
946
+ },
947
+ },
948
+ schema: {
949
+ dataType: 'string',
950
+ interface: {
951
+ type: AXPWidgetsCatalog.largeText,
952
+ options: {
953
+ rows: 3,
954
+ placeholder: 'FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=21',
955
+ visibility: '{{ context.eval("isRecurring") ?? false }}'
956
+ },
957
+ },
958
+ },
959
+ },
960
+ // Settings
961
+ {
962
+ name: 'isActive',
963
+ title: '@general:terms.is-active',
964
+ groupId: 'settings',
965
+ options: {
966
+ sort: { enabled: true },
967
+ filter: {
968
+ advance: { enabled: true },
969
+ inline: { enabled: true },
970
+ },
971
+ },
972
+ schema: {
973
+ dataType: 'boolean',
974
+ interface: {
975
+ type: AXPWidgetsCatalog.toggle,
976
+ },
977
+ },
978
+ },
979
+ {
980
+ name: 'order',
981
+ title: '@general:terms.order',
982
+ groupId: 'settings',
983
+ options: {
984
+ sort: { enabled: true },
985
+ filter: {
986
+ advance: { enabled: true },
987
+ inline: { enabled: false },
988
+ },
989
+ },
990
+ schema: {
991
+ dataType: 'number',
992
+ interface: {
993
+ type: AXPWidgetsCatalog.number,
994
+ options: {
995
+ minValue: 0,
996
+ maxValue: 9999,
997
+ },
998
+ },
999
+ },
1000
+ },
1001
+ ],
1002
+ //#endregion
1003
+ //#region ---- Table Columns ----
1004
+ columns: [
1005
+ { name: 'title' },
1006
+ { name: 'typeId', options: { dataPath: 'type.title' } },
1007
+ { name: 'date' },
1008
+ { name: 'isRecurring' },
1009
+ { name: 'isActive' },
1010
+ ],
1011
+ //#endregion
1012
+ //#region ---- Commands ----
1013
+ commands: {
1014
+ create: {
1015
+ execute: async (data) => {
1016
+ const res = await dataService.insertOne(data);
1017
+ return { id: res };
1018
+ },
1019
+ },
1020
+ delete: {
1021
+ execute: async (id) => {
1022
+ return await dataService.deleteOne(id);
1023
+ },
1024
+ },
1025
+ update: {
1026
+ execute: async (data) => {
1027
+ return await dataService.updateOne(data.id, data);
1028
+ },
1029
+ },
1030
+ },
1031
+ //#endregion
1032
+ //#region ---- Queries ----
1033
+ queries: {
1034
+ byKey: {
1035
+ execute: async (id) => {
1036
+ return await dataService.getOne(id);
1037
+ },
1038
+ type: AXPEntityQueryType.Single,
1039
+ },
1040
+ list: {
1041
+ execute: async (e) => {
1042
+ return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
1043
+ },
1044
+ type: AXPEntityQueryType.List,
1045
+ },
1046
+ },
1047
+ //#endregion
1048
+ //#region ---- Interface Layouts ----
1049
+ interfaces: {
1050
+ master: {
1051
+ create: {
1052
+ sections: [
1053
+ { id: 'basic-info' },
1054
+ { id: 'date' },
1055
+ { id: 'settings' },
1056
+ ],
1057
+ properties: [
1058
+ // Basic Info
1059
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
1060
+ { name: 'typeId', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1061
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
1062
+ // Date
1063
+ { name: 'date', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1064
+ { name: 'isRecurring', layout: { positions: { lg: { colSpan: 6, order: 9 } } } },
1065
+ { name: 'recurrenceRule', layout: { positions: { lg: { colSpan: 12, order: 10 } } } },
1066
+ // Settings
1067
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6, order: 12 } } } },
1068
+ { name: 'order', layout: { positions: { lg: { colSpan: 6, order: 13 } } } },
1069
+ ],
1070
+ },
1071
+ update: {
1072
+ sections: [
1073
+ { id: 'basic-info' },
1074
+ { id: 'date' },
1075
+ { id: 'settings' },
1076
+ ],
1077
+ properties: [
1078
+ // Basic Info
1079
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
1080
+ { name: 'typeId', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1081
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
1082
+ // Date
1083
+ { name: 'date', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1084
+ { name: 'isRecurring', layout: { positions: { lg: { colSpan: 6, order: 9 } } } },
1085
+ { name: 'recurrenceRule', layout: { positions: { lg: { colSpan: 12, order: 10 } } } },
1086
+ // Settings
1087
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6, order: 12 } } } },
1088
+ { name: 'order', layout: { positions: { lg: { colSpan: 6, order: 13 } } } },
1089
+ ],
1090
+ },
1091
+ single: {
1092
+ title: '{{title}}',
1093
+ sections: [
1094
+ { id: 'basic-info' },
1095
+ { id: 'date' },
1096
+ { id: 'settings' },
1097
+ ],
1098
+ properties: [
1099
+ // Basic Info
1100
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 1 } } } },
1101
+ { name: 'typeId', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1102
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 4 } } } },
1103
+ // Date
1104
+ { name: 'date', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1105
+ { name: 'isRecurring', layout: { positions: { lg: { colSpan: 6, order: 9 } } } },
1106
+ { name: 'recurrenceRule', layout: { positions: { lg: { colSpan: 12, order: 10 } } } },
1107
+ // Settings
1108
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 6, order: 12 } } } },
1109
+ { name: 'order', layout: { positions: { lg: { colSpan: 6, order: 13 } } } },
1110
+ ],
1111
+ actions: [
1112
+ {
1113
+ title: '@general:actions.edit.title',
1114
+ command: 'quick-modify-entity',
1115
+ priority: 'primary',
1116
+ type: 'update',
1117
+ scope: AXPEntityCommandScope.Individual,
1118
+ },
1119
+ {
1120
+ title: '@general:actions.delete.title',
1121
+ command: 'delete-entity',
1122
+ priority: 'secondary',
1123
+ type: 'delete',
1124
+ scope: AXPEntityCommandScope.Individual,
1125
+ },
1126
+ ],
1127
+ },
1128
+ list: {
1129
+ actions: [
1130
+ ...entityDetailsCrudActions('calendarId')
1131
+ ],
1132
+ views: [
1133
+ createAllQueryView({
1134
+ sorts: [{ name: 'date', dir: 'asc' }]
1135
+ }),
1136
+ ],
1137
+ },
1138
+ },
1139
+ },
1140
+ //#endregion
1141
+ };
1142
+ return entityDef;
1143
+ }
1144
+
1145
+ var calendarEvent_entity = /*#__PURE__*/Object.freeze({
1146
+ __proto__: null,
1147
+ calendarEventFactory: calendarEventFactory
1148
+ });
1149
+
1150
+ async function calendarEventTypeFactory(injector) {
1151
+ const dataService = injector.get(AXMCalendarEventTypeService);
1152
+ const i18n = RootConfig.config.i18n;
1153
+ const entityDef = {
1154
+ module: RootConfig.module.name,
1155
+ name: RootConfig.entities.calendarEventType.name,
1156
+ source: '',
1157
+ title: RootConfig.entities.calendarEventType.title,
1158
+ formats: {
1159
+ individual: RootConfig.entities.calendarEventType.title,
1160
+ plural: RootConfig.entities.calendarEventType.titlePlural,
1161
+ searchResult: {
1162
+ title: '{{ title }}',
1163
+ description: '{{ description }}',
1164
+ },
1165
+ },
1166
+ //#region ---- Property Groups ----
1167
+ groups: [
1168
+ {
1169
+ id: 'basic-info',
1170
+ title: '@general:terms.basic-info',
1171
+ },
1172
+ {
1173
+ id: 'appearance',
1174
+ title: '@general:terms.appearance',
1175
+ },
1176
+ {
1177
+ id: 'settings',
1178
+ title: '@general:terms.settings',
1179
+ },
1180
+ ],
1181
+ //#endregion
1182
+ //#region ---- Properties ----
1183
+ properties: [
1184
+ // Basic Information
1185
+ {
1186
+ name: 'title',
1187
+ title: '@general:terms.title',
1188
+ groupId: 'basic-info',
1189
+ options: {
1190
+ sort: { enabled: true },
1191
+ filter: {
1192
+ advance: { enabled: true },
1193
+ inline: { enabled: true },
1194
+ },
1195
+ },
1196
+ schema: {
1197
+ dataType: 'string',
1198
+ interface: {
1199
+ type: AXPWidgetsCatalog.text,
1200
+ options: {
1201
+ placeholder: 'Enter event type title',
1202
+ },
1203
+ },
1204
+ },
1205
+ validations: [
1206
+ { rule: 'required' },
1207
+ ],
1208
+ },
1209
+ {
1210
+ name: 'description',
1211
+ title: '@general:terms.description',
1212
+ groupId: 'basic-info',
1213
+ options: {
1214
+ sort: { enabled: false },
1215
+ filter: {
1216
+ advance: { enabled: true },
1217
+ inline: { enabled: false },
1218
+ },
1219
+ },
1220
+ schema: {
1221
+ dataType: 'string',
1222
+ interface: {
1223
+ type: AXPWidgetsCatalog.largeText,
1224
+ options: {
1225
+ rows: 3,
1226
+ placeholder: 'Enter event type description',
1227
+ },
1228
+ },
1229
+ },
1230
+ },
1231
+ // Appearance
1232
+ {
1233
+ name: 'color',
1234
+ title: '@general:terms.color',
1235
+ groupId: 'appearance',
1236
+ options: {
1237
+ sort: { enabled: false },
1238
+ filter: {
1239
+ advance: { enabled: true },
1240
+ inline: { enabled: false },
1241
+ },
1242
+ },
1243
+ schema: {
1244
+ dataType: 'string',
1245
+ interface: {
1246
+ type: AXPWidgetsCatalog.color,
1247
+ options: {
1248
+ format: 'hex',
1249
+ },
1250
+ },
1251
+ },
1252
+ validations: [
1253
+ { rule: 'required' },
1254
+ ],
1255
+ },
1256
+ {
1257
+ name: 'icon',
1258
+ title: '@general:terms.icon',
1259
+ groupId: 'appearance',
1260
+ options: {
1261
+ sort: { enabled: false },
1262
+ filter: {
1263
+ advance: { enabled: true },
1264
+ inline: { enabled: false },
1265
+ },
1266
+ },
1267
+ schema: {
1268
+ dataType: 'string',
1269
+ interface: {
1270
+ type: AXPWidgetsCatalog.text,
1271
+ options: {
1272
+ placeholder: 'fa-light fa-icon-name',
1273
+ },
1274
+ },
1275
+ },
1276
+ },
1277
+ // Settings
1278
+ {
1279
+ name: 'isActive',
1280
+ title: '@general:terms.is-active',
1281
+ groupId: 'settings',
1282
+ options: {
1283
+ sort: { enabled: true },
1284
+ filter: {
1285
+ advance: { enabled: true },
1286
+ inline: { enabled: false },
1287
+ },
1288
+ },
1289
+ schema: {
1290
+ dataType: 'boolean',
1291
+ interface: {
1292
+ type: AXPWidgetsCatalog.toggle,
1293
+ },
1294
+ },
1295
+ },
1296
+ {
1297
+ name: 'isDefault',
1298
+ title: '@calendar-management:calendar-event-type.is-default',
1299
+ groupId: 'settings',
1300
+ options: {
1301
+ sort: { enabled: true },
1302
+ filter: {
1303
+ advance: { enabled: true },
1304
+ inline: { enabled: false },
1305
+ },
1306
+ },
1307
+ schema: {
1308
+ dataType: 'boolean',
1309
+ interface: {
1310
+ type: AXPWidgetsCatalog.toggle,
1311
+ },
1312
+ },
1313
+ },
1314
+ {
1315
+ name: 'order',
1316
+ title: '@general:terms.order',
1317
+ groupId: 'settings',
1318
+ options: {
1319
+ sort: { enabled: true },
1320
+ filter: {
1321
+ advance: { enabled: true },
1322
+ inline: { enabled: false },
1323
+ },
1324
+ },
1325
+ schema: {
1326
+ dataType: 'number',
1327
+ interface: {
1328
+ type: AXPWidgetsCatalog.number,
1329
+ options: {
1330
+ minValue: 0,
1331
+ maxValue: 9999,
1332
+ },
1333
+ },
1334
+ },
1335
+ },
1336
+ ],
1337
+ //#endregion
1338
+ //#region ---- Table Columns ----
1339
+ columns: [
1340
+ { name: 'title' },
1341
+ { name: 'color' },
1342
+ { name: 'icon' },
1343
+ { name: 'isDefault' },
1344
+ { name: 'isActive' },
1345
+ ],
1346
+ //#endregion
1347
+ //#region ---- Commands ----
1348
+ commands: {
1349
+ create: {
1350
+ execute: async (data) => {
1351
+ const res = await dataService.insertOne(data);
1352
+ return { id: res };
1353
+ },
1354
+ },
1355
+ delete: {
1356
+ execute: async (id) => {
1357
+ return await dataService.deleteOne(id);
1358
+ },
1359
+ },
1360
+ update: {
1361
+ execute: async (data) => {
1362
+ return await dataService.updateOne(data.id, data);
1363
+ },
1364
+ },
1365
+ },
1366
+ //#endregion
1367
+ //#region ---- Queries ----
1368
+ queries: {
1369
+ byKey: {
1370
+ execute: async (id) => {
1371
+ return await dataService.getOne(id);
1372
+ },
1373
+ type: AXPEntityQueryType.Single,
1374
+ },
1375
+ list: {
1376
+ execute: async (e) => {
1377
+ return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });
1378
+ },
1379
+ type: AXPEntityQueryType.List,
1380
+ },
1381
+ },
1382
+ //#endregion
1383
+ //#region ---- Interface Layouts ----
1384
+ interfaces: {
1385
+ master: {
1386
+ create: {
1387
+ sections: [
1388
+ { id: 'basic-info' },
1389
+ { id: 'appearance' },
1390
+ { id: 'settings' },
1391
+ ],
1392
+ properties: [
1393
+ // Basic Info
1394
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1395
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1396
+ // Appearance
1397
+ { name: 'color', layout: { positions: { lg: { colSpan: 6, order: 4 } } } },
1398
+ { name: 'icon', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1399
+ // Settings
1400
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 6 } } } },
1401
+ { name: 'isDefault', layout: { positions: { lg: { colSpan: 4, order: 7 } } } },
1402
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 8 } } } },
1403
+ ],
1404
+ },
1405
+ update: {
1406
+ sections: [
1407
+ { id: 'basic-info' },
1408
+ { id: 'appearance' },
1409
+ { id: 'settings' },
1410
+ ],
1411
+ properties: [
1412
+ // Basic Info
1413
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1414
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1415
+ // Appearance
1416
+ { name: 'color', layout: { positions: { lg: { colSpan: 6, order: 4 } } } },
1417
+ { name: 'icon', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1418
+ // Settings
1419
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 6 } } } },
1420
+ { name: 'isDefault', layout: { positions: { lg: { colSpan: 4, order: 7 } } } },
1421
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 8 } } } },
1422
+ ],
1423
+ },
1424
+ single: {
1425
+ title: '{{title}}',
1426
+ sections: [
1427
+ { id: 'basic-info' },
1428
+ { id: 'appearance' },
1429
+ { id: 'settings' },
1430
+ ],
1431
+ properties: [
1432
+ // Basic Info
1433
+ { name: 'title', layout: { positions: { lg: { colSpan: 6, order: 2 } } } },
1434
+ { name: 'description', layout: { positions: { lg: { colSpan: 12, order: 3 } } } },
1435
+ // Appearance
1436
+ { name: 'color', layout: { positions: { lg: { colSpan: 6, order: 4 } } } },
1437
+ { name: 'icon', layout: { positions: { lg: { colSpan: 6, order: 5 } } } },
1438
+ // Settings
1439
+ { name: 'isActive', layout: { positions: { lg: { colSpan: 4, order: 6 } } } },
1440
+ { name: 'isDefault', layout: { positions: { lg: { colSpan: 4, order: 7 } } } },
1441
+ { name: 'order', layout: { positions: { lg: { colSpan: 4, order: 8 } } } },
1442
+ ],
1443
+ actions: [
1444
+ {
1445
+ title: '@general:actions.delete.title',
1446
+ command: 'delete-entity',
1447
+ priority: 'secondary',
1448
+ type: 'delete',
1449
+ scope: AXPEntityCommandScope.Individual,
1450
+ },
1451
+ ],
1452
+ },
1453
+ list: {
1454
+ actions: [
1455
+ {
1456
+ title: '@general:actions.create.title',
1457
+ command: 'create-entity',
1458
+ priority: 'primary',
1459
+ type: 'create',
1460
+ scope: AXPEntityCommandScope.TypeLevel,
1461
+ },
1462
+ {
1463
+ title: '@general:actions.delete-items.title',
1464
+ command: 'delete-entity',
1465
+ priority: 'primary',
1466
+ type: 'delete',
1467
+ scope: AXPEntityCommandScope.Selected,
1468
+ },
1469
+ {
1470
+ title: '@general:actions.detail.title',
1471
+ command: 'open-entity',
1472
+ priority: 'secondary',
1473
+ type: 'view',
1474
+ scope: AXPEntityCommandScope.Individual,
1475
+ },
1476
+ {
1477
+ title: '@general:actions.delete.title',
1478
+ command: 'delete-entity',
1479
+ priority: 'secondary',
1480
+ type: 'delete',
1481
+ scope: AXPEntityCommandScope.Individual,
1482
+ },
1483
+ ],
1484
+ views: [
1485
+ createAllQueryView({
1486
+ sorts: [{ name: 'order', dir: 'asc' }]
1487
+ }),
1488
+ ],
1489
+ },
1490
+ },
1491
+ },
1492
+ //#endregion
1493
+ };
1494
+ return entityDef;
1495
+ }
1496
+
1497
+ var calendarEventType_entity = /*#__PURE__*/Object.freeze({
1498
+ __proto__: null,
1499
+ calendarEventTypeFactory: calendarEventTypeFactory
1500
+ });
1501
+
1502
+ // Main Module
1503
+
1504
+ /**
1505
+ * Generated bundle index. Do not edit.
1506
+ */
1507
+
1508
+ export { AXMCalendarEventService, AXMCalendarEventServiceImpl, AXMCalendarEventTypeService, AXMCalendarEventTypeServiceImpl, AXMCalendarManagementEntityProvider, AXMCalendarManagementMenuProvider, AXMCalendarManagementModule, AXMCalendarManagementPermissionDefinitionProvider, AXMCalendarManagementSearchCommandProvider, AXMCalendarService, AXMCalendarServiceImpl, RootConfig, calendarEventFactory, calendarEventTypeFactory, calendarFactory };
1509
+ //# sourceMappingURL=acorex-modules-calendar-management.mjs.map