@memberjunction/ng-versions 5.30.1 → 5.31.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.
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter, OnInit, ChangeDetectorRef, NgZone } from '@angular/core';
2
2
  import { EntityInfo } from '@memberjunction/core';
3
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
4
  import { CreateVersionLabelProgress } from '@memberjunction/graphql-dataprovider';
4
5
  import * as i0 from "@angular/core";
5
6
  export interface RecordOption {
@@ -7,7 +8,7 @@ export interface RecordOption {
7
8
  DisplayName: string;
8
9
  Selected: boolean;
9
10
  }
10
- export declare class MjLabelCreateComponent implements OnInit {
11
+ export declare class MjLabelCreateComponent extends BaseAngularComponent implements OnInit {
11
12
  private cdr;
12
13
  private ngZone;
13
14
  /**
@@ -41,7 +42,7 @@ export declare class MjLabelCreateComponent implements OnInit {
41
42
  CreatedLabelCount: number;
42
43
  CreatedItemCount: number;
43
44
  CreateProgress: CreateVersionLabelProgress | null;
44
- private metadata;
45
+ private get metadata();
45
46
  constructor(cdr: ChangeDetectorRef, ngZone: NgZone);
46
47
  ngOnInit(): void;
47
48
  private skipToDetailsWithPreselection;
@@ -1 +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,EAEjB,MAAM,EACT,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;IAAqB,OAAO,CAAC,MAAM;IA5C1D;;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,EAAU,MAAM,EAAE,MAAM;IAElE,QAAQ,IAAI,IAAI;YAqBF,6BAA6B;IAU3C,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;IAiCnC,YAAY,IAAI,IAAI;IAOpB,QAAQ,IAAI,IAAI;YAQT,iBAAiB;YA2BjB,mBAAmB;YAwDnB,iBAAiB;IA4C/B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;yCAvXhB,sBAAsB;2CAAtB,sBAAsB;CAuYlC"}
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,EAEjB,MAAM,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,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,SAAQ,oBAAqB,YAAW,MAAM;IA6ClE,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IA5C1D;;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,KAAK,QAAQ,GAAiC;gBAEjC,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAElE,QAAQ,IAAI,IAAI;YAqBF,6BAA6B;IAU3C,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;IAiCnC,YAAY,IAAI,IAAI;IAOpB,QAAQ,IAAI,IAAI;YAQT,iBAAiB;YA2BjB,mBAAmB;YAwDnB,iBAAiB;IA4C/B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;yCAvXhB,sBAAsB;2CAAtB,sBAAsB;CAuYlC"}
@@ -1,5 +1,6 @@
1
1
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
- import { RunView, Metadata } from '@memberjunction/core';
2
+ import { RunView } from '@memberjunction/core';
3
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
4
  import { GraphQLDataProvider, GraphQLVersionHistoryClient } from '@memberjunction/graphql-dataprovider';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@angular/forms";
@@ -409,7 +410,7 @@ function MjLabelCreateComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
409
410
  i0.ɵɵadvance();
410
411
  i0.ɵɵconditional(ctx_r0.CreateError ? 2 : -1);
411
412
  } }
412
- export class MjLabelCreateComponent {
413
+ export class MjLabelCreateComponent extends BaseAngularComponent {
413
414
  cdr;
414
415
  ngZone;
415
416
  /**
@@ -445,8 +446,9 @@ export class MjLabelCreateComponent {
445
446
  CreatedLabelCount = 0;
446
447
  CreatedItemCount = 0;
447
448
  CreateProgress = null;
448
- metadata = new Metadata();
449
+ get metadata() { return this.ProviderToUse; }
449
450
  constructor(cdr, ngZone) {
451
+ super();
450
452
  this.cdr = cdr;
451
453
  this.ngZone = ngZone;
452
454
  }
@@ -678,7 +680,7 @@ export class MjLabelCreateComponent {
678
680
  this.RecordSearchText = '';
679
681
  this.cdr.markForCheck();
680
682
  try {
681
- const rv = new RunView();
683
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
682
684
  const nameField = this.findNameField(entity);
683
685
  const fields = nameField ? ['ID', nameField] : ['ID'];
684
686
  const result = await rv.RunView({
@@ -756,7 +758,7 @@ export class MjLabelCreateComponent {
756
758
  this.CreateProgress = null;
757
759
  }
758
760
  static ɵfac = function MjLabelCreateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelCreateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
759
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
761
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
760
762
  i0.ɵɵelementStart(0, "div", 0);
761
763
  i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_1_Template, 18, 14, "div", 1);
762
764
  i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_2_Template, 10, 2, "div", 2);
@@ -792,5 +794,5 @@ export class MjLabelCreateComponent {
792
794
  }], Cancel: [{
793
795
  type: Output
794
796
  }] }); })();
795
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelCreateComponent, { className: "MjLabelCreateComponent", filePath: "src/lib/label-create/label-create.component.ts", lineNumber: 31 }); })();
797
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelCreateComponent, { className: "MjLabelCreateComponent", filePath: "src/lib/label-create/label-create.component.ts", lineNumber: 32 }); })();
796
798
  //# sourceMappingURL=label-create.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"label-create.component.js","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts","../../../src/lib/label-create/label-create.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n NgZone\n} from '@angular/core';\nimport { RunView, Metadata, EntityInfo } from '@memberjunction/core';\nimport {\n GraphQLDataProvider,\n GraphQLVersionHistoryClient,\n CreateVersionLabelProgress\n} from '@memberjunction/graphql-dataprovider';\n\nexport interface RecordOption {\n ID: string;\n DisplayName: string;\n Selected: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-label-create',\n templateUrl: './label-create.component.html',\n styleUrls: ['./label-create.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MjLabelCreateComponent implements OnInit {\n /**\n * When set, skips the entity picker step and pre-selects this entity.\n */\n @Input() PreselectedEntity: EntityInfo | null = null;\n\n /**\n * When set along with PreselectedEntity, auto-selects these record IDs\n * and skips directly to the details step.\n */\n @Input() PreselectedRecordIds: string[] = [];\n\n /** Emitted when labels are successfully created. */\n @Output() Created = new EventEmitter<{ LabelCount: number; ItemCount: number }>();\n\n /** Emitted when the user cancels. */\n @Output() Cancel = new EventEmitter<void>();\n\n // Wizard state\n public CreateStep: 'entity' | 'records' | 'details' | 'creating' | 'done' = 'entity';\n\n // Step 1: Entity selection\n public EntitySearchText = '';\n public FilteredEntities: EntityInfo[] = [];\n public SelectedEntity: EntityInfo | null = null;\n\n // Step 2: Record selection\n public RecordSearchText = '';\n public AvailableRecords: RecordOption[] = [];\n public FilteredRecords: RecordOption[] = [];\n public IsLoadingRecords = false;\n\n // Step 3: Details\n public LabelName = '';\n public LabelDescription = '';\n\n // Creating / done state\n public IsCreatingLabel = false;\n public CreateError = '';\n public CreatedLabelCount = 0;\n public CreatedItemCount = 0;\n public CreateProgress: CreateVersionLabelProgress | null = null;\n\n private metadata = new Metadata();\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {}\n\n ngOnInit(): void {\n this.resetCreateDialog();\n\n if (this.PreselectedEntity) {\n this.SelectedEntity = this.PreselectedEntity;\n\n if (this.PreselectedRecordIds.length > 0) {\n this.skipToDetailsWithPreselection();\n } else {\n this.CreateStep = 'records';\n this.loadEntityRecords(this.PreselectedEntity);\n }\n } else {\n this.FilteredEntities = this.getTrackableEntities();\n }\n }\n\n // =======================================================================\n // Pre-selection helpers\n // =======================================================================\n\n private async skipToDetailsWithPreselection(): Promise<void> {\n await this.loadEntityRecords(this.SelectedEntity!);\n this.ngZone.run(() => {\n this.preselectRecordsByIds(this.PreselectedRecordIds);\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n });\n }\n\n private preselectRecordsByIds(ids: string[]): void {\n const idSet = new Set(ids);\n for (const record of this.AvailableRecords) {\n record.Selected = idSet.has(record.ID);\n }\n }\n\n // =======================================================================\n // Step 1: Entity picker\n // =======================================================================\n\n public OnEntitySearchChange(text: string): void {\n this.EntitySearchText = text;\n const search = text.toLowerCase();\n const all = this.getTrackableEntities();\n this.FilteredEntities = search\n ? all.filter(e => e.Name.toLowerCase().includes(search))\n : all;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entity: EntityInfo): void {\n this.SelectedEntity = entity;\n this.CreateStep = 'records';\n this.loadEntityRecords(entity);\n }\n\n // =======================================================================\n // Step 2: Record selection\n // =======================================================================\n\n public OnRecordSearchChange(text: string): void {\n this.RecordSearchText = text;\n const search = text.toLowerCase();\n this.FilteredRecords = search\n ? this.AvailableRecords.filter(r => r.DisplayName.toLowerCase().includes(search))\n : [...this.AvailableRecords];\n this.cdr.markForCheck();\n }\n\n public ToggleRecordSelection(record: RecordOption): void {\n record.Selected = !record.Selected;\n this.cdr.markForCheck();\n }\n\n public SelectAllRecords(): void {\n for (const r of this.FilteredRecords) {\n r.Selected = true;\n }\n this.cdr.markForCheck();\n }\n\n public DeselectAllRecords(): void {\n for (const r of this.AvailableRecords) {\n r.Selected = false;\n }\n this.cdr.markForCheck();\n }\n\n public get SelectedRecordCount(): number {\n return this.AvailableRecords.filter(r => r.Selected).length;\n }\n\n // =======================================================================\n // Step navigation\n // =======================================================================\n\n public GoToDetailsStep(): void {\n if (this.SelectedRecordCount === 0) return;\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n }\n\n public GoBackToRecords(): void {\n this.CreateStep = 'records';\n this.cdr.markForCheck();\n }\n\n public GoBackToEntity(): void {\n this.CreateStep = 'entity';\n this.SelectedEntity = null;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.cdr.markForCheck();\n }\n\n // =======================================================================\n // Step 3: Create labels\n // =======================================================================\n\n public async CreateLabels(): Promise<void> {\n if (!this.SelectedEntity || !this.LabelName.trim()) return;\n\n this.IsCreatingLabel = true;\n this.CreateStep = 'creating';\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.cdr.markForCheck();\n\n try {\n const selected = this.AvailableRecords.filter(r => r.Selected);\n\n if (selected.length === 1) {\n await this.createSingleLabel(selected[0]);\n } else {\n await this.createGroupedLabels(selected);\n }\n\n this.CreateStep = 'done';\n } catch (e: unknown) {\n this.ngZone.run(() => {\n this.CreateError = e instanceof Error ? e.message : String(e);\n this.CreateStep = 'done';\n });\n } finally {\n this.ngZone.run(() => {\n this.IsCreatingLabel = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n public FinishCreate(): void {\n this.Created.emit({\n LabelCount: this.CreatedLabelCount,\n ItemCount: this.CreatedItemCount\n });\n }\n\n public OnCancel(): void {\n this.Cancel.emit();\n }\n\n // =======================================================================\n // Create helpers\n // =======================================================================\n\n private async createSingleLabel(record: RecordOption): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n const result = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!result.Success) {\n throw new Error(result.Error ?? 'Failed to create version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = result.ItemsCaptured ?? 0;\n });\n }\n\n private async createGroupedLabels(records: RecordOption[]): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n\n // Create parent container label (no RecordKey -> acts as a grouping label)\n const parentResult = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Entity',\n EntityName: this.SelectedEntity!.Name,\n });\n\n if (!parentResult.Success) {\n throw new Error(parentResult.Error ?? 'Failed to create parent version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = parentResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n\n // Create child labels for each selected record\n for (const record of records) {\n const childResult = await vhClient.CreateLabel({\n Name: `${this.LabelName.trim()} \\u2014 ${record.DisplayName}`,\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n ParentID: parentResult.LabelID,\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!childResult.Success) {\n console.error(`Failed to create child label for record ${record.ID}: ${childResult.Error}`);\n continue;\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount++;\n this.CreatedItemCount += childResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Data loading\n // =======================================================================\n\n private async loadEntityRecords(entity: EntityInfo): Promise<void> {\n this.IsLoadingRecords = true;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.RecordSearchText = '';\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const nameField = this.findNameField(entity);\n const fields = nameField ? ['ID', nameField] : ['ID'];\n\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: entity.Name,\n Fields: fields,\n OrderBy: nameField ?? 'ID',\n MaxRows: 500,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableRecords = result.Results.map(r => ({\n ID: String(r['ID'] ?? ''),\n DisplayName: nameField\n ? String(r[nameField] ?? r['ID'] ?? '')\n : String(r['ID'] ?? ''),\n Selected: false\n }));\n this.FilteredRecords = [...this.AvailableRecords];\n }\n } catch (error) {\n console.error('Error loading entity records:', error);\n } finally {\n this.ngZone.run(() => {\n this.IsLoadingRecords = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Utility helpers\n // =======================================================================\n\n private findNameField(entity: EntityInfo): string | null {\n const candidates = ['Name', 'Title', 'DisplayName', 'Label', 'Subject', 'Description'];\n for (const name of candidates) {\n const field = entity.Fields.find(f =>\n f.Name.toLowerCase() === name.toLowerCase() && f.TSType === 'string'\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private getTrackableEntities(): EntityInfo[] {\n return this.metadata.Entities\n .filter(e => e.TrackRecordChanges)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n private suggestLabelName(): string {\n const entityName = this.SelectedEntity?.Name ?? '';\n const selected = this.AvailableRecords.filter(r => r.Selected);\n if (selected.length === 1) {\n return `${selected[0].DisplayName} v1.0`;\n }\n const date = new Date().toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n return `${entityName} \\u2014 ${date}`;\n }\n\n private resetCreateDialog(): void {\n this.CreateStep = 'entity';\n this.EntitySearchText = '';\n this.SelectedEntity = null;\n this.RecordSearchText = '';\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.IsLoadingRecords = false;\n this.LabelName = '';\n this.LabelDescription = '';\n this.IsCreatingLabel = false;\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.CreateProgress = null;\n }\n}\n","<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> &middot; {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n"]}
1
+ {"version":3,"file":"label-create.component.js","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts","../../../src/lib/label-create/label-create.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n NgZone\n} from '@angular/core';\nimport { RunView, EntityInfo } from '@memberjunction/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport {\n GraphQLDataProvider,\n GraphQLVersionHistoryClient,\n CreateVersionLabelProgress\n} from '@memberjunction/graphql-dataprovider';\n\nexport interface RecordOption {\n ID: string;\n DisplayName: string;\n Selected: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-label-create',\n templateUrl: './label-create.component.html',\n styleUrls: ['./label-create.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MjLabelCreateComponent extends BaseAngularComponent implements OnInit {\n /**\n * When set, skips the entity picker step and pre-selects this entity.\n */\n @Input() PreselectedEntity: EntityInfo | null = null;\n\n /**\n * When set along with PreselectedEntity, auto-selects these record IDs\n * and skips directly to the details step.\n */\n @Input() PreselectedRecordIds: string[] = [];\n\n /** Emitted when labels are successfully created. */\n @Output() Created = new EventEmitter<{ LabelCount: number; ItemCount: number }>();\n\n /** Emitted when the user cancels. */\n @Output() Cancel = new EventEmitter<void>();\n\n // Wizard state\n public CreateStep: 'entity' | 'records' | 'details' | 'creating' | 'done' = 'entity';\n\n // Step 1: Entity selection\n public EntitySearchText = '';\n public FilteredEntities: EntityInfo[] = [];\n public SelectedEntity: EntityInfo | null = null;\n\n // Step 2: Record selection\n public RecordSearchText = '';\n public AvailableRecords: RecordOption[] = [];\n public FilteredRecords: RecordOption[] = [];\n public IsLoadingRecords = false;\n\n // Step 3: Details\n public LabelName = '';\n public LabelDescription = '';\n\n // Creating / done state\n public IsCreatingLabel = false;\n public CreateError = '';\n public CreatedLabelCount = 0;\n public CreatedItemCount = 0;\n public CreateProgress: CreateVersionLabelProgress | null = null;\n\n private get metadata() { return this.ProviderToUse; }\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) { super(); }\n\n ngOnInit(): void {\n this.resetCreateDialog();\n\n if (this.PreselectedEntity) {\n this.SelectedEntity = this.PreselectedEntity;\n\n if (this.PreselectedRecordIds.length > 0) {\n this.skipToDetailsWithPreselection();\n } else {\n this.CreateStep = 'records';\n this.loadEntityRecords(this.PreselectedEntity);\n }\n } else {\n this.FilteredEntities = this.getTrackableEntities();\n }\n }\n\n // =======================================================================\n // Pre-selection helpers\n // =======================================================================\n\n private async skipToDetailsWithPreselection(): Promise<void> {\n await this.loadEntityRecords(this.SelectedEntity!);\n this.ngZone.run(() => {\n this.preselectRecordsByIds(this.PreselectedRecordIds);\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n });\n }\n\n private preselectRecordsByIds(ids: string[]): void {\n const idSet = new Set(ids);\n for (const record of this.AvailableRecords) {\n record.Selected = idSet.has(record.ID);\n }\n }\n\n // =======================================================================\n // Step 1: Entity picker\n // =======================================================================\n\n public OnEntitySearchChange(text: string): void {\n this.EntitySearchText = text;\n const search = text.toLowerCase();\n const all = this.getTrackableEntities();\n this.FilteredEntities = search\n ? all.filter(e => e.Name.toLowerCase().includes(search))\n : all;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entity: EntityInfo): void {\n this.SelectedEntity = entity;\n this.CreateStep = 'records';\n this.loadEntityRecords(entity);\n }\n\n // =======================================================================\n // Step 2: Record selection\n // =======================================================================\n\n public OnRecordSearchChange(text: string): void {\n this.RecordSearchText = text;\n const search = text.toLowerCase();\n this.FilteredRecords = search\n ? this.AvailableRecords.filter(r => r.DisplayName.toLowerCase().includes(search))\n : [...this.AvailableRecords];\n this.cdr.markForCheck();\n }\n\n public ToggleRecordSelection(record: RecordOption): void {\n record.Selected = !record.Selected;\n this.cdr.markForCheck();\n }\n\n public SelectAllRecords(): void {\n for (const r of this.FilteredRecords) {\n r.Selected = true;\n }\n this.cdr.markForCheck();\n }\n\n public DeselectAllRecords(): void {\n for (const r of this.AvailableRecords) {\n r.Selected = false;\n }\n this.cdr.markForCheck();\n }\n\n public get SelectedRecordCount(): number {\n return this.AvailableRecords.filter(r => r.Selected).length;\n }\n\n // =======================================================================\n // Step navigation\n // =======================================================================\n\n public GoToDetailsStep(): void {\n if (this.SelectedRecordCount === 0) return;\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n }\n\n public GoBackToRecords(): void {\n this.CreateStep = 'records';\n this.cdr.markForCheck();\n }\n\n public GoBackToEntity(): void {\n this.CreateStep = 'entity';\n this.SelectedEntity = null;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.cdr.markForCheck();\n }\n\n // =======================================================================\n // Step 3: Create labels\n // =======================================================================\n\n public async CreateLabels(): Promise<void> {\n if (!this.SelectedEntity || !this.LabelName.trim()) return;\n\n this.IsCreatingLabel = true;\n this.CreateStep = 'creating';\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.cdr.markForCheck();\n\n try {\n const selected = this.AvailableRecords.filter(r => r.Selected);\n\n if (selected.length === 1) {\n await this.createSingleLabel(selected[0]);\n } else {\n await this.createGroupedLabels(selected);\n }\n\n this.CreateStep = 'done';\n } catch (e: unknown) {\n this.ngZone.run(() => {\n this.CreateError = e instanceof Error ? e.message : String(e);\n this.CreateStep = 'done';\n });\n } finally {\n this.ngZone.run(() => {\n this.IsCreatingLabel = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n public FinishCreate(): void {\n this.Created.emit({\n LabelCount: this.CreatedLabelCount,\n ItemCount: this.CreatedItemCount\n });\n }\n\n public OnCancel(): void {\n this.Cancel.emit();\n }\n\n // =======================================================================\n // Create helpers\n // =======================================================================\n\n private async createSingleLabel(record: RecordOption): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n const result = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!result.Success) {\n throw new Error(result.Error ?? 'Failed to create version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = result.ItemsCaptured ?? 0;\n });\n }\n\n private async createGroupedLabels(records: RecordOption[]): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n\n // Create parent container label (no RecordKey -> acts as a grouping label)\n const parentResult = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Entity',\n EntityName: this.SelectedEntity!.Name,\n });\n\n if (!parentResult.Success) {\n throw new Error(parentResult.Error ?? 'Failed to create parent version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = parentResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n\n // Create child labels for each selected record\n for (const record of records) {\n const childResult = await vhClient.CreateLabel({\n Name: `${this.LabelName.trim()} \\u2014 ${record.DisplayName}`,\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n ParentID: parentResult.LabelID,\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!childResult.Success) {\n console.error(`Failed to create child label for record ${record.ID}: ${childResult.Error}`);\n continue;\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount++;\n this.CreatedItemCount += childResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Data loading\n // =======================================================================\n\n private async loadEntityRecords(entity: EntityInfo): Promise<void> {\n this.IsLoadingRecords = true;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.RecordSearchText = '';\n this.cdr.markForCheck();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const nameField = this.findNameField(entity);\n const fields = nameField ? ['ID', nameField] : ['ID'];\n\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: entity.Name,\n Fields: fields,\n OrderBy: nameField ?? 'ID',\n MaxRows: 500,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableRecords = result.Results.map(r => ({\n ID: String(r['ID'] ?? ''),\n DisplayName: nameField\n ? String(r[nameField] ?? r['ID'] ?? '')\n : String(r['ID'] ?? ''),\n Selected: false\n }));\n this.FilteredRecords = [...this.AvailableRecords];\n }\n } catch (error) {\n console.error('Error loading entity records:', error);\n } finally {\n this.ngZone.run(() => {\n this.IsLoadingRecords = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Utility helpers\n // =======================================================================\n\n private findNameField(entity: EntityInfo): string | null {\n const candidates = ['Name', 'Title', 'DisplayName', 'Label', 'Subject', 'Description'];\n for (const name of candidates) {\n const field = entity.Fields.find(f =>\n f.Name.toLowerCase() === name.toLowerCase() && f.TSType === 'string'\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private getTrackableEntities(): EntityInfo[] {\n return this.metadata.Entities\n .filter(e => e.TrackRecordChanges)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n private suggestLabelName(): string {\n const entityName = this.SelectedEntity?.Name ?? '';\n const selected = this.AvailableRecords.filter(r => r.Selected);\n if (selected.length === 1) {\n return `${selected[0].DisplayName} v1.0`;\n }\n const date = new Date().toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n return `${entityName} \\u2014 ${date}`;\n }\n\n private resetCreateDialog(): void {\n this.CreateStep = 'entity';\n this.EntitySearchText = '';\n this.SelectedEntity = null;\n this.RecordSearchText = '';\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.IsLoadingRecords = false;\n this.LabelName = '';\n this.LabelDescription = '';\n this.IsCreatingLabel = false;\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.CreateProgress = null;\n }\n}\n","<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> &middot; {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n"]}
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
2
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
2
3
  import { MJVersionLabelEntityType, MJVersionLabelItemEntityType, MJVersionLabelRestoreEntityType } from '@memberjunction/core-entities';
3
4
  import { MicroViewData, FieldChangeView } from '../types';
4
5
  import { EntityLinkClickEvent } from '../record-micro-view/record-micro-view.component';
@@ -45,7 +46,7 @@ interface DependencyEntityView {
45
46
  Depth: number;
46
47
  IsExpanded: boolean;
47
48
  }
48
- export declare class MjLabelDetailComponent implements OnInit, OnDestroy {
49
+ export declare class MjLabelDetailComponent extends BaseAngularComponent implements OnInit, OnDestroy {
49
50
  private cdr;
50
51
  private ngZone;
51
52
  private elRef;
@@ -91,7 +92,7 @@ export declare class MjLabelDetailComponent implements OnInit, OnDestroy {
91
92
  private resizeMinWidth;
92
93
  private resizeMaxWidthRatio;
93
94
  private static readonly PREFS_KEY;
94
- private metadata;
95
+ private get metadata();
95
96
  private destroy$;
96
97
  private boundOnResizeMove;
97
98
  private boundOnResizeEnd;
@@ -1 +1 @@
1
- {"version":3,"file":"label-detail.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-detail/label-detail.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"label-detail.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-detail/label-detail.component.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
- import { RunView, Metadata, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';
3
+ import { RunView, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';
4
4
  import { UserInfoEngine } from '@memberjunction/core-entities';
5
5
  import { UUIDsEqual } from '@memberjunction/global';
6
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/common";
8
9
  import * as i2 from "@angular/forms";
@@ -1089,7 +1090,7 @@ function MjLabelDetailComponent_Conditional_44_Template(rf, ctx) { if (rf & 1) {
1089
1090
  // =========================================================================
1090
1091
  // Component
1091
1092
  // =========================================================================
1092
- export class MjLabelDetailComponent {
1093
+ export class MjLabelDetailComponent extends BaseAngularComponent {
1093
1094
  cdr;
1094
1095
  ngZone;
1095
1096
  elRef;
@@ -1145,12 +1146,13 @@ export class MjLabelDetailComponent {
1145
1146
  resizeMinWidth = 400;
1146
1147
  resizeMaxWidthRatio = 0.92;
1147
1148
  static PREFS_KEY = 'VersionHistory.DetailPanel.UserPreferences';
1148
- metadata = new Metadata();
1149
+ get metadata() { return this.ProviderToUse; }
1149
1150
  destroy$ = new Subject();
1150
1151
  // Bound handlers for resize (need references for removeEventListener)
1151
1152
  boundOnResizeMove = this.onResizeMove.bind(this);
1152
1153
  boundOnResizeEnd = this.onResizeEnd.bind(this);
1153
1154
  constructor(cdr, ngZone, elRef) {
1155
+ super();
1154
1156
  this.cdr = cdr;
1155
1157
  this.ngZone = ngZone;
1156
1158
  this.elRef = elRef;
@@ -1211,7 +1213,7 @@ export class MjLabelDetailComponent {
1211
1213
  this.IsArchiving = true;
1212
1214
  this.cdr.markForCheck();
1213
1215
  try {
1214
- const md = new Metadata();
1216
+ const md = this.ProviderToUse;
1215
1217
  const label = await md.GetEntityObject('MJ: Version Labels');
1216
1218
  await label.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.Label.ID }]));
1217
1219
  label.Status = 'Archived';
@@ -1241,7 +1243,7 @@ export class MjLabelDetailComponent {
1241
1243
  this.IsLoadingItems = true;
1242
1244
  this.cdr.markForCheck();
1243
1245
  try {
1244
- const rv = new RunView();
1246
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
1245
1247
  const result = await rv.RunView({
1246
1248
  EntityName: 'MJ: Version Label Items',
1247
1249
  ExtraFilter: `VersionLabelID = '${this.Label.ID}'`,
@@ -1406,7 +1408,7 @@ export class MjLabelDetailComponent {
1406
1408
  this.IsLoadingDiff = true;
1407
1409
  this.cdr.markForCheck();
1408
1410
  try {
1409
- const rv = new RunView();
1411
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
1410
1412
  const entityGroups = [];
1411
1413
  let totalChanged = 0;
1412
1414
  let totalUnchanged = 0;
@@ -1630,7 +1632,7 @@ export class MjLabelDetailComponent {
1630
1632
  this.IsLoadingHistory = true;
1631
1633
  this.cdr.markForCheck();
1632
1634
  try {
1633
- const rv = new RunView();
1635
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
1634
1636
  const result = await rv.RunView({
1635
1637
  EntityName: 'MJ: Version Label Restores',
1636
1638
  ExtraFilter: `VersionLabelID = '${this.Label.ID}'`,
@@ -1975,7 +1977,7 @@ export class MjLabelDetailComponent {
1975
1977
  static ɵfac = function MjLabelDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef)); };
1976
1978
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelDetailComponent, selectors: [["mj-label-detail-panel"]], hostBindings: function MjLabelDetailComponent_HostBindings(rf, ctx) { if (rf & 1) {
1977
1979
  i0.ɵɵlistener("keydown.escape", function MjLabelDetailComponent_keydown_escape_HostBindingHandler() { return ctx.OnEscapeKey(); }, i0.ɵɵresolveDocument);
1978
- } }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-camera"], [1, "kpi-mini-content"], [1, "kpi-mini-value"], [1, "kpi-mini-label"], [1, "fa-solid", "fa-table"], [1, "tab-bar"], [1, "breadcrumb-bar"], [1, "tab-content"], [1, "kpi-mini-icon", 2, "background", "rgba(16, 185, 129, 0.1)", "color", "#10b981"], [1, "fa-solid", "fa-stopwatch"], [1, "kpi-mini-icon", 2, "background", "rgba(245, 158, 11, 0.1)", "color", "#f59e0b"], [1, "fa-solid", "fa-layer-group"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-info-circle", "tab-icon"], [1, "fa-solid", "fa-camera", "tab-icon"], [1, "tab-count"], [1, "fa-solid", "fa-diagram-project", "tab-icon"], [1, "fa-solid", "fa-code-compare", "tab-icon"], [1, "fa-solid", "fa-clock-rotate-left", "tab-icon"], [1, "breadcrumb-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "breadcrumb-trail"], [1, "breadcrumb-item", "clickable", 3, "click"], [1, "fa-solid", "fa-camera", "breadcrumb-icon"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], [1, "breadcrumb-item", "current"], [1, "fa-solid", "fa-file-lines", "breadcrumb-icon"], ["text", "Loading label data..."], [1, "tab-pane"], [1, "detail-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "detail-grid"], [1, "detail-field"], [1, "field-label"], [1, "field-value"], [1, "inline-badge", 3, "ngClass"], [2, "margin-right", "6px"], [1, "record-card"], [1, "fa-solid", "fa-clock", "section-icon"], [2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "field-value", "field-mono"], [1, "record-card-main"], [1, "record-card-icon"], [1, "record-card-info"], [1, "record-card-name"], [1, "record-card-name", "record-card-name-loading"], [1, "record-card-entity"], [1, "record-card-id"], ["title", "Open record", 1, "record-card-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-align-left", "section-icon"], [1, "description-text"], [1, "fa-solid", "fa-user", 2, "margin-right", "6px", "opacity", "0.5"], [1, "fa-solid", "fa-sitemap", "section-icon"], [1, "hierarchy-item", "parent"], [1, "hierarchy-children"], [1, "fa-solid", "fa-arrow-up", "hierarchy-icon"], [1, "hierarchy-label"], [1, "hierarchy-name"], [1, "hierarchy-item", "child"], [1, "fa-solid", "fa-arrow-turn-down-right", "hierarchy-icon"], [1, "hierarchy-meta"], [1, "snapshot-toolbar"], [1, "snapshot-search"], [1, "fa-solid", "fa-search", "snapshot-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "snapshot-search-input", 3, "ngModelChange", "ngModel"], [1, "snapshot-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-a-z"], [1, "fa-solid", "fa-arrow-up-z-a"], ["title", "Sort by record count", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-9-1"], [1, "fa-solid", "fa-arrow-up-1-9"], [1, "snapshot-view-toggle"], [1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-list"], [1, "fa-solid", "fa-grip"], [1, "snapshot-groups"], [1, "snapshot-group"], [1, "tab-empty"], [1, "group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "group-chevron"], [1, "group-entity-icon"], [1, "group-name"], [1, "group-count-inline"], [1, "group-content"], [1, "group-names-loading"], [1, "snapshot-cards"], ["text", "Loading record names...", "size", "small"], [1, "snapshot-list-item"], [1, "snapshot-list-item", 3, "click"], [1, "fa-solid", "fa-file-lines", "snapshot-item-icon"], [1, "snapshot-item-name"], [1, "fa-solid", "fa-chevron-right", "snapshot-item-arrow"], [1, "snapshot-card"], [1, "snapshot-card", 3, "click"], [1, "snapshot-card-header"], [1, "fa-solid", "fa-file-lines"], [1, "snapshot-card-name"], [1, "fa-solid", "fa-camera", "tab-empty-icon"], ["text", "Loading dependencies..."], [1, "dep-root"], [1, "dep-root-entity"], [1, "dep-root-icon"], [1, "dep-root-name"], [1, "dep-root-badge"], [1, "dep-empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-diagram-project", "tab-empty-icon"], [1, "dep-node"], [1, "dep-node-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "dep-chevron", 3, "expanded"], [1, "dep-node-spacer"], [1, "dep-node-icon"], [1, "dep-node-name"], [1, "dep-node-field"], [1, "dep-node-count"], [1, "fa-solid", "fa-chevron-right", "dep-chevron"], ["text", "Computing differences..."], [1, "diff-summary"], [1, "diff-stat"], [1, "diff-stat-value", "change-modified"], [1, "diff-stat-label"], [1, "diff-stat-value"], [1, "diff-toolbar"], [1, "diff-groups"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-group"], [1, "diff-group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "diff-chevron"], [1, "diff-group-icon"], [1, "diff-group-name"], [1, "diff-group-count", "change-modified"], [1, "diff-group-content"], [1, "diff-record"], [1, "diff-record-header"], [3, "ngClass"], [1, "diff-record-id"], [1, "diff-fields"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-circle-check", "tab-empty-icon", 2, "color", "#10b981"], ["text", "Loading history..."], [1, "fa-solid", "fa-clock-rotate-left", "section-icon"], [1, "history-list"], [1, "history-item"], [1, "history-item-icon", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "history-item-content"], [1, "history-item-title"], [1, "history-item-meta"], [1, "history-item-date"], [1, "fa-solid", "fa-tags", "section-icon"], [1, "history-item-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tag"], [1, "inline-badge", "small", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left", "tab-empty-icon"], [3, "Close", "EntityLinkClick", "OpenRecord", "Data", "Inline"]], template: function MjLabelDetailComponent_Template(rf, ctx) { if (rf & 1) {
1980
+ } }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-camera"], [1, "kpi-mini-content"], [1, "kpi-mini-value"], [1, "kpi-mini-label"], [1, "fa-solid", "fa-table"], [1, "tab-bar"], [1, "breadcrumb-bar"], [1, "tab-content"], [1, "kpi-mini-icon", 2, "background", "rgba(16, 185, 129, 0.1)", "color", "#10b981"], [1, "fa-solid", "fa-stopwatch"], [1, "kpi-mini-icon", 2, "background", "rgba(245, 158, 11, 0.1)", "color", "#f59e0b"], [1, "fa-solid", "fa-layer-group"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-info-circle", "tab-icon"], [1, "fa-solid", "fa-camera", "tab-icon"], [1, "tab-count"], [1, "fa-solid", "fa-diagram-project", "tab-icon"], [1, "fa-solid", "fa-code-compare", "tab-icon"], [1, "fa-solid", "fa-clock-rotate-left", "tab-icon"], [1, "breadcrumb-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "breadcrumb-trail"], [1, "breadcrumb-item", "clickable", 3, "click"], [1, "fa-solid", "fa-camera", "breadcrumb-icon"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], [1, "breadcrumb-item", "current"], [1, "fa-solid", "fa-file-lines", "breadcrumb-icon"], ["text", "Loading label data..."], [1, "tab-pane"], [1, "detail-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "detail-grid"], [1, "detail-field"], [1, "field-label"], [1, "field-value"], [1, "inline-badge", 3, "ngClass"], [2, "margin-right", "6px"], [1, "record-card"], [1, "fa-solid", "fa-clock", "section-icon"], [2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "field-value", "field-mono"], [1, "record-card-main"], [1, "record-card-icon"], [1, "record-card-info"], [1, "record-card-name"], [1, "record-card-name", "record-card-name-loading"], [1, "record-card-entity"], [1, "record-card-id"], ["title", "Open record", 1, "record-card-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-align-left", "section-icon"], [1, "description-text"], [1, "fa-solid", "fa-user", 2, "margin-right", "6px", "opacity", "0.5"], [1, "fa-solid", "fa-sitemap", "section-icon"], [1, "hierarchy-item", "parent"], [1, "hierarchy-children"], [1, "fa-solid", "fa-arrow-up", "hierarchy-icon"], [1, "hierarchy-label"], [1, "hierarchy-name"], [1, "hierarchy-item", "child"], [1, "fa-solid", "fa-arrow-turn-down-right", "hierarchy-icon"], [1, "hierarchy-meta"], [1, "snapshot-toolbar"], [1, "snapshot-search"], [1, "fa-solid", "fa-search", "snapshot-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "snapshot-search-input", 3, "ngModelChange", "ngModel"], [1, "snapshot-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-a-z"], [1, "fa-solid", "fa-arrow-up-z-a"], ["title", "Sort by record count", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-9-1"], [1, "fa-solid", "fa-arrow-up-1-9"], [1, "snapshot-view-toggle"], [1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-list"], [1, "fa-solid", "fa-grip"], [1, "snapshot-groups"], [1, "snapshot-group"], [1, "tab-empty"], [1, "group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "group-chevron"], [1, "group-entity-icon"], [1, "group-name"], [1, "group-count-inline"], [1, "group-content"], [1, "group-names-loading"], [1, "snapshot-cards"], ["text", "Loading record names...", "size", "small"], [1, "snapshot-list-item"], [1, "snapshot-list-item", 3, "click"], [1, "fa-solid", "fa-file-lines", "snapshot-item-icon"], [1, "snapshot-item-name"], [1, "fa-solid", "fa-chevron-right", "snapshot-item-arrow"], [1, "snapshot-card"], [1, "snapshot-card", 3, "click"], [1, "snapshot-card-header"], [1, "fa-solid", "fa-file-lines"], [1, "snapshot-card-name"], [1, "fa-solid", "fa-camera", "tab-empty-icon"], ["text", "Loading dependencies..."], [1, "dep-root"], [1, "dep-root-entity"], [1, "dep-root-icon"], [1, "dep-root-name"], [1, "dep-root-badge"], [1, "dep-empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-diagram-project", "tab-empty-icon"], [1, "dep-node"], [1, "dep-node-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "dep-chevron", 3, "expanded"], [1, "dep-node-spacer"], [1, "dep-node-icon"], [1, "dep-node-name"], [1, "dep-node-field"], [1, "dep-node-count"], [1, "fa-solid", "fa-chevron-right", "dep-chevron"], ["text", "Computing differences..."], [1, "diff-summary"], [1, "diff-stat"], [1, "diff-stat-value", "change-modified"], [1, "diff-stat-label"], [1, "diff-stat-value"], [1, "diff-toolbar"], [1, "diff-groups"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-group"], [1, "diff-group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "diff-chevron"], [1, "diff-group-icon"], [1, "diff-group-name"], [1, "diff-group-count", "change-modified"], [1, "diff-group-content"], [1, "diff-record"], [1, "diff-record-header"], [3, "ngClass"], [1, "diff-record-id"], [1, "diff-fields"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-circle-check", "tab-empty-icon", 2, "color", "#10b981"], ["text", "Loading history..."], [1, "fa-solid", "fa-clock-rotate-left", "section-icon"], [1, "history-list"], [1, "history-item"], [1, "history-item-icon", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "history-item-content"], [1, "history-item-title"], [1, "history-item-meta"], [1, "history-item-date"], [1, "fa-solid", "fa-tags", "section-icon"], [1, "history-item-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tag"], [1, "inline-badge", "small", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left", "tab-empty-icon"], [3, "Close", "EntityLinkClick", "OpenRecord", "Data", "Inline"]], template: function MjLabelDetailComponent_Template(rf, ctx) { if (rf & 1) {
1979
1981
  i0.ɵɵelementStart(0, "div", 1);
1980
1982
  i0.ɵɵlistener("click", function MjLabelDetailComponent_Template_div_click_0_listener() { return ctx.OnBackdropClick(); });
1981
1983
  i0.ɵɵelementEnd();
@@ -2090,5 +2092,5 @@ export class MjLabelDetailComponent {
2090
2092
  type: HostListener,
2091
2093
  args: ['document:keydown.escape']
2092
2094
  }] }); })();
2093
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelDetailComponent, { className: "MjLabelDetailComponent", filePath: "src/lib/label-detail/label-detail.component.ts", lineNumber: 78 }); })();
2095
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelDetailComponent, { className: "MjLabelDetailComponent", filePath: "src/lib/label-detail/label-detail.component.ts", lineNumber: 79 }); })();
2094
2096
  //# sourceMappingURL=label-detail.component.js.map