@memberjunction/ng-user-view-properties 1.8.0 → 2.0.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.
@@ -19,7 +19,7 @@ export declare class UserViewPropertiesDialogComponent extends BaseFormComponent
19
19
  protected router: Router;
20
20
  private renderer;
21
21
  protected cdr: ChangeDetectorRef;
22
- ViewID: number | undefined;
22
+ ViewID: string | undefined;
23
23
  EntityName: string | undefined;
24
24
  ShowPropertiesButton: boolean;
25
25
  dialogClosed: EventEmitter<any>;
@@ -47,7 +47,7 @@ export declare class UserViewPropertiesDialogComponent extends BaseFormComponent
47
47
  onKeyPress(event: KeyboardEvent): void;
48
48
  GetTabTopPosition(): number;
49
49
  CreateView(entityName: string): void;
50
- Open(ViewID?: number | undefined): Promise<void>;
50
+ Open(ViewID?: string | undefined): Promise<void>;
51
51
  Load(): Promise<void>;
52
52
  closePropertiesDialog(): void;
53
53
  FinishLoad(md: Metadata): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"user-view-properties.component.d.ts","sourceRoot":"","sources":["../../src/lib/user-view-properties.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-view-properties.component.d.ts","sourceRoot":"","sources":["../../src/lib/user-view-properties.component.ts"],"names":[],"mappings":"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"}
@@ -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, EntityFieldTSType } from "@memberjunction/core";
11
+ import { Metadata, EntityFieldTSType, LogError } from "@memberjunction/core";
12
12
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
13
13
  import { ResourceData } from '@memberjunction/ng-shared';
14
14
  import { WindowComponent } from '@progress/kendo-angular-dialog';
@@ -66,9 +66,8 @@ function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_7_Template
66
66
  } }
67
67
  function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {
68
68
  const _r6 = i0.ɵɵgetCurrentView();
69
- i0.ɵɵelementStart(0, "div", 32)(1, "div")(2, "input", 33);
70
- i0.ɵɵtwoWayListener("ngModelChange", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template_input_ngModelChange_2_listener($event) { const col_r7 = i0.ɵɵrestoreView(_r6).item; i0.ɵɵtwoWayBindingSet(col_r7.hidden, $event) || (col_r7.hidden = $event); return i0.ɵɵresetView($event); });
71
- i0.ɵɵlistener("change", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template_input_change_2_listener() { const col_r7 = i0.ɵɵrestoreView(_r6).item; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleColumn(col_r7)); });
69
+ i0.ɵɵelementStart(0, "div", 32)(1, "div")(2, "kendo-checkbox", 33);
70
+ i0.ɵɵlistener("change", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template_kendo_checkbox_change_2_listener() { const col_r7 = i0.ɵɵrestoreView(_r6).item; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleColumn(col_r7)); });
72
71
  i0.ɵɵelementEnd();
73
72
  i0.ɵɵelement(3, "kendo-label", 34);
74
73
  i0.ɵɵelementEnd();
@@ -77,8 +76,7 @@ function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_templ
77
76
  } if (rf & 2) {
78
77
  const col_r7 = ctx.item;
79
78
  i0.ɵɵadvance(2);
80
- i0.ɵɵpropertyInterpolate1("id", "column_", col_r7.ID, "");
81
- i0.ɵɵtwoWayProperty("ngModel", col_r7.hidden);
79
+ i0.ɵɵproperty("checkedState", !col_r7.hidden);
82
80
  i0.ɵɵadvance();
83
81
  i0.ɵɵproperty("for", "column_" + col_r7.ID)("text", col_r7.DisplayName ? col_r7.DisplayName : col_r7.Name);
84
82
  } }
@@ -86,7 +84,7 @@ function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_Template
86
84
  const _r5 = i0.ɵɵgetCurrentView();
87
85
  i0.ɵɵelementStart(0, "kendo-sortable", 31);
88
86
  i0.ɵɵlistener("dragEnd", function UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_Template_kendo_sortable_dragEnd_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onDragEnd($event)); });
89
- i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template, 5, 5, "ng-template");
87
+ i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_kendo_window_5_ng_template_9_ng_template_1_Template, 5, 3, "ng-template");
90
88
  i0.ɵɵelementEnd();
