@memberjunction/ng-explorer-core 1.2.1 → 1.3.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 (28) hide show
  1. package/dist/app-routing.module.d.ts +28 -0
  2. package/dist/app-routing.module.d.ts.map +1 -0
  3. package/dist/app-routing.module.js +177 -0
  4. package/dist/lib/favorites/favorites.component.d.ts.map +1 -1
  5. package/dist/lib/favorites/favorites.component.js +5 -3
  6. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +1 -1
  7. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +1 -1
  8. package/dist/lib/generic-browser-list/generic-browser-list.component.js +15 -13
  9. package/dist/lib/navigation/navigation.component.js +1 -1
  10. package/dist/lib/resource-wrappers/query-resource.component.d.ts.map +1 -1
  11. package/dist/lib/resource-wrappers/query-resource.component.js +3 -2
  12. package/dist/lib/resource-wrappers/record-resource.component.d.ts +3 -3
  13. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  14. package/dist/lib/resource-wrappers/record-resource.component.js +18 -16
  15. package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +1 -1
  16. package/dist/lib/resource-wrappers/report-resource.component.js +3 -2
  17. package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
  18. package/dist/lib/resource-wrappers/view-resource.component.js +3 -2
  19. package/dist/lib/single-record/single-record.component.d.ts +4 -4
  20. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  21. package/dist/lib/single-record/single-record.component.js +10 -10
  22. package/dist/lib/single-view/single-view.component.d.ts +0 -5
  23. package/dist/lib/single-view/single-view.component.d.ts.map +1 -1
  24. package/dist/lib/single-view/single-view.component.js +35 -67
  25. package/dist/module.d.ts +32 -31
  26. package/dist/module.d.ts.map +1 -1
  27. package/dist/module.js +15 -10
  28. package/package.json +16 -16
@@ -17,8 +17,7 @@ var EntityRecordResource_1;
17
17
  import { Component } from '@angular/core';
18
18
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
19
19
  import { RegisterClass } from '@memberjunction/global';
20
- import { Metadata } from '@memberjunction/core';
21
- import { SharedService } from '@memberjunction/ng-shared';
20
+ import { Metadata, CompositeKey } from '@memberjunction/core';
22
21
  import * as i0 from "@angular/core";
23
22
  import * as i1 from "@memberjunction/ng-container-directives";
24
23
  import * as i2 from "../single-record/single-record.component";
@@ -26,38 +25,41 @@ export function LoadRecordResource() {
26
25
  const test = new EntityRecordResource(); // this looks really dumb. Thing is, in production builds, tree shaking causes the class below to not be included in the bundle. This is a hack to force it to be included.
27
26
  }
28
27
  let EntityRecordResource = EntityRecordResource_1 = class EntityRecordResource extends BaseResourceComponent {
29
- get primaryKeyValues() {
30
- return EntityRecordResource_1.GetPrimaryKeyValues(this.Data);
28
+ get CompositeKey() {
29
+ return EntityRecordResource_1.GetCompositeKey(this.Data);
31
30
  }
32
- static GetPrimaryKeyValues(data) {
31
+ static GetCompositeKey(data) {
33
32
  const md = new Metadata();
34
33
  const e = md.Entities.find(e => e.Name.trim().toLowerCase() === data.Configuration.Entity.trim().toLowerCase());
35
- if (!e)
34
+ if (!e) {
36
35
  throw new Error(`Entity ${data.Configuration.Entity} not found in metadata`);
37
- const pKeys = SharedService.ParsePrimaryKeys(e, data.ResourceRecordID);
38
- return pKeys;
36
+ }
37
+ let compositeKey = new CompositeKey();
38
+ compositeKey.LoadFromURLSegment(e, data.ResourceRecordID);
39
+ return compositeKey;
39
40
  }
40
41
  GetResourceDisplayName(data) {
41
42
  return __awaiter(this, void 0, void 0, function* () {
42
- if (!data.Configuration.Entity)
43
+ if (!data.Configuration.Entity) {
43
44
  return '';
45
+ }
44
46
  else {
45
47
  const md = new Metadata();
46
- const pKeys = EntityRecordResource_1.GetPrimaryKeyValues(data);
47
- const name = yield md.GetEntityRecordName(data.Configuration.Entity, pKeys);
48
- const displayId = pKeys.length > 1 ? pKeys.map(p => p.Value).join(', ') : pKeys[0].Value;
48
+ let compositeKey = EntityRecordResource_1.GetCompositeKey(data);
49
+ const name = yield md.GetEntityRecordName(data.Configuration.Entity, compositeKey);
50
+ const displayId = compositeKey.KeyValuePairs.length > 1 ? compositeKey.Values() : compositeKey.GetValueByIndex(0);
49
51
  return (name ? name : data.Configuration.Entity) + ` (${displayId})`;
50
52
  }
51
53
  });
52
54
  }
53
55
  };
54
56
  EntityRecordResource.ɵfac = /*@__PURE__*/ (() => { let ɵEntityRecordResource_BaseFactory; return function EntityRecordResource_Factory(t) { return (ɵEntityRecordResource_BaseFactory || (ɵEntityRecordResource_BaseFactory = i0.ɵɵgetInheritedFactory(EntityRecordResource)))(t || EntityRecordResource); }; })();
55
- EntityRecordResource.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordResource, selectors: [["mj-record-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 2, consts: [["mjFillContainer", "", 3, "primaryKeyValues", "entityName", "loadComplete"]], template: function EntityRecordResource_Template(rf, ctx) { if (rf & 1) {
57
+ EntityRecordResource.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityRecordResource, selectors: [["mj-record-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 2, consts: [["mjFillContainer", "", 3, "CompositeKey", "entityName", "loadComplete"]], template: function EntityRecordResource_Template(rf, ctx) { if (rf & 1) {
56
58
  i0.ɵɵelementStart(0, "mj-single-record", 0);
57
59
  i0.ɵɵlistener("loadComplete", function EntityRecordResource_Template_mj_single_record_loadComplete_0_listener() { return ctx.NotifyLoadComplete(); });
58
60
  i0.ɵɵelementEnd();
59
61
  } if (rf & 2) {
60
- i0.ɵɵproperty("primaryKeyValues", ctx.primaryKeyValues)("entityName", ctx.Data.Configuration.Entity);
62
+ i0.ɵɵproperty("CompositeKey", ctx.CompositeKey)("entityName", ctx.Data.Configuration.Entity);
61
63
  } }, dependencies: [i1.FillContainer, i2.SingleRecordComponent], encapsulation: 2 });
62
64
  EntityRecordResource = EntityRecordResource_1 = __decorate([
63
65
  RegisterClass(BaseResourceComponent, 'Records')
@@ -67,7 +69,7 @@ export { EntityRecordResource };
67
69
  type: Component,
68
70
  args: [{
69
71
  selector: 'mj-record-resource',
70
- template: `<mj-single-record [primaryKeyValues]="this.primaryKeyValues" [entityName]="Data.Configuration.Entity" (loadComplete)="NotifyLoadComplete()" mjFillContainer></mj-single-record>`
72
+ template: `<mj-single-record [CompositeKey]="this.CompositeKey" [entityName]="Data.Configuration.Entity" (loadComplete)="NotifyLoadComplete()" mjFillContainer></mj-single-record>`
71
73
  }]
72
74
  }], null, null); })();
