@memberjunction/ng-record-process-studio 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.
|
@@ -53,7 +53,7 @@ function RecordProcessStudioComponent_Conditional_0_Conditional_13_For_13_Templa
|
|
|
53
53
|
i0.ɵɵtext(12);
|
|
54
54
|
i0.ɵɵelementEnd()();
|
|
55
55
|
i0.ɵɵelementStart(13, "div", 23);
|
|
56
|
-
i0.ɵɵlistener("click", function RecordProcessStudioComponent_Conditional_0_Conditional_13_For_13_Template_div_click_13_listener($event) {
|
|
56
|
+
i0.ɵɵlistener("click", function RecordProcessStudioComponent_Conditional_0_Conditional_13_For_13_Template_div_click_13_listener($event) { return $event.stopPropagation(); });
|
|
57
57
|
i0.ɵɵelementStart(14, "button", 24);
|
|
58
58
|
i0.ɵɵlistener("click", function RecordProcessStudioComponent_Conditional_0_Conditional_13_For_13_Template_button_click_14_listener() { const p_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.Run(p_r5)); });
|
|
59
59
|
i0.ɵɵelement(15, "i", 25);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-process-studio.component.js","sourceRoot":"","sources":["../../../src/lib/record-process-studio/record-process-studio.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview The Bulk Operations hub: lists the org's Record Processes, lets a user create / edit one\n * (via the embedded {@link RecordProcessEditorComponent}), and run any of them on demand (mounting the\n * same dry-run → confirm runner used from a grid). Generic + reusable — Explorer's Bulk Operations app\n * hosts it, but any MJ app can drop it in.\n * @module @memberjunction/ng-record-process-studio\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { RunView } from '@memberjunction/core';\nimport { EntityActionUXHostComponent, type EntityActionUXContext, type EntityActionUXResult } from '@memberjunction/ng-entity-action-ux';\nimport { MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';\nimport { RecordProcessEditorComponent } from '../record-process-editor/record-process-editor.component';\n\n/** A row of the process list (read-only projection). */\ninterface ProcessRow {\n ID: string;\n Name: string;\n Description?: string;\n Entity: string;\n EntityID: string;\n WorkType: string;\n Status: string;\n ScopeType: string;\n ScopeFilter?: string;\n ScopeViewID?: string;\n ScopeListID?: string;\n}\n\n@Component({\n selector: 'mj-record-process-studio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RecordProcessEditorComponent, EntityActionUXHostComponent, MJButtonDirective, MJEmptyStateComponent],\n template: `\n @if (Mode === 'list') {\n <div class=\"rps-bar\">\n <div class=\"rps-search\"><i class=\"fa-solid fa-magnifying-glass\"></i>\n <input class=\"mj-input\" placeholder=\"Search bulk operations…\" [value]=\"Search\" (input)=\"onSearch($event)\"></div>\n <span class=\"rps-spacer\"></span>\n <button mjButton variant=\"flat\" (click)=\"reload()\"><i class=\"fa-solid fa-arrows-rotate\"></i> Refresh</button>\n <button mjButton variant=\"primary\" (click)=\"New()\"><i class=\"fa-solid fa-plus\"></i> New operation</button>\n </div>\n\n @if (Loading) {\n <div class=\"rps-msg\"><i class=\"fa-solid fa-circle-notch fa-spin\"></i> Loading…</div>\n } @else if (Filtered.length === 0) {\n <mj-empty-state class=\"rps-empty\"\n Icon=\"fa-solid fa-list-check\"\n Title=\"No bulk operations yet\"\n ActionText=\"Create one\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"New()\" />\n } @else {\n <div class=\"rps-table\">\n <div class=\"rps-tr rps-head\">\n <div>Operation</div><div>Entity</div><div>Type</div><div>Status</div><div class=\"ta-r\">Actions</div>\n </div>\n @for (p of Filtered; track p.ID) {\n <div class=\"rps-tr\" (click)=\"Edit(p)\">\n <div><div class=\"rps-nm\">{{ p.Name }}</div>@if (p.Description) {<div class=\"rps-sub\">{{ p.Description }}</div>}</div>\n <div>{{ p.Entity }}</div>\n <div><span class=\"pill purple\">{{ workLabel(p.WorkType) }}</span></div>\n <div><span class=\"pill\" [class.ok]=\"p.Status==='Active'\" [class.warn]=\"p.Status==='Draft'\" [class.muted]=\"p.Status==='Disabled'\">{{ p.Status }}</span></div>\n <div class=\"ta-r rps-acts\" (click)=\"$event.stopPropagation()\">\n <button class=\"iconbtn run\" title=\"Run\" (click)=\"Run(p)\"><i class=\"fa-solid fa-play\"></i></button>\n <button class=\"iconbtn\" title=\"Edit\" (click)=\"Edit(p)\"><i class=\"fa-solid fa-pen\"></i></button>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"rps-editbar\">\n <button mjButton variant=\"flat\" (click)=\"backToList()\"><i class=\"fa-solid fa-arrow-left\"></i> Back</button>\n <h2>{{ EditingID ? 'Edit operation' : 'New operation' }}</h2>\n </div>\n <mj-record-process-editor\n [RecordProcessID]=\"EditingID\"\n [DefaultEntityID]=\"EntityID\"\n [Provider]=\"Provider\"\n (Saved)=\"onSaved()\"\n (Cancelled)=\"backToList()\">\n </mj-record-process-editor>\n }\n\n @if (RunDriver) {\n <mj-entity-action-ux-host\n [DriverClass]=\"RunDriver.DriverClass\" [Context]=\"RunDriver.Context\"\n (Completed)=\"onRunDone($event)\" (Cancelled)=\"RunDriver = null\">\n </mj-entity-action-ux-host>\n }\n `,\n styles: [`\n :host{display:block;color:var(--mj-text-primary)}\n .rps-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px}\n .rps-search{position:relative;flex:0 0 360px;max-width:360px}\n .rps-search i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--mj-text-muted);font-size:13px}\n .rps-search input{padding-left:34px}\n .rps-spacer{flex:1}\n .rps-bar button i,.rps-editbar button i{margin-right:6px}\n .rps-msg,.rps-empty{padding:40px;text-align:center;color:var(--mj-text-muted)}\n .rps-empty i{font-size:30px;display:block;margin-bottom:12px;color:var(--mj-text-disabled)}\n .rps-empty p{margin:0 0 16px}\n .rps-table{border:1px solid var(--mj-border-subtle);border-radius:var(--mj-radius-md,10px);overflow:hidden}\n .rps-tr{display:grid;grid-template-columns:2.2fr 1.2fr 1fr .8fr 1fr;gap:14px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--mj-border-subtle);cursor:pointer;font-size:13.5px}\n .rps-tr:last-child{border-bottom:none}\n .rps-tr:not(.rps-head):hover{background:var(--mj-bg-surface-hover)}\n .rps-head{background:var(--mj-bg-surface-sunken);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mj-text-muted);font-weight:700;cursor:default}\n .rps-nm{font-weight:600}\n .rps-sub{color:var(--mj-text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:420px}\n .ta-r{text-align:right;justify-self:end}\n .rps-acts{display:flex;gap:6px}\n .iconbtn{width:30px;height:30px;border-radius:7px;border:1px solid var(--mj-border-default);background:var(--mj-bg-surface-card);color:var(--mj-text-secondary);cursor:pointer;font-size:12.5px}\n .iconbtn:hover{background:var(--mj-bg-surface-hover);color:var(--mj-text-primary)}\n .iconbtn.run:hover{color:var(--mj-status-success-text);border-color:var(--mj-status-success)}\n .pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;background:var(--mj-bg-surface-sunken);color:var(--mj-text-secondary)}\n .pill.purple{background:color-mix(in srgb,var(--mj-brand-primary) 14%,transparent);color:var(--mj-brand-primary)}\n .pill.ok{background:var(--mj-status-success-bg);color:var(--mj-status-success-text)}\n .pill.warn{background:var(--mj-status-warning-bg);color:var(--mj-status-warning-text)}\n .pill.muted{background:var(--mj-bg-surface-sunken);color:var(--mj-text-muted)}\n .rps-editbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}\n .rps-editbar h2{margin:0;font-size:18px;font-weight:700}\n `],\n})\nexport class RecordProcessStudioComponent extends BaseAngularComponent implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n /** Optional: restrict the hub to processes for one entity (e.g. when embedded on an entity page). */\n @Input() EntityID: string | null = null;\n\n public Mode: 'list' | 'edit' = 'list';\n public EditingID: string | null = null;\n public Loading = true;\n public Search = '';\n public Processes: ProcessRow[] = [];\n public RunDriver: { DriverClass: string; Context: EntityActionUXContext } | null = null;\n\n async ngOnInit(): Promise<void> {\n await this.reload();\n }\n\n get Filtered(): ProcessRow[] {\n const q = this.Search.trim().toLowerCase();\n if (!q) return this.Processes;\n return this.Processes.filter((p) => p.Name.toLowerCase().includes(q) || (p.Entity ?? '').toLowerCase().includes(q));\n }\n\n async reload(): Promise<void> {\n this.Loading = true; this.cdr.detectChanges();\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const filter = this.EntityID ? `EntityID='${this.EntityID}'` : '';\n const result = await rv.RunView<ProcessRow>({\n EntityName: 'MJ: Record Processes',\n Fields: ['ID', 'Name', 'Description', 'Entity', 'EntityID', 'WorkType', 'Status', 'ScopeType', 'ScopeFilter', 'ScopeViewID', 'ScopeListID'],\n ExtraFilter: filter,\n OrderBy: 'Name',\n ResultType: 'simple',\n });\n this.Processes = result.Success ? (result.Results ?? []) : [];\n this.Loading = false;\n this.cdr.detectChanges();\n }\n\n onSearch(event: Event): void { this.Search = (event.target as HTMLInputElement).value; this.cdr.detectChanges(); }\n\n New(): void { this.EditingID = null; this.Mode = 'edit'; this.cdr.detectChanges(); }\n Edit(p: ProcessRow): void { this.EditingID = p.ID; this.Mode = 'edit'; this.cdr.detectChanges(); }\n backToList(): void { this.Mode = 'list'; this.EditingID = null; this.cdr.detectChanges(); }\n async onSaved(): Promise<void> { this.backToList(); await this.reload(); }\n\n /** Runs a process on demand against its default scope, via the dry-run → confirm runner. */\n Run(p: ProcessRow): void {\n const entity = this.ProviderToUse.EntityByID(p.EntityID);\n if (!entity) return;\n this.RunDriver = {\n DriverClass: 'RecordProcessRunnerUX',\n Context: {\n EntityInfo: entity,\n ScopeKind: (p.ScopeType?.toLowerCase() as EntityActionUXContext['ScopeKind']) || 'filter',\n Filter: p.ScopeFilter ?? undefined,\n ViewID: p.ScopeViewID ?? undefined,\n ListID: p.ScopeListID ?? undefined,\n Config: { RecordProcessID: p.ID },\n Provider: this.ProviderToUse,\n ActionLabel: p.Name,\n },\n };\n this.cdr.detectChanges();\n }\n\n onRunDone(_r: EntityActionUXResult): void { this.RunDriver = null; this.cdr.detectChanges(); }\n\n workLabel(workType: string): string {\n return workType === 'FieldRules' ? 'Field Rules' : workType;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"record-process-studio.component.js","sourceRoot":"","sources":["../../../src/lib/record-process-studio/record-process-studio.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview The Bulk Operations hub: lists the org's Record Processes, lets a user create / edit one\n * (via the embedded {@link RecordProcessEditorComponent}), and run any of them on demand (mounting the\n * same dry-run → confirm runner used from a grid). Generic + reusable — Explorer's Bulk Operations app\n * hosts it, but any MJ app can drop it in.\n * @module @memberjunction/ng-record-process-studio\n */\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, inject } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { RunView } from '@memberjunction/core';\nimport { EntityActionUXHostComponent, type EntityActionUXContext, type EntityActionUXResult } from '@memberjunction/ng-entity-action-ux';\nimport { MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';\nimport { RecordProcessEditorComponent } from '../record-process-editor/record-process-editor.component';\n\n/** A row of the process list (read-only projection). */\ninterface ProcessRow {\n ID: string;\n Name: string;\n Description?: string;\n Entity: string;\n EntityID: string;\n WorkType: string;\n Status: string;\n ScopeType: string;\n ScopeFilter?: string;\n ScopeViewID?: string;\n ScopeListID?: string;\n}\n\n@Component({\n selector: 'mj-record-process-studio',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RecordProcessEditorComponent, EntityActionUXHostComponent, MJButtonDirective, MJEmptyStateComponent],\n template: `\n @if (Mode === 'list') {\n <div class=\"rps-bar\">\n <div class=\"rps-search\"><i class=\"fa-solid fa-magnifying-glass\"></i>\n <input class=\"mj-input\" placeholder=\"Search bulk operations…\" [value]=\"Search\" (input)=\"onSearch($event)\"></div>\n <span class=\"rps-spacer\"></span>\n <button mjButton variant=\"flat\" (click)=\"reload()\"><i class=\"fa-solid fa-arrows-rotate\"></i> Refresh</button>\n <button mjButton variant=\"primary\" (click)=\"New()\"><i class=\"fa-solid fa-plus\"></i> New operation</button>\n </div>\n\n @if (Loading) {\n <div class=\"rps-msg\"><i class=\"fa-solid fa-circle-notch fa-spin\"></i> Loading…</div>\n } @else if (Filtered.length === 0) {\n <mj-empty-state class=\"rps-empty\"\n Icon=\"fa-solid fa-list-check\"\n Title=\"No bulk operations yet\"\n ActionText=\"Create one\"\n ActionIcon=\"fa-solid fa-plus\"\n (Action)=\"New()\" />\n } @else {\n <div class=\"rps-table\">\n <div class=\"rps-tr rps-head\">\n <div>Operation</div><div>Entity</div><div>Type</div><div>Status</div><div class=\"ta-r\">Actions</div>\n </div>\n @for (p of Filtered; track p.ID) {\n <div class=\"rps-tr\" (click)=\"Edit(p)\">\n <div><div class=\"rps-nm\">{{ p.Name }}</div>@if (p.Description) {<div class=\"rps-sub\">{{ p.Description }}</div>}</div>\n <div>{{ p.Entity }}</div>\n <div><span class=\"pill purple\">{{ workLabel(p.WorkType) }}</span></div>\n <div><span class=\"pill\" [class.ok]=\"p.Status==='Active'\" [class.warn]=\"p.Status==='Draft'\" [class.muted]=\"p.Status==='Disabled'\">{{ p.Status }}</span></div>\n <div class=\"ta-r rps-acts\" (click)=\"$event.stopPropagation()\">\n <button class=\"iconbtn run\" title=\"Run\" (click)=\"Run(p)\"><i class=\"fa-solid fa-play\"></i></button>\n <button class=\"iconbtn\" title=\"Edit\" (click)=\"Edit(p)\"><i class=\"fa-solid fa-pen\"></i></button>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"rps-editbar\">\n <button mjButton variant=\"flat\" (click)=\"backToList()\"><i class=\"fa-solid fa-arrow-left\"></i> Back</button>\n <h2>{{ EditingID ? 'Edit operation' : 'New operation' }}</h2>\n </div>\n <mj-record-process-editor\n [RecordProcessID]=\"EditingID\"\n [DefaultEntityID]=\"EntityID\"\n [Provider]=\"Provider\"\n (Saved)=\"onSaved()\"\n (Cancelled)=\"backToList()\">\n </mj-record-process-editor>\n }\n\n @if (RunDriver) {\n <mj-entity-action-ux-host\n [DriverClass]=\"RunDriver.DriverClass\" [Context]=\"RunDriver.Context\"\n (Completed)=\"onRunDone($event)\" (Cancelled)=\"RunDriver = null\">\n </mj-entity-action-ux-host>\n }\n `,\n styles: [`\n :host{display:block;color:var(--mj-text-primary)}\n .rps-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px}\n .rps-search{position:relative;flex:0 0 360px;max-width:360px}\n .rps-search i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--mj-text-muted);font-size:13px}\n .rps-search input{padding-left:34px}\n .rps-spacer{flex:1}\n .rps-bar button i,.rps-editbar button i{margin-right:6px}\n .rps-msg,.rps-empty{padding:40px;text-align:center;color:var(--mj-text-muted)}\n .rps-empty i{font-size:30px;display:block;margin-bottom:12px;color:var(--mj-text-disabled)}\n .rps-empty p{margin:0 0 16px}\n .rps-table{border:1px solid var(--mj-border-subtle);border-radius:var(--mj-radius-md,10px);overflow:hidden}\n .rps-tr{display:grid;grid-template-columns:2.2fr 1.2fr 1fr .8fr 1fr;gap:14px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--mj-border-subtle);cursor:pointer;font-size:13.5px}\n .rps-tr:last-child{border-bottom:none}\n .rps-tr:not(.rps-head):hover{background:var(--mj-bg-surface-hover)}\n .rps-head{background:var(--mj-bg-surface-sunken);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--mj-text-muted);font-weight:700;cursor:default}\n .rps-nm{font-weight:600}\n .rps-sub{color:var(--mj-text-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:420px}\n .ta-r{text-align:right;justify-self:end}\n .rps-acts{display:flex;gap:6px}\n .iconbtn{width:30px;height:30px;border-radius:7px;border:1px solid var(--mj-border-default);background:var(--mj-bg-surface-card);color:var(--mj-text-secondary);cursor:pointer;font-size:12.5px}\n .iconbtn:hover{background:var(--mj-bg-surface-hover);color:var(--mj-text-primary)}\n .iconbtn.run:hover{color:var(--mj-status-success-text);border-color:var(--mj-status-success)}\n .pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;background:var(--mj-bg-surface-sunken);color:var(--mj-text-secondary)}\n .pill.purple{background:color-mix(in srgb,var(--mj-brand-primary) 14%,transparent);color:var(--mj-brand-primary)}\n .pill.ok{background:var(--mj-status-success-bg);color:var(--mj-status-success-text)}\n .pill.warn{background:var(--mj-status-warning-bg);color:var(--mj-status-warning-text)}\n .pill.muted{background:var(--mj-bg-surface-sunken);color:var(--mj-text-muted)}\n .rps-editbar{display:flex;align-items:center;gap:14px;margin-bottom:18px}\n .rps-editbar h2{margin:0;font-size:18px;font-weight:700}\n `],\n})\nexport class RecordProcessStudioComponent extends BaseAngularComponent implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n /** Optional: restrict the hub to processes for one entity (e.g. when embedded on an entity page). */\n @Input() EntityID: string | null = null;\n\n public Mode: 'list' | 'edit' = 'list';\n public EditingID: string | null = null;\n public Loading = true;\n public Search = '';\n public Processes: ProcessRow[] = [];\n public RunDriver: { DriverClass: string; Context: EntityActionUXContext } | null = null;\n\n async ngOnInit(): Promise<void> {\n await this.reload();\n }\n\n get Filtered(): ProcessRow[] {\n const q = this.Search.trim().toLowerCase();\n if (!q) return this.Processes;\n return this.Processes.filter((p) => p.Name.toLowerCase().includes(q) || (p.Entity ?? '').toLowerCase().includes(q));\n }\n\n async reload(): Promise<void> {\n this.Loading = true; this.cdr.detectChanges();\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const filter = this.EntityID ? `EntityID='${this.EntityID}'` : '';\n const result = await rv.RunView<ProcessRow>({\n EntityName: 'MJ: Record Processes',\n Fields: ['ID', 'Name', 'Description', 'Entity', 'EntityID', 'WorkType', 'Status', 'ScopeType', 'ScopeFilter', 'ScopeViewID', 'ScopeListID'],\n ExtraFilter: filter,\n OrderBy: 'Name',\n ResultType: 'simple',\n });\n this.Processes = result.Success ? (result.Results ?? []) : [];\n this.Loading = false;\n this.cdr.detectChanges();\n }\n\n onSearch(event: Event): void { this.Search = (event.target as HTMLInputElement).value; this.cdr.detectChanges(); }\n\n New(): void { this.EditingID = null; this.Mode = 'edit'; this.cdr.detectChanges(); }\n Edit(p: ProcessRow): void { this.EditingID = p.ID; this.Mode = 'edit'; this.cdr.detectChanges(); }\n backToList(): void { this.Mode = 'list'; this.EditingID = null; this.cdr.detectChanges(); }\n async onSaved(): Promise<void> { this.backToList(); await this.reload(); }\n\n /** Runs a process on demand against its default scope, via the dry-run → confirm runner. */\n Run(p: ProcessRow): void {\n const entity = this.ProviderToUse.EntityByID(p.EntityID);\n if (!entity) return;\n this.RunDriver = {\n DriverClass: 'RecordProcessRunnerUX',\n Context: {\n EntityInfo: entity,\n ScopeKind: (p.ScopeType?.toLowerCase() as EntityActionUXContext['ScopeKind']) || 'filter',\n Filter: p.ScopeFilter ?? undefined,\n ViewID: p.ScopeViewID ?? undefined,\n ListID: p.ScopeListID ?? undefined,\n Config: { RecordProcessID: p.ID },\n Provider: this.ProviderToUse,\n ActionLabel: p.Name,\n },\n };\n this.cdr.detectChanges();\n }\n\n onRunDone(_r: EntityActionUXResult): void { this.RunDriver = null; this.cdr.detectChanges(); }\n\n workLabel(workType: string): string {\n return workType === 'FieldRules' ? 'Field Rules' : workType;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-record-process-studio",
|
|
3
|
-
"version": "6.1.0-edge.
|
|
3
|
+
"version": "6.1.0-edge.7",
|
|
4
4
|
"description": "MemberJunction: Bulk Operations studio — generic, reusable Angular UI for authoring, running, and auditing Record Processes (rules-driven bulk updates). Consumed by MJExplorer's Bulk Operations app or any MJ app.",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -17,26 +17,26 @@
|
|
|
17
17
|
"author": "MemberJunction.com",
|
|
18
18
|
"license": "BUSL-1.1",
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@angular/compiler": "21.
|
|
21
|
-
"@angular/compiler-cli": "21.
|
|
20
|
+
"@angular/compiler": "21.2.22",
|
|
21
|
+
"@angular/compiler-cli": "21.2.22",
|
|
22
22
|
"rimraf": "^5.0.0",
|
|
23
23
|
"vitest": "^4.0.18",
|
|
24
|
-
"@memberjunction/ng-test-utils": "6.1.0-edge.
|
|
24
|
+
"@memberjunction/ng-test-utils": "6.1.0-edge.7"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@angular/common": "^21.
|
|
28
|
-
"@angular/core": "^21.
|
|
29
|
-
"@angular/forms": "^21.
|
|
27
|
+
"@angular/common": "^21.2.22",
|
|
28
|
+
"@angular/core": "^21.2.22",
|
|
29
|
+
"@angular/forms": "^21.2.22",
|
|
30
30
|
"rxjs": "^7.8.2"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@memberjunction/core": "6.1.0-edge.
|
|
34
|
-
"@memberjunction/core-entities": "6.1.0-edge.
|
|
35
|
-
"@memberjunction/global": "6.1.0-edge.
|
|
36
|
-
"@memberjunction/graphql-dataprovider": "6.1.0-edge.
|
|
37
|
-
"@memberjunction/ng-base-types": "6.1.0-edge.
|
|
38
|
-
"@memberjunction/ng-entity-action-ux": "6.1.0-edge.
|
|
39
|
-
"@memberjunction/ng-ui-components": "6.1.0-edge.
|
|
33
|
+
"@memberjunction/core": "6.1.0-edge.7",
|
|
34
|
+
"@memberjunction/core-entities": "6.1.0-edge.7",
|
|
35
|
+
"@memberjunction/global": "6.1.0-edge.7",
|
|
36
|
+
"@memberjunction/graphql-dataprovider": "6.1.0-edge.7",
|
|
37
|
+
"@memberjunction/ng-base-types": "6.1.0-edge.7",
|
|
38
|
+
"@memberjunction/ng-entity-action-ux": "6.1.0-edge.7",
|
|
39
|
+
"@memberjunction/ng-ui-components": "6.1.0-edge.7",
|
|
40
40
|
"tslib": "^2.8.1"
|
|
41
41
|
},
|
|
42
42
|
"sideEffects": false,
|