@mj-biz-apps/tasks-ng 0.0.1 → 1.0.1

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 (134) hide show
  1. package/dist/lib/components/my-tasks/my-tasks.component.d.ts +68 -0
  2. package/dist/lib/components/my-tasks/my-tasks.component.d.ts.map +1 -0
  3. package/dist/lib/components/my-tasks/my-tasks.component.js +136 -0
  4. package/dist/lib/components/my-tasks/my-tasks.component.js.map +1 -0
  5. package/dist/lib/components/task-assignee-list/task-assignee-list.component.d.ts +42 -0
  6. package/dist/lib/components/task-assignee-list/task-assignee-list.component.d.ts.map +1 -0
  7. package/dist/lib/components/task-assignee-list/task-assignee-list.component.js +76 -0
  8. package/dist/lib/components/task-assignee-list/task-assignee-list.component.js.map +1 -0
  9. package/dist/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.d.ts +62 -0
  10. package/dist/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.d.ts.map +1 -0
  11. package/dist/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.js +151 -0
  12. package/dist/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.js.map +1 -0
  13. package/dist/lib/components/task-dashboard/task-dashboard.component.d.ts +96 -0
  14. package/dist/lib/components/task-dashboard/task-dashboard.component.d.ts.map +1 -0
  15. package/dist/lib/components/task-dashboard/task-dashboard.component.js +451 -0
  16. package/dist/lib/components/task-dashboard/task-dashboard.component.js.map +1 -0
  17. package/dist/lib/components/task-detail-panel/task-detail-panel.component.d.ts +120 -0
  18. package/dist/lib/components/task-detail-panel/task-detail-panel.component.d.ts.map +1 -0
  19. package/dist/lib/components/task-detail-panel/task-detail-panel.component.js +842 -0
  20. package/dist/lib/components/task-detail-panel/task-detail-panel.component.js.map +1 -0
  21. package/dist/lib/components/task-edit-panel/task-edit-panel.component.d.ts +124 -0
  22. package/dist/lib/components/task-edit-panel/task-edit-panel.component.d.ts.map +1 -0
  23. package/dist/lib/components/task-edit-panel/task-edit-panel.component.js +1057 -0
  24. package/dist/lib/components/task-edit-panel/task-edit-panel.component.js.map +1 -0
  25. package/dist/lib/components/task-gantt/task-gantt.component.d.ts +36 -0
  26. package/dist/lib/components/task-gantt/task-gantt.component.d.ts.map +1 -0
  27. package/dist/lib/components/task-gantt/task-gantt.component.js +130 -0
  28. package/dist/lib/components/task-gantt/task-gantt.component.js.map +1 -0
  29. package/dist/lib/components/task-kanban/task-kanban.component.d.ts +54 -0
  30. package/dist/lib/components/task-kanban/task-kanban.component.d.ts.map +1 -0
  31. package/dist/lib/components/task-kanban/task-kanban.component.js +151 -0
  32. package/dist/lib/components/task-kanban/task-kanban.component.js.map +1 -0
  33. package/dist/lib/components/task-list/task-list.component.d.ts +248 -0
  34. package/dist/lib/components/task-list/task-list.component.d.ts.map +1 -0
  35. package/dist/lib/components/task-list/task-list.component.js +1184 -0
  36. package/dist/lib/components/task-list/task-list.component.js.map +1 -0
  37. package/dist/lib/components/task-panel/task-panel.component.d.ts +246 -0
  38. package/dist/lib/components/task-panel/task-panel.component.d.ts.map +1 -0
  39. package/dist/lib/components/task-panel/task-panel.component.js +469 -0
  40. package/dist/lib/components/task-panel/task-panel.component.js.map +1 -0
  41. package/dist/lib/components/task-priority-badge/task-priority-badge.component.d.ts +24 -0
  42. package/dist/lib/components/task-priority-badge/task-priority-badge.component.d.ts.map +1 -0
  43. package/dist/lib/components/task-priority-badge/task-priority-badge.component.js +46 -0
  44. package/dist/lib/components/task-priority-badge/task-priority-badge.component.js.map +1 -0
  45. package/dist/lib/components/task-template-wizard/task-template-wizard.component.d.ts +107 -0
  46. package/dist/lib/components/task-template-wizard/task-template-wizard.component.d.ts.map +1 -0
  47. package/dist/lib/components/task-template-wizard/task-template-wizard.component.js +586 -0
  48. package/dist/lib/components/task-template-wizard/task-template-wizard.component.js.map +1 -0
  49. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts +10 -0
  50. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts.map +1 -0
  51. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js +256 -0
  52. package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js.map +1 -0
  53. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts +10 -0
  54. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts.map +1 -0
  55. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js +67 -0
  56. package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js.map +1 -0
  57. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts +10 -0
  58. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts.map +1 -0
  59. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js +71 -0
  60. package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js.map +1 -0
  61. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts +10 -0
  62. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts.map +1 -0
  63. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js +124 -0
  64. package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js.map +1 -0
  65. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts +10 -0
  66. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts.map +1 -0
  67. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js +86 -0
  68. package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js.map +1 -0
  69. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts +10 -0
  70. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts.map +1 -0
  71. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js +61 -0
  72. package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js.map +1 -0
  73. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts +10 -0
  74. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts.map +1 -0
  75. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js +63 -0
  76. package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js.map +1 -0
  77. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts +10 -0
  78. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts.map +1 -0
  79. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js +69 -0
  80. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js.map +1 -0
  81. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts +10 -0
  82. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts.map +1 -0
  83. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js +63 -0
  84. package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js.map +1 -0
  85. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts +10 -0
  86. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts.map +1 -0
  87. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js +98 -0
  88. package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js.map +1 -0
  89. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts +10 -0
  90. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts.map +1 -0
  91. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js +80 -0
  92. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js.map +1 -0
  93. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts +10 -0
  94. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts.map +1 -0
  95. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js +59 -0
  96. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js.map +1 -0
  97. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts +10 -0
  98. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts.map +1 -0
  99. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js +84 -0
  100. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js.map +1 -0
  101. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts +10 -0
  102. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts.map +1 -0
  103. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js +146 -0
  104. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js.map +1 -0
  105. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts +10 -0
  106. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts.map +1 -0
  107. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js +61 -0
  108. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js.map +1 -0
  109. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts +10 -0
  110. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts.map +1 -0
  111. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js +59 -0
  112. package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js.map +1 -0
  113. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts +10 -0
  114. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts.map +1 -0
  115. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js +128 -0
  116. package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js.map +1 -0
  117. package/dist/lib/generated/class-registrations-manifest.d.ts +22 -0
  118. package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
  119. package/dist/lib/generated/class-registrations-manifest.js +48 -0
  120. package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
  121. package/dist/lib/generated/generated-forms.module.d.ts +34 -0
  122. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
  123. package/dist/lib/generated/generated-forms.module.js +111 -0
  124. package/dist/lib/generated/generated-forms.module.js.map +1 -0
  125. package/dist/lib/tasks.module.d.ts +23 -0
  126. package/dist/lib/tasks.module.d.ts.map +1 -0
  127. package/dist/lib/tasks.module.js +103 -0
  128. package/dist/lib/tasks.module.js.map +1 -0
  129. package/dist/public-api.d.ts +26 -0
  130. package/dist/public-api.d.ts.map +1 -0
  131. package/dist/public-api.js +33 -0
  132. package/dist/public-api.js.map +1 -0
  133. package/package.json +51 -7
  134. package/README.md +0 -45
