@memberjunction/ng-tasks 6.1.0-edge.5 → 6.1.0-edge.7

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @memberjunction/ng-tasks@6.1.0-edge.5 build /home/runner/work/MJ/MJ/packages/Angular/Generic/tasks
2
+ > @memberjunction/ng-tasks@6.1.0-edge.7 build /home/runner/work/MJ/MJ/packages/Angular/Generic/tasks
3
3
  > ngc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @memberjunction/ng-tasks
2
2
 
3
+ ## 6.1.0-edge.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a987913]
8
+ - Updated dependencies [61b5612]
9
+ - Updated dependencies [ee15cf7]
10
+ - Updated dependencies [c996a56]
11
+ - Updated dependencies [c996a56]
12
+ - Updated dependencies [076fa5d]
13
+ - Updated dependencies [cf2484c]
14
+ - Updated dependencies [97aefcc]
15
+ - Updated dependencies [4cdfdcf]
16
+ - Updated dependencies [7fcdc2d]
17
+ - @memberjunction/core-entities@6.1.0-edge.7
18
+ - @memberjunction/ai-engine-base@6.1.0-edge.7
19
+ - @memberjunction/core@6.1.0-edge.7
20
+ - @memberjunction/ai-core-plus@6.1.0-edge.7
21
+ - @memberjunction/global@6.1.0-edge.7
22
+ - @memberjunction/ng-shared-generic@6.1.0-edge.7
23
+
24
+ ## 6.1.0-edge.6
25
+
26
+ ### Patch Changes
27
+
28
+ - b915983: Align the Angular toolchain on the current 21.x patch line: framework packages 21.1.3 → 21.2.22,
29
+ CLI/builders 21.1.3 → 21.2.23, CDK 21.1.3 → 21.2.14, ng-packagr → 21.2.7, PrimeNG 21.1.1 → 21.1.9.
30
+
31
+ This is a patch-level move inside the supported Angular 21 LTS line, not a framework migration.
32
+ It closes every open Angular security advisory on the repository — fifteen distinct GHSAs
33
+ (i18n and template-sanitizer XSS bypasses, service-worker header leakage and credential
34
+ stripping, HttpTransferCache cross-request leakage, and formatDate/number-format DoS), all fixed
35
+ in 21.2.19 or earlier — which together accounted for 438 of the 749 open Dependabot alerts.
36
+
37
+ Every published `@memberjunction/ng-*` package's `@angular/*` peer range moves from `^21.1.3`
38
+ (or `^21.0.0`) to `^21.2.22`, so consumers must be on at least that patch. The era-6 platform
39
+ manifest in `release-lines.json` records the new pin; era 5 (the certified 5.51 line) is
40
+ unchanged.
41
+
42
+ Also moves the exact `@angular/*` runtime pins that 23 libraries carried in `dependencies`
43
+ into caret `peerDependencies` (adding the missing peers on `ng-react`), so a consumer on any
44
+ in-range Angular 21.2.x build gets a single Angular copy instead of a nested second runtime, and
45
+ drops the unused `primeng` peer from `ng-base-forms` (nothing in the repo imports PrimeNG).
46
+
47
+ - Updated dependencies [634aa8c]
48
+ - Updated dependencies [2c826f7]
49
+ - Updated dependencies [b915983]
50
+ - Updated dependencies [b7819d2]
51
+ - Updated dependencies [197fdf8]
52
+ - Updated dependencies [67e4c9e]
53
+ - Updated dependencies [0d3094c]
54
+ - Updated dependencies [0ec1980]
55
+ - Updated dependencies [43f9133]
56
+ - Updated dependencies [2cc08e1]
57
+ - Updated dependencies [2d14c62]
58
+ - Updated dependencies [b9de989]
59
+ - Updated dependencies [38d4482]
60
+ - Updated dependencies [8d880cc]
61
+ - Updated dependencies [6485ef0]
62
+ - Updated dependencies [b954812]
63
+ - Updated dependencies [e9e9873]
64
+ - Updated dependencies [9b9e5a4]
65
+ - Updated dependencies [f544a93]
66
+ - Updated dependencies [9f73528]
67
+ - Updated dependencies [63bc733]
68
+ - Updated dependencies [92f2ac9]
69
+ - Updated dependencies [98841bb]
70
+ - Updated dependencies [0677595]
71
+ - Updated dependencies [2be2960]
72
+ - Updated dependencies [7f3c60c]
73
+ - Updated dependencies [1748491]
74
+ - Updated dependencies [0db6105]
75
+ - Updated dependencies [7fefca2]
76
+ - Updated dependencies [b00a985]
77
+ - Updated dependencies [041865c]
78
+ - @memberjunction/ai-core-plus@6.1.0-edge.6
79
+ - @memberjunction/core-entities@6.1.0-edge.6
80
+ - @memberjunction/ng-shared-generic@6.1.0-edge.6
81
+ - @memberjunction/core@6.1.0-edge.6
82
+ - @memberjunction/global@6.1.0-edge.6
83
+ - @memberjunction/ai-engine-base@6.1.0-edge.6
84
+
3
85
  ## 6.1.0-edge.5
