@acorex/modules 20.0.2 → 20.0.3

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 (49) hide show
  1. package/fesm2022/acorex-modules-content-management.mjs +1 -0
  2. package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
  3. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BP-HLvDt.mjs → acorex-modules-document-management-acorex-modules-document-management-ClH75xx1.mjs} +28 -27
  4. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BP-HLvDt.mjs.map → acorex-modules-document-management-acorex-modules-document-management-ClH75xx1.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DiE1iI_0.mjs → acorex-modules-document-management-attachment-widget.component-B_tjfzIn.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-document-management-attachment-widget.component-DiE1iI_0.mjs.map → acorex-modules-document-management-attachment-widget.component-B_tjfzIn.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bq7bRA5y.mjs → acorex-modules-document-management-create-folder-dialog.component-DNdRcCAs.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-Bq7bRA5y.mjs.map → acorex-modules-document-management-create-folder-dialog.component-DNdRcCAs.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-document-management-details-view.component-C3R3GojY.mjs → acorex-modules-document-management-details-view.component-JsK1UgZh.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-document-management-details-view.component-C3R3GojY.mjs.map → acorex-modules-document-management-details-view.component-JsK1UgZh.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs → acorex-modules-document-management-drive-choose.component-DJT9oLek.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-document-management-drive-choose.component-DnzJ7ujZ.mjs.map → acorex-modules-document-management-drive-choose.component-DJT9oLek.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-document-management-drive.component-BW0gVjML.mjs → acorex-modules-document-management-drive.component-DYxpvUWX.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-document-management-drive.component-BW0gVjML.mjs.map → acorex-modules-document-management-drive.component-DYxpvUWX.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-B02pUo3R.mjs → acorex-modules-document-management-large-icons-view.component-B324V2hL.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-document-management-large-icons-view.component-B02pUo3R.mjs.map → acorex-modules-document-management-large-icons-view.component-B324V2hL.mjs.map} +1 -1
  17. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-IOgOKZHe.mjs → acorex-modules-document-management-large-tiles-view.component-V5gHyu9X.mjs} +2 -2
  18. package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-IOgOKZHe.mjs.map → acorex-modules-document-management-large-tiles-view.component-V5gHyu9X.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-document-management-list-view.component-B1tWiewp.mjs → acorex-modules-document-management-list-view.component-Bm2EH2aT.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-document-management-list-view.component-B1tWiewp.mjs.map → acorex-modules-document-management-list-view.component-Bm2EH2aT.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs → acorex-modules-document-management-meta-choose-popup.component-q6mDKrFi.mjs} +56 -49
  22. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-q6mDKrFi.mjs.map +1 -0
  23. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs → acorex-modules-document-management-permission-definition.provider-DGqVDVLJ.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-document-management-permission-definition.provider-BxGnnbvr.mjs.map → acorex-modules-document-management-permission-definition.provider-DGqVDVLJ.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BtH4ZteD.mjs → acorex-modules-document-management-rename-node-dialog.component-LgpvDguk.mjs} +2 -2
  26. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BtH4ZteD.mjs.map → acorex-modules-document-management-rename-node-dialog.component-LgpvDguk.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CSZM_GTs.mjs → acorex-modules-document-management-small-icons-view.component-BwFoe1vd.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-document-management-small-icons-view.component-CSZM_GTs.mjs.map → acorex-modules-document-management-small-icons-view.component-BwFoe1vd.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CpYgK225.mjs → acorex-modules-document-management-small-tiles-view.component-B5gp0wus.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-CpYgK225.mjs.map → acorex-modules-document-management-small-tiles-view.component-B5gp0wus.mjs.map} +1 -1
  31. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  32. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-D0GgVrM1.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs} +33 -5
  33. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-D0GgVrM1.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-DqpAYmHM.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-platform-management-list-version.component-ZXM2ZJtt.mjs → acorex-modules-platform-management-list-version.component-DidjxkmH.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-platform-management-list-version.component-ZXM2ZJtt.mjs.map → acorex-modules-platform-management-list-version.component-DidjxkmH.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-platform-management-settings.provider-D5WKWolF.mjs → acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-platform-management-settings.provider-D5WKWolF.mjs.map → acorex-modules-platform-management-settings.provider-DcHKHrSK.mjs.map} +1 -1
  38. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  39. package/fesm2022/acorex-modules-project-management.mjs +30 -1
  40. package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
  41. package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs +494 -0
  42. package/fesm2022/acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map +1 -0
  43. package/fesm2022/acorex-modules-workflow-management.mjs +17 -3
  44. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  45. package/package.json +1 -1
  46. package/workflow-management/index.d.ts +2 -1
  47. package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-BcwgdkCu.mjs.map +0 -1
  48. package/fesm2022/acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs +0 -305
  49. package/fesm2022/acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs.map +0 -1