73
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityRecordResource, { className: "EntityRecordResource", filePath: "src/lib/resource-wrappers/record-resource.component.ts", lineNumber: 16 }); })();
75
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityRecordResource, { className: "EntityRecordResource", filePath: "src/lib/resource-wrappers/record-resource.component.ts", lineNumber: 15 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"report-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/report-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,kBAAkB,SAEjC;AAED,qBAKa,cAAe,SAAQ,qBAAsB,YAAW,MAAM;IACvE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,cAAc;2CAAd,cAAc;CAS1B"}
1
+ {"version":3,"file":"report-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/report-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,kBAAkB,SAEjC;AAED,qBAKa,cAAe,SAAQ,qBAAsB,YAAW,MAAM;IACvE,QAAQ,IAAI,IAAI;IAGV,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCAJxD,cAAc;2CAAd,cAAc;CAU1B"}
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
16
16
  import { Component } from '@angular/core';
17
17
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
18
18
  import { RegisterClass } from '@memberjunction/global';
19
- import { Metadata } from '@memberjunction/core';
19
+ import { CompositeKey, Metadata } from '@memberjunction/core';
20
20
  import * as i0 from "@angular/core";
21
21
  import * as i1 from "../single-report/single-report.component";
22
22
  export function LoadReportResource() {
@@ -28,7 +28,8 @@ let ReportResource = class ReportResource extends BaseResourceComponent {
28
28
  GetResourceDisplayName(data) {
29
29
  return __awaiter(this, void 0, void 0, function* () {
30
30
  const md = new Metadata();
31
- const name = yield md.GetEntityRecordName('Reports', [{ FieldName: "ID", Value: data.ResourceRecordID }]);
31
+ let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
32
+ const name = yield md.GetEntityRecordName('Reports', compositeKey);
32
33
  return `${name ? name : 'Report ID: ' + data.ResourceRecordID}`;
33
34
  });
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,gBAAgB,SAE/B;AAED,qBAUa,gBAAiB,SAAQ,qBAAqB;IACjD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCADxD,gBAAgB;2CAAhB,gBAAgB;CAa5B"}
1
+ {"version":3,"file":"view-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/view-resource.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;;AAIhF,wBAAgB,gBAAgB,SAE/B;AAED,qBAUa,gBAAiB,SAAQ,qBAAqB;IACjD,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;yCADxD,gBAAgB;2CAAhB,gBAAgB;CAc5B"}
@@ -16,7 +16,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
16
16
  import { Component } from '@angular/core';
17
17
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
18
18
  import { RegisterClass } from '@memberjunction/global';
19
- import { Metadata } from '@memberjunction/core';
19
+ import { CompositeKey, Metadata } from '@memberjunction/core';
20
20
  import * as i0 from "@angular/core";
21
21
  import * as i1 from "../single-view/single-view.component";
22
22
  export function LoadViewResource() {
@@ -28,7 +28,8 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
28
28
  return __awaiter(this, void 0, void 0, function* () {
29
29
  const md = new Metadata();
30
30
  if (data.ResourceRecordID > 0) {
31
- const name = yield md.GetEntityRecordName('User Views', [{ FieldName: "ID", Value: data.ResourceRecordID }]);
31
+ let compositeKey = new CompositeKey([{ FieldName: "ID", Value: data.ResourceRecordID }]);
32
+ const name = yield md.GetEntityRecordName('User Views', compositeKey);
32
33
  return name ? name : 'View: ' + data.ResourceRecordID;
33
34
  }
34
35
  else if (((_a = data.Configuration) === null || _a === void 0 ? void 0 : _a.Entity) && ((_b = data.Configuration) === null || _b === void 0 ? void 0 : _b.Entity.length) > 0) {
@@ -1,12 +1,12 @@
1
1
  import { AfterViewInit, EventEmitter, OnInit } from '@angular/core';
2
2
  import { ActivatedRoute } from '@angular/router';
3
- import { PrimaryKeyValue } from '@memberjunction/core';
3
+ import { CompositeKey } from '@memberjunction/core';
4
4
  import { Container } from '@memberjunction/ng-container-directives';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class SingleRecordComponent implements OnInit, AfterViewInit {
7
7
  private route;
8
8
  formContainer: Container;
9
- primaryKeyValues: PrimaryKeyValue[];
9
+ CompositeKey: CompositeKey;
10
10
  entityName: string | null;
11
11
  loadComplete: EventEmitter<any>;
12
12
  constructor(route: ActivatedRoute);
@@ -15,8 +15,8 @@ export declare class SingleRecordComponent implements OnInit, AfterViewInit {
15
15
  loading: boolean;
16
16
  ngOnInit(): void;
17
17
  ngAfterViewInit(): void;
18
- LoadForm(primaryKeyValues: PrimaryKeyValue[], entityName: string): Promise<void>;
18
+ LoadForm(compositeKey: CompositeKey, entityName: string): Promise<void>;
19
19
  static ɵfac: i0.ɵɵFactoryDeclaration<SingleRecordComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<SingleRecordComponent, "mj-single-record", never, { "primaryKeyValues": { "alias": "primaryKeyValues"; "required": false; }; "entityName": { "alias": "entityName"; "required": false; }; }, { "loadComplete": "loadComplete"; }, never, never, false, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<SingleRecordComponent, "mj-single-record", never, { "CompositeKey": { "alias": "CompositeKey"; "required": false; }; "entityName": { "alias": "entityName"; "required": false; }; }, { "loadComplete": "loadComplete"; }, never, never, false, never>;
21
21
  }
22
22
  //# sourceMappingURL=single-record.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"single-record.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-record/single-record.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,YAAY,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAuC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5F,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;;AAIpE,qBAKa,qBAAsB,YAAW,MAAM,EAAE,aAAa;IAOpD,OAAO,CAAC,KAAK;IANY,aAAa,EAAG,SAAS,CAAC;IAChD,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAM;IAE9B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;gBAEtD,KAAK,EAAE,cAAc;IAInC,cAAc,EAAE,MAAM,CAAK;IAC3B,cAAc,EAAE,OAAO,CAAS;IAChC,OAAO,EAAE,OAAO,CAAQ;IAE/B,QAAQ,IAAI,IAAI;IAGhB,eAAe;IAIT,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM;yCAtB3D,qBAAqB;2CAArB,qBAAqB;CAyDjC"}
1
+ {"version":3,"file":"single-record.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-record/single-record.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,YAAY,EAAS,MAAM,EAAqB,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAA0B,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;;AAIpE,qBAKa,qBAAsB,YAAW,MAAM,EAAE,aAAa;IAOpD,OAAO,CAAC,KAAK;IANY,aAAa,EAAG,SAAS,CAAC;IAChD,YAAY,EAAE,YAAY,CAAsB;IAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAM;IAE9B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;gBAEtD,KAAK,EAAE,cAAc;IAInC,cAAc,EAAE,MAAM,CAAK;IAC3B,cAAc,EAAE,OAAO,CAAS;IAChC,OAAO,EAAE,OAAO,CAAQ;IAE/B,QAAQ,IAAI,IAAI;IAGhB,eAAe;IAIT,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;yCAtBlD,qBAAqB;2CAArB,qBAAqB;CAyDjC"}
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
11
- import { Metadata } from '@memberjunction/core';
11
+ import { Metadata, CompositeKey } from '@memberjunction/core';
12
12
  import { MJGlobal } from '@memberjunction/global';
13
13
  import { Container } from '@memberjunction/ng-container-directives';
14
14
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
@@ -24,7 +24,7 @@ function SingleRecordComponent_ng_template_1_Template(rf, ctx) { }
24
24
  export class SingleRecordComponent {
25
25
  constructor(route) {
26
26
  this.route = route;
27
- this.primaryKeyValues = [];
27
+ this.CompositeKey = new CompositeKey();
28
28
  this.entityName = '';
29
29
  this.loadComplete = new EventEmitter();
30
30
  this.appDescription = '';
@@ -34,14 +34,14 @@ export class SingleRecordComponent {
34
34
  ngOnInit() {
35
35
  }
36
36
  ngAfterViewInit() {
37
- this.LoadForm(this.primaryKeyValues, this.entityName);
37
+ this.LoadForm(this.CompositeKey, this.entityName);
38
38
  }
39
- LoadForm(primaryKeyValues, entityName) {
39
+ LoadForm(compositeKey, entityName) {
40
40
  return __awaiter(this, void 0, void 0, function* () {
41
41
  // Perform any necessary actions with the ViewID, such as fetching data
42
- if (primaryKeyValues && entityName) {
42
+ if (compositeKey.KeyValuePairs && entityName) {
43
43
  this.entityName = entityName;
44
- this.primaryKeyValues = primaryKeyValues;
44
+ this.CompositeKey = compositeKey;
45
45
  const formReg = MJGlobal.Instance.ClassFactory.GetRegistration(BaseFormComponent, entityName);
46
46
  const md = new Metadata();
47
47
  const entity = md.Entities.find(e => {
@@ -51,7 +51,7 @@ export class SingleRecordComponent {
51
51
  if (formReg) {
52
52
  const record = yield md.GetEntityObject(entityName);
53
53
  if (record) {
54
- yield record.InnerLoad(primaryKeyValues);
54
+ yield record.InnerLoad(compositeKey);
55
55
  const viewContainerRef = this.formContainer.viewContainerRef;
56
56
  viewContainerRef.clear();
57
57
  const componentRef = viewContainerRef.createComponent(formReg.SubClass);
@@ -61,7 +61,7 @@ export class SingleRecordComponent {
61
61
  this.loadComplete.emit();
62
62
  }
63
63
  else
64
- throw new Error(`Unable to load entity ${entityName} with primary key values: ${primaryKeyValues.map(p => p.FieldName + ': ' + p.Value).join(', ')}`);
64
+ throw new Error(`Unable to load entity ${entityName} with primary key values: ${compositeKey.ToString()}`);
65
65
  }
66
66
  this.loading = false;
67
67
  }
@@ -74,7 +74,7 @@ SingleRecordComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Singl
74
74
  } if (rf & 2) {
75
75
  let _t;
76
76
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.formContainer = _t.first);
77
- } }, inputs: { primaryKeyValues: "primaryKeyValues", entityName: "entityName" }, outputs: { loadComplete: "loadComplete" }, decls: 2, vars: 1, consts: [["type", "converging-spinner", 4, "ngIf"], ["mjContainer", ""], ["type", "converging-spinner"]], template: function SingleRecordComponent_Template(rf, ctx) { if (rf & 1) {
77
+ } }, inputs: { CompositeKey: "CompositeKey", entityName: "entityName" }, outputs: { loadComplete: "loadComplete" }, decls: 2, vars: 1, consts: [["type", "converging-spinner", 4, "ngIf"], ["mjContainer", ""], ["type", "converging-spinner"]], template: function SingleRecordComponent_Template(rf, ctx) { if (rf & 1) {
78
78
  i0.ɵɵtemplate(0, SingleRecordComponent_kendo_loader_0_Template, 1, 0, "kendo-loader", 0)(1, SingleRecordComponent_ng_template_1_Template, 0, 0, "ng-template", 1);
79
79
  } if (rf & 2) {
80
80
  i0.ɵɵproperty("ngIf", ctx.loading);
@@ -85,7 +85,7 @@ SingleRecordComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Singl
85
85
  }], () => [{ type: i1.ActivatedRoute }], { formContainer: [{
86
86
  type: ViewChild,
87
87
  args: [Container, { static: true }]
88
- }], primaryKeyValues: [{
88
+ }], CompositeKey: [{
89
89
  type: Input
90
90
  }], entityName: [{
91
91
  type: Input
@@ -5,14 +5,12 @@ import { EntityInfo } from '@memberjunction/core';
5
5
  import { ActivatedRoute, Router } from '@angular/router';
6
6
  import { UserViewEntity } from '@memberjunction/core-entities';
7
7
  import { SharedService } from '@memberjunction/ng-shared';
8
- import { UserViewPropertiesDialogComponent } from '@memberjunction/ng-user-view-properties';
9
8
  import * as i0 from "@angular/core";
10
9
  export declare class SingleViewComponent implements AfterViewInit, OnInit {
11
10
  private router;
12
11
  private route;
13
12
  private sharedService;
14
13
  viewGridWithAnalysis: UserViewGridWithAnalysisComponent;
15
- viewPropertiesDialog: UserViewPropertiesDialogComponent | null;
16
14
  viewId: number | null;
17
15
  viewName: string | null;
18
16
  selectedView: UserViewEntity | null;
@@ -22,14 +20,12 @@ export declare class SingleViewComponent implements AfterViewInit, OnInit {
22
20
  selectedEntity: EntityInfo | null;
23
21
  showSearch: boolean;
24
22
  searchText: string;
25
- headerTitle: string;
26
23
  private searchDebounce$;
27
24
  private _deferLoadCount;
28
25
  constructor(router: Router, route: ActivatedRoute, sharedService: SharedService);
29
26
  ngAfterViewInit(): void;
30
27
  ngOnInit(): void;
31
28
  private initialLoad;
32
- private setHeaderTitle;
33
29
  handleRowClick(args: GridRowClickedEvent): Promise<void>;
34
30
  LoadView(viewInfo: UserViewEntity): Promise<void>;
35
31
  LoadDynamicView(): Promise<void>;
@@ -38,7 +34,6 @@ export declare class SingleViewComponent implements AfterViewInit, OnInit {
38
34
  private setupSearchDebounce;
39
35
  private search;
40
36
  viewPropertiesDialogClosed(args: any): void;
41
- openPropertiesDialog(): void;
42
37
  static ɵfac: i0.ɵɵFactoryDeclaration<SingleViewComponent, never>;
43
38
  static ɵcmp: i0.ɵɵComponentDeclaration<SingleViewComponent, "mj-single-view", never, { "viewId": { "alias": "viewId"; "required": false; }; "viewName": { "alias": "viewName"; "required": false; }; "selectedView": { "alias": "selectedView"; "required": false; }; "extraFilter": { "alias": "extraFilter"; "required": false; }; "entityName": { "alias": "entityName"; "required": false; }; }, { "loadComplete": "loadComplete"; }, never, never, false, never>;
44
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"single-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-view/single-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAY,UAAU,EAAY,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EAA0B,cAAc,EAAY,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;;AAE5F,qBAKa,mBAAoB,YAAW,aAAa,EAAE,MAAM;IAmBnD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;IAlB1B,oBAAoB,EAAG,iCAAiC,CAAC;IACxF,oBAAoB,EAAG,iCAAiC,GAAG,IAAI,CAAC;IAE/E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,QAAQ,EAAE,MAAM,GAAE,IAAI,CAAQ;IAC9B,YAAY,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IAEpE,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,UAAU,EAAE,OAAO,CAAS;IAC5B,UAAU,EAAE,MAAM,CAAM;IACxB,WAAW,EAAE,MAAM,CAAM;IAChC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAa;gBAEhB,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAIvG,eAAe;IAGf,QAAQ,IAAI,IAAI;YAIF,WAAW;YAqCX,cAAc;IAiBf,cAAc,CAAC,IAAI,EAAE,mBAAmB;IAKxC,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAYjC,eAAe;IAUtB,OAAO;IAON,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKzC,OAAO,CAAC,mBAAmB;YASb,MAAM;IAKb,0BAA0B,CAAC,IAAI,EAAE,GAAG;IAOpC,oBAAoB,IAAI,IAAI;yCAhJxB,mBAAmB;2CAAnB,mBAAmB;CAyJ/B"}
1
+ {"version":3,"file":"single-view.component.d.ts","sourceRoot":"","sources":["../../../src/lib/single-view/single-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAY,UAAU,EAAY,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EAAE,cAAc,EAAY,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D,qBAKa,mBAAoB,YAAW,aAAa,EAAE,MAAM;IAiBnD,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,KAAK;IAAkB,OAAO,CAAC,aAAa;IAhB1B,oBAAoB,EAAG,iCAAiC,CAAC;IAEvG,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,QAAQ,EAAE,MAAM,GAAE,IAAI,CAAQ;IAC9B,YAAY,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhC,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAA2B;IAEpE,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IACzC,UAAU,EAAE,OAAO,CAAS;IAC5B,UAAU,EAAE,MAAM,CAAM;IAC/B,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,eAAe,CAAa;gBAEhB,MAAM,EAAE,MAAM,EAAU,KAAK,EAAE,cAAc,EAAU,aAAa,EAAE,aAAa;IAIvG,eAAe;IAGf,QAAQ,IAAI,IAAI;YAIF,WAAW;IAkCZ,cAAc,CAAC,IAAI,EAAE,mBAAmB;IAKxC,QAAQ,CAAC,QAAQ,EAAE,cAAc;IAYjC,eAAe;IAUtB,OAAO;IAON,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKzC,OAAO,CAAC,mBAAmB;YASb,MAAM;IAKb,0BAA0B,CAAC,IAAI,EAAE,GAAG;yCAnHhC,mBAAmB;2CAAnB,mBAAmB;CA0H/B"}
@@ -13,23 +13,34 @@ import { Metadata, LogError } from '@memberjunction/core';
13
13
  import { distinctUntilChanged, Subject } from "rxjs";
14
14
  import { debounceTime } from "rxjs/operators";
15
15
  import { ViewInfo } from '@memberjunction/core-entities';
16
- import { SharedService } from '@memberjunction/ng-shared';
17
16
  import * as i0 from "@angular/core";
18
17
  import * as i1 from "@angular/router";
19
18
  import * as i2 from "@memberjunction/ng-shared";
20
19
  import * as i3 from "@angular/common";
21
- import * as i4 from "@memberjunction/ng-container-directives";
22
- import * as i5 from "@memberjunction/ng-ask-skip";
23
- import * as i6 from "@memberjunction/ng-user-view-properties";
24
- const _c0 = ["propertiesDialog"];
25
- function SingleViewComponent_mj_user_view_properties_dialog_9_Template(rf, ctx) { if (rf & 1) {
20
+ import * as i4 from "@angular/forms";
21
+ import * as i5 from "@progress/kendo-angular-inputs";
22
+ import * as i6 from "@memberjunction/ng-container-directives";
23
+ import * as i7 from "@memberjunction/ng-ask-skip";
24
+ import * as i8 from "@memberjunction/ng-user-view-properties";
25
+ function SingleViewComponent_kendo_textbox_2_Template(rf, ctx) { if (rf & 1) {
26
26
  const _r3 = i0.ɵɵgetCurrentView();
27
- i0.ɵɵelementStart(0, "mj-user-view-properties-dialog", 8, 9);
28
- i0.ɵɵlistener("dialogClosed", function SingleViewComponent_mj_user_view_properties_dialog_9_Template_mj_user_view_properties_dialog_dialogClosed_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.viewPropertiesDialogClosed($event)); });
27
+ i0.ɵɵelementStart(0, "kendo-textbox", 5);
28
+ i0.ɵɵlistener("valueChange", function SingleViewComponent_kendo_textbox_2_Template_kendo_textbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onSearch($event)); });
29
+ i0.ɵɵtwoWayListener("ngModelChange", function SingleViewComponent_kendo_textbox_2_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.searchText, $event) || (ctx_r4.searchText = $event); return i0.ɵɵresetView($event); });
29
30
  i0.ɵɵelementEnd();
30
31
  } if (rf & 2) {
31
32
  const ctx_r0 = i0.ɵɵnextContext();
32
- i0.ɵɵproperty("ViewID", ctx_r0.selectedView.ID);
33
+ i0.ɵɵproperty("clearButton", true);
34
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.searchText);
35
+ } }
36
+ function SingleViewComponent_mj_user_view_properties_dialog_3_Template(rf, ctx) { if (rf & 1) {
37
+ const _r6 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "mj-user-view-properties-dialog", 6);
39
+ i0.ɵɵlistener("dialogClosed", function SingleViewComponent_mj_user_view_properties_dialog_3_Template_mj_user_view_properties_dialog_dialogClosed_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.viewPropertiesDialogClosed($event)); });
40
+ i0.ɵɵelementEnd();
41
+ } if (rf & 2) {
42
+ const ctx_r1 = i0.ɵɵnextContext();
43
+ i0.ɵɵproperty("ViewID", ctx_r1.selectedView.ID);
33
44
  } }
34
45
  export class SingleViewComponent {
35
46
  constructor(router, route, sharedService) {
@@ -45,7 +56,6 @@ export class SingleViewComponent {
45
56
  this.selectedEntity = null;
46
57
  this.showSearch = false;
47
58
  this.searchText = '';
48
- this.headerTitle = "";
49
59
  this.searchDebounce$ = new Subject();
50
60
  this._deferLoadCount = 0;
51
61
  }
@@ -60,19 +70,16 @@ export class SingleViewComponent {
60
70
  const md = new Metadata();
61
71
  if (this.viewId || this.viewName) {
62
72
  let view = null;
63
- if (this.viewId) {
73
+ if (this.viewId)
64
74
  view = (yield ViewInfo.GetViewEntity(this.viewId));
65
- }
66
- else if (this.viewName) {
75
+ else if (this.viewName)
67
76
  view = (yield ViewInfo.GetViewEntityByName(this.viewName));
68
- }
69
77
  if (view) {
70
- yield this.setHeaderTitle(view);
71
78
  yield this.LoadView(view);
72
79
  const e = md.Entities.find(e => e.ID === (view === null || view === void 0 ? void 0 : view.EntityID));
73
80
  if (e) {
74
81
  this.selectedEntity = e;
75
- this.showSearch = e.AllowUserSearchAPI || true;
82
+ this.showSearch = e.AllowUserSearchAPI;
76
83
  }
77
84
  }
78
85
  }
@@ -92,28 +99,10 @@ export class SingleViewComponent {
92
99
  }
93
100
  });
94
101
  }
95
- setHeaderTitle(view) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- if (view.CategoryID) {
98
- const md = new Metadata();
99
- const categoryEntity = yield md.GetEntityObject("User View Categories");
100
- const loadSuccess = yield categoryEntity.Load(view.CategoryID);
101
- if (loadSuccess) {
102
- this.headerTitle = categoryEntity.Name + " > " + view.Name;
103
- }
104
- else {
105
- this.headerTitle = view.Name;
106
- }
107
- }
108
- else {
109
- this.headerTitle = view.Name;
110
- }
111
- });
112
- }
113
102
  handleRowClick(args) {
114
103
  return __awaiter(this, void 0, void 0, function* () {
115
104
  // tell the router to navigate instead of raising an event directly. router will in turn handle raising the event as required
116
- this.router.navigate(['resource', 'record', SharedService.GeneratePrimaryKeyValueString(args.primaryKeyValues)], { queryParams: { Entity: args.entityName } });
105
+ this.router.navigate(['resource', 'record', args.CompositeKey.ToURLSegment()], { queryParams: { Entity: args.entityName } });
117
106
  });
118
107
  }
119
108
  LoadView(viewInfo) {
@@ -169,56 +158,35 @@ export class SingleViewComponent {
169
158
  this.Refresh();
170
159
  }
171
160
  }
172
- openPropertiesDialog() {
173
- if (this.viewId && this.viewPropertiesDialog) {
174
- this.viewPropertiesDialog.Open(this.viewId);
175
- }
176
- else {
177
- LogError("no view id or dialog");
178
- }
179
- }
180
161
  }
181
162
  SingleViewComponent.ɵfac = function SingleViewComponent_Factory(t) { return new (t || SingleViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
182
163
  SingleViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleViewComponent, selectors: [["mj-single-view"]], viewQuery: function SingleViewComponent_Query(rf, ctx) { if (rf & 1) {
183
164
  i0.ɵɵviewQuery(UserViewGridWithAnalysisComponent, 7);
184
- i0.ɵɵviewQuery(_c0, 5);
185
165
  } if (rf & 2) {
186
166
  let _t;
187
167
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewGridWithAnalysis = _t.first);
188
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewPropertiesDialog = _t.first);
189
- } }, inputs: { viewId: "viewId", viewName: "viewName", selectedView: "selectedView", extraFilter: "extraFilter", entityName: "entityName" }, outputs: { loadComplete: "loadComplete" }, decls: 11, vars: 4, consts: [["mjFillContainer", "", 1, "single-view-wrap", 3, "bottomMargin"], [1, "flex-direction-row"], [1, "flex-direction-row", "gap-small"], [1, "header-icon-button"], ["title", "Favorite this view", 1, "fa-regular", "fa-star", "fa-xl"], ["title", "Copy link to this view", 1, "fa-regular", "fa-copy", "fa-xl"], [3, "ViewID", "dialogClosed", 4, "ngIf"], ["mjFillContainer", "", 1, "analysis-wrapper", 3, "AutoNavigate", "rowClicked"], [3, "ViewID", "dialogClosed"], ["propertiesDialog", ""]], template: function SingleViewComponent_Template(rf, ctx) { if (rf & 1) {
190
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h4");
191
- i0.ɵɵtext(3);
168
+ } }, inputs: { viewId: "viewId", viewName: "viewName", selectedView: "selectedView", extraFilter: "extraFilter", entityName: "entityName" }, outputs: { loadComplete: "loadComplete" }, decls: 5, vars: 4, consts: [["mjFillContainer", "", 1, "single-view-wrap", 3, "bottomMargin"], [1, "searchBox"], ["id", "txtSearch", "placeholder", "Search here...", "kendoTextBox", "", 3, "clearButton", "ngModel", "valueChange", "ngModelChange", 4, "ngIf"], [3, "ViewID", "dialogClosed", 4, "ngIf"], ["mjFillContainer", "", 1, "analysis-wrapper", 3, "AutoNavigate", "rowClicked"], ["id", "txtSearch", "placeholder", "Search here...", "kendoTextBox", "", 3, "clearButton", "ngModel", "valueChange", "ngModelChange"], [3, "ViewID", "dialogClosed"]], template: function SingleViewComponent_Template(rf, ctx) { if (rf & 1) {
169
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
170
+ i0.ɵɵtemplate(2, SingleViewComponent_kendo_textbox_2_Template, 1, 2, "kendo-textbox", 2)(3, SingleViewComponent_mj_user_view_properties_dialog_3_Template, 1, 1, "mj-user-view-properties-dialog", 3);
192
171
  i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(4, "div", 2)(5, "button", 3);
194
- i0.ɵɵelement(6, "span", 4);
195
- i0.ɵɵelementEnd();
196
- i0.ɵɵelementStart(7, "button", 3);
197
- i0.ɵɵelement(8, "span", 5);
198
- i0.ɵɵelementEnd();
199
- i0.ɵɵtemplate(9, SingleViewComponent_mj_user_view_properties_dialog_9_Template, 2, 1, "mj-user-view-properties-dialog", 6);
200
- i0.ɵɵelementEnd()();
201
- i0.ɵɵelementStart(10, "mj-user-view-grid-with-analysis", 7);
202
- i0.ɵɵlistener("rowClicked", function SingleViewComponent_Template_mj_user_view_grid_with_analysis_rowClicked_10_listener($event) { return ctx.handleRowClick($event); });
172
+ i0.ɵɵelementStart(4, "mj-user-view-grid-with-analysis", 4);
173
+ i0.ɵɵlistener("rowClicked", function SingleViewComponent_Template_mj_user_view_grid_with_analysis_rowClicked_4_listener($event) { return ctx.handleRowClick($event); });
203
174
  i0.ɵɵelementEnd()();
204
175
  } if (rf & 2) {
205
176
  i0.ɵɵproperty("bottomMargin", 20);
206
- i0.ɵɵadvance(3);
207
- i0.ɵɵtextInterpolate(ctx.headerTitle);
208
- i0.ɵɵadvance(6);
177
+ i0.ɵɵadvance(2);
178
+ i0.ɵɵproperty("ngIf", ctx.showSearch);
179
+ i0.ɵɵadvance();
209
180
  i0.ɵɵproperty("ngIf", ctx.selectedView);
210
181
  i0.ɵɵadvance();
211
182
  i0.ɵɵproperty("AutoNavigate", false);
212
- } }, dependencies: [i3.NgIf, i4.FillContainer, i5.UserViewGridWithAnalysisComponent, i6.UserViewPropertiesDialogComponent], styles: [".single-view-wrap[_ngcontent-%COMP%] {\n padding: 10px;\n}\n\n .analysis-wrapper .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n}\n\n .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n}\n\n .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n}\n\n.flex-direction-row[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.gap-small[_ngcontent-%COMP%]{\n gap: 8px; \n}\n\n .header-icon-button {\n width: 40px;\n height: 40px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n\n .header-icon-button:hover {\n border: 1px solid var(--border-active);\n}\n\n .k-button-solid-base {\n border: 1px solid var(--border-blue) !important;\n color: var(--border-blue) !important;\n border-radius: 10px;\n line-height: 34px;\n background: var(--white-color);\n}\n\n .k-button-solid-base-filled {\n border: 1px solid var(--border-blue) !important;\n color: var(--white-color) !important;\n border-radius: 10px;\n line-height: 34px;\n background: var(--border-blue);\n}\n\n .k-button-solid-base-filled:hover {\n background: var(--border-blue);\n filter: brightness(85%);\n}"] });
183
+ } }, dependencies: [i3.NgIf, i4.NgControlStatus, i4.NgModel, i5.TextBoxComponent, i6.FillContainer, i7.UserViewGridWithAnalysisComponent, i8.UserViewPropertiesDialogComponent], styles: [".single-view-wrap[_ngcontent-%COMP%] {\n padding: 10px;\n}\n .analysis-wrapper .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n }\n .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }"] });
213
184
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SingleViewComponent, [{
214
185
  type: Component,
215
- args: [{ selector: 'mj-single-view', template: "<div class=\"single-view-wrap\" mjFillContainer [bottomMargin]=\"20\">\n <div class=\"flex-direction-row\">\n <h4>{{headerTitle}}</h4>\n <div class=\"flex-direction-row gap-small\">\n <button class=\"header-icon-button\">\n <span title=\"Favorite this view\" class=\"fa-regular fa-star fa-xl\"></span>\n </button>\n <button class=\"header-icon-button\">\n <span title=\"Copy link to this view\" class=\"fa-regular fa-copy fa-xl\"></span>\n </button>\n <mj-user-view-properties-dialog #propertiesDialog *ngIf=\"selectedView\" [ViewID]=\"selectedView.ID\" (dialogClosed)=\"this.viewPropertiesDialogClosed($event)\"/>\n <!--\n <button title=\"Share View\" kendoButton class=\"k-button-solid-base-filled\">\n <span class=\"fa-solid fa-user-group fa-lg\"></span> Share View\n </button>\n -->\n </div>\n </div>\n <mj-user-view-grid-with-analysis class=\"analysis-wrapper\" (rowClicked)=\"handleRowClick($event)\" [AutoNavigate]=\"false\" mjFillContainer></mj-user-view-grid-with-analysis>\n</div>", styles: [".single-view-wrap {\n padding: 10px;\n}\n\n::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n}\n\n::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n}\n\n::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n}\n\n.flex-direction-row {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.gap-small{\n gap: 8px; \n}\n\n::ng-deep .header-icon-button {\n width: 40px;\n height: 40px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n\n::ng-deep .header-icon-button:hover {\n border: 1px solid var(--border-active);\n}\n\n::ng-deep .k-button-solid-base {\n border: 1px solid var(--border-blue) !important;\n color: var(--border-blue) !important;\n border-radius: 10px;\n line-height: 34px;\n background: var(--white-color);\n}\n\n::ng-deep .k-button-solid-base-filled {\n border: 1px solid var(--border-blue) !important;\n color: var(--white-color) !important;\n border-radius: 10px;\n line-height: 34px;\n background: var(--border-blue);\n}\n\n::ng-deep .k-button-solid-base-filled:hover {\n background: var(--border-blue);\n filter: brightness(85%);\n}"] }]
186
+ args: [{ selector: 'mj-single-view', template: "<div class=\"single-view-wrap\" mjFillContainer [bottomMargin]=\"20\">\n <div class=\"card-container\" class=\"searchBox\">\n <kendo-textbox\n id=\"txtSearch\"\n *ngIf=\"showSearch\"\n placeholder=\"Search here...\"\n kendoTextBox\n (valueChange)=\"onSearch($event)\"\n [clearButton]=\"true\"\n [(ngModel)]=\"searchText\"\n ></kendo-textbox>\n\n <mj-user-view-properties-dialog *ngIf=\"selectedView\" [ViewID]=\"selectedView.ID\" (dialogClosed)=\"this.viewPropertiesDialogClosed($event)\" ></mj-user-view-properties-dialog>\n </div>\n\n <mj-user-view-grid-with-analysis class=\"analysis-wrapper\" (rowClicked)=\"handleRowClick($event)\" [AutoNavigate]=\"false\" mjFillContainer></mj-user-view-grid-with-analysis>\n</div>", styles: [".single-view-wrap {\n padding: 10px;\n}\n::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n ::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n }\n ::ng-deep .analysis-wrapper .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }"] }]
216
187
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], { viewGridWithAnalysis: [{
217
188
  type: ViewChild,
218
189
  args: [UserViewGridWithAnalysisComponent, { static: true }]
219
- }], viewPropertiesDialog: [{
220
- type: ViewChild,
221
- args: ['propertiesDialog']
222
190
  }], viewId: [{
223
191
  type: Input
224
192
  }], viewName: [{
@@ -232,4 +200,4 @@ SingleViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleV
232
200
  }], loadComplete: [{
233
201
  type: Output
234
202
  }] }); })();
235
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleViewComponent, { className: "SingleViewComponent", filePath: "src/lib/single-view/single-view.component.ts", lineNumber: 17 }); })();
203
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleViewComponent, { className: "SingleViewComponent", filePath: "src/lib/single-view/single-view.component.ts", lineNumber: 16 }); })();
package/dist/module.d.ts CHANGED
@@ -36,39 +36,40 @@ import * as i34 from "./lib/user-notifications/user-notifications.component";
36
36
  import * as i35 from "./lib/resource-wrappers/query-resource.component";