4
86
 
5
87
  ### Patch Changes
@@ -442,7 +442,7 @@ export class GanttTaskViewerComponent {
442
442
  i0.ɵɵconditional(ctx.IsGanttLoading ? 1 : -1);
443
443
  i0.ɵɵadvance();
444
444
  i0.ɵɵconditional(!ctx.IsGanttLoading ? 2 : -1);
445
- } }, dependencies: [TaskDetailPanelComponent, SharedGenericModule, i1.LoadingComponent], styles: [".gantt-task-viewer[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .gantt-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 600px;\n position: relative;\n }\n\n .gantt-container[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 400px;\n height: 100%;\n position: relative;\n }\n\n .gantt-resizer[_ngcontent-%COMP%] {\n width: 4px;\n background: var(--mj-border-default);\n cursor: col-resize;\n flex-shrink: 0;\n transition: background 0.2s;\n }\n\n .gantt-resizer[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n }\n\n .task-detail-panel[_ngcontent-%COMP%] {\n min-width: 300px;\n max-width: 600px;\n height: 100%;\n border-left: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n \n\n [_nghost-%COMP%] .gantt_container {\n font-family: inherit;\n font-size: 13px;\n }\n\n [_nghost-%COMP%] .gantt_grid_scale, \n [_nghost-%COMP%] .gantt_task_scale {\n background: var(--mj-bg-surface-sunken);\n border-bottom: 2px solid var(--mj-border-default);\n }\n\n [_nghost-%COMP%] .gantt_task .gantt_task_content {\n font-weight: 500;\n }\n\n .loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 20px;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n opacity: 0.3;\n margin-bottom: 16px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }"] });
445
+ } }, dependencies: [TaskDetailPanelComponent, SharedGenericModule, i1.LoadingComponent], styles: [".gantt-task-viewer[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .gantt-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 600px;\n position: relative;\n }\n\n .gantt-container[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 400px;\n height: 100%;\n position: relative;\n }\n\n .gantt-resizer[_ngcontent-%COMP%] {\n width: 4px;\n background: var(--mj-border-default);\n cursor: col-resize;\n flex-shrink: 0;\n transition: background 0.2s;\n }\n\n .gantt-resizer[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n }\n\n .task-detail-panel[_ngcontent-%COMP%] {\n min-width: 300px;\n max-width: 600px;\n height: 100%;\n border-left: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n \n [_nghost-%COMP%] .gantt_container {\n font-family: inherit;\n font-size: 13px;\n }\n\n [_nghost-%COMP%] .gantt_grid_scale, \n [_nghost-%COMP%] .gantt_task_scale {\n background: var(--mj-bg-surface-sunken);\n border-bottom: 2px solid var(--mj-border-default);\n }\n\n [_nghost-%COMP%] .gantt_task .gantt_task_content {\n font-weight: 500;\n }\n\n .loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 80px 20px;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 64px;\n opacity: 0.3;\n margin-bottom: 16px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }"] });
446
446
  }