@@ -0,0 +1,494 @@
1
+ import { AXBadgeModule } from '@acorex/components/badge';
2
+ import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
3
+ import * as i4 from '@acorex/components/button';
4
+ import { AXButtonModule } from '@acorex/components/button';
5
+ import { AXCalendarComponent } from '@acorex/components/calendar';
6
+ import * as i6 from '@acorex/components/decorators';
7
+ import { AXDecoratorModule } from '@acorex/components/decorators';
8
+ import { AXDropdownPanelComponent } from '@acorex/components/dropdown';
9
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
10
+ import { AXLoadingModule } from '@acorex/components/loading';
11
+ import * as i3 from '@acorex/components/menu';
12
+ import { AXMenuModule } from '@acorex/components/menu';
13
+ import * as i7 from '@acorex/components/popover';
14
+ import { AXPopoverModule } from '@acorex/components/popover';
15
+ import { AXCalendarService } from '@acorex/core/date-time';
16
+ import { AXLocaleService } from '@acorex/core/locale';
17
+ import * as i5 from '@acorex/core/translation';
18
+ import { AXTranslationModule } from '@acorex/core/translation';
19
+ import { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
20
+ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase } from '@acorex/platform/layout/views';
21
+ import * as i2 from '@angular/common';
22
+ import { CommonModule } from '@angular/common';
23
+ import * as i0 from '@angular/core';
24
+ import { computed, inject, viewChild, input, output, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, effect } from '@angular/core';
25
+ import * as i1 from '@angular/forms';
26
+ import { FormsModule } from '@angular/forms';
27
+ import { RouterModule } from '@angular/router';
28
+ import { AXPTaskBoardService } from './acorex-modules-workflow-management.mjs';
29
+ import { AXPSettingService } from '@acorex/platform/common';
30
+ import { AXPPlatformScope } from '@acorex/platform/core';
31
+ import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
32
+ import { AXSchedulerComponent } from '@acorex/components/scheduler';
33
+ import { AXKanbanComponent } from '@acorex/components/kanban';
34
+
35
+ const config = {
36
+ i18n: 'workflow-management',
37
+ };
38
+ const RootConfig = {
39
+ config,
40
+ module: {
41
+ module: 'WorkflowManagement',
42
+ name: 'WorkflowManagement',
43
+ title: `t('module-name', {scope:"${config.i18n}"})`,
44
+ icon: 'fa-light fa-clipboard-list-check',
45
+ },
46
+ };
47
+
48
+ var AXMTaskBoardSettings;
49
+ (function (AXMTaskBoardSettings) {
50
+ AXMTaskBoardSettings["CalendarViewMode"] = "taskboard.calendar.viewMode";
51
+ AXMTaskBoardSettings["CurrentDate"] = "taskboard.calendar.currentDate";
52
+ AXMTaskBoardSettings["SelectedTaskTypeFilter"] = "taskboard.filter.selectedTaskType";
53
+ })(AXMTaskBoardSettings || (AXMTaskBoardSettings = {}));
54
+
55
+ const AXMTaskBoardViewModel = signalStore({ providedIn: 'root' }, withState(() => ({
56
+ isLoading: true, // Start with loading true until initialized
57
+ currentViewMode: 'month', // Default value
58
+ currentDate: new Date(), // Default to today
59
+ selectedTaskTypeName: null, // Store the name/ID of the task type for persistence
60
+ taskTypes: [],
61
+ })), withComputed((store) => ({
62
+ // Computed property to get the actual AXPWorkflowTaskProvider object
63
+ selectedTaskType: computed(() => {
64
+ const name = store.selectedTaskTypeName();
65
+ if (!name) {
66
+ return null;
67
+ }
68
+ return store.taskTypes().find((tt) => tt.name === name) || null;
69
+ }),
70
+ // Example computed (you can add more as needed):
71
+ // isMonthView: computed(() => store.calendarViewMode() === 'month'),
72
+ })), withMethods((store, settingService = inject(AXPSettingService), // Inject the main service
73
+ taskBoardService = inject(AXPTaskBoardService)) => ({
74
+ async initialize() {
75
+ patchState(store, { isLoading: true });
76
+ const userScopedSettings = settingService.scope(AXPPlatformScope.User); // Get user scope once
77
+ try {
78
+ // 1. Load Task Types first
79
+ const taskTypes = await taskBoardService.getTaskTypes();
80
+ patchState(store, { taskTypes });
81
+ // 2. Load Persisted Settings individually
82
+ const [savedViewMode, savedDateString, savedTaskTypeName] = await Promise.all([
83
+ userScopedSettings.get(AXMTaskBoardSettings.CalendarViewMode),
84
+ userScopedSettings.get(AXMTaskBoardSettings.CurrentDate),
85
+ userScopedSettings.get(AXMTaskBoardSettings.SelectedTaskTypeFilter),
86
+ ]);
87
+ patchState(store, {
88
+ currentViewMode: savedViewMode || 'month', // Fallback to default
89
+ currentDate: savedDateString ? new Date(savedDateString) : new Date(), // Parse stored date string
90
+ selectedTaskTypeName: savedTaskTypeName || null, // Load persisted task type name
91
+ isLoading: false,
92
+ });
93
+ }
94
+ catch (error) {
95
+ console.error('Error initializing TaskBoard ViewModel:', error);
96
+ // Fallback to defaults on error to ensure the app is usable
97
+ patchState(store, {
98
+ currentViewMode: 'month',
99
+ currentDate: new Date(),
100
+ selectedTaskTypeName: null,
101
+ taskTypes: store.taskTypes(), // Retain loaded task types if any, or empty if error was before taskTypes load
102
+ isLoading: false,
103
+ });
104
+ }
105
+ },
106
+ setCalendarViewMode(mode) {
107
+ if (mode === 'kanban' && store.selectedTaskTypeName() === null) {
108
+ const taskTypeName = store.taskTypes()[0].name;
109
+ patchState(store, { selectedTaskTypeName: taskTypeName });
110
+ settingService
111
+ .scope(AXPPlatformScope.User)
112
+ .set(AXMTaskBoardSettings.SelectedTaskTypeFilter, taskTypeName)
113
+ .catch((error) => console.error('Error saving selected task type filter:', error));
114
+ }
115
+ patchState(store, { currentViewMode: mode });
116
+ settingService
117
+ .scope(AXPPlatformScope.User)
118
+ .set(AXMTaskBoardSettings.CalendarViewMode, mode)
119
+ .catch((error) => console.error('Error saving calendar view mode:', error));
120
+ },
121
+ setCurrentDate(date) {
122
+ patchState(store, { currentDate: new Date(date) });
123
+ settingService
124
+ .scope(AXPPlatformScope.User)
125
+ .set(AXMTaskBoardSettings.CurrentDate, date.toISOString())
126
+ .catch((error) => console.error('Error saving current date:', error));
127
+ },
128
+ setSelectedTaskTypeProvider(taskType) {
129
+ const taskTypeName = taskType ? taskType.name : null;
130
+ patchState(store, { selectedTaskTypeName: taskTypeName });
131
+ settingService
132
+ .scope(AXPPlatformScope.User)
133
+ .set(AXMTaskBoardSettings.SelectedTaskTypeFilter, taskTypeName)
134
+ .catch((error) => console.error('Error saving selected task type filter:', error));
135
+ },
136
+ })));
137
+
138
+ /**
139
+ * Component for displaying and interacting with an organizational chart.
140
+ */
141
+ class AXMTaskBoardCalendarViewComponent {
142
+ constructor() {
143
+ this.taskBoardService = inject(AXPTaskBoardService);
144
+ this.schedulerComponent = viewChild(AXSchedulerComponent);
145
+ this.startingDate = input(new Date());
146
+ this.selectedView = input('month');
147
+ this.dataSource = input.required();
148
+ this.currentSchedulerView = computed(() => this.selectedView() === 'kanban' ? 'month' : this.selectedView());
149
+ this.onTaskChanged = output();
150
+ this.onMonthSlotDblClicked = output();
151
+ this.component = output();
152
+ this.onRangeChanged = output();
153
+ this.onTaskRightClick = output();
154
+ }
155
+ ngAfterViewInit() {
156
+ if (this.schedulerComponent()) {
157
+ this.component.emit(this.schedulerComponent());
158
+ }
159
+ }
160
+ onTaskDrop(event) {
161
+ this.taskBoardService
162
+ .updateTaskDateRange(event.appointment, {
163
+ from: event.slot.startDate.date,
164
+ end: event.slot.endDate.date,
165
+ })
166
+ .then((task) => {
167
+ this.onTaskChanged.emit(task);
168
+ this.schedulerComponent()?.refresh([task]);
169
+ });
170
+ }
171
+ onTaskRightClickHandler(event) {
172
+ this.onTaskRightClick.emit(event);
173
+ }
174
+ onSlotDblClicked(event) {
175
+ if (event.sender.selectedView() === 'month') {
176
+ this.onMonthSlotDblClicked.emit(event.slot.startDate.date);
177
+ }
178
+ }
179
+ handleRangeChanged(event) {
180
+ this.onRangeChanged.emit(event);
181
+ }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: AXMTaskBoardCalendarViewComponent, isStandalone: true, selector: "axm-task-board-calendar-view", inputs: { startingDate: { classPropertyName: "startingDate", publicName: "startingDate", isSignal: true, isRequired: false, transformFunction: null }, selectedView: { classPropertyName: "selectedView", publicName: "selectedView", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskChanged: "onTaskChanged", onMonthSlotDblClicked: "onMonthSlotDblClicked", component: "component", onRangeChanged: "onRangeChanged", onTaskRightClick: "onTaskRightClick" }, viewQueries: [{ propertyName: "schedulerComponent", first: true, predicate: AXSchedulerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-scheduler\n [hasHeader]=\"false\"\n [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\"\n [selectedView]=\"currentSchedulerView()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\"\n (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentRightClick)=\"onTaskRightClickHandler($event)\"\n></ax-scheduler>\n", styles: ["ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\n"], dependencies: [{ kind: "component", type: AXSchedulerComponent, selector: "ax-scheduler", inputs: ["calendar", "startingDate", "endDayHour", "startDayHour", "hasHeader", "readonly", "draggable", "allowFullScreen", "multiDayViewDaysCount", "dataSource", "firstDayOfWeek", "views", "selectedView"], outputs: ["selectedViewChange", "onDataLoaded", "onRangeChanged", "onSlotClicked", "onSlotDblClicked", "onSlotRightClick", "onAppointmentDrop", "onAppointmentClicked", "onAppointmentDblClicked", "onAppointmentRightClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
184
+ }
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardCalendarViewComponent, decorators: [{
186
+ type: Component,
187
+ args: [{ selector: 'axm-task-board-calendar-view', imports: [AXSchedulerComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-scheduler\n [hasHeader]=\"false\"\n [dataSource]=\"dataSource()\"\n [startingDate]=\"startingDate()\"\n [selectedView]=\"currentSchedulerView()\"\n (onAppointmentDrop)=\"onTaskDrop($event)\"\n (onRangeChanged)=\"handleRangeChanged($event)\"\n (onSlotDblClicked)=\"onSlotDblClicked($event)\"\n (onAppointmentRightClick)=\"onTaskRightClickHandler($event)\"\n></ax-scheduler>\n", styles: ["ax-scheduler{line-height:1.5;background-color:rgba(var(--ax-sys-color-lightest-surface))!important}\n"] }]
188
+ }] });
189
+
190
+ /**
191
+ * Component for displaying and interacting with an organizational chart.
192
+ */
193
+ class AXMTaskBoardKanbanViewComponent {
194
+ constructor() {
195
+ this.taskBoardService = inject(AXPTaskBoardService);
196
+ this.kanbanComponent = viewChild(AXKanbanComponent);
197
+ this.filter = input({});
198
+ this.statuses = input.required();
199
+ this.dataSource = input.required();
200
+ this.onTaskChanged = output();
201
+ this.component = output();
202
+ this.tasks = signal([]);
203
+ this.kanbanTasks = computed(() => {
204
+ return this.tasks().map((task) => ({
205
+ id: task.id,
206
+ title: task.title,
207
+ index: task.index,
208
+ cssClass: task.cssClass,
209
+ priority: task.priority,
210
+ statusKey: task.statusKey,
211
+ description: task.description,
212
+ }));
213
+ });
214
+ this.#filterChange = effect(() => {
215
+ this.dataSource()(this.filter()).then((tasks) => {
216
+ this.tasks.set(tasks);
217
+ });
218
+ });
219
+ }
220
+ #filterChange;
221
+ ngAfterViewInit() {
222
+ if (this.kanbanComponent()) {
223
+ this.component.emit(this.kanbanComponent());
224
+ }
225
+ }
226
+ onSortChanged(event) {
227
+ const tasks = this.tasks().map((item) => {
228
+ const task = event.allItems.find((t) => t.id === item.id);
229
+ if (task) {
230
+ return { ...item, index: task.index, statusKey: task.statusKey };
231
+ }
232
+ return item;
233
+ });
234
+ this.taskBoardService.updateMultipleTasks(tasks).then((tasks) => {
235
+ this.tasks.set(tasks);
236
+ });
237
+ }
238
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
239
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.0.4", type: AXMTaskBoardKanbanViewComponent, isStandalone: true, selector: "axm-task-board-kanban-view", inputs: { filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: true, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onTaskChanged: "onTaskChanged", component: "component" }, viewQueries: [{ propertyName: "kanbanComponent", first: true, predicate: AXKanbanComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-kanban [dataSource]=\"kanbanTasks()\" [statuses]=\"statuses()\" (onSortChanged)=\"onSortChanged($event)\"></ax-kanban>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"], dependencies: [{ kind: "component", type: AXKanbanComponent, selector: "ax-kanban", inputs: ["statuses", "itemTemplate", "dataSource", "keyField", "indexField", "titleField", "cssClassField", "priorityField", "statusKeyField", "descriptionField"], outputs: ["onSortChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
240
+ }
241
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardKanbanViewComponent, decorators: [{
242
+ type: Component,
243
+ args: [{ selector: 'axm-task-board-kanban-view', imports: [AXKanbanComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-kanban [dataSource]=\"kanbanTasks()\" [statuses]=\"statuses()\" (onSortChanged)=\"onSortChanged($event)\"></ax-kanban>\n", styles: ["ax-kanban{--ax-comp-kanban-status-min-width: 25rem;height:100%;line-height:1.5}\n"] }]
244
+ }] });
245
+
246
+ /**
247
+ * Component for displaying and interacting with an organizational chart.
248
+ */
249
+ class AXMTaskBoardPage extends AXPPageLayoutBaseComponent {
250
+ constructor() {
251
+ super(...arguments);
252
+ this.MULTI_DAYS_COUNT = 7;
253
+ this.rootConfig = RootConfig;
254
+ this.vm = inject(AXMTaskBoardViewModel);
255
+ this.localeService = inject(AXLocaleService);
256
+ this.calendarService = inject(AXCalendarService);
257
+ this.taskBoardService = inject(AXPTaskBoardService);
258
+ this.popover = viewChild('popover');
259
+ this.calendar = viewChild('calendar');
260
+ this.currentTask = signal(null);
261
+ this.currentViewMode = signal('scheduler');
262
+ this.schedulerComponent = signal(null);
263
+ this.viewsItems = signal([
264
+ { key: 'day', text: 'daily', icon: 'fa-light fa-calendar-day' },
265
+ { key: 'week', text: 'weekly', icon: 'fa-light fa-calendar-week' },
266
+ { key: 'month', text: 'monthly', icon: 'fa-light fa-calendar-alt' },
267
+ { key: 'agenda', text: 'agenda', icon: 'fa-light fa-calendar-range', break: true },
268
+ { key: 'kanban', text: 'kanban', icon: 'fa-light fa-chart-kanban' },
269
+ ]);
270
+ this.calendarType = computed(() => this.localeService.activeProfile().calendar.system);
271
+ this.todayButtonText = computed(() => {
272
+ switch (this.vm.currentViewMode()) {
273
+ case 'day':
274
+ case 'agenda':
275
+ case 'kanban':
276
+ case 'timeline-day':
277
+ case 'timeline-multi-day':
278
+ return 'Today';
279
+ case 'week':
280
+ return 'Current week';
281
+ case 'month':
282
+ case 'timeline-month':
283
+ return 'Current month';
284
+ }
285
+ });
286
+ this.timeText = computed(() => {
287
+ if (this.vm.currentViewMode() === 'kanban') {
288
+ const start = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
289
+ const end = start.add('day', this.MULTI_DAYS_COUNT - 1);
290
+ const startText = start.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });
291
+ const endText = end.format('DD MMMM yyyy', { locale: this.localeService.activeProfile().calendar.system });
292
+ return `${startText} - ${endText}`;
293
+ }
294
+ return this.schedulerComponent()?.currentDateText();
295
+ });
296
+ this.calendarDepth = computed(() => {
297
+ if (this.vm.currentViewMode() === 'kanban') {
298
+ return 'day';
299
+ }
300
+ return this.schedulerComponent()?.calendarDepth();
301
+ });
302
+ this.selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.currentViewMode()) || this.viewsItems()[0]);
303
+ this.filter = computed(() => {
304
+ const taskTypeProvider = this.vm.selectedTaskType();
305
+ const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;
306
+ const from = this.vm.currentDate();
307
+ const end = this.calendarService
308
+ .create(from, this.localeService.activeProfile().calendar.system)
309
+ .add('day', this.MULTI_DAYS_COUNT - 1).date;
310
+ return {
311
+ ...(types && { types }),
312
+ range: { from, end },
313
+ };
314
+ });
315
+ this.contextMenu = viewChild('rootContextMenu');
316
+ this.dataSource = (filter) => {
317
+ const taskTypeProvider = this.vm.selectedTaskType();
318
+ const types = taskTypeProvider ? [taskTypeProvider.name] : undefined;
319
+ return this.taskBoardService.getTasks({ ...filter, types });
320
+ };
321
+ this.statuses = computed(() => {
322
+ return this.vm.selectedTaskType()?.statuses || [];
323
+ });
324
+ this.getCellClass = (date) => {
325
+ // check from value
326
+ const rangedDates = ['agenda', 'week', 'timeline-multi-day', 'kanban'];
327
+ if (!rangedDates.includes(this.vm.currentViewMode())) {
328
+ return null;
329
+ }
330
+ const from = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
331
+ const end = from.add('day', this.MULTI_DAYS_COUNT - 1);
332
+ if (from && date.equal(from, 'day')) {
333
+ return 'ax-range-start';
334
+ }
335
+ if (end && date.equal(end, 'day')) {
336
+ return 'ax-range-end';
337
+ }
338
+ if (from && end && date.compare(from, 'day') > 0 && date.compare(end, 'day') < 0) {
339
+ return 'ax-range-between';
340
+ }
341
+ return null;
342
+ };
343
+ }
344
+ async ngOnInit() {
345
+ await super.ngOnInit();
346
+ await this.vm.initialize();
347
+ }
348
+ async getPageTitle() {
349
+ return await this.translateService.translateAsync('task-board.page-title', { scope: this.rootConfig.config.i18n });
350
+ }
351
+ async getPageBreadcrumbs() {
352
+ return [
353
+ {
354
+ title: await this.translateService.translateAsync('root-menu', { scope: this.rootConfig.config.i18n }),
355
+ },
356
+ ];
357
+ }
358
+ schedulerComponentChanged(component) {
359
+ this.schedulerComponent.set(component);
360
+ }
361
+ handleContextMenuOnOpening(event) {
362
+ for (const item of this.currentTask()?.data?.actions || []) {
363
+ event.items.push({
364
+ text: item.title,
365
+ icon: item.icon,
366
+ data: {
367
+ command: item.command,
368
+ },
369
+ });
370
+ }
371
+ }
372
+ handleTaskRightClick(event) {
373
+ this.currentTask.set(event.appointment);
374
+ const x = event.nativeEvent.clientX;
375
+ const y = event.nativeEvent.clientY;
376
+ const element = event.sender.nativeElement;
377
+ this.contextMenu()?.showAt({ x, y }, element);
378
+ }
379
+ handleMonthSlotDblClicked(date) {
380
+ this.vm.setCurrentDate(date);
381
+ this.vm.setCalendarViewMode('day');
382
+ }
383
+ handleCalendarViewChange(view) {
384
+ this.vm.setCalendarViewMode(view);
385
+ const schedulerComponent = this.schedulerComponent();
386
+ if (schedulerComponent) {
387
+ setTimeout(() => {
388
+ this.vm.setCurrentDate(schedulerComponent.currentDate().date);
389
+ this.popover()?.close();
390
+ this.calendar()?.render();
391
+ });
392
+ }
393
+ }
394
+ handleSelectedTaskTypeChange(taskType) {
395
+ this.vm.setSelectedTaskTypeProvider(taskType);
396
+ this.schedulerComponent()?.refresh();
397
+ }
398
+ handleSchedulerDateChanged(event) {
399
+ if (this.vm.isLoading()) {
400
+ return;
401
+ }
402
+ const newDate = event.value;
403
+ const currentDateInVm = this.vm.currentDate();
404
+ let dateToSet = newDate || new Date();
405
+ if (!currentDateInVm || currentDateInVm.getTime() !== dateToSet.getTime()) {
406
+ if (this.vm.currentViewMode() === 'week') {
407
+ const day = dateToSet.getDay();
408
+ const weekStart = this.localeService.activeProfile().calendar.week.startsOn;
409
+ let daysToSubtract = day - weekStart;
410
+ if (daysToSubtract < 0) {
411
+ daysToSubtract += 7;
412
+ }
413
+ dateToSet = new Date(dateToSet);
414
+ dateToSet.setDate(dateToSet.getDate() - daysToSubtract);
415
+ }
416
+ this.vm.setCurrentDate(dateToSet);
417
+ this.popover()?.close();
418
+ this.calendar()?.render();
419
+ }
420
+ }
421
+ handleContextMenuItemClick(event) {
422
+ this.taskBoardService.executeCommand(event.item.data?.command, this.currentTask()?.data?.provider ?? '');
423
+ }
424
+ changeDate(forward) {
425
+ const date = this.calendarService.create(this.vm.currentDate(), this.localeService.activeProfile().calendar.system);
426
+ switch (this.vm.currentViewMode()) {
427
+ case 'day':
428
+ case 'timeline-day':
429
+ this.vm.setCurrentDate(date.add('day', forward ? 1 : -1).date);
430
+ break;
431
+ case 'week':
432
+ this.vm.setCurrentDate(date.add('week', forward ? 1 : -1).date);
433
+ break;
434
+ case 'agenda':
435
+ case 'kanban':
436
+ case 'timeline-multi-day':
437
+ this.vm.setCurrentDate(date.add('day', forward ? this.MULTI_DAYS_COUNT - 1 : 1 - this.MULTI_DAYS_COUNT).date);
438
+ break;
439
+ case 'month':
440
+ case 'timeline-month':
441
+ this.vm.setCurrentDate(date.add('month', forward ? 1 : -1).date);
442
+ break;
443
+ }
444
+ this.popover()?.close();
445
+ this.calendar()?.render();
446
+ }
447
+ handleTodayClick() {
448
+ this.handleSchedulerDateChanged({ value: new Date(), component: this.schedulerComponent() });
449
+ }
450
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardPage, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
451
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXMTaskBoardPage, isStandalone: true, selector: "ng-component", providers: [
452
+ {
453
+ provide: AXPPageLayoutBase,
454
+ useExisting: AXMTaskBoardPage,
455
+ },
456
+ ], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "calendar", first: true, predicate: ["calendar"], descendants: true, isSignal: true }, { propertyName: "contextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban') {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(null)\"\n [text]=\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light fa-tasks\"></ax-icon></ax-prefix>\n </ax-button-item>\n } @for(item of vm.taskTypes(); track item.name) {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(item)\"\n [text]=\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon></ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <div class=\"ax-scheduler-header\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n [depth]=\"calendarDepth()\"\n (onValueChanged)=\"handleSchedulerDateChanged($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <ax-button-item\n [text]=\"(t('dateTime.duration.' + item.text, { scope: 'common' }) | async)!\"\n [selected]=\"vm.currentViewMode() === item.key\"\n (onClick)=\"handleCalendarViewChange(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n } }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-overflow-hidden\">\n @switch(vm.currentViewMode()) { @case('kanban') {\n <axm-task-board-kanban-view\n [filter]=\"filter()\"\n [dataSource]=\"dataSource\"\n class=\"axp-kanban-container\"\n [statuses]=\"statuses()\"\n ></axm-task-board-kanban-view>\n } @default {\n <axm-task-board-calendar-view\n class=\"axp-scheduler-container\"\n [dataSource]=\"dataSource\"\n [startingDate]=\"vm.currentDate()\"\n [selectedView]=\"vm.currentViewMode()\"\n (component)=\"schedulerComponentChanged($event)\"\n (onTaskRightClick)=\"handleTaskRightClick($event)\"\n (onMonthSlotDblClicked)=\"handleMonthSlotDblClicked($event)\"\n ></axm-task-board-calendar-view>\n <ax-context-menu\n #rootContextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n } }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-task-board-calendar-view,axm-task-board-kanban-view{height:100%}html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
457
+ //
458
+ AXMenuModule }, { kind: "component", type: i3.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i4.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i4.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i6.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type:
459
+ //
460
+ AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXMTaskBoardCalendarViewComponent, selector: "axm-task-board-calendar-view", inputs: ["startingDate", "selectedView", "dataSource"], outputs: ["onTaskChanged", "onMonthSlotDblClicked", "component", "onRangeChanged", "onTaskRightClick"] }, { kind: "component", type: AXMTaskBoardKanbanViewComponent, selector: "axm-task-board-kanban-view", inputs: ["filter", "statuses", "dataSource"], outputs: ["onTaskChanged", "component"] }, { kind: "component", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i7.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXCalendarComponent, selector: "ax-calendar", inputs: ["rtl", "readonly", "value", "name", "disabled", "depth", "activeView", "minValue", "maxValue", "disabledDates", "holidayDates", "type", "cellTemplate", "cellClass", "showNavigation", "count", "id"], outputs: ["onOptionChanged", "valueChange", "onValueChanged", "minValueChange", "maxValueChange", "onBlur", "onFocus", "depthChange", "typeChange", "activeViewChange", "disabledDatesChange", "holidayDatesChange", "onNavigate", "onSlotClick", "countChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
461
+ }
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXMTaskBoardPage, decorators: [{
463
+ type: Component,
464
+ args: [{ imports: [
465
+ FormsModule,
466
+ CommonModule,
467
+ RouterModule,
468
+ //
469
+ AXMenuModule,
470
+ AXButtonModule,
471
+ AXDropdownButtonModule,
472
+ AXTranslationModule,
473
+ AXDecoratorModule,
474
+ AXLoadingModule,
475
+ AXBreadcrumbsModule,
476
+ AXBadgeModule,
477
+ //
478
+ AXPThemeLayoutBlockComponent,
479
+ AXPPageLayoutComponent,
480
+ AXMTaskBoardCalendarViewComponent,
481
+ AXMTaskBoardKanbanViewComponent,
482
+ AXDropdownPanelComponent,
483
+ AXPopoverModule,
484
+ AXCalendarComponent,
485
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
486
+ {
487
+ provide: AXPPageLayoutBase,
488
+ useExisting: AXMTaskBoardPage,
489
+ },
490
+ ], template: "<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <axp-layout-prefix>\n <ax-button\n [text]=\"t(vm.selectedTaskType()?.title || 'task-board.all', { scope: rootConfig.config.i18n }) | async\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{vm.selectedTaskType()?.icon || 'fa-tasks'}}\"></ax-icon></ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @if(vm.currentViewMode()!=='kanban') {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(null)\"\n [text]=\"(t('task-board.all', { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light fa-tasks\"></ax-icon></ax-prefix>\n </ax-button-item>\n } @for(item of vm.taskTypes(); track item.name) {\n <ax-button-item\n (onClick)=\"handleSelectedTaskTypeChange(item)\"\n [text]=\"(t(item.title, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix><ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon></ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <div class=\"ax-scheduler-header\">\n <ax-button look=\"blank\" (onClick)=\"changeDate(false)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-left arrow-icon\"></ax-icon>\n </ax-button>\n <ax-button look=\"blank\" [text]=\"timeText()\" #date></ax-button>\n <ax-button look=\"blank\" (onClick)=\"changeDate(true)\">\n <ax-icon class=\"ax-icon ax-text-xl ax-icon-chevron-right arrow-icon\"></ax-icon>\n </ax-button>\n <ax-popover [target]=\"date\" [placement]=\"'bottom'\" #popover>\n <div class=\"ax-overlay-pane\">\n <ax-calendar\n #calendar\n [type]=\"calendarType()\"\n [cellClass]=\"getCellClass\"\n [ngModel]=\"vm.currentDate()\"\n class=\"ax-single-range-calendar\"\n [depth]=\"calendarDepth()\"\n (onValueChanged)=\"handleSchedulerDateChanged($event)\"\n >\n <ax-footer>\n <ax-button\n look=\"link\"\n color=\"primary\"\n [text]=\"todayButtonText()\"\n (onClick)=\"handleTodayClick()\"\n ></ax-button>\n </ax-footer>\n </ax-calendar>\n </div>\n </ax-popover>\n </div>\n </axp-layout-prefix>\n <axp-layout-suffix>\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <ax-button-item\n [text]=\"(t('dateTime.duration.' + item.text, { scope: 'common' }) | async)!\"\n [selected]=\"vm.currentViewMode() === item.key\"\n (onClick)=\"handleCalendarViewChange(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n } }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </axp-layout-suffix>\n </axp-page-toolbar>\n <axp-page-content class=\"ax-overflow-hidden\">\n @switch(vm.currentViewMode()) { @case('kanban') {\n <axm-task-board-kanban-view\n [filter]=\"filter()\"\n [dataSource]=\"dataSource\"\n class=\"axp-kanban-container\"\n [statuses]=\"statuses()\"\n ></axm-task-board-kanban-view>\n } @default {\n <axm-task-board-calendar-view\n class=\"axp-scheduler-container\"\n [dataSource]=\"dataSource\"\n [startingDate]=\"vm.currentDate()\"\n [selectedView]=\"vm.currentViewMode()\"\n (component)=\"schedulerComponentChanged($event)\"\n (onTaskRightClick)=\"handleTaskRightClick($event)\"\n (onMonthSlotDblClicked)=\"handleMonthSlotDblClicked($event)\"\n ></axm-task-board-calendar-view>\n <ax-context-menu\n #rootContextMenu\n [closeOn]=\"'leave'\"\n [orientation]=\"'vertical'\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n >\n </ax-context-menu>\n } }\n </axp-page-content>\n</axp-page-layout>\n", styles: ["axm-task-board-calendar-view,axm-task-board-kanban-view{height:100%}html[dir=rtl] axp-page-layout axp-page-toolbar axp-layout-prefix .ax-scheduler-header .arrow-icon:before{-moz-transform:scale(-1,1);-webkit-transform:scale(-1,1);-o-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scaleX(-1)}.ax-single-range-calendar .ax-range-start,.ax-single-range-calendar .ax-range-end{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.85)!important}.ax-single-range-calendar .ax-range-start:hover,.ax-single-range-calendar .ax-range-end:hover{background-color:rgba(var(--ax-sys-color-primary-surface))!important}.ax-single-range-calendar .ax-range-start.ax-state-holiday,.ax-single-range-calendar .ax-range-end.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.85)!important}.ax-single-range-calendar .ax-range-between{color:rgba(var(--ax-sys-color-on-primary-surface))!important;background-color:rgba(var(--ax-sys-color-primary-surface),.65)}.ax-single-range-calendar .ax-range-between.ax-state-holiday{background-color:rgba(var(--ax-sys-color-danger-surface),.65)}.ax-single-range-calendar ax-footer{display:flex;justify-content:center;border-color:rgba(var(--ax-comp-calendar-view-header-border-color));border-top-width:var(--ax-comp-calendar-view-header-border-width, 1px)}\n"] }]
491
+ }] });
492
+
493
+ export { AXMTaskBoardPage };
494
+ //# sourceMappingURL=acorex-modules-workflow-management-task-board.page-R4x5Rq-D.mjs.map