@memberjunction/ng-explorer-core 1.2.0 → 1.2.1

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.
@@ -5,12 +5,14 @@ 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';
8
9
  import * as i0 from "@angular/core";
9
10
  export declare class SingleViewComponent implements AfterViewInit, OnInit {
10
11
  private router;
11
12
  private route;
12
13
  private sharedService;
13
14
  viewGridWithAnalysis: UserViewGridWithAnalysisComponent;
15
+ viewPropertiesDialog: UserViewPropertiesDialogComponent | null;
14
16
  viewId: number | null;
15
17
  viewName: string | null;
16
18
  selectedView: UserViewEntity | null;
@@ -20,12 +22,14 @@ export declare class SingleViewComponent implements AfterViewInit, OnInit {
20
22
  selectedEntity: EntityInfo | null;
21
23
  showSearch: boolean;
22
24
  searchText: string;
25
+ headerTitle: string;
23
26
  private searchDebounce$;
24
27
  private _deferLoadCount;
25
28
  constructor(router: Router, route: ActivatedRoute, sharedService: SharedService);
26
29
  ngAfterViewInit(): void;
27
30
  ngOnInit(): void;
28
31
  private initialLoad;
32
+ private setHeaderTitle;
29
33
  handleRowClick(args: GridRowClickedEvent): Promise<void>;
30
34
  LoadView(viewInfo: UserViewEntity): Promise<void>;
31
35
  LoadDynamicView(): Promise<void>;
@@ -34,6 +38,7 @@ export declare class SingleViewComponent implements AfterViewInit, OnInit {
34
38
  private setupSearchDebounce;
35
39
  private search;
36
40
  viewPropertiesDialogClosed(args: any): void;
41
+ openPropertiesDialog(): void;
37
42
  static ɵfac: i0.ɵɵFactoryDeclaration<SingleViewComponent, never>;
38
43
  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>;
39
44
  }
@@ -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,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"}
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"}
@@ -18,30 +18,18 @@ import * as i0 from "@angular/core";
18
18
  import * as i1 from "@angular/router";
19
19
  import * as i2 from "@memberjunction/ng-shared";
20
20
  import * as i3 from "@angular/common";
21
- import * as i4 from "@angular/forms";
22
- import * as i5 from "@progress/kendo-angular-inputs";
23
- import * as i6 from "@memberjunction/ng-container-directives";
24
- import * as i7 from "@memberjunction/ng-ask-skip";
25
- import * as i8 from "@memberjunction/ng-user-view-properties";
26
- function SingleViewComponent_kendo_textbox_2_Template(rf, ctx) { if (rf & 1) {
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) {
27
26
  const _r3 = i0.ɵɵgetCurrentView();
28
- i0.ɵɵelementStart(0, "kendo-textbox", 5);
29
- 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)); });
30
- 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); });
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)); });
31
29
  i0.ɵɵelementEnd();
32
30
  } if (rf & 2) {
33
31
  const ctx_r0 = i0.ɵɵnextContext();
34
- i0.ɵɵproperty("clearButton", true);
35
- i0.ɵɵtwoWayProperty("ngModel", ctx_r0.searchText);
36
- } }
37
- function SingleViewComponent_mj_user_view_properties_dialog_3_Template(rf, ctx) { if (rf & 1) {
38
- const _r6 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementStart(0, "mj-user-view-properties-dialog", 6);
40
- 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)); });
41
- i0.ɵɵelementEnd();
42
- } if (rf & 2) {
43
- const ctx_r1 = i0.ɵɵnextContext();
44
- i0.ɵɵproperty("ViewID", ctx_r1.selectedView.ID);
32
+ i0.ɵɵproperty("ViewID", ctx_r0.selectedView.ID);
45
33
  } }
46
34
  export class SingleViewComponent {
47
35
  constructor(router, route, sharedService) {
@@ -57,6 +45,7 @@ export class SingleViewComponent {
57
45
  this.selectedEntity = null;
58
46
  this.showSearch = false;
59
47
  this.searchText = '';
48
+ this.headerTitle = "";
60
49
  this.searchDebounce$ = new Subject();
61
50
  this._deferLoadCount = 0;
62
51
  }
@@ -71,16 +60,19 @@ export class SingleViewComponent {
71
60
  const md = new Metadata();
72
61
  if (this.viewId || this.viewName) {
73
62
  let view = null;
74
- if (this.viewId)
63
+ if (this.viewId) {
75
64
  view = (yield ViewInfo.GetViewEntity(this.viewId));
76
- else if (this.viewName)
65
+ }
66
+ else if (this.viewName) {
77
67
  view = (yield ViewInfo.GetViewEntityByName(this.viewName));
68
+ }
78
69
  if (view) {
70
+ yield this.setHeaderTitle(view);
79
71
  yield this.LoadView(view);
80
72
  const e = md.Entities.find(e => e.ID === (view === null || view === void 0 ? void 0 : view.EntityID));
81
73
  if (e) {
82
74
  this.selectedEntity = e;
83
- this.showSearch = e.AllowUserSearchAPI;
75
+ this.showSearch = e.AllowUserSearchAPI || true;
84
76
  }
85
77
  }
86
78
  }
@@ -100,6 +92,24 @@ export class SingleViewComponent {
100
92
  }
101
93
  });
102
94
  }
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
+ }
103
113
  handleRowClick(args) {
104
114
  return __awaiter(this, void 0, void 0, function* () {
105
115
  // tell the router to navigate instead of raising an event directly. router will in turn handle raising the event as required
@@ -159,35 +169,56 @@ export class SingleViewComponent {
159
169
  this.Refresh();
160
170
  }
161
171
  }
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
+ }
162
180
  }