37
37
  import * as i36 from "./lib/expansion-panel-component/expansion-panel-component";
38
38
  import * as i37 from "./lib/app-view/application-view.component";
39
- import * as i38 from "@angular/common";
40
- import * as i39 from "@angular/forms";
41
- import * as i40 from "@angular/router";
42
- import * as i41 from "@progress/kendo-angular-grid";
43
- import * as i42 from "@progress/kendo-angular-dialog";
44
- import * as i43 from "@progress/kendo-angular-excel-export";
45
- import * as i44 from "@memberjunction/ng-compare-records";
46
- import * as i45 from "@progress/kendo-angular-indicators";
47
- import * as i46 from "@progress/kendo-angular-charts";
48
- import * as i47 from "@progress/kendo-angular-buttons";
49
- import * as i48 from "@progress/kendo-angular-layout";
50
- import * as i49 from "@progress/kendo-angular-inputs";
51
- import * as i50 from "@progress/kendo-angular-label";
52
- import * as i51 from "@memberjunction/ng-record-changes";
53
- import * as i52 from "@memberjunction/ng-container-directives";
54
- import * as i53 from "@memberjunction/ng-base-forms";
55
- import * as i54 from "@progress/kendo-angular-listview";
56
- import * as i55 from "@progress/kendo-angular-treeview";
57
- import * as i56 from "@memberjunction/ng-user-view-grid";
58
- import * as i57 from "@memberjunction/ng-query-grid";
59
- import * as i58 from "@progress/kendo-angular-sortable";
60
- import * as i59 from "@progress/kendo-angular-filter";
61
- import * as i60 from "@progress/kendo-angular-dropdowns";
62
- import * as i61 from "@memberjunction/ng-shared";
63
- import * as i62 from "@memberjunction/ng-ask-skip";
64
- import * as i63 from "@memberjunction/ng-entity-permissions";
65
- import * as i64 from "@memberjunction/ng-explorer-settings";
66
- import * as i65 from "@memberjunction/ng-file-storage";
67
- import * as i66 from "@memberjunction/ng-user-view-properties";
68
- import * as i67 from "@memberjunction/ng-tabstrip";
39
+ import * as i38 from "./app-routing.module";
40
+ import * as i39 from "@angular/common";
41
+ import * as i40 from "@angular/forms";
42
+ import * as i41 from "@angular/router";
43
+ import * as i42 from "@progress/kendo-angular-grid";
44
+ import * as i43 from "@progress/kendo-angular-dialog";
45
+ import * as i44 from "@progress/kendo-angular-excel-export";
46
+ import * as i45 from "@memberjunction/ng-compare-records";
47
+ import * as i46 from "@progress/kendo-angular-indicators";
48
+ import * as i47 from "@progress/kendo-angular-charts";
49
+ import * as i48 from "@progress/kendo-angular-buttons";
50
+ import * as i49 from "@progress/kendo-angular-layout";
51
+ import * as i50 from "@progress/kendo-angular-inputs";
52
+ import * as i51 from "@progress/kendo-angular-label";
53
+ import * as i52 from "@memberjunction/ng-record-changes";
54
+ import * as i53 from "@memberjunction/ng-container-directives";
55
+ import * as i54 from "@memberjunction/ng-base-forms";
56
+ import * as i55 from "@progress/kendo-angular-listview";
57
+ import * as i56 from "@progress/kendo-angular-treeview";
58
+ import * as i57 from "@memberjunction/ng-user-view-grid";
59
+ import * as i58 from "@memberjunction/ng-query-grid";
60
+ import * as i59 from "@progress/kendo-angular-sortable";
61
+ import * as i60 from "@progress/kendo-angular-filter";
62
+ import * as i61 from "@progress/kendo-angular-dropdowns";
63
+ import * as i62 from "@memberjunction/ng-shared";
64
+ import * as i63 from "@memberjunction/ng-ask-skip";
65
+ import * as i64 from "@memberjunction/ng-entity-permissions";
66
+ import * as i65 from "@memberjunction/ng-explorer-settings";
67
+ import * as i66 from "@memberjunction/ng-file-storage";
68
+ import * as i67 from "@memberjunction/ng-user-view-properties";
69
+ import * as i68 from "@memberjunction/ng-tabstrip";
69
70
  export declare class ExplorerCoreModule {
70
71
  static ɵfac: i0.ɵɵFactoryDeclaration<ExplorerCoreModule, never>;
71
- static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i12.QueryBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i18.FilesComponent, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i28.SingleQueryComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i35.QueryResource, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent], [typeof i38.CommonModule, typeof i39.FormsModule, typeof i39.ReactiveFormsModule, typeof i40.RouterModule, typeof i41.GridModule, typeof i42.DialogsModule, typeof i43.ExcelExportModule, typeof i44.CompareRecordsModule, typeof i45.IndicatorsModule, typeof i38.CommonModule, typeof i39.FormsModule, typeof i41.GridModule, typeof i46.ChartsModule, typeof i47.ButtonsModule, typeof i48.TabStripModule, typeof i41.ExcelModule, typeof i41.PDFModule, typeof i45.IndicatorsModule, typeof i42.DialogsModule, typeof i49.InputsModule, typeof i50.LabelModule, typeof i44.CompareRecordsModule, typeof i51.RecordChangesModule, typeof i52.ContainerDirectivesModule, typeof i53.BaseFormsModule, typeof i54.ListViewModule, typeof i55.TreeViewModule, typeof i56.UserViewGridModule, typeof i57.QueryGridModule, typeof i58.SortableModule, typeof i48.LayoutModule, typeof i59.FilterModule, typeof i60.DropDownsModule, typeof i61.MemberJunctionSharedModule, typeof i62.AskSkipModule, typeof i63.EntityPermissionsModule, typeof i64.ExplorerSettingsModule, typeof i65.FileStorageModule, typeof i66.UserViewPropertiesDialogModule, typeof i67.MJTabStripModule], [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent]>;
72
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ExplorerCoreModule, [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i12.QueryBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i18.FilesComponent, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i28.SingleQueryComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i35.QueryResource, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent], [typeof i38.AppRoutingModule, typeof i39.CommonModule, typeof i40.FormsModule, typeof i40.ReactiveFormsModule, typeof i41.RouterModule, typeof i42.GridModule, typeof i43.DialogsModule, typeof i44.ExcelExportModule, typeof i45.CompareRecordsModule, typeof i46.IndicatorsModule, typeof i39.CommonModule, typeof i40.FormsModule, typeof i42.GridModule, typeof i47.ChartsModule, typeof i48.ButtonsModule, typeof i49.TabStripModule, typeof i42.ExcelModule, typeof i42.PDFModule, typeof i46.IndicatorsModule, typeof i43.DialogsModule, typeof i50.InputsModule, typeof i51.LabelModule, typeof i45.CompareRecordsModule, typeof i52.RecordChangesModule, typeof i53.ContainerDirectivesModule, typeof i54.BaseFormsModule, typeof i55.ListViewModule, typeof i56.TreeViewModule, typeof i57.UserViewGridModule, typeof i58.QueryGridModule, typeof i59.SortableModule, typeof i49.LayoutModule, typeof i60.FilterModule, typeof i61.DropDownsModule, typeof i62.MemberJunctionSharedModule, typeof i63.AskSkipModule, typeof i64.EntityPermissionsModule, typeof i65.ExplorerSettingsModule, typeof i66.FileStorageModule, typeof i67.UserViewPropertiesDialogModule, typeof i68.MJTabStripModule], [typeof i1.FormToolbarComponent, typeof i2.SectionLoaderComponent, typeof i3.ResourceContainerComponent, typeof i4.AuthButtonComponent, typeof i5.DashboardBrowserComponent, typeof i6.DataBrowserComponent, typeof i7.GenericBrowseListComponent, typeof i8.GenericBrowserListComponent, typeof i9.HomeComponent, typeof i10.NavigationComponent, typeof i11.ReportBrowserComponent, typeof i13.DashboardResource, typeof i14.EntityRecordResource, typeof i15.ReportResource, typeof i16.SearchResultsResource, typeof i17.UserViewResource, typeof i19.SingleApplicationComponent, typeof i20.FavoritesComponent, typeof i21.HeaderComponent, typeof i22.JoinGridComponent, typeof i23.SingleEntityComponent, typeof i24.SingleRecordComponent, typeof i25.SingleReportComponent, typeof i26.SingleSearchResultComponent, typeof i27.SingleViewComponent, typeof i29.UserProfileComponent, typeof i30.SingleDashboardComponent, typeof i31.AddItemComponent, typeof i32.DeleteItemComponent, typeof i33.EditDashboardComponent, typeof i34.UserNotificationsComponent, typeof i36.ExpansionPanelComponent, typeof i37.ApplicationViewComponent]>;
72
73
  static ɵinj: i0.ɵɵInjectorDeclaration<ExplorerCoreModule>;
73
74
  }
74
75
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EA,qBAsHa,kBAAkB;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAAG"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,qBAwHa,kBAAkB;yCAAlB,kBAAkB;0CAAlB,kBAAkB;0CAAlB,kBAAkB;CAAG"}