447
447
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GanttTaskViewerComponent, [{
448
448
  type: Component,
@@ -192,7 +192,7 @@ export class SimpleTaskViewerComponent {
192
192
  i0.ɵɵconditional(ctx.selectedTask ? 6 : -1);
193
193
  i0.ɵɵadvance();
194
194
  i0.ɵɵconditional(ctx.selectedTask ? 7 : -1);
195
- } }, dependencies: [CommonModule, i1.NgClass, TaskDetailPanelComponent], styles: [".simple-task-viewer[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .list-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 100%;\n position: relative;\n }\n\n .task-list[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 400px;\n padding: 16px;\n overflow-y: auto;\n }\n\n .task-list.with-detail[_ngcontent-%COMP%] {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .list-resizer[_ngcontent-%COMP%] {\n width: 4px;\n background: var(--mj-border-default);\n cursor: col-resize;\n flex-shrink: 0;\n transition: background 0.2s;\n }\n\n .list-resizer[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n }\n\n .task-detail-panel[_ngcontent-%COMP%] {\n min-width: 300px;\n max-width: 600px;\n height: 100%;\n flex-shrink: 0;\n }\n\n .task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n margin-bottom: 8px;\n transition: all 0.2s;\n cursor: pointer;\n }\n\n .task-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n transform: translateY(-1px);\n }\n\n .task-item.selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-sm);\n }\n\n .task-item.completed[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .status-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n flex-shrink: 0;\n }\n\n .status-icon.complete[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n \n\n\n\n .status-icon.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .status-icon.blocked[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n }\n\n .task-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .task-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 6px;\n }\n\n .task-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title.completed-text[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .completed-check[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 12px;\n }\n\n .task-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n .task-meta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n }\n\n .task-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n line-height: 1.5;\n }\n\n .task-progress-compact[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n }\n\n .progress-bar-compact[_ngcontent-%COMP%] {\n width: 80px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .progress-fill-compact[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n transition: width 0.3s ease;\n }\n\n .progress-fill-compact.complete[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n }\n\n .progress-text-compact[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-muted);\n min-width: 30px;\n text-align: right;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n opacity: 0.3;\n margin-bottom: 12px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }"] });
195
+ } }, dependencies: [CommonModule, i1.NgClass, TaskDetailPanelComponent], styles: [".simple-task-viewer[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n\n .list-layout[_ngcontent-%COMP%] {\n display: flex;\n height: 100%;\n position: relative;\n }\n\n .task-list[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 400px;\n padding: 16px;\n overflow-y: auto;\n }\n\n .task-list.with-detail[_ngcontent-%COMP%] {\n border-right: 1px solid var(--mj-border-default);\n }\n\n .list-resizer[_ngcontent-%COMP%] {\n width: 4px;\n background: var(--mj-border-default);\n cursor: col-resize;\n flex-shrink: 0;\n transition: background 0.2s;\n }\n\n .list-resizer[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n }\n\n .task-detail-panel[_ngcontent-%COMP%] {\n min-width: 300px;\n max-width: 600px;\n height: 100%;\n flex-shrink: 0;\n }\n\n .task-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n margin-bottom: 8px;\n transition: all 0.2s;\n cursor: pointer;\n }\n\n .task-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-sm);\n transform: translateY(-1px);\n }\n\n .task-item.selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n box-shadow: var(--mj-shadow-sm);\n }\n\n .task-item.completed[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n }\n\n .status-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n flex-shrink: 0;\n }\n\n .status-icon.complete[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n }\n\n \n\n\n .status-icon.failed[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n }\n\n .status-icon.blocked[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n }\n\n .task-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n }\n\n .task-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 12px;\n margin-bottom: 6px;\n }\n\n .task-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n }\n\n .task-title[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .task-title.completed-text[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n text-decoration: line-through;\n text-decoration-thickness: 1.5px;\n }\n\n .completed-check[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 12px;\n }\n\n .task-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n .task-meta[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 4px;\n }\n\n .task-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-bottom: 8px;\n line-height: 1.5;\n }\n\n .task-progress-compact[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n }\n\n .progress-bar-compact[_ngcontent-%COMP%] {\n width: 80px;\n height: 4px;\n background: var(--mj-border-default);\n border-radius: 2px;\n overflow: hidden;\n }\n\n .progress-fill-compact[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-brand-primary);\n transition: width 0.3s ease;\n }\n\n .progress-fill-compact.complete[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n }\n\n .progress-text-compact[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-muted);\n min-width: 30px;\n text-align: right;\n }\n\n .no-tasks[_ngcontent-%COMP%] {\n text-align: center;\n padding: 60px 20px;\n color: var(--mj-text-disabled);\n }\n\n .no-tasks[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n opacity: 0.3;\n margin-bottom: 12px;\n }\n\n .no-tasks[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n }"] });
196
196
  }