163
181
  SingleViewComponent.ɵfac = function SingleViewComponent_Factory(t) { return new (t || SingleViewComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.SharedService)); };
164
182
  SingleViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleViewComponent, selectors: [["mj-single-view"]], viewQuery: function SingleViewComponent_Query(rf, ctx) { if (rf & 1) {
165
183
  i0.ɵɵviewQuery(UserViewGridWithAnalysisComponent, 7);
184
+ i0.ɵɵviewQuery(_c0, 5);
166
185
  } if (rf & 2) {
167
186
  let _t;
168
187
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewGridWithAnalysis = _t.first);
169
- } }, 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) {
170
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
171
- 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);
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);
172
192
  i0.ɵɵelementEnd();
173
- i0.ɵɵelementStart(4, "mj-user-view-grid-with-analysis", 4);
174
- i0.ɵɵlistener("rowClicked", function SingleViewComponent_Template_mj_user_view_grid_with_analysis_rowClicked_4_listener($event) { return ctx.handleRowClick($event); });
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); });
175
203
  i0.ɵɵelementEnd()();
176
204
  } if (rf & 2) {
177
205
  i0.ɵɵproperty("bottomMargin", 20);
178
- i0.ɵɵadvance(2);
179
- i0.ɵɵproperty("ngIf", ctx.showSearch);
180
- i0.ɵɵadvance();
206
+ i0.ɵɵadvance(3);
207
+ i0.ɵɵtextInterpolate(ctx.headerTitle);
208
+ i0.ɵɵadvance(6);
181
209
  i0.ɵɵproperty("ngIf", ctx.selectedView);
182
210
  i0.ɵɵadvance();
183
211
  i0.ɵɵproperty("AutoNavigate", false);
184
- } }, 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 }"] });
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}"] });
185
213
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SingleViewComponent, [{
186
214
  type: Component,
187
- 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 }"] }]
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}"] }]
188
216
  }], () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SharedService }], { viewGridWithAnalysis: [{
189
217
  type: ViewChild,
190
218
  args: [UserViewGridWithAnalysisComponent, { static: true }]
219
+ }], viewPropertiesDialog: [{
220
+ type: ViewChild,
221
+ args: ['propertiesDialog']
191
222
  }], viewId: [{
192
223
  type: Input
193
224
  }], viewName: [{
@@ -201,4 +232,4 @@ SingleViewComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SingleV
201
232
  }], loadComplete: [{
202
233
  type: Output
203
234
  }] }); })();
204
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleViewComponent, { className: "SingleViewComponent", filePath: "src/lib/single-view/single-view.component.ts", lineNumber: 16 }); })();
235
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SingleViewComponent, { className: "SingleViewComponent", filePath: "src/lib/single-view/single-view.component.ts", lineNumber: 17 }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-explorer-core",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "MemberJunction Explorer: Core Angular Components",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -26,21 +26,21 @@
26
26
  "@angular/router": "~17.2.2"
27
27
  },
28
28
  "dependencies": {
29
- "@memberjunction/global": "~1.2.0",
30
- "@memberjunction/core": "~1.2.0",
31
- "@memberjunction/ng-compare-records": "~1.2.0",
32
- "@memberjunction/ng-file-storage": "~1.2.0",
33
- "@memberjunction/ng-record-changes": "~1.2.0",
34
- "@memberjunction/ng-container-directives": "~1.2.0",
35
- "@memberjunction/ng-user-view-grid": "~1.2.0",
36
- "@memberjunction/ng-query-grid": "~1.2.0",
37
- "@memberjunction/ng-user-view-properties": "~1.2.0",
38
- "@memberjunction/ng-shared": "~1.2.0",
39
- "@memberjunction/ng-tabstrip": "~1.2.0",
40
- "@memberjunction/ng-ask-skip": "~1.2.0",
41
- "@memberjunction/ng-auth-services": "~1.2.0",
42
- "@memberjunction/ng-explorer-settings": "~1.2.0",
43
- "@memberjunction/ng-base-forms": "~1.2.0",
29
+ "@memberjunction/global": "~1.2.1",
30
+ "@memberjunction/core": "~1.2.1",
31
+ "@memberjunction/ng-compare-records": "~1.2.1",
32
+ "@memberjunction/ng-file-storage": "~1.2.1",
33
+ "@memberjunction/ng-record-changes": "~1.2.1",
34
+ "@memberjunction/ng-container-directives": "~1.2.1",
35
+ "@memberjunction/ng-user-view-grid": "~1.2.1",
36
+ "@memberjunction/ng-query-grid": "~1.2.1",
37
+ "@memberjunction/ng-user-view-properties": "~1.2.1",
38
+ "@memberjunction/ng-shared": "~1.2.1",
39
+ "@memberjunction/ng-tabstrip": "~1.2.1",
40
+ "@memberjunction/ng-ask-skip": "~1.2.1",
41
+ "@memberjunction/ng-auth-services": "~1.2.1",
42
+ "@memberjunction/ng-explorer-settings": "~1.2.1",
43
+ "@memberjunction/ng-base-forms": "~1.2.1",
44
44
  "@progress/kendo-angular-grid": "~15.1.0",
45
45
  "@progress/kendo-angular-buttons": "~15.1.0",
46
46
  "@progress/kendo-angular-listview": "~15.1.0",