@@ -0,0 +1,68 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { TaskListComponent, TaskRow, BeforeTaskSelectedEvent, BeforeStatusChangeEvent } from '../task-list/task-list.component';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * "My Tasks" convenience wrapper around {@link TaskListComponent}.
6
+ *
7
+ * Automatically filters tasks to those assigned to the provided {@link PersonID}
8
+ * via the TaskAssignment join table. This is the #1 daily use case — "what do
9
+ * I need to do?" — and can be embedded by any consuming app.
10
+ *
11
+ * All {@link TaskListComponent} events are re-emitted so consuming apps can
12
+ * wire up the same Before/After patterns.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <bizapps-my-tasks
17
+ * [PersonID]="currentUserPersonID"
18
+ * [ShowCreateButton]="true"
19
+ * (AfterTaskSelected)="openTaskDetail($event)"
20
+ * (CreateTask)="openNewTaskPanel()">
21
+ * </bizapps-my-tasks>
22
+ * ```
23
+ */
24
+ export declare class MyTasksComponent {
25
+ /**
26
+ * The Person ID of the current user. Used to filter tasks via
27
+ * TaskAssignment. Required — if empty, no tasks will be shown.
28
+ */
29
+ PersonID: string;
30
+ /**
31
+ * Whether to show the "+ New Task" button in the embedded list toolbar.
32
+ * @default false
33
+ */
34
+ ShowCreateButton: boolean;
35
+ /**
36
+ * Compact mode — reduces padding and hides descriptions.
37
+ * Useful for sidebar or widget embedding.
38
+ * @default false
39
+ */
40
+ Compact: boolean;
41
+ /**
42
+ * Re-emitted from the inner {@link TaskListComponent}.
43
+ * Cancellable — set `event.Cancel = true` to prevent the selection.
44
+ */
45
+ BeforeTaskSelected: EventEmitter<BeforeTaskSelectedEvent>;
46
+ /**
47
+ * Re-emitted from the inner {@link TaskListComponent}.
48
+ * Payload is the selected {@link TaskRow}.
49
+ */
50
+ AfterTaskSelected: EventEmitter<TaskRow>;
51
+ /** Re-emitted from the inner {@link TaskListComponent}. Cancellable. */
52
+ BeforeStatusChange: EventEmitter<BeforeStatusChangeEvent>;
53
+ /** Re-emitted from the inner {@link TaskListComponent}. */
54
+ AfterStatusChange: EventEmitter<TaskRow>;
55
+ /** Re-emitted when the user clicks "+ New Task" in the embedded list. */
56
+ CreateTask: EventEmitter<void>;
57
+ /** @internal */
58
+ taskList?: TaskListComponent;
59
+ /**
60
+ * Reloads the inner task list from the server.
61
+ */
62
+ Refresh(): void;
63
+ /** @internal Builds the ExtraFilter to scope tasks by assignee PersonID. */
64
+ get assigneeFilter(): string;
65
+ static ɵfac: i0.ɵɵFactoryDeclaration<MyTasksComponent, never>;
66
+ static ɵcmp: i0.ɵɵComponentDeclaration<MyTasksComponent, "bizapps-my-tasks", never, { "PersonID": { "alias": "PersonID"; "required": false; }; "ShowCreateButton": { "alias": "ShowCreateButton"; "required": false; }; "Compact": { "alias": "Compact"; "required": false; }; }, { "BeforeTaskSelected": "BeforeTaskSelected"; "AfterTaskSelected": "AfterTaskSelected"; "BeforeStatusChange": "BeforeStatusChange"; "AfterStatusChange": "AfterStatusChange"; "CreateTask": "CreateTask"; }, never, never, true, never>;
67
+ }
68
+ //# sourceMappingURL=my-tasks.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-tasks.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/my-tasks/my-tasks.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAA4B,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;;AAEhI;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBA0Ba,gBAAgB;IAGzB;;;OAGG;IACM,QAAQ,EAAE,MAAM,CAAM;IAE/B;;;OAGG;IACM,gBAAgB,UAAS;IAElC;;;;OAIG;IACM,OAAO,UAAS;IAIzB;;;OAGG;IACO,kBAAkB,wCAA+C;IAE3E;;;OAGG;IACO,iBAAiB,wBAA+B;IAE1D,wEAAwE;IAC9D,kBAAkB,wCAA+C;IAE3E,2DAA2D;IACjD,iBAAiB,wBAA+B;IAE1D,yEAAyE;IAC/D,UAAU,qBAA4B;IAIhD,gBAAgB;IACO,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAIpD;;OAEG;IACH,OAAO,IAAI,IAAI;IAMf,4EAA4E;IAC5E,IAAI,cAAc,IAAI,MAAM,CAG3B;yCAjEQ,gBAAgB;2CAAhB,gBAAgB;CAkE5B"}
@@ -0,0 +1,136 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { TaskListComponent } from '../task-list/task-list.component';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = ["taskList"];
6
+ /**
7
+ * "My Tasks" convenience wrapper around {@link TaskListComponent}.
8
+ *
9
+ * Automatically filters tasks to those assigned to the provided {@link PersonID}
10
+ * via the TaskAssignment join table. This is the #1 daily use case — "what do
11
+ * I need to do?" — and can be embedded by any consuming app.
12
+ *
13
+ * All {@link TaskListComponent} events are re-emitted so consuming apps can
14
+ * wire up the same Before/After patterns.
15
+ *
16
+ * @example
17
+ * ```html
18
+ * <bizapps-my-tasks
19
+ * [PersonID]="currentUserPersonID"
20
+ * [ShowCreateButton]="true"
21
+ * (AfterTaskSelected)="openTaskDetail($event)"
22
+ * (CreateTask)="openNewTaskPanel()">
23
+ * </bizapps-my-tasks>
24
+ * ```
25
+ */
26
+ export class MyTasksComponent {
27
+ // ── Inputs ──────────────────────────────────────────────
28
+ /**
29
+ * The Person ID of the current user. Used to filter tasks via
30
+ * TaskAssignment. Required — if empty, no tasks will be shown.
31
+ */
32
+ PersonID = '';
33
+ /**
34
+ * Whether to show the "+ New Task" button in the embedded list toolbar.
35
+ * @default false
36
+ */
37
+ ShowCreateButton = false;
38
+ /**
39
+ * Compact mode — reduces padding and hides descriptions.
40
+ * Useful for sidebar or widget embedding.
41
+ * @default false
42
+ */
43
+ Compact = false;
44
+ // ── Outputs ─────────────────────────────────────────────
45
+ /**
46
+ * Re-emitted from the inner {@link TaskListComponent}.
47
+ * Cancellable — set `event.Cancel = true` to prevent the selection.
48
+ */
49
+ BeforeTaskSelected = new EventEmitter();
50
+ /**
51
+ * Re-emitted from the inner {@link TaskListComponent}.
52
+ * Payload is the selected {@link TaskRow}.
53
+ */
54
+ AfterTaskSelected = new EventEmitter();
55
+ /** Re-emitted from the inner {@link TaskListComponent}. Cancellable. */
56
+ BeforeStatusChange = new EventEmitter();
57
+ /** Re-emitted from the inner {@link TaskListComponent}. */
58
+ AfterStatusChange = new EventEmitter();
59
+ /** Re-emitted when the user clicks "+ New Task" in the embedded list. */
60
+ CreateTask = new EventEmitter();
61
+ // ── View References ─────────────────────────────────────
62
+ /** @internal */
63
+ taskList;
64
+ // ── Public Methods ──────────────────────────────────────
65
+ /**
66
+ * Reloads the inner task list from the server.
67
+ */
68
+ Refresh() {
69
+ this.taskList?.Refresh();
70
+ }
71
+ // ── Internal ────────────────────────────────────────────
72
+ /** @internal Builds the ExtraFilter to scope tasks by assignee PersonID. */
73
+ get assigneeFilter() {
74
+ if (!this.PersonID)
75
+ return '';
76
+ return `ID IN (SELECT TaskID FROM __mj_BizAppsTasks.TaskAssignment WHERE AssigneeRecordID = '${this.PersonID}')`;
77
+ }
78
+ static ɵfac = function MyTasksComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MyTasksComponent)(); };
79
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MyTasksComponent, selectors: [["bizapps-my-tasks"]], viewQuery: function MyTasksComponent_Query(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵviewQuery(_c0, 5);
81
+ } if (rf & 2) {
82
+ let _t;
83
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.taskList = _t.first);
84
+ } }, inputs: { PersonID: "PersonID", ShowCreateButton: "ShowCreateButton", Compact: "Compact" }, outputs: { BeforeTaskSelected: "BeforeTaskSelected", AfterTaskSelected: "AfterTaskSelected", BeforeStatusChange: "BeforeStatusChange", AfterStatusChange: "AfterStatusChange", CreateTask: "CreateTask" }, decls: 5, vars: 3, consts: [["taskList", ""], [1, "my-tasks"], [1, "my-tasks-title"], [3, "BeforeTaskSelected", "AfterTaskSelected", "BeforeStatusChange", "AfterStatusChange", "CreateTask", "ExtraFilter", "ShowCreateButton", "Compact"]], template: function MyTasksComponent_Template(rf, ctx) { if (rf & 1) {
85
+ const _r1 = i0.ɵɵgetCurrentView();
86
+ i0.ɵɵelementStart(0, "div", 1)(1, "h3", 2);
87
+ i0.ɵɵtext(2, "My Tasks");
88
+ i0.ɵɵelementEnd();
89
+ i0.ɵɵelementStart(3, "bizapps-task-list", 3, 0);
90
+ i0.ɵɵlistener("BeforeTaskSelected", function MyTasksComponent_Template_bizapps_task_list_BeforeTaskSelected_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.BeforeTaskSelected.emit($event)); })("AfterTaskSelected", function MyTasksComponent_Template_bizapps_task_list_AfterTaskSelected_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.AfterTaskSelected.emit($event)); })("BeforeStatusChange", function MyTasksComponent_Template_bizapps_task_list_BeforeStatusChange_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.BeforeStatusChange.emit($event)); })("AfterStatusChange", function MyTasksComponent_Template_bizapps_task_list_AfterStatusChange_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.AfterStatusChange.emit($event)); })("CreateTask", function MyTasksComponent_Template_bizapps_task_list_CreateTask_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.CreateTask.emit()); });
91
+ i0.ɵɵelementEnd()();
92
+ } if (rf & 2) {
93
+ i0.ɵɵadvance(3);
94
+ i0.ɵɵproperty("ExtraFilter", ctx.assigneeFilter)("ShowCreateButton", ctx.ShowCreateButton)("Compact", ctx.Compact);
95
+ } }, dependencies: [CommonModule, TaskListComponent], styles: [".my-tasks-title[_ngcontent-%COMP%] {\n margin: 0 0 8px; font-size: 1.1rem; font-weight: 600; color: #1f2937;\n }"] });
96
+ }
97
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MyTasksComponent, [{
98
+ type: Component,
99
+ args: [{ selector: 'bizapps-my-tasks', standalone: true, imports: [CommonModule, TaskListComponent], template: `
100
+ <div class="my-tasks">
101
+ <h3 class="my-tasks-title">My Tasks</h3>
102
+ <bizapps-task-list
103
+ #taskList
104
+ [ExtraFilter]="assigneeFilter"
105
+ [ShowCreateButton]="ShowCreateButton"
106
+ [Compact]="Compact"
107
+ (BeforeTaskSelected)="BeforeTaskSelected.emit($event)"
108
+ (AfterTaskSelected)="AfterTaskSelected.emit($event)"
109
+ (BeforeStatusChange)="BeforeStatusChange.emit($event)"
110
+ (AfterStatusChange)="AfterStatusChange.emit($event)"
111
+ (CreateTask)="CreateTask.emit()">
112
+ </bizapps-task-list>
113
+ </div>
114
+ `, styles: ["\n .my-tasks-title {\n margin: 0 0 8px; font-size: 1.1rem; font-weight: 600; color: #1f2937;\n }\n "] }]
115
+ }], null, { PersonID: [{
116
+ type: Input
117
+ }], ShowCreateButton: [{
118
+ type: Input
119
+ }], Compact: [{
120
+ type: Input
121
+ }], BeforeTaskSelected: [{
122
+ type: Output
123
+ }], AfterTaskSelected: [{
124
+ type: Output
125
+ }], BeforeStatusChange: [{
126
+ type: Output
127
+ }], AfterStatusChange: [{
128
+ type: Output
129
+ }], CreateTask: [{
130
+ type: Output
131
+ }], taskList: [{
132
+ type: ViewChild,
133
+ args: ['taskList']
134
+ }] }); })();
135
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MyTasksComponent, { className: "MyTasksComponent", filePath: "src/lib/components/my-tasks/my-tasks.component.ts", lineNumber: 51 }); })();
136
+ //# sourceMappingURL=my-tasks.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-tasks.component.js","sourceRoot":"","sources":["../../../../src/lib/components/my-tasks/my-tasks.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAA6D,MAAM,kCAAkC,CAAC;;;AAEhI;;;;;;;;;;;;;;;;;;;GAmBG;AA2BH,MAAM,OAAO,gBAAgB;IACzB,2DAA2D;IAE3D;;;OAGG;IACM,QAAQ,GAAW,EAAE,CAAC;IAE/B;;;OAGG;IACM,gBAAgB,GAAG,KAAK,CAAC;IAElC;;;;OAIG;IACM,OAAO,GAAG,KAAK,CAAC;IAEzB,2DAA2D;IAE3D;;;OAGG;IACO,kBAAkB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAE3E;;;OAGG;IACO,iBAAiB,GAAG,IAAI,YAAY,EAAW,CAAC;IAE1D,wEAAwE;IAC9D,kBAAkB,GAAG,IAAI,YAAY,EAA2B,CAAC;IAE3E,2DAA2D;IACjD,iBAAiB,GAAG,IAAI,YAAY,EAAW,CAAC;IAE1D,yEAAyE;IAC/D,UAAU,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEhD,2DAA2D;IAE3D,gBAAgB;IACO,QAAQ,CAAqB;IAEpD,2DAA2D;IAE3D;;OAEG;IACH,OAAO;QACH,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,2DAA2D;IAE3D,4EAA4E;IAC5E,IAAI,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,wFAAwF,IAAI,CAAC,QAAQ,IAAI,CAAC;IACrH,CAAC;0GAjEQ,gBAAgB;6DAAhB,gBAAgB;;;;;;;YApBjB,AADJ,8BAAsB,YACS;YAAA,wBAAQ;YAAA,iBAAK;YACxC,+CASqC;YAAjC,AADA,AADA,AADA,AADA,8KAAsB,mCAA+B,KAAC,+JACjC,kCAA8B,KAAC,iKAC9B,mCAA+B,KAAC,+JACjC,kCAA8B,KAAC,2IACtC,qBAAiB,KAAC;YAExC,AADI,iBAAoB,EAClB;;YATE,eAA8B;YAE9B,AADA,AADA,gDAA8B,0CACO,wBAClB;4BARrB,YAAY,EAAE,iBAAiB;;iFAuBhC,gBAAgB;cA1B5B,SAAS;2BACI,kBAAkB,cAChB,IAAI,WACP,CAAC,YAAY,EAAE,iBAAiB,CAAC,YAChC;;;;;;;;;;;;;;;KAeT;;kBAcA,KAAK;;kBAML,KAAK;;kBAOL,KAAK;;kBAQL,MAAM;;kBAMN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAGN,MAAM;;kBAKN,SAAS;mBAAC,UAAU;;kFAhDZ,gBAAgB"}
@@ -0,0 +1,42 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Represents a single assignee displayed by {@link TaskAssigneeListComponent}.
4
+ */
5
+ export interface TaskAssigneeInfo {
6
+ /** Unique record ID of the assignee (Person ID or Agent ID). */
7
+ AssigneeRecordID: string;
8
+ /** Human-readable display name (e.g. "Sarah Chen"). */
9
+ DisplayName: string;
10
+ /** Optional role name (e.g. "Reviewer", "Observer"). Shown as a tooltip. */
11
+ RoleName?: string;
12
+ /** Per-assignee progress status. Controls the indicator dot color. */
13
+ Status: 'Pending' | 'InProgress' | 'Completed';
14
+ }
15
+ /**
16
+ * Displays a horizontal list of assignee chips with per-person status indicator dots.
17
+ *
18
+ * Each chip shows the assignee's name and a colored dot reflecting their individual
19
+ * status on the task: gray (Pending), blue (InProgress), green (Completed).
20
+ * When no assignees are provided, renders "Unassigned" in muted text.
21
+ *
22
+ * @example
23
+ * ```html
24
+ * <bizapps-task-assignee-list
25
+ * [Assignees]="[
26
+ * { AssigneeRecordID: '...', DisplayName: 'Sarah Chen', RoleName: 'Primary', Status: 'InProgress' },
27
+ * { AssigneeRecordID: '...', DisplayName: 'Marcus Williams', RoleName: 'Reviewer', Status: 'Pending' }
28
+ * ]">
29
+ * </bizapps-task-assignee-list>
30
+ * ```
31
+ */
32
+ export declare class TaskAssigneeListComponent {
33
+ /**
34
+ * Array of assignees to render. Each entry produces one chip with a status dot
35
+ * and display name. Pass an empty array to show the "Unassigned" placeholder.
36
+ * @default []
37
+ */
38
+ Assignees: TaskAssigneeInfo[];
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<TaskAssigneeListComponent, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<TaskAssigneeListComponent, "bizapps-task-assignee-list", never, { "Assignees": { "alias": "Assignees"; "required": false; }; }, {}, never, never, true, never>;
41
+ }
42
+ //# sourceMappingURL=task-assignee-list.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-assignee-list.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/task-assignee-list/task-assignee-list.component.ts"],"names":[],"mappings":";AAGA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAgCa,yBAAyB;IAClC;;;;OAIG;IACM,SAAS,EAAE,gBAAgB,EAAE,CAAM;yCANnC,yBAAyB;2CAAzB,yBAAyB;CAOrC"}
@@ -0,0 +1,76 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ const _forTrack0 = ($index, $item) => $item.AssigneeRecordID;
6
+ function TaskAssigneeListComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementStart(0, "span", 0);
8
+ i0.ɵɵtext(1, "Unassigned");
9
+ i0.ɵɵelementEnd();
10
+ } }
11
+ function TaskAssigneeListComponent_For_2_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "span", 1);
13
+ i0.ɵɵelement(1, "span", 2);
14
+ i0.ɵɵelementStart(2, "span", 3);
15
+ i0.ɵɵtext(3);
16
+ i0.ɵɵelementEnd()();
17
+ } if (rf & 2) {
18
+ const a_r1 = ctx.$implicit;
19
+ i0.ɵɵproperty("title", a_r1.RoleName || "");
20
+ i0.ɵɵadvance();
21
+ i0.ɵɵproperty("ngClass", "dot-" + a_r1.Status.toLowerCase());
22
+ i0.ɵɵadvance(2);
23
+ i0.ɵɵtextInterpolate(a_r1.DisplayName);
24
+ } }
25
+ /**
26
+ * Displays a horizontal list of assignee chips with per-person status indicator dots.
27
+ *
28
+ * Each chip shows the assignee's name and a colored dot reflecting their individual
29
+ * status on the task: gray (Pending), blue (InProgress), green (Completed).
30
+ * When no assignees are provided, renders "Unassigned" in muted text.
31
+ *
32
+ * @example
33
+ * ```html
34
+ * <bizapps-task-assignee-list
35
+ * [Assignees]="[
36
+ * { AssigneeRecordID: '...', DisplayName: 'Sarah Chen', RoleName: 'Primary', Status: 'InProgress' },
37
+ * { AssigneeRecordID: '...', DisplayName: 'Marcus Williams', RoleName: 'Reviewer', Status: 'Pending' }
38
+ * ]">
39
+ * </bizapps-task-assignee-list>
40
+ * ```
41
+ */
42
+ export class TaskAssigneeListComponent {
43
+ /**
44
+ * Array of assignees to render. Each entry produces one chip with a status dot
45
+ * and display name. Pass an empty array to show the "Unassigned" placeholder.
46
+ * @default []
47
+ */
48
+ Assignees = [];
49
+ static ɵfac = function TaskAssigneeListComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskAssigneeListComponent)(); };
50
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskAssigneeListComponent, selectors: [["bizapps-task-assignee-list"]], inputs: { Assignees: "Assignees" }, decls: 3, vars: 1, consts: [[1, "no-assignees"], [1, "assignee-chip", 3, "title"], [1, "status-dot", 3, "ngClass"], [1, "assignee-name"]], template: function TaskAssigneeListComponent_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵconditionalCreate(0, TaskAssigneeListComponent_Conditional_0_Template, 2, 0, "span", 0);
52
+ i0.ɵɵrepeaterCreate(1, TaskAssigneeListComponent_For_2_Template, 4, 3, "span", 1, _forTrack0);
53
+ } if (rf & 2) {
54
+ i0.ɵɵconditional(ctx.Assignees.length === 0 ? 0 : -1);
55
+ i0.ɵɵadvance();
56
+ i0.ɵɵrepeater(ctx.Assignees);
57
+ } }, dependencies: [CommonModule, i1.NgClass], styles: ["[_nghost-%COMP%] { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }\n .no-assignees[_ngcontent-%COMP%] { color: #9ca3af; font-size: 0.85rem; font-style: italic; }\n .assignee-chip[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center; gap: 4px;\n padding: 2px 8px; border-radius: 12px;\n background: #f3f4f6; font-size: 0.8rem;\n }\n .status-dot[_ngcontent-%COMP%] {\n width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;\n }\n .dot-pending[_ngcontent-%COMP%] { background: #9ca3af; }\n .dot-inprogress[_ngcontent-%COMP%] { background: #3b82f6; }\n .dot-completed[_ngcontent-%COMP%] { background: #22c55e; }\n .assignee-name[_ngcontent-%COMP%] { white-space: nowrap; }"] });
58
+ }
59
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskAssigneeListComponent, [{
60
+ type: Component,
61
+ args: [{ selector: 'bizapps-task-assignee-list', standalone: true, imports: [CommonModule], template: `
62
+ @if (Assignees.length === 0) {
63
+ <span class="no-assignees">Unassigned</span>
64
+ }
65
+ @for (a of Assignees; track a.AssigneeRecordID) {
66
+ <span class="assignee-chip" [title]="a.RoleName || ''">
67
+ <span class="status-dot" [ngClass]="'dot-' + a.Status.toLowerCase()"></span>
68
+ <span class="assignee-name">{{ a.DisplayName }}</span>
69
+ </span>
70
+ }
71
+ `, styles: ["\n :host { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }\n .no-assignees { color: #9ca3af; font-size: 0.85rem; font-style: italic; }\n .assignee-chip {\n display: inline-flex; align-items: center; gap: 4px;\n padding: 2px 8px; border-radius: 12px;\n background: #f3f4f6; font-size: 0.8rem;\n }\n .status-dot {\n width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;\n }\n .dot-pending { background: #9ca3af; }\n .dot-inprogress { background: #3b82f6; }\n .dot-completed { background: #22c55e; }\n .assignee-name { white-space: nowrap; }\n "] }]
72
+ }], null, { Assignees: [{
73
+ type: Input
74
+ }] }); })();
75
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskAssigneeListComponent, { className: "TaskAssigneeListComponent", filePath: "src/lib/components/task-assignee-list/task-assignee-list.component.ts", lineNumber: 67 }); })();
76
+ //# sourceMappingURL=task-assignee-list.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-assignee-list.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task-assignee-list/task-assignee-list.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;;;;;IAuCnC,+BAA2B;IAAA,0BAAU;IAAA,iBAAO;;;IAG5C,+BAAuD;IACnD,0BAA4E;IAC5E,+BAA4B;IAAA,YAAmB;IACnD,AADmD,iBAAO,EACnD;;;IAHqB,2CAA0B;IACzB,cAA2C;IAA3C,4DAA2C;IACxC,eAAmB;IAAnB,sCAAmB;;AA5B/D;;;;;;;;;;;;;;;;GAgBG;AAiCH,MAAM,OAAO,yBAAyB;IAClC;;;;OAIG;IACM,SAAS,GAAuB,EAAE,CAAC;mHANnC,yBAAyB;6DAAzB,yBAAyB;YA3B9B,4FAA8B;YAG9B,6FAKC;;YARD,qDAEC;YACD,cAKC;YALD,4BAKC;4BAVK,YAAY;;iFA6Bb,yBAAyB;cAhCrC,SAAS;2BACI,4BAA4B,cAC1B,IAAI,WACP,CAAC,YAAY,CAAC,YACb;;;;;;;;;;KAUT;;kBAwBA,KAAK;;kFANG,yBAAyB"}
@@ -0,0 +1,62 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Describes a bulk action to be performed on selected tasks.
5
+ * Emitted by {@link TaskBulkActionsBarComponent} when the user applies an action.
6
+ */
7
+ export interface BulkActionEvent {
8
+ /** The type of bulk action being performed. */
9
+ Action: 'StatusChange' | 'Reassign' | 'Cancel';
10
+ /** Array of task IDs the action applies to. */
11
+ TaskIDs: string[];
12
+ /** New status value — only set when `Action === 'StatusChange'`. */
13
+ NewStatus?: string;
14
+ }
15
+ /**
16
+ * Contextual toolbar that appears when one or more tasks are selected via
17
+ * checkboxes in the {@link TaskListComponent}.
18
+ *
19
+ * Provides bulk actions: status change (with dropdown), cancel all selected
20
+ * tasks, and clear selection. The component is typically embedded inside
21
+ * TaskListComponent and is not used standalone.
22
+ *
23
+ * **Note:** As of the current implementation, the bulk action bar in
24
+ * TaskListComponent is rendered inline rather than using this component.
25
+ * This standalone version is available for custom layouts.
26
+ *
27
+ * @example
28
+ * ```html
29
+ * <bizapps-task-bulk-actions-bar
30
+ * [SelectedTaskIDs]="selectedIDs"
31
+ * (BulkAction)="onBulkAction($event)"
32
+ * (ClearSelection)="clearSelection()">
33
+ * </bizapps-task-bulk-actions-bar>
34
+ * ```
35
+ */
36
+ export declare class TaskBulkActionsBarComponent {
37
+ /**
38
+ * Array of currently selected task IDs. When non-empty, the bar is visible.
39
+ * Typically bound to the parent component's selection state.
40
+ */
41
+ SelectedTaskIDs: string[];
42
+ /**
43
+ * Emitted when the user applies a bulk action (status change or cancel).
44
+ * The parent component is responsible for executing the action against the
45
+ * task entities and refreshing the list.
46
+ */
47
+ BulkAction: EventEmitter<BulkActionEvent>;
48
+ /**
49
+ * Emitted when the user clicks "Clear Selection". The parent should
50
+ * reset its selection state in response.
51
+ */
52
+ ClearSelection: EventEmitter<void>;
53
+ /** @internal */
54
+ selectedStatus: string;
55
+ /** @internal Emits a StatusChange bulk action with the selected status. */
56
+ OnApplyStatus(): void;
57
+ /** @internal Emits a Cancel bulk action for all selected tasks. */
58
+ OnCancelTasks(): void;
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<TaskBulkActionsBarComponent, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<TaskBulkActionsBarComponent, "bizapps-task-bulk-actions-bar", never, { "SelectedTaskIDs": { "alias": "SelectedTaskIDs"; "required": false; }; }, { "BulkAction": "BulkAction"; "ClearSelection": "ClearSelection"; }, never, never, true, never>;
61
+ }
62
+ //# sourceMappingURL=task-bulk-actions-bar.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-bulk-actions-bar.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAiB,MAAM,eAAe,CAAC;;AAIvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC/C,+CAA+C;IAC/C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAgDa,2BAA2B;IAGpC;;;OAGG;IACM,eAAe,EAAE,MAAM,EAAE,CAAM;IAIxC;;;;OAIG;IACO,UAAU,gCAAuC;IAE3D;;;OAGG;IACO,cAAc,qBAA4B;IAIpD,gBAAgB;IAChB,cAAc,SAAM;IAIpB,2EAA2E;IAC3E,aAAa,IAAI,IAAI;IAUrB,mEAAmE;IACnE,aAAa,IAAI,IAAI;yCA3CZ,2BAA2B;2CAA3B,2BAA2B;CAiDvC"}
@@ -0,0 +1,151 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ function TaskBulkActionsBarComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
7
+ const _r1 = i0.ɵɵgetCurrentView();
8
+ i0.ɵɵelementStart(0, "div", 0)(1, "span", 1);
9
+ i0.ɵɵtext(2);
10
+ i0.ɵɵelementEnd();
11
+ i0.ɵɵelementStart(3, "select", 2);
12
+ i0.ɵɵtwoWayListener("ngModelChange", function TaskBulkActionsBarComponent_Conditional_0_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.selectedStatus, $event) || (ctx_r1.selectedStatus = $event); return i0.ɵɵresetView($event); });
13
+ i0.ɵɵelementStart(4, "option", 3);
14
+ i0.ɵɵtext(5, "Change status...");
15
+ i0.ɵɵelementEnd();
16
+ i0.ɵɵelementStart(6, "option", 4);
17
+ i0.ɵɵtext(7, "Open");
18
+ i0.ɵɵelementEnd();
19
+ i0.ɵɵelementStart(8, "option", 5);
20
+ i0.ɵɵtext(9, "In Progress");
21
+ i0.ɵɵelementEnd();
22
+ i0.ɵɵelementStart(10, "option", 6);
23
+ i0.ɵɵtext(11, "Blocked");
24
+ i0.ɵɵelementEnd();
25
+ i0.ɵɵelementStart(12, "option", 7);
26
+ i0.ɵɵtext(13, "Completed");
27
+ i0.ɵɵelementEnd()();
28
+ i0.ɵɵelementStart(14, "button", 8);
29
+ i0.ɵɵlistener("click", function TaskBulkActionsBarComponent_Conditional_0_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnApplyStatus()); });
30
+ i0.ɵɵtext(15, " Apply ");
31
+ i0.ɵɵelementEnd();
32
+ i0.ɵɵelementStart(16, "button", 9);
33
+ i0.ɵɵlistener("click", function TaskBulkActionsBarComponent_Conditional_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnCancelTasks()); });
34
+ i0.ɵɵtext(17, " Cancel Tasks ");
35
+ i0.ɵɵelementEnd();
36
+ i0.ɵɵelementStart(18, "button", 10);
37
+ i0.ɵɵlistener("click", function TaskBulkActionsBarComponent_Conditional_0_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearSelection.emit()); });
38
+ i0.ɵɵtext(19, " Clear Selection ");
39
+ i0.ɵɵelementEnd()();
40
+ } if (rf & 2) {
41
+ const ctx_r1 = i0.ɵɵnextContext();
42
+ i0.ɵɵadvance(2);
43
+ i0.ɵɵtextInterpolate1("", ctx_r1.SelectedTaskIDs.length, " selected");
44
+ i0.ɵɵadvance();
45
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.selectedStatus);
46
+ i0.ɵɵadvance(11);
47
+ i0.ɵɵproperty("disabled", !ctx_r1.selectedStatus);
48
+ } }
49
+ /**
50
+ * Contextual toolbar that appears when one or more tasks are selected via
51
+ * checkboxes in the {@link TaskListComponent}.
52
+ *
53
+ * Provides bulk actions: status change (with dropdown), cancel all selected
54
+ * tasks, and clear selection. The component is typically embedded inside
55
+ * TaskListComponent and is not used standalone.
56
+ *
57
+ * **Note:** As of the current implementation, the bulk action bar in
58
+ * TaskListComponent is rendered inline rather than using this component.
59
+ * This standalone version is available for custom layouts.
60
+ *
61
+ * @example
62
+ * ```html
63
+ * <bizapps-task-bulk-actions-bar
64
+ * [SelectedTaskIDs]="selectedIDs"
65
+ * (BulkAction)="onBulkAction($event)"
66
+ * (ClearSelection)="clearSelection()">
67
+ * </bizapps-task-bulk-actions-bar>
68
+ * ```
69
+ */
70
+ export class TaskBulkActionsBarComponent {
71
+ // ── Inputs ──────────────────────────────────────────────
72
+ /**
73
+ * Array of currently selected task IDs. When non-empty, the bar is visible.
74
+ * Typically bound to the parent component's selection state.
75
+ */
76
+ SelectedTaskIDs = [];
77
+ // ── Outputs ─────────────────────────────────────────────
78
+ /**
79
+ * Emitted when the user applies a bulk action (status change or cancel).
80
+ * The parent component is responsible for executing the action against the
81
+ * task entities and refreshing the list.
82
+ */
83
+ BulkAction = new EventEmitter();
84
+ /**
85
+ * Emitted when the user clicks "Clear Selection". The parent should
86
+ * reset its selection state in response.
87
+ */
88
+ ClearSelection = new EventEmitter();
89
+ // ── Internal State ──────────────────────────────────────
90
+ /** @internal */
91
+ selectedStatus = '';
92
+ // ── Internal Event Handlers ─────────────────────────────
93
+ /** @internal Emits a StatusChange bulk action with the selected status. */
94
+ OnApplyStatus() {
95
+ if (!this.selectedStatus)
96
+ return;
97
+ this.BulkAction.emit({
98
+ Action: 'StatusChange',
99
+ TaskIDs: this.SelectedTaskIDs,
100
+ NewStatus: this.selectedStatus,
101
+ });
102
+ this.selectedStatus = '';
103
+ }
104
+ /** @internal Emits a Cancel bulk action for all selected tasks. */
105
+ OnCancelTasks() {
106
+ this.BulkAction.emit({
107
+ Action: 'Cancel',
108
+ TaskIDs: this.SelectedTaskIDs,
109
+ });
110
+ }
111
+ static ɵfac = function TaskBulkActionsBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TaskBulkActionsBarComponent)(); };
112
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TaskBulkActionsBarComponent, selectors: [["bizapps-task-bulk-actions-bar"]], inputs: { SelectedTaskIDs: "SelectedTaskIDs" }, outputs: { BulkAction: "BulkAction", ClearSelection: "ClearSelection" }, decls: 1, vars: 1, consts: [[1, "bulk-bar"], [1, "count"], [1, "bulk-select", 3, "ngModelChange", "ngModel"], ["value", ""], ["value", "Open"], ["value", "InProgress"], ["value", "Blocked"], ["value", "Completed"], [1, "bulk-btn", "apply", 3, "click", "disabled"], [1, "bulk-btn", "cancel-tasks", 3, "click"], [1, "bulk-btn", "clear", 3, "click"]], template: function TaskBulkActionsBarComponent_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵconditionalCreate(0, TaskBulkActionsBarComponent_Conditional_0_Template, 20, 3, "div", 0);
114
+ } if (rf & 2) {
115
+ i0.ɵɵconditional(ctx.SelectedTaskIDs.length > 0 ? 0 : -1);
116
+ } }, dependencies: [CommonModule, FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".bulk-bar[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: 8px;\n padding: 8px 12px; background: #eef2ff; border-radius: 6px;\n border: 1px solid #c7d2fe;\n }\n .count[_ngcontent-%COMP%] { font-weight: 600; font-size: 0.85rem; color: #4338ca; }\n .bulk-select[_ngcontent-%COMP%] {\n padding: 4px 8px; border-radius: 4px; border: 1px solid #cbd5e1;\n font-size: 0.85rem;\n }\n .bulk-btn[_ngcontent-%COMP%] {\n padding: 4px 12px; border-radius: 4px; font-size: 0.85rem;\n border: 1px solid #cbd5e1; cursor: pointer; background: #fff;\n }\n .bulk-btn[_ngcontent-%COMP%]:disabled { opacity: 0.5; cursor: not-allowed; }\n .bulk-btn.apply[_ngcontent-%COMP%] { background: #4f46e5; color: #fff; border-color: #4f46e5; }\n .bulk-btn.cancel-tasks[_ngcontent-%COMP%] { background: #fee2e2; color: #991b1b; border-color: #fecaca; }\n .bulk-btn.clear[_ngcontent-%COMP%] { background: #f9fafb; }"] });
117
+ }
118
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TaskBulkActionsBarComponent, [{
119
+ type: Component,
120
+ args: [{ selector: 'bizapps-task-bulk-actions-bar', standalone: true, imports: [CommonModule, FormsModule], template: `
121
+ @if (SelectedTaskIDs.length > 0) {
122
+ <div class="bulk-bar">
123
+ <span class="count">{{ SelectedTaskIDs.length }} selected</span>
124
+ <select [(ngModel)]="selectedStatus" class="bulk-select">
125
+ <option value="">Change status...</option>
126
+ <option value="Open">Open</option>
127
+ <option value="InProgress">In Progress</option>
128
+ <option value="Blocked">Blocked</option>
129
+ <option value="Completed">Completed</option>
130
+ </select>
131
+ <button class="bulk-btn apply" (click)="OnApplyStatus()" [disabled]="!selectedStatus">
132
+ Apply
133
+ </button>
134
+ <button class="bulk-btn cancel-tasks" (click)="OnCancelTasks()">
135
+ Cancel Tasks
136
+ </button>
137
+ <button class="bulk-btn clear" (click)="ClearSelection.emit()">
138
+ Clear Selection
139
+ </button>
140
+ </div>
141
+ }
142
+ `, styles: ["\n .bulk-bar {\n display: flex; align-items: center; gap: 8px;\n padding: 8px 12px; background: #eef2ff; border-radius: 6px;\n border: 1px solid #c7d2fe;\n }\n .count { font-weight: 600; font-size: 0.85rem; color: #4338ca; }\n .bulk-select {\n padding: 4px 8px; border-radius: 4px; border: 1px solid #cbd5e1;\n font-size: 0.85rem;\n }\n .bulk-btn {\n padding: 4px 12px; border-radius: 4px; font-size: 0.85rem;\n border: 1px solid #cbd5e1; cursor: pointer; background: #fff;\n }\n .bulk-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n .bulk-btn.apply { background: #4f46e5; color: #fff; border-color: #4f46e5; }\n .bulk-btn.cancel-tasks { background: #fee2e2; color: #991b1b; border-color: #fecaca; }\n .bulk-btn.clear { background: #f9fafb; }\n "] }]
143
+ }], null, { SelectedTaskIDs: [{
144
+ type: Input
145
+ }], BulkAction: [{
146
+ type: Output
147
+ }], ClearSelection: [{
148
+ type: Output
149
+ }] }); })();
150
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TaskBulkActionsBarComponent, { className: "TaskBulkActionsBarComponent", filePath: "src/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.ts", lineNumber: 87 }); })();
151
+ //# sourceMappingURL=task-bulk-actions-bar.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-bulk-actions-bar.component.js","sourceRoot":"","sources":["../../../../src/lib/components/task-bulk-actions-bar/task-bulk-actions-bar.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;;;;;IA2C7B,AADJ,8BAAsB,cACE;IAAA,YAAqC;IAAA,iBAAO;IAChE,iCAAyD;IAAjD,gUAA4B;IAChC,iCAAiB;IAAA,gCAAgB;IAAA,iBAAS;IAC1C,iCAAqB;IAAA,oBAAI;IAAA,iBAAS;IAClC,iCAA2B;IAAA,2BAAW;IAAA,iBAAS;IAC/C,kCAAwB;IAAA,wBAAO;IAAA,iBAAS;IACxC,kCAA0B;IAAA,0BAAS;IACvC,AADuC,iBAAS,EACvC;IACT,kCAAsF;IAAvD,gMAAS,sBAAe,KAAC;IACpD,wBACJ;IAAA,iBAAS;IACT,kCAAgE;IAA1B,gMAAS,sBAAe,KAAC;IAC3D,+BACJ;IAAA,iBAAS;IACT,mCAA+D;IAAhC,gMAAS,4BAAqB,KAAC;IAC1D,kCACJ;IACJ,AADI,iBAAS,EACP;;;IAjBkB,eAAqC;IAArC,qEAAqC;IACjD,cAA4B;IAA5B,qDAA4B;IAOqB,gBAA4B;IAA5B,iDAA4B;;AApCrG;;;;;;;;;;;;;;;;;;;;GAoBG;AAiDH,MAAM,OAAO,2BAA2B;IACpC,2DAA2D;IAE3D;;;OAGG;IACM,eAAe,GAAa,EAAE,CAAC;IAExC,2DAA2D;IAE3D;;;;OAIG;IACO,UAAU,GAAG,IAAI,YAAY,EAAmB,CAAC;IAE3D;;;OAGG;IACO,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;IAEpD,2DAA2D;IAE3D,gBAAgB;IAChB,cAAc,GAAG,EAAE,CAAC;IAEpB,2DAA2D;IAE3D,2EAA2E;IAC3E,aAAa;QACT,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,IAAI,CAAC,eAAe;YAC7B,SAAS,EAAE,IAAI,CAAC,cAAc;SACjC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,mEAAmE;IACnE,aAAa;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,eAAe;SAChC,CAAC,CAAC;IACP,CAAC;qHAhDQ,2BAA2B;6DAA3B,2BAA2B;YA3ChC,8FAAkC;;YAAlC,yDAoBC;4BAtBK,YAAY,EAAE,WAAW;;iFA6C1B,2BAA2B;cAhDvC,SAAS;2BACI,+BAA+B,cAC7B,IAAI,WACP,CAAC,YAAY,EAAE,WAAW,CAAC,YAC1B;;;;;;;;;;;;;;;;;;;;;;KAsBT;;kBA6BA,KAAK;;kBASL,MAAM;;kBAMN,MAAM;;kFAtBE,2BAA2B"}