197
197
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SimpleTaskViewerComponent, [{
198
198
  type: Component,
package/package.json CHANGED
@@ -1,26 +1,24 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-tasks",
3
- "version": "6.1.0-edge.5",
3
+ "version": "6.1.0-edge.7",
4
4
  "description": "MemberJunction: Angular components for task visualization and management with Gantt chart support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "dependencies": {
8
- "@angular/animations": "21.1.3",
9
- "@angular/common": "21.1.3",
10
- "@angular/core": "21.1.3",
11
- "@angular/platform-browser": "21.1.3",
12
- "@memberjunction/ai-core-plus": "6.1.0-edge.5",
13
- "@memberjunction/ai-engine-base": "6.1.0-edge.5",
14
- "@memberjunction/core": "6.1.0-edge.5",
15
- "@memberjunction/core-entities": "6.1.0-edge.5",
16
- "@memberjunction/global": "6.1.0-edge.5",
17
- "@memberjunction/ng-shared-generic": "6.1.0-edge.5",
8
+ "@memberjunction/ai-core-plus": "6.1.0-edge.7",
9
+ "@memberjunction/ai-engine-base": "6.1.0-edge.7",
10
+ "@memberjunction/core": "6.1.0-edge.7",
11
+ "@memberjunction/core-entities": "6.1.0-edge.7",
12
+ "@memberjunction/global": "6.1.0-edge.7",
13
+ "@memberjunction/ng-shared-generic": "6.1.0-edge.7",
18
14
  "dhtmlx-gantt": "^9.1.1",
19
15
  "rxjs": "^7.8.2"
20
16
  },
21
17
  "peerDependencies": {
22
- "@angular/common": "^21.1.3",
23
- "@angular/core": "^21.1.3"
18
+ "@angular/animations": "^21.2.22",
19
+ "@angular/common": "^21.2.22",
20
+ "@angular/core": "^21.2.22",
21
+ "@angular/platform-browser": "^21.2.22"
24
22
  },
25
23
  "author": "MemberJunction",
26
24
  "license": "BUSL-1.1",
@@ -29,9 +27,9 @@
29
27
  "url": "https://github.com/MemberJunction/MJ"
30
28
  },
31
29
  "devDependencies": {
32
- "@memberjunction/ng-test-utils": "6.1.0-edge.5",
30
+ "@memberjunction/ng-test-utils": "6.1.0-edge.7",
33
31
  "vitest": "^4.0.18",
34
- "@angular/compiler-cli": "21.1.3"
32
+ "@angular/compiler-cli": "21.2.22"
35
33
  },
36
34
  "mjUILayer": "widgets",
37
35
  "scripts": {