91
89
  } if (rf & 2) {
92
90
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -445,8 +443,9 @@ export class UserViewPropertiesDialogComponent extends BaseFormComponent {
445
443
  toggleColumn(column) {
446
444
  return __awaiter(this, void 0, void 0, function* () {
447
445
  column.hidden = !column.hidden; // do the toggle
448
- if (this.localGridState)
446
+ if (this.localGridState) {
449
447
  this.updateRecordGridState();
448
+ }
450
449
  });
451
450
  }
452
451
  saveProperties() {
@@ -454,7 +453,8 @@ export class UserViewPropertiesDialogComponent extends BaseFormComponent {
454
453
  const bNewRecord = !this.record.IsSaved;
455
454
  this.showloader = true;
456
455
  const lfs = JSON.stringify(this.localFilterState);
457
- this.record.FilterState = JSON.stringify(this.localFilterState); // pass this along as as string, not directly bound since Kendo Filter is bound to a local object we need to translate to a string
456
+ // pass this along as as string, not directly bound since Kendo Filter is bound to a local object we need to translate to a string
457
+ this.record.FilterState = JSON.stringify(this.localFilterState);
458
458
  // need to convert the UI format to the data format.
459
459
  const sortMap = this.sortState.map((s) => {
460
460
  return {
@@ -469,42 +469,42 @@ export class UserViewPropertiesDialogComponent extends BaseFormComponent {
469
469
  this.showloader = false;
470
470
  this.sharedService.CreateSimpleNotification('Validation Errors: ' + valResults.Errors.map((e) => e.Message).join('\n'), 'warning', 7500);
471
471
  }
472
- this.showloader = false;
473
- this.isDialogOpened = false;
474
472
  let saveResult = yield this.record.Save();
475
- if (saveResult) {
476
- let event = {
477
- Saved: true,
478
- ViewEntity: this.record,
479
- Cancel: false,
480
- bNewRecord: bNewRecord
481
- };
482
- this.dialogClosed.emit(event);
483
- if (event.Cancel) {
484
- return;
485
- }
486
- if (!bNewRecord) // view already exists so we're not changing the route as it is alreayd on the view, but we fire an event to let people know that it's changed
487
- MJGlobal.Instance.RaiseEvent({
488
- event: MJEventType.ComponentEvent,
489
- eventCode: EventCodes.ViewUpdated,
490
- args: new ResourceData({
491
- ResourceTypeID: this.sharedService.ViewResourceType.ID,
492
- ResourceRecordID: this.record.FirstPrimaryKey.Value,
493
- Configuration: {
494
- ViewEntity: this.record
495
- }
496
- }),
497
- component: this
498
- });
499
- else {
500
- // we route to the new view using the router
501
- this.router.navigate(['resource', 'view', this.record.FirstPrimaryKey.Value]);
502
- }
503
- }
504
- else {
473
+ if (!saveResult) {
505
474
  // it failed, so don't close the dialog
506
475
  this.showloader = false;
507
476
  this.sharedService.CreateSimpleNotification('Saving the view failed, please try again and if this persists contact your administrator.', 'error', 5000);
477
+ LogError(this.record.LatestResult);
478
+ }
479
+ // stop showing the loader and close the dialog if we saved successfully
480
+ this.showloader = false;
481
+ this.isDialogOpened = false;
482
+ let event = {
483
+ Saved: true,
484
+ ViewEntity: this.record,
485
+ Cancel: false,
486
+ bNewRecord: bNewRecord
487
+ };
488
+ this.dialogClosed.emit(event);
489
+ if (event.Cancel) {
490
+ return;
491
+ }
492
+ if (!bNewRecord) // view already exists so we're not changing the route as it is alreayd on the view, but we fire an event to let people know that it's changed
493
+ MJGlobal.Instance.RaiseEvent({
494
+ event: MJEventType.ComponentEvent,
495
+ eventCode: EventCodes.ViewUpdated,
496
+ args: new ResourceData({
497
+ ResourceTypeID: this.sharedService.ViewResourceType.ID,
498
+ ResourceRecordID: this.record.FirstPrimaryKey.Value,
499
+ Configuration: {
500
+ ViewEntity: this.record
501
+ }
502
+ }),
503
+ component: this
504
+ });
505
+ else {
506
+ // we route to the new view using the router
507
+ this.router.navigate(['resource', 'view', this.record.FirstPrimaryKey.Value]);
508
508
  }
509
509
  });
510
510
  }
@@ -583,7 +583,7 @@ UserViewPropertiesDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
583
583
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nameField = _t.first);
584
584
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dialogContainer = _t.first);
585
585
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.outerDialogContainer = _t.first);
586
- } }, inputs: { ViewID: "ViewID", EntityName: "EntityName", ShowPropertiesButton: "ShowPropertiesButton" }, outputs: { dialogClosed: "dialogClosed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 3, consts: [["outerDialogContainer", ""], ["dialogContainer", ""], ["nameField", ""], ["kendoButton", "", "themeColor", "info", "class", "view-properties-button", 3, "click", 4, "ngIf"], ["class", "k-overlay", 4, "ngIf"], ["title", "View Properties", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", "resizeEnd", "heightChange", "widthChange", 4, "ngIf"], ["kendoButton", "", "themeColor", "info", 1, "view-properties-button", 3, "click"], [1, "fa-solid", "fa-gear"], [1, "k-overlay"], ["title", "View Properties", 3, "close", "resizeEnd", "heightChange", "widthChange", "minHeight", "minWidth", "top", "left", "width", "height", "resizable"], ["type", "converging-spinner", 4, "ngIf"], [1, "k-d-flex", "k-flex-col", "k-justify-content-between", "k-h-full"], [3, "keepTabContent", "animate", "height"], ["title", "General", 3, "selected"], ["kendoTabContent", ""], ["title", "Fields"], ["title", "Filters"], ["title", "Sorting"], ["title", "Advanced"], [1, "k-actions", "k-actions-end", "customBtn", "popup-actions"], ["kendoButton", "", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-circle-check"], ["fillMode", "outline", "themeColor", "info", "kendoButton", "", 3, "click"], ["type", "converging-spinner"], [1, "view-prop-tab-contents"], [1, "form-group"], ["text", "Name", 1, "k-form-label"], [1, "view-name", 3, "ngModelChange", "ngModel"], [1, "form-group", "form-group-description"], ["text", "Description", 1, "k-form-label"], [1, "k-input", "k-input-solid", "view-description", 3, "ngModelChange", "ngModel"], ["itemClass", "item", "activeItemClass", "item active", 3, "dragEnd", "kendoSortableBinding", "animation"], [1, "item-content"], ["type", "checkbox", "kendoCheckBox", "", 3, "ngModelChange", "change", "ngModel", "id"], [1, "k-checkbox-label", 3, "for", "text"], [1, "fa-solid", "fa-bars-staggered"], [1, "smart-filter-container"], ["text", "Smart Filter", 1, "smart-filter-label"], [3, "ngModelChange", "ngModel"], ["class", "smart-filter-prompt", "mjFillContainer", "", 3, "fillHeight", 4, "ngIf"], [4, "ngIf"], ["mjFillContainer", "", 1, "smart-filter-prompt", 3, "fillHeight"], ["placeholder", "Describe how you would like the data filtered", "resizable", "vertical", 3, "ngModelChange", "rows", "ngModel"], [3, "valueChange", "filters", "value"], [1, "sort-header"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-plus"], [4, "ngFor", "ngForOf"], ["textField", "Name", "valueField", "Name", 1, "sort-column", 3, "valueChange", "ngModelChange", "data", "ngModel"], ["textField", "Name", "valueField", "Value", 1, "sort-direction", 3, "valueChange", "ngModelChange", "data", "ngModel"], [1, "fa-solid", "fa-xmark"], ["resizable", "vertical", 1, "advanced-tab-details", 3, "readonly", "rows", "ngModel"], ["resizable", "vertical", 1, "advanced-tab-details", 3, "ngModelChange", "readonly", "rows", "ngModel"]], template: function UserViewPropertiesDialogComponent_Template(rf, ctx) { if (rf & 1) {
586
+ } }, inputs: { ViewID: "ViewID", EntityName: "EntityName", ShowPropertiesButton: "ShowPropertiesButton" }, outputs: { dialogClosed: "dialogClosed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 6, vars: 3, consts: [["outerDialogContainer", ""], ["dialogContainer", ""], ["nameField", ""], ["kendoButton", "", "themeColor", "info", "class", "view-properties-button", 3, "click", 4, "ngIf"], ["class", "k-overlay", 4, "ngIf"], ["title", "View Properties", 3, "minHeight", "minWidth", "top", "left", "width", "height", "resizable", "close", "resizeEnd", "heightChange", "widthChange", 4, "ngIf"], ["kendoButton", "", "themeColor", "info", 1, "view-properties-button", 3, "click"], [1, "fa-solid", "fa-gear"], [1, "k-overlay"], ["title", "View Properties", 3, "close", "resizeEnd", "heightChange", "widthChange", "minHeight", "minWidth", "top", "left", "width", "height", "resizable"], ["type", "converging-spinner", 4, "ngIf"], [1, "k-d-flex", "k-flex-col", "k-justify-content-between", "k-h-full"], [3, "keepTabContent", "animate", "height"], ["title", "General", 3, "selected"], ["kendoTabContent", ""], ["title", "Fields"], ["title", "Filters"], ["title", "Sorting"], ["title", "Advanced"], [1, "k-actions", "k-actions-end", "customBtn", "popup-actions"], ["kendoButton", "", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-circle-check"], ["fillMode", "outline", "themeColor", "info", "kendoButton", "", 3, "click"], ["type", "converging-spinner"], [1, "view-prop-tab-contents"], [1, "form-group"], ["text", "Name", 1, "k-form-label"], [1, "view-name", 3, "ngModelChange", "ngModel"], [1, "form-group", "form-group-description"], ["text", "Description", 1, "k-form-label"], [1, "k-input", "k-input-solid", "view-description", 3, "ngModelChange", "ngModel"], ["itemClass", "item", "activeItemClass", "item active", 3, "dragEnd", "kendoSortableBinding", "animation"], [1, "item-content"], [3, "change", "checkedState"], [1, "k-checkbox-label", 3, "for", "text"], [1, "fa-solid", "fa-bars-staggered"], [1, "smart-filter-container"], ["text", "Smart Filter", 1, "smart-filter-label"], [3, "ngModelChange", "ngModel"], ["class", "smart-filter-prompt", "mjFillContainer", "", 3, "fillHeight", 4, "ngIf"], [4, "ngIf"], ["mjFillContainer", "", 1, "smart-filter-prompt", 3, "fillHeight"], ["placeholder", "Describe how you would like the data filtered", "resizable", "vertical", 3, "ngModelChange", "rows", "ngModel"], [3, "valueChange", "filters", "value"], [1, "sort-header"], ["kendoButton", "", 3, "click"], [1, "fa-solid", "fa-plus"], [4, "ngFor", "ngForOf"], ["textField", "Name", "valueField", "Name", 1, "sort-column", 3, "valueChange", "ngModelChange", "data", "ngModel"], ["textField", "Name", "valueField", "Value", 1, "sort-direction", 3, "valueChange", "ngModelChange", "data", "ngModel"], [1, "fa-solid", "fa-xmark"], ["resizable", "vertical", 1, "advanced-tab-details", 3, "readonly", "rows", "ngModel"], ["resizable", "vertical", 1, "advanced-tab-details", 3, "ngModelChange", "readonly", "rows", "ngModel"]], template: function UserViewPropertiesDialogComponent_Template(rf, ctx) { if (rf & 1) {
587
587
  i0.ɵɵelementStart(0, "div");
588
588
  i0.ɵɵtemplate(1, UserViewPropertiesDialogComponent_button_1_Template, 3, 0, "button", 3);
589
589
  i0.ɵɵelementStart(2, "div", null, 0);
@@ -596,10 +596,10 @@ UserViewPropertiesDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
596
596
  i0.ɵɵproperty("ngIf", ctx.isDialogOpened);
597
597
  i0.ɵɵadvance();
598
598
  i0.ɵɵproperty("ngIf", ctx.isDialogOpened);
599
- } }, dependencies: [i4.NgForOf, i4.NgIf, i5.TextAreaComponent, i5.TextBoxComponent, i5.SwitchComponent, i5.CheckBoxDirective, i6.LabelComponent, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.NgModel, i7.ButtonComponent, i8.WindowComponent, i9.TabStripComponent, i9.TabStripTabComponent, i9.TabContentDirective, i10.SortableComponent, i10.SortableBindingDirective, i11.FilterComponent, i12.DropDownListComponent], styles: [".view-properties-button[_ngcontent-%COMP%] {\n margin-left: 0px;\n }\n .view-prop-tab-contents[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%; \n\n }\n \n .form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-bottom: 10px;\n }\n \n .form-group-description[_ngcontent-%COMP%] {\n flex-grow: 1;\n }\n \n .k-form-label[_ngcontent-%COMP%] {\n width: 150px; \n\n margin-right: 10px;\n }\n \n .view-description[_ngcontent-%COMP%] {\n flex-grow: 1;\n height: 100%;\n padding: 5px;\n resize: none;\n }\n \n \n \n .item-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .popup-content[_ngcontent-%COMP%] {\n height: calc(100% - 46px);\n }\n \n .popup-actions[_ngcontent-%COMP%] {\n padding: 16px 0 0;\n }\n \n .view-prop-tab-contents[_ngcontent-%COMP%] {\n overflow: hidden;\n }\n \n .sort-column[_ngcontent-%COMP%] {\n width: 300px;\n }\n \n .sort-direction[_ngcontent-%COMP%] {\n width: 125px;\n }\n \n .sort-header[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-bottom: 5px;\n width: 75px;\n }\n \n .smart-filter-label[_ngcontent-%COMP%] {\n margin-right: 10px;\n }\n \n .smart-filter-prompt[_ngcontent-%COMP%] {\n margin-top: 15px;\n }\n \n .advanced-tab-details[_ngcontent-%COMP%]\n {\n margin-bottom: 10px;\n }\n .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n }\n .popup-content .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n }\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }\n\n.k-checkbox[_ngcontent-%COMP%]:checked {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-switch-on[_ngcontent-%COMP%] .k-switch-track[_ngcontent-%COMP%] {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-selected[_ngcontent-%COMP%] {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}"] });
599
+ } }, dependencies: [i4.NgForOf, i4.NgIf, i5.TextAreaComponent, i5.TextBoxComponent, i5.SwitchComponent, i5.CheckBoxComponent, i6.LabelComponent, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i7.ButtonComponent, i8.WindowComponent, i9.TabStripComponent, i9.TabStripTabComponent, i9.TabContentDirective, i10.SortableComponent, i10.SortableBindingDirective, i11.FilterComponent, i12.DropDownListComponent], styles: [".view-properties-button[_ngcontent-%COMP%] {\n margin-left: 0px;\n }\n .view-prop-tab-contents[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%; \n\n }\n \n .form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-bottom: 10px;\n }\n \n .form-group-description[_ngcontent-%COMP%] {\n flex-grow: 1;\n }\n \n .k-form-label[_ngcontent-%COMP%] {\n width: 150px; \n\n margin-right: 10px;\n }\n \n .view-description[_ngcontent-%COMP%] {\n flex-grow: 1;\n height: 100%;\n padding: 5px;\n resize: none;\n }\n \n \n \n .item-content[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .popup-content[_ngcontent-%COMP%] {\n height: calc(100% - 46px);\n }\n \n .popup-actions[_ngcontent-%COMP%] {\n padding: 16px 0 0;\n }\n \n .view-prop-tab-contents[_ngcontent-%COMP%] {\n overflow: hidden;\n }\n \n .sort-column[_ngcontent-%COMP%] {\n width: 300px;\n }\n \n .sort-direction[_ngcontent-%COMP%] {\n width: 125px;\n }\n \n .sort-header[_ngcontent-%COMP%] > button[_ngcontent-%COMP%] {\n margin-left: 5px;\n margin-bottom: 5px;\n width: 75px;\n }\n \n .smart-filter-label[_ngcontent-%COMP%] {\n margin-right: 10px;\n }\n \n .smart-filter-prompt[_ngcontent-%COMP%] {\n margin-top: 15px;\n }\n \n .advanced-tab-details[_ngcontent-%COMP%]\n {\n margin-bottom: 10px;\n }\n .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n }\n .popup-content .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item.k-active {\n border-bottom: 3px solid var(--border-blue) !important;\n }\n .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }\n\n.k-checkbox[_ngcontent-%COMP%] {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-switch-on[_ngcontent-%COMP%] .k-switch-track[_ngcontent-%COMP%] {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-selected[_ngcontent-%COMP%] {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}"] });
600
600
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewPropertiesDialogComponent, [{
601
601
  type: Component,
602
- args: [{ selector: 'mj-user-view-properties-dialog', template: "<div>\n <button *ngIf=\"ShowPropertiesButton\"\n kendoButton\n themeColor=\"info\"\n (click)=\"this.Open()\"\n class=\"view-properties-button\"\n >\n <span class=\"fa-solid fa-gear\"></span>\n Properties\n </button>\n <div #outerDialogContainer>\n <div class=\"k-overlay\" *ngIf=\"isDialogOpened\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"668\"\n [height]=\"525\"\n [resizable]=\"true\"\n title=\"View Properties\"\n *ngIf=\"isDialogOpened\"\n (close)=\"closePropertiesDialog()\"\n (resizeEnd)=\"this.ResizeTab()\"\n (heightChange)=\"this.ResizeTab()\"\n (widthChange)=\"this.ResizeTab()\"\n >\n <kendo-loader *ngIf=\"showloader\" type=\"converging-spinner\" ></kendo-loader>\n <div class=\"k-d-flex k-flex-col k-justify-content-between k-h-full\" #dialogContainer>\n <div [class]=\"showloader ? 'disabled-div' : ''\">\n <kendo-tabstrip [keepTabContent]=\"true\" [animate] = \"false\" [height]=\"TabHeight\" >\n <kendo-tabstrip-tab title=\"General\" [selected]=\"true\">\n <ng-template kendoTabContent>\n <div class=\"view-prop-tab-contents\">\n <div class=\"form-group\">\n <kendo-label class=\"k-form-label\" text=\"Name\"></kendo-label>\n <kendo-textbox #nameField class=\"view-name\" [(ngModel)]=\"record.Name\"></kendo-textbox>\n </div>\n <div class=\"form-group form-group-description\">\n <kendo-label class=\"k-form-label\" text=\"Description\"></kendo-label>\n <textarea class=\"k-input k-input-solid view-description\" [(ngModel)]=\"record.Description\"></textarea>\n </div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Fields\">\n <ng-template kendoTabContent>\n \n <kendo-sortable\n [kendoSortableBinding]=\"this.localGridState.columnSettings\"\n [animation]=\"true\"\n itemClass=\"item\"\n activeItemClass=\"item active\"\n (dragEnd)=\"onDragEnd($event)\"\n >\n <ng-template let-col=\"item\">\n <div class=\"item-content\">\n <div>\n <input\n type=\"checkbox\"\n [(ngModel)]=\"col.hidden\"\n id=\"column_{{col.ID}}\"\n kendoCheckBox\n (change)=\"toggleColumn(col)\"\n />\n <kendo-label\n [for]=\"'column_'+col.ID\"\n [text]=\"col.DisplayName ? col.DisplayName : col.Name\"\n class=\"k-checkbox-label\"\n ></kendo-label>\n </div>\n <span class=\"fa-solid fa-bars-staggered\"></span>\n </div>\n </ng-template>\n </kendo-sortable>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Filters\">\n <ng-template kendoTabContent>\n <div class=\"smart-filter-container\">\n <kendo-label text=\"Smart Filter\" class=\"smart-filter-label\"></kendo-label>\n <kendo-switch [(ngModel)]=\"record.SmartFilterEnabled\"></kendo-switch>\n </div>\n <div *ngIf=\"record.SmartFilterEnabled\" class=\"smart-filter-prompt\" mjFillContainer [fillHeight]=\"true\">\n <kendo-textarea\n placeholder=\"Describe how you would like the data filtered\"\n [rows]=\"10\"\n [(ngModel)]=\"record.SmartFilterPrompt\"\n resizable=\"vertical\"\n ></kendo-textarea>\n </div>\n <div *ngIf=\"!record.SmartFilterEnabled\">\n <kendo-filter\n [filters]=\"setupFilters()\"\n [value]=\"defaultFilterState\"\n (valueChange)=\"onFilterChange($event)\"\n >\n </kendo-filter>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Sorting\">\n <ng-template kendoTabContent>\n <div class=\"sort-header\">\n <button kendoButton (click)=\"addSort()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </button>\n </div>\n <div *ngFor=\"let s of this.sortState\"> \n <kendo-dropdownlist \n class=\"sort-column\"\n [data]=\"sortFields\"\n textField=\"Name\"\n valueField=\"Name\"\n (valueChange)=\"sortColumnValueChange(s, $event)\"\n [(ngModel)]=\"s.field\"\n >\n </kendo-dropdownlist>\n <kendo-dropdownlist\n class=\"sort-direction\"\n [data]=\"sortDirections\"\n textField=\"Name\"\n valueField=\"Value\"\n (valueChange)=\"sortDirectionValueChange(s, $event)\"\n [(ngModel)]=\"s.direction\"\n >\n </kendo-dropdownlist>\n <button kendoButton (click)=\"removeSort(s)\">\n <span class=\"fa-solid fa-xmark\"></span>\n Remove\n </button>\n </div> \n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Advanced\">\n <ng-template kendoTabContent>\n @if(record.SmartFilterEnabled) {\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"5\"\n [(ngModel)]=\"record.SmartFilterExplanation\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea>\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"5\"\n [(ngModel)]=\"record.SmartFilterWhereClause\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea> \n }\n @else {\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"7\"\n [(ngModel)]=\"record.WhereClause\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea>\n }\n \n </ng-template>\n </kendo-tabstrip-tab>\n </kendo-tabstrip>\n \n <div class=\"k-actions k-actions-end customBtn popup-actions\">\n <button kendoButton (click)=\"saveProperties()\" themeColor=\"info\">\n <span class=\"fa-solid fa-circle-check\"></span>\n Save\n </button>\n <button fillMode=\"outline\" themeColor=\"info\" kendoButton (click)=\"closePropertiesDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n </kendo-window>\n </div>\n</div> ", styles: [".view-properties-button {\n margin-left: 0px;\n }\n .view-prop-tab-contents {\n display: flex;\n flex-direction: column;\n height: 100%; /* Set to the height you want */\n }\n \n .form-group {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-bottom: 10px;\n }\n \n .form-group-description {\n flex-grow: 1;\n }\n \n .k-form-label {\n width: 150px; /* Adjust as needed */\n margin-right: 10px;\n }\n \n .view-description {\n flex-grow: 1;\n height: 100%;\n padding: 5px;\n resize: none;\n }\n \n \n \n .item-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .popup-content {\n height: calc(100% - 46px);\n }\n \n .popup-actions {\n padding: 16px 0 0;\n }\n \n .view-prop-tab-contents {\n overflow: hidden;\n }\n \n .sort-column {\n width: 300px;\n }\n \n .sort-direction {\n width: 125px;\n }\n \n .sort-header > button {\n margin-left: 5px;\n margin-bottom: 5px;\n width: 75px;\n }\n \n .smart-filter-label {\n margin-right: 10px;\n }\n \n .smart-filter-prompt {\n margin-top: 15px;\n }\n \n .advanced-tab-details\n {\n margin-bottom: 10px;\n }\n ::ng-deep .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n }\n ::ng-deep .popup-content .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n ::ng-deep .popup-content .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 .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }\n\n.k-checkbox:checked {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-switch-on .k-switch-track {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-selected {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}"] }]
602
+ args: [{ selector: 'mj-user-view-properties-dialog', template: "<div>\n <button *ngIf=\"ShowPropertiesButton\"\n kendoButton\n themeColor=\"info\"\n (click)=\"this.Open()\"\n class=\"view-properties-button\"\n >\n <span class=\"fa-solid fa-gear\"></span>\n Properties\n </button>\n <div #outerDialogContainer>\n <div class=\"k-overlay\" *ngIf=\"isDialogOpened\"></div>\n <kendo-window\n [minHeight]=\"300\"\n [minWidth]=\"800\"\n [top]=\"100\"\n [left]=\"100\"\n [width]=\"668\"\n [height]=\"525\"\n [resizable]=\"true\"\n title=\"View Properties\"\n *ngIf=\"isDialogOpened\"\n (close)=\"closePropertiesDialog()\"\n (resizeEnd)=\"this.ResizeTab()\"\n (heightChange)=\"this.ResizeTab()\"\n (widthChange)=\"this.ResizeTab()\"\n >\n <kendo-loader *ngIf=\"showloader\" type=\"converging-spinner\" ></kendo-loader>\n <div class=\"k-d-flex k-flex-col k-justify-content-between k-h-full\" #dialogContainer>\n <div [class]=\"showloader ? 'disabled-div' : ''\">\n <kendo-tabstrip [keepTabContent]=\"true\" [animate] = \"false\" [height]=\"TabHeight\" >\n <kendo-tabstrip-tab title=\"General\" [selected]=\"true\">\n <ng-template kendoTabContent>\n <div class=\"view-prop-tab-contents\">\n <div class=\"form-group\">\n <kendo-label class=\"k-form-label\" text=\"Name\"></kendo-label>\n <kendo-textbox #nameField class=\"view-name\" [(ngModel)]=\"record.Name\"></kendo-textbox>\n </div>\n <div class=\"form-group form-group-description\">\n <kendo-label class=\"k-form-label\" text=\"Description\"></kendo-label>\n <textarea class=\"k-input k-input-solid view-description\" [(ngModel)]=\"record.Description\"></textarea>\n </div>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Fields\">\n <ng-template kendoTabContent>\n \n <kendo-sortable\n [kendoSortableBinding]=\"this.localGridState.columnSettings\"\n [animation]=\"true\"\n itemClass=\"item\"\n activeItemClass=\"item active\"\n (dragEnd)=\"onDragEnd($event)\"\n >\n <ng-template let-col=\"item\">\n <div class=\"item-content\">\n <div>\n <kendo-checkbox\n [checkedState]=\"!col.hidden\"\n (change)=\"toggleColumn(col)\"\n ></kendo-checkbox>\n <kendo-label\n [for]=\"'column_'+col.ID\"\n [text]=\"col.DisplayName ? col.DisplayName : col.Name\"\n class=\"k-checkbox-label\"\n ></kendo-label>\n </div>\n <span class=\"fa-solid fa-bars-staggered\"></span>\n </div>\n </ng-template>\n </kendo-sortable>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Filters\">\n <ng-template kendoTabContent>\n <div class=\"smart-filter-container\">\n <kendo-label text=\"Smart Filter\" class=\"smart-filter-label\"></kendo-label>\n <kendo-switch [(ngModel)]=\"record.SmartFilterEnabled\"></kendo-switch>\n </div>\n <div *ngIf=\"record.SmartFilterEnabled\" class=\"smart-filter-prompt\" mjFillContainer [fillHeight]=\"true\">\n <kendo-textarea\n placeholder=\"Describe how you would like the data filtered\"\n [rows]=\"10\"\n [(ngModel)]=\"record.SmartFilterPrompt\"\n resizable=\"vertical\"\n ></kendo-textarea>\n </div>\n <div *ngIf=\"!record.SmartFilterEnabled\">\n <kendo-filter\n [filters]=\"setupFilters()\"\n [value]=\"defaultFilterState\"\n (valueChange)=\"onFilterChange($event)\"\n >\n </kendo-filter>\n </div>\n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Sorting\">\n <ng-template kendoTabContent>\n <div class=\"sort-header\">\n <button kendoButton (click)=\"addSort()\">\n <span class=\"fa-solid fa-plus\"></span>\n Add\n </button>\n </div>\n <div *ngFor=\"let s of this.sortState\"> \n <kendo-dropdownlist \n class=\"sort-column\"\n [data]=\"sortFields\"\n textField=\"Name\"\n valueField=\"Name\"\n (valueChange)=\"sortColumnValueChange(s, $event)\"\n [(ngModel)]=\"s.field\"\n >\n </kendo-dropdownlist>\n <kendo-dropdownlist\n class=\"sort-direction\"\n [data]=\"sortDirections\"\n textField=\"Name\"\n valueField=\"Value\"\n (valueChange)=\"sortDirectionValueChange(s, $event)\"\n [(ngModel)]=\"s.direction\"\n >\n </kendo-dropdownlist>\n <button kendoButton (click)=\"removeSort(s)\">\n <span class=\"fa-solid fa-xmark\"></span>\n Remove\n </button>\n </div> \n </ng-template>\n </kendo-tabstrip-tab>\n <kendo-tabstrip-tab title=\"Advanced\">\n <ng-template kendoTabContent>\n @if(record.SmartFilterEnabled) {\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"5\"\n [(ngModel)]=\"record.SmartFilterExplanation\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea>\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"5\"\n [(ngModel)]=\"record.SmartFilterWhereClause\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea> \n }\n @else {\n <kendo-textarea\n [readonly]=\"true\"\n [rows]=\"7\"\n [(ngModel)]=\"record.WhereClause\"\n resizable=\"vertical\"\n class=\"advanced-tab-details\"\n ></kendo-textarea>\n }\n \n </ng-template>\n </kendo-tabstrip-tab>\n </kendo-tabstrip>\n \n <div class=\"k-actions k-actions-end customBtn popup-actions\">\n <button kendoButton (click)=\"saveProperties()\" themeColor=\"info\">\n <span class=\"fa-solid fa-circle-check\"></span>\n Save\n </button>\n <button fillMode=\"outline\" themeColor=\"info\" kendoButton (click)=\"closePropertiesDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n </kendo-window>\n </div>\n</div> ", styles: [".view-properties-button {\n margin-left: 0px;\n }\n .view-prop-tab-contents {\n display: flex;\n flex-direction: column;\n height: 100%; /* Set to the height you want */\n }\n \n .form-group {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n margin-bottom: 10px;\n }\n \n .form-group-description {\n flex-grow: 1;\n }\n \n .k-form-label {\n width: 150px; /* Adjust as needed */\n margin-right: 10px;\n }\n \n .view-description {\n flex-grow: 1;\n height: 100%;\n padding: 5px;\n resize: none;\n }\n \n \n \n .item-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n \n .popup-content {\n height: calc(100% - 46px);\n }\n \n .popup-actions {\n padding: 16px 0 0;\n }\n \n .view-prop-tab-contents {\n overflow: hidden;\n }\n \n .sort-column {\n width: 300px;\n }\n \n .sort-direction {\n width: 125px;\n }\n \n .sort-header > button {\n margin-left: 5px;\n margin-bottom: 5px;\n width: 75px;\n }\n \n .smart-filter-label {\n margin-right: 10px;\n }\n \n .smart-filter-prompt {\n margin-top: 15px;\n }\n \n .advanced-tab-details\n {\n margin-bottom: 10px;\n }\n ::ng-deep .customBtn button {\n flex: 1;\n border-radius: 10px;\n line-height: 34px;\n }\n ::ng-deep .popup-content .k-tabstrip-items-wrapper {\n background: var(--white-color) !important;\n padding-left: 0 !important;\n }\n ::ng-deep .popup-content .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 .popup-content .k-tabstrip-items-wrapper .k-tabstrip-items .k-tabstrip-item {\n background: var(--white-color) !important;\n border-right: 0 !important;\n }\n\n.k-checkbox {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-switch-on .k-switch-track {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}\n\n.k-selected {\n background-color: var(--border-blue);\n border-color: var(--border-blue);\n color: white;\n}"] }]
603
603
  }], () => [{ type: i1.ActivatedRoute }, { type: i0.ElementRef }, { type: i2.SharedService }, { type: i3.FormBuilder }, { type: i1.Router }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], { ViewID: [{
604
604
  type: Input
605
605
  }], EntityName: [{
@@ -624,4 +624,4 @@ UserViewPropertiesDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({
624
624
  type: ViewChild,
625
625
  args: ['outerDialogContainer']
626
626
  }] }); })();
