@memberjunction/ng-versions 0.0.1 → 4.1.0

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 (30) hide show
  1. package/README.md +125 -43
  2. package/dist/lib/label-create/label-create.component.d.ts +71 -0
  3. package/dist/lib/label-create/label-create.component.d.ts.map +1 -0
  4. package/dist/lib/label-create/label-create.component.js +776 -0
  5. package/dist/lib/label-create/label-create.component.js.map +1 -0
  6. package/dist/lib/label-detail/label-detail.component.d.ts +186 -0
  7. package/dist/lib/label-detail/label-detail.component.d.ts.map +1 -0
  8. package/dist/lib/label-detail/label-detail.component.js +2076 -0
  9. package/dist/lib/label-detail/label-detail.component.js.map +1 -0
  10. package/dist/lib/panel/slide-panel.component.d.ts +35 -0
  11. package/dist/lib/panel/slide-panel.component.d.ts.map +1 -0
  12. package/dist/lib/panel/slide-panel.component.js +199 -0
  13. package/dist/lib/panel/slide-panel.component.js.map +1 -0
  14. package/dist/lib/record-micro-view/record-micro-view.component.d.ts +114 -0
  15. package/dist/lib/record-micro-view/record-micro-view.component.d.ts.map +1 -0
  16. package/dist/lib/record-micro-view/record-micro-view.component.js +824 -0
  17. package/dist/lib/record-micro-view/record-micro-view.component.js.map +1 -0
  18. package/dist/lib/types.d.ts +22 -0
  19. package/dist/lib/types.d.ts.map +1 -0
  20. package/dist/lib/types.js +5 -0
  21. package/dist/lib/types.js.map +1 -0
  22. package/dist/lib/versions.module.d.ts +14 -0
  23. package/dist/lib/versions.module.d.ts.map +1 -0
  24. package/dist/lib/versions.module.js +48 -0
  25. package/dist/lib/versions.module.js.map +1 -0
  26. package/dist/public-api.d.ts +7 -0
  27. package/dist/public-api.d.ts.map +1 -0
  28. package/dist/public-api.js +7 -0
  29. package/dist/public-api.js.map +1 -0
  30. package/package.json +37 -7
package/README.md CHANGED
@@ -1,45 +1,127 @@
1
1
  # @memberjunction/ng-versions
2
2
 
3
- ## ⚠️ IMPORTANT NOTICE ⚠️
4
-
5
- **This package is created solely for the purpose of setting up OIDC (OpenID Connect) trusted publishing with npm.**
6
-
7
- This is **NOT** a functional package and contains **NO** code or functionality beyond the OIDC setup configuration.
8
-
9
- ## Purpose
10
-
11
- This package exists to:
12
- 1. Configure OIDC trusted publishing for the package name `@memberjunction/ng-versions`
13
- 2. Enable secure, token-less publishing from CI/CD workflows
14
- 3. Establish provenance for packages published under this name
15
-
16
- ## What is OIDC Trusted Publishing?
17
-
18
- OIDC trusted publishing allows package maintainers to publish packages directly from their CI/CD workflows without needing to manage npm access tokens. Instead, it uses OpenID Connect to establish trust between the CI/CD provider (like GitHub Actions) and npm.
19
-
20
- ## Setup Instructions
21
-
22
- To properly configure OIDC trusted publishing for this package:
23
-
24
- 1. Go to [npmjs.com](https://www.npmjs.com/) and navigate to your package settings
25
- 2. Configure the trusted publisher (e.g., GitHub Actions)
26
- 3. Specify the repository and workflow that should be allowed to publish
27
- 4. Use the configured workflow to publish your actual package
28
-
29
- ## DO NOT USE THIS PACKAGE
30
-
31
- This package is a placeholder for OIDC configuration only. It:
32
- - Contains no executable code
33
- - Provides no functionality
34
- - Should not be installed as a dependency
35
- - Exists only for administrative purposes
36
-
37
- ## More Information
38
-
39
- For more details about npm's trusted publishing feature, see:
40
- - [npm Trusted Publishing Documentation](https://docs.npmjs.com/generating-provenance-statements)
41
- - [GitHub Actions OIDC Documentation](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
42
-
43
- ---
44
-
45
- **Maintained for OIDC setup purposes only**
3
+ Angular components for viewing entity record version history in MemberJunction applications. Provides a slide panel, label creation, label detail, and record micro-view for working with the built-in Record Changes system.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @memberjunction/ng-versions
9
+ ```
10
+
11
+ ## Overview
12
+
13
+ MemberJunction includes built-in version control ("Record Changes") that tracks all changes to entity records. This package provides Angular components for browsing that history: a slide panel for navigating versions, a micro-view for previewing snapshots, and label management for bookmarking specific versions.
14
+
15
+ ```mermaid
16
+ flowchart TD
17
+ subgraph Panel["SlidePanelComponent"]
18
+ A["Version List"]
19
+ A --> B["RecordMicroViewComponent"]
20
+ A --> C["LabelCreateComponent"]
21
+ A --> D["LabelDetailComponent"]
22
+ end
23
+ subgraph Data["MJ Record Changes"]
24
+ E["RecordChange Entity"]
25
+ F["Field-level Diffs"]
26
+ G["Version Labels"]
27
+ end
28
+
29
+ E --> Panel
30
+ F --> B
31
+ G --> C
32
+ G --> D
33
+
34
+ style Panel fill:#2d6a9f,stroke:#1a4971,color:#fff
35
+ style Data fill:#2d8659,stroke:#1a5c3a,color:#fff
36
+ ```
37
+
38
+ ## Usage
39
+
40
+ ### Module Import
41
+
42
+ ```typescript
43
+ import { VersionsModule } from '@memberjunction/ng-versions';
44
+
45
+ @NgModule({
46
+ imports: [VersionsModule]
47
+ })
48
+ export class YourModule {}
49
+ ```
50
+
51
+ ### Slide Panel
52
+
53
+ ```html
54
+ <mj-slide-panel
55
+ [EntityName]="'Products'"
56
+ [RecordID]="productId"
57
+ [Mode]="'slide'"
58
+ [Visible]="showVersionPanel">
59
+ </mj-slide-panel>
60
+ ```
61
+
62
+ ### Record Micro View
63
+
64
+ ```html
65
+ <mj-record-micro-view
66
+ [Data]="microViewData">
67
+ </mj-record-micro-view>
68
+ ```
69
+
70
+ ### Label Creation
71
+
72
+ ```html
73
+ <mj-label-create
74
+ [EntityName]="'Products'"
75
+ [RecordID]="productId"
76
+ [RecordChangeID]="selectedChangeId"
77
+ (LabelCreated)="onLabelCreated($event)">
78
+ </mj-label-create>
79
+ ```
80
+
81
+ ## Components
82
+
83
+ | Component | Selector | Purpose |
84
+ |-----------|----------|---------|
85
+ | `SlidePanelComponent` | `mj-slide-panel` | Container for version history navigation |
86
+ | `RecordMicroViewComponent` | `mj-record-micro-view` | Compact snapshot preview with field diffs |
87
+ | `LabelCreateComponent` | `mj-label-create` | Create a named label/bookmark for a version |
88
+ | `LabelDetailComponent` | `mj-label-detail` | View and manage label details |
89
+
90
+ ## Exported Types
91
+
92
+ ### MicroViewData
93
+
94
+ ```typescript
95
+ interface MicroViewData {
96
+ EntityName: string;
97
+ EntityID: string;
98
+ RecordID: string;
99
+ RecordChangeID: string;
100
+ FullRecordJSON: Record<string, unknown> | null;
101
+ FieldDiffs: FieldChangeView[] | null;
102
+ }
103
+ ```
104
+
105
+ ### FieldChangeView
106
+
107
+ ```typescript
108
+ interface FieldChangeView {
109
+ FieldName: string;
110
+ OldValue: string;
111
+ NewValue: string;
112
+ ChangeType: 'Added' | 'Modified' | 'Removed';
113
+ }
114
+ ```
115
+
116
+ ### SlidePanelMode
117
+
118
+ ```typescript
119
+ type SlidePanelMode = 'slide' | 'dialog';
120
+ ```
121
+
122
+ ## Dependencies
123
+
124
+ - [@memberjunction/core](../../MJCore/README.md) -- Metadata, RunView
125
+ - [@memberjunction/core-entities](../../MJCoreEntities/README.md) -- RecordChange entities
126
+ - [@memberjunction/graphql-dataprovider](../../GraphQLDataProvider/README.md) -- Data provider
127
+ - [@memberjunction/ng-shared-generic](../shared/README.md) -- Loading component
@@ -0,0 +1,71 @@
1
+ import { EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
2
+ import { EntityInfo } from '@memberjunction/core';
3
+ import { CreateVersionLabelProgress } from '@memberjunction/graphql-dataprovider';
4
+ import * as i0 from "@angular/core";
5
+ export interface RecordOption {
6
+ ID: string;
7
+ DisplayName: string;
8
+ Selected: boolean;
9
+ }
10
+ export declare class MjLabelCreateComponent implements OnInit {
11
+ private cdr;
12
+ /**
13
+ * When set, skips the entity picker step and pre-selects this entity.
14
+ */
15
+ PreselectedEntity: EntityInfo | null;
16
+ /**
17
+ * When set along with PreselectedEntity, auto-selects these record IDs
18
+ * and skips directly to the details step.
19
+ */
20
+ PreselectedRecordIds: string[];
21
+ /** Emitted when labels are successfully created. */
22
+ Created: EventEmitter<{
23
+ LabelCount: number;
24
+ ItemCount: number;
25
+ }>;
26
+ /** Emitted when the user cancels. */
27
+ Cancel: EventEmitter<void>;
28
+ CreateStep: 'entity' | 'records' | 'details' | 'creating' | 'done';
29
+ EntitySearchText: string;
30
+ FilteredEntities: EntityInfo[];
31
+ SelectedEntity: EntityInfo | null;
32
+ RecordSearchText: string;
33
+ AvailableRecords: RecordOption[];
34
+ FilteredRecords: RecordOption[];
35
+ IsLoadingRecords: boolean;
36
+ LabelName: string;
37
+ LabelDescription: string;
38
+ IsCreatingLabel: boolean;
39
+ CreateError: string;
40
+ CreatedLabelCount: number;
41
+ CreatedItemCount: number;
42
+ CreateProgress: CreateVersionLabelProgress | null;
43
+ private metadata;
44
+ constructor(cdr: ChangeDetectorRef);
45
+ ngOnInit(): void;
46
+ private skipToDetailsWithPreselection;
47
+ private preselectRecordsByIds;
48
+ OnEntitySearchChange(text: string): void;
49
+ SelectEntity(entity: EntityInfo): void;
50
+ OnRecordSearchChange(text: string): void;
51
+ ToggleRecordSelection(record: RecordOption): void;
52
+ SelectAllRecords(): void;
53
+ DeselectAllRecords(): void;
54
+ get SelectedRecordCount(): number;
55
+ GoToDetailsStep(): void;
56
+ GoBackToRecords(): void;
57
+ GoBackToEntity(): void;
58
+ CreateLabels(): Promise<void>;
59
+ FinishCreate(): void;
60
+ OnCancel(): void;
61
+ private createSingleLabel;
62
+ private createGroupedLabels;
63
+ private loadEntityRecords;
64
+ private findNameField;
65
+ private getTrackableEntities;
66
+ private suggestLabelName;
67
+ private resetCreateDialog;
68
+ static ɵfac: i0.ɵɵFactoryDeclaration<MjLabelCreateComponent, never>;
69
+ static ɵcmp: i0.ɵɵComponentDeclaration<MjLabelCreateComponent, "mj-label-create", never, { "PreselectedEntity": { "alias": "PreselectedEntity"; "required": false; }; "PreselectedRecordIds": { "alias": "PreselectedRecordIds"; "required": false; }; }, { "Created": "Created"; "Cancel": "Cancel"; }, never, never, false, never>;
70
+ }
71
+ //# sourceMappingURL=label-create.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-create.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,YAAY,EACZ,MAAM,EACN,iBAAiB,EAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAqB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAGH,0BAA0B,EAC7B,MAAM,sCAAsC,CAAC;;AAE9C,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,qBAOa,sBAAuB,YAAW,MAAM;IA6CrC,OAAO,CAAC,GAAG;IA5CvB;;OAEG;IACM,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAErD;;;OAGG;IACM,oBAAoB,EAAE,MAAM,EAAE,CAAM;IAE7C,oDAAoD;IAC1C,OAAO;oBAAkC,MAAM;mBAAa,MAAM;OAAM;IAElF,qCAAqC;IAC3B,MAAM,qBAA4B;IAGrC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAY;IAG9E,gBAAgB,SAAM;IACtB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IAGzC,gBAAgB,SAAM;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAM;IACtC,eAAe,EAAE,YAAY,EAAE,CAAM;IACrC,gBAAgB,UAAS;IAGzB,SAAS,SAAM;IACf,gBAAgB,SAAM;IAGtB,eAAe,UAAS;IACxB,WAAW,SAAM;IACjB,iBAAiB,SAAK;IACtB,gBAAgB,SAAK;IACrB,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAQ;IAEhE,OAAO,CAAC,QAAQ,CAAkB;gBAEd,GAAG,EAAE,iBAAiB;IAE1C,QAAQ,IAAI,IAAI;YAqBF,6BAA6B;IAQ3C,OAAO,CAAC,qBAAqB;IAWtB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUxC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAUtC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxC,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKjD,gBAAgB,IAAI,IAAI;IAOxB,kBAAkB,IAAI,IAAI;IAOjC,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAMM,eAAe,IAAI,IAAI;IAOvB,eAAe,IAAI,IAAI;IAKvB,cAAc,IAAI,IAAI;IAYhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BnC,YAAY,IAAI,IAAI;IAOpB,QAAQ,IAAI,IAAI;YAQT,iBAAiB;YAuBjB,mBAAmB;YAkDnB,iBAAiB;IA0C/B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;yCArWhB,sBAAsB;2CAAtB,sBAAsB;CAqXlC"}