627
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewPropertiesDialogComponent, { className: "UserViewPropertiesDialogComponent", filePath: "src/lib/user-view-properties.component.ts", lineNumber: 21 }); })();
627
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UserViewPropertiesDialogComponent, { className: "UserViewPropertiesDialogComponent" }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-user-view-properties",
3
- "version": "1.8.0",
3
+ "version": "2.0.0",
4
4
  "description": "MemberJunction: Angular UI Dialog Component to View/Edit User View Properties",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -24,11 +24,11 @@
24
24
  "@angular/forms": "18.0.2"
25
25
  },
26
26
  "dependencies": {
27
- "@memberjunction/global": "1.8.0",
28
- "@memberjunction/core": "1.8.0",
29
- "@memberjunction/core-entities": "1.8.0",
30
- "@memberjunction/ng-base-forms": "1.8.0",
31
- "@memberjunction/ng-shared": "1.8.0",
27
+ "@memberjunction/global": "2.0.0",
28
+ "@memberjunction/core": "2.0.0",
29
+ "@memberjunction/core-entities": "2.0.0",
30
+ "@memberjunction/ng-base-forms": "2.0.0",
31
+ "@memberjunction/ng-shared": "2.0.0",
32
32
  "@progress/kendo-angular-sortable": "16.2.0",
33
33
  "@progress/kendo-angular-dialog": "16.2.0",
34
34
  "@progress/kendo-angular-layout": "16.2.0",