@memberjunction/ng-base-forms 0.9.17 → 0.9.18
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.
- package/dist/lib/base-form-component.d.ts +14 -3
- package/dist/lib/base-form-component.d.ts.map +1 -1
- package/dist/lib/base-form-component.js +34 -6
- package/dist/lib/form-toolbar.d.ts.map +1 -1
- package/dist/lib/form-toolbar.js +37 -35
- package/dist/lib/section-loader-component.d.ts +5 -2
- package/dist/lib/section-loader-component.d.ts.map +1 -1
- package/dist/lib/section-loader-component.js +16 -8
- package/dist/module.d.ts +2 -2
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +7 -7
- package/package.json +3 -5
|
@@ -4,7 +4,7 @@ import { UserViewGridComponent } from '@memberjunction/ng-user-view-grid';
|
|
|
4
4
|
import { BaseRecordComponent } from './base-record-component';
|
|
5
5
|
import { SharedService } from '@memberjunction/ng-shared';
|
|
6
6
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
7
|
-
import {
|
|
7
|
+
import { MJTabStripComponent } from '@memberjunction/ng-tabstrip';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export declare abstract class BaseFormComponent extends BaseRecordComponent implements AfterViewInit, OnInit, OnDestroy {
|
|
10
10
|
protected elementRef: ElementRef;
|
|
@@ -16,6 +16,12 @@ export declare abstract class BaseFormComponent extends BaseRecordComponent impl
|
|
|
16
16
|
EditMode: boolean;
|
|
17
17
|
BottomMargin: number;
|
|
18
18
|
TabHeight: string;
|
|
19
|
+
/**
|
|
20
|
+
* This property is automatically updated by the BaseFormComponent to reflect the height of the "Top Area" of the form. The Top Area is defined in a template by having
|
|
21
|
+
* a #topArea element anywhere in the form. This property will automatically be updated AfterViewInit to reflect the height of the top area. This is useful for various things
|
|
22
|
+
* like setting a pane in a splitter to a specific height based on the top area height.
|
|
23
|
+
*/
|
|
24
|
+
TopAreaHeight: string;
|
|
19
25
|
GridBottomMargin: number;
|
|
20
26
|
FavoriteInitDone: boolean;
|
|
21
27
|
isHistoryDialogOpen: boolean;
|
|
@@ -23,14 +29,19 @@ export declare abstract class BaseFormComponent extends BaseRecordComponent impl
|
|
|
23
29
|
private _pendingRecords;
|
|
24
30
|
private _updatingBrowserUrl;
|
|
25
31
|
constructor(elementRef: ElementRef, sharedService: SharedService, router: Router, route: ActivatedRoute);
|
|
26
|
-
tabComponent:
|
|
32
|
+
tabComponent: MJTabStripComponent;
|
|
27
33
|
ngOnInit(): Promise<void>;
|
|
34
|
+
topArea: ElementRef;
|
|
28
35
|
ngAfterViewInit(): void;
|
|
36
|
+
/**
|
|
37
|
+
* This method can be called at anytime to re-calculate the height of the top area and set the TopAreaHeight property. This is useful if the top area height changes dynamically
|
|
38
|
+
*/
|
|
39
|
+
CalcTopAreaHeight(): void;
|
|
29
40
|
private resizeSub;
|
|
30
41
|
ngOnDestroy(): void;
|
|
31
42
|
userViewGridComponents: QueryList<UserViewGridComponent>;
|
|
32
43
|
protected get PendingRecords(): BaseEntity[];
|
|
33
|
-
onTabSelect(
|
|
44
|
+
onTabSelect(tabIndex: any): void;
|
|
34
45
|
StartEditMode(): void;
|
|
35
46
|
handleHistoryDialog(): void;
|
|
36
47
|
RemoveFavorite(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-form-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-form-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAA2B,SAAS,EAAE,UAAU,EAAa,MAAM,eAAe,CAAC;AAG5H,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,oBAAoB,EAC9D,sBAAsB,EAAY,aAAa,EAAY,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-form-component.d.ts","sourceRoot":"","sources":["../../src/lib/base-form-component.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,11 @@ import { Subject, debounceTime, fromEvent } from 'rxjs';
|
|
|
12
12
|
import { EntityInfo, EntityPermissionType, Metadata, LogError } from '@memberjunction/core';
|
|
13
13
|
import { UserViewGridComponent } from '@memberjunction/ng-user-view-grid';
|
|
14
14
|
import { BaseRecordComponent } from './base-record-component';
|
|
15
|
-
import {
|
|
15
|
+
import { MJTabStripComponent } from '@memberjunction/ng-tabstrip';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
import * as i1 from "@memberjunction/ng-shared";
|
|
18
18
|
import * as i2 from "@angular/router";
|
|
19
|
+
const _c0 = ["topArea"];
|
|
19
20
|
export class BaseFormComponent extends BaseRecordComponent {
|
|
20
21
|
constructor(elementRef, sharedService, router, route) {
|
|
21
22
|
super();
|
|
@@ -28,6 +29,12 @@ export class BaseFormComponent extends BaseRecordComponent {
|
|
|
28
29
|
this.EditMode = false;
|
|
29
30
|
this.BottomMargin = 10;
|
|
30
31
|
this.TabHeight = '500px';
|
|
32
|
+
/**
|
|
33
|
+
* This property is automatically updated by the BaseFormComponent to reflect the height of the "Top Area" of the form. The Top Area is defined in a template by having
|
|
34
|
+
* a #topArea element anywhere in the form. This property will automatically be updated AfterViewInit to reflect the height of the top area. This is useful for various things
|
|
35
|
+
* like setting a pane in a splitter to a specific height based on the top area height.
|
|
36
|
+
*/
|
|
37
|
+
this.TopAreaHeight = '300px';
|
|
31
38
|
this.GridBottomMargin = 100;
|
|
32
39
|
this.FavoriteInitDone = false;
|
|
33
40
|
this.isHistoryDialogOpen = false;
|
|
@@ -61,7 +68,7 @@ export class BaseFormComponent extends BaseRecordComponent {
|
|
|
61
68
|
if (tabIndex >= 0) {
|
|
62
69
|
// found the tab index, if we don't find it, do nothing
|
|
63
70
|
this.activeTabIndex = tabIndex;
|
|
64
|
-
this.tabComponent.
|
|
71
|
+
this.tabComponent.SelectedTabIndex = tabIndex;
|
|
65
72
|
}
|
|
66
73
|
}
|
|
67
74
|
}
|
|
@@ -70,6 +77,22 @@ export class BaseFormComponent extends BaseRecordComponent {
|
|
|
70
77
|
this.sharedService.InvokeManualResize();
|
|
71
78
|
}, 250);
|
|
72
79
|
});
|
|
80
|
+
this.CalcTopAreaHeight();
|
|
81
|
+
// finally, set a timer to set the SelectedTabIndex = SelectedTabIndex to force the tab to refresh
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
if (this.tabComponent)
|
|
84
|
+
this.tabComponent.SelectedTabIndex = this.activeTabIndex;
|
|
85
|
+
}, 100);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* This method can be called at anytime to re-calculate the height of the top area and set the TopAreaHeight property. This is useful if the top area height changes dynamically
|
|
89
|
+
*/
|
|
90
|
+
CalcTopAreaHeight() {
|
|
91
|
+
// calculate the top area height and set it to our TopAreaHeight property, sub-classes can then do whatever they want with that property
|
|
92
|
+
if (this.topArea && this.topArea.nativeElement) {
|
|
93
|
+
const height = this.topArea.nativeElement.offsetHeight;
|
|
94
|
+
this.TopAreaHeight = `${height}px`;
|
|
95
|
+
}
|
|
73
96
|
}
|
|
74
97
|
ngOnDestroy() {
|
|
75
98
|
if (this.resizeSub) {
|
|
@@ -79,8 +102,8 @@ export class BaseFormComponent extends BaseRecordComponent {
|
|
|
79
102
|
get PendingRecords() {
|
|
80
103
|
return this._pendingRecords;
|
|
81
104
|
}
|
|
82
|
-
onTabSelect(
|
|
83
|
-
this.activeTabIndex =
|
|
105
|
+
onTabSelect(tabIndex) {
|
|
106
|
+
this.activeTabIndex = tabIndex;
|
|
84
107
|
this.sharedService.InvokeManualResize();
|
|
85
108
|
// now that we've updated our state and re-sized, also update the browser URL to add the tab name as a query parameter to the URL
|
|
86
109
|
const tabName = this._tabIndexes[this.activeTabIndex];
|
|
@@ -431,18 +454,23 @@ export class BaseFormComponent extends BaseRecordComponent {
|
|
|
431
454
|
}
|
|
432
455
|
BaseFormComponent.ɵfac = function BaseFormComponent_Factory(t) { return new (t || BaseFormComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i2.ActivatedRoute)); };
|
|
433
456
|
BaseFormComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseFormComponent, viewQuery: function BaseFormComponent_Query(rf, ctx) { if (rf & 1) {
|
|
434
|
-
i0.ɵɵviewQuery(
|
|
457
|
+
i0.ɵɵviewQuery(MJTabStripComponent, 5);
|
|
458
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
435
459
|
i0.ɵɵviewQuery(UserViewGridComponent, 5);
|
|
436
460
|
} if (rf & 2) {
|
|
437
461
|
let _t;
|
|
438
462
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabComponent = _t.first);
|
|
463
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topArea = _t.first);
|
|
439
464
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.userViewGridComponents = _t);
|
|
440
465
|
} }, features: [i0.ɵɵInheritDefinitionFeature] });
|
|
441
466
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseFormComponent, [{
|
|
442
467
|
type: Directive
|
|
443
468
|
}], () => [{ type: i0.ElementRef }, { type: i1.SharedService }, { type: i2.Router }, { type: i2.ActivatedRoute }], { tabComponent: [{
|
|
444
469
|
type: ViewChild,
|
|
445
|
-
args: [
|
|
470
|
+
args: [MJTabStripComponent, { static: false }]
|
|
471
|
+
}], topArea: [{
|
|
472
|
+
type: ViewChild,
|
|
473
|
+
args: ['topArea']
|
|
446
474
|
}], userViewGridComponents: [{
|
|
447
475
|
type: ViewChildren,
|
|
448
476
|
args: [UserViewGridComponent]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-toolbar.d.ts","sourceRoot":"","sources":["../../src/lib/form-toolbar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;;AAG1D,
|
|
1
|
+
{"version":3,"file":"form-toolbar.d.ts","sourceRoot":"","sources":["../../src/lib/form-toolbar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;;AAG1D,qBAkBa,oBAAoB;IACpB,IAAI,EAAG,iBAAiB,CAAC;IAE3B,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAHjC,oBAAoB;2CAApB,oBAAoB;CAWhC"}
|
package/dist/lib/form-toolbar.js
CHANGED
|
@@ -3,51 +3,51 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
4
|
import * as i2 from "@memberjunction/ng-record-changes";
|
|
5
5
|
import * as i3 from "@progress/kendo-angular-buttons";
|
|
6
|
-
function
|
|
6
|
+
function FormToolbarComponent_button_1_Template(rf, ctx) { if (rf & 1) {
|
|
7
7
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
8
|
-
i0.ɵɵelementStart(0, "button",
|
|
9
|
-
i0.ɵɵlistener("click", function
|
|
8
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
9
|
+
i0.ɵɵlistener("click", function FormToolbarComponent_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.form.StartEditMode()); });
|
|
10
10
|
i0.ɵɵtext(1, "Edit Record");
|
|
11
11
|
i0.ɵɵelementEnd();
|
|
12
12
|
} }
|
|
13
|
-
function
|
|
13
|
+
function FormToolbarComponent_button_2_Template(rf, ctx) { if (rf & 1) {
|
|
14
14
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
15
|
-
i0.ɵɵelementStart(0, "button",
|
|
16
|
-
i0.ɵɵlistener("mouseup", function
|
|
15
|
+
i0.ɵɵelementStart(0, "button", 5);
|
|
16
|
+
i0.ɵɵlistener("mouseup", function FormToolbarComponent_button_2_Template_button_mouseup_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.saveRecord($event)); });
|
|
17
17
|
i0.ɵɵtext(1, "Save Record");
|
|
18
18
|
i0.ɵɵelementEnd();
|
|
19
19
|
} }
|
|
20
|
-
function
|
|
20
|
+
function FormToolbarComponent_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
21
21
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
22
|
-
i0.ɵɵelementStart(0, "button",
|
|
23
|
-
i0.ɵɵlistener("click", function
|
|
22
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
23
|
+
i0.ɵɵlistener("click", function FormToolbarComponent_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.form.CancelEdit()); });
|
|
24
24
|
i0.ɵɵtext(1, "Cancel");
|
|
25
25
|
i0.ɵɵelementEnd();
|
|
26
26
|
} }
|
|
27
|
-
function
|
|
27
|
+
function FormToolbarComponent_button_4_Template(rf, ctx) { if (rf & 1) {
|
|
28
28
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
29
|
-
i0.ɵɵelementStart(0, "button",
|
|
30
|
-
i0.ɵɵlistener("click", function
|
|
29
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
30
|
+
i0.ɵɵlistener("click", function FormToolbarComponent_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.form.RemoveFavorite()); });
|
|
31
31
|
i0.ɵɵtext(1, "Remove Favorite");
|
|
32
32
|
i0.ɵɵelementEnd();
|
|
33
33
|
} }
|
|
34
|
-
function
|
|
34
|
+
function FormToolbarComponent_button_5_Template(rf, ctx) { if (rf & 1) {
|
|
35
35
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
36
|
-
i0.ɵɵelementStart(0, "button",
|
|
37
|
-
i0.ɵɵlistener("click", function
|
|
36
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
37
|
+
i0.ɵɵlistener("click", function FormToolbarComponent_button_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r15.form.MakeFavorite()); });
|
|
38
38
|
i0.ɵɵtext(1, "Make Favorite");
|
|
39
39
|
i0.ɵɵelementEnd();
|
|
40
40
|
} }
|
|
41
|
-
function
|
|
41
|
+
function FormToolbarComponent_button_6_Template(rf, ctx) { if (rf & 1) {
|
|
42
42
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
43
|
-
i0.ɵɵelementStart(0, "button",
|
|
44
|
-
i0.ɵɵlistener("click", function
|
|
43
|
+
i0.ɵɵelementStart(0, "button", 4);
|
|
44
|
+
i0.ɵɵlistener("click", function FormToolbarComponent_button_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.form.handleHistoryDialog()); });
|
|
45
45
|
i0.ɵɵtext(1, "History");
|
|
46
46
|
i0.ɵɵelementEnd();
|
|
47
47
|
} }
|
|
48
48
|
function FormToolbarComponent_mj_record_changes_7_Template(rf, ctx) { if (rf & 1) {
|
|
49
49
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
50
|
-
i0.ɵɵelementStart(0, "mj-record-changes",
|
|
50
|
+
i0.ɵɵelementStart(0, "mj-record-changes", 6);
|
|
51
51
|
i0.ɵɵlistener("dialogClosed", function FormToolbarComponent_mj_record_changes_7_Template_mj_record_changes_dialogClosed_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.form.handleHistoryDialog()); });
|
|
52
52
|
i0.ɵɵelementEnd();
|
|
53
53
|
} if (rf & 2) {
|
|
@@ -64,11 +64,12 @@ export class FormToolbarComponent {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
FormToolbarComponent.ɵfac = function FormToolbarComponent_Factory(t) { return new (t || FormToolbarComponent)(); };
|
|
67
|
-
FormToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormToolbarComponent, selectors: [["mj-form-toolbar"]], inputs: { form: "form" }, decls: 8, vars: 7, consts: [["kendoButton", "", 3, "click", 4, "ngIf"], ["kendoButton", "", 3, "mouseup", 4, "ngIf"], [3, "record", "dialogClosed", 4, "ngIf"], ["kendoButton", "", 3, "click"], ["kendoButton", "", 3, "mouseup"], [3, "record", "dialogClosed"]], template: function FormToolbarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
-
i0.ɵɵ
|
|
69
|
-
i0.ɵɵ
|
|
70
|
-
i0.ɵɵ
|
|
67
|
+
FormToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormToolbarComponent, selectors: [["mj-form-toolbar"]], inputs: { form: "form" }, decls: 8, vars: 7, consts: [[1, "toolbar-container"], ["kendoButton", "", 3, "click", 4, "ngIf"], ["kendoButton", "", 3, "mouseup", 4, "ngIf"], [3, "record", "dialogClosed", 4, "ngIf"], ["kendoButton", "", 3, "click"], ["kendoButton", "", 3, "mouseup"], [3, "record", "dialogClosed"]], template: function FormToolbarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
69
|
+
i0.ɵɵtemplate(1, FormToolbarComponent_button_1_Template, 2, 0, "button", 1)(2, FormToolbarComponent_button_2_Template, 2, 0, "button", 2)(3, FormToolbarComponent_button_3_Template, 2, 0, "button", 1)(4, FormToolbarComponent_button_4_Template, 2, 0, "button", 1)(5, FormToolbarComponent_button_5_Template, 2, 0, "button", 1)(6, FormToolbarComponent_button_6_Template, 2, 0, "button", 1)(7, FormToolbarComponent_mj_record_changes_7_Template, 1, 1, "mj-record-changes", 3);
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
71
|
} if (rf & 2) {
|
|
72
|
+
i0.ɵɵadvance();
|
|
72
73
|
i0.ɵɵproperty("ngIf", !ctx.form.EditMode && ctx.form.UserCanEdit);
|
|
73
74
|
i0.ɵɵadvance();
|
|
74
75
|
i0.ɵɵproperty("ngIf", ctx.form.EditMode);
|
|
@@ -80,22 +81,23 @@ FormToolbarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormTo
|
|
|
80
81
|
i0.ɵɵproperty("ngIf", ctx.form.FavoriteInitDone && !ctx.form.IsFavorite);
|
|
81
82
|
i0.ɵɵadvance();
|
|
82
83
|
i0.ɵɵproperty("ngIf", ctx.form.EntityInfo == null ? null : ctx.form.EntityInfo.TrackRecordChanges);
|
|
83
|
-
i0.ɵɵadvance(
|
|
84
|
+
i0.ɵɵadvance();
|
|
84
85
|
i0.ɵɵproperty("ngIf", ctx.form.isHistoryDialogOpen);
|
|
85
|
-
} }, dependencies: [i1.NgIf, i2.RecordChangesComponent, i3.ButtonComponent], styles: ["button[_ngcontent-%COMP%] { margin-right: 10px; }"] });
|
|
86
|
+
} }, dependencies: [i1.NgIf, i2.RecordChangesComponent, i3.ButtonComponent], styles: ["button[_ngcontent-%COMP%] { margin-right: 10px; }", ".toolbar-container[_ngcontent-%COMP%] { border-bottom: solid 1px lightgray; padding-bottom: 10px; margin-bottom: 5px; }"] });
|
|
86
87
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormToolbarComponent, [{
|
|
87
88
|
type: Component,
|
|
88
89
|
args: [{ selector: 'mj-form-toolbar', template: `
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
<div class="toolbar-container">
|
|
91
|
+
<button kendoButton *ngIf="!form.EditMode && form.UserCanEdit" (click)="form.StartEditMode()">Edit Record</button>
|
|
92
|
+
<button kendoButton *ngIf="form.EditMode" (mouseup)="saveRecord($event)">Save Record</button>
|
|
93
|
+
<button kendoButton *ngIf="form.EditMode" (click)="form.CancelEdit()">Cancel</button>
|
|
94
|
+
<button kendoButton *ngIf="form.FavoriteInitDone && form.IsFavorite" (click)="form.RemoveFavorite()">Remove Favorite</button>
|
|
95
|
+
<button kendoButton *ngIf="form.FavoriteInitDone && !form.IsFavorite" (click)="form.MakeFavorite()">Make Favorite</button>
|
|
96
|
+
<button kendoButton *ngIf="form.EntityInfo?.TrackRecordChanges" (click)="form.handleHistoryDialog()">History</button>
|
|
97
|
+
<mj-record-changes *ngIf="form.isHistoryDialogOpen" [record]="form.record" (dialogClosed)="form.handleHistoryDialog()"></mj-record-changes>
|
|
98
|
+
</div>
|
|
99
|
+
`, styles: ["button { margin-right: 10px; }", ".toolbar-container { border-bottom: solid 1px lightgray; padding-bottom: 10px; margin-bottom: 5px; }"] }]
|
|
98
100
|
}], null, { form: [{
|
|
99
101
|
type: Input
|
|
100
102
|
}] }); })();
|
|
101
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormToolbarComponent, { className: "FormToolbarComponent", filePath: "src\\lib\\form-toolbar.ts", lineNumber:
|
|
103
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormToolbarComponent, { className: "FormToolbarComponent", filePath: "src\\lib\\form-toolbar.ts", lineNumber: 23 }); })();
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { OnDestroy, ViewContainerRef, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
1
|
+
import { OnDestroy, ViewContainerRef, AfterViewInit, OnChanges, SimpleChanges, EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { BaseEntity } from '@memberjunction/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SectionLoaderComponent implements AfterViewInit, OnDestroy, OnChanges {
|
|
5
|
+
private cdr;
|
|
5
6
|
Entity: string;
|
|
6
7
|
Section: string;
|
|
7
8
|
record: BaseEntity;
|
|
8
9
|
EditMode: boolean;
|
|
10
|
+
LoadComplete: EventEmitter<void>;
|
|
9
11
|
container: ViewContainerRef;
|
|
10
12
|
private _sectionObj;
|
|
13
|
+
constructor(cdr: ChangeDetectorRef);
|
|
11
14
|
ngOnChanges(changes: SimpleChanges): void;
|
|
12
15
|
ngAfterViewInit(): void;
|
|
13
16
|
private loadComponent;
|
|
14
17
|
ngOnDestroy(): void;
|
|
15
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionLoaderComponent, never>;
|
|
16
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SectionLoaderComponent, "mj-form-section", never, { "Entity": { "alias": "Entity"; "required": false; }; "Section": { "alias": "Section"; "required": false; }; "record": { "alias": "record"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; }, {}, never, never, false, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SectionLoaderComponent, "mj-form-section", never, { "Entity": { "alias": "Entity"; "required": false; }; "Section": { "alias": "Section"; "required": false; }; "record": { "alias": "record"; "required": false; }; "EditMode": { "alias": "EditMode"; "required": false; }; }, { "LoadComplete": "LoadComplete"; }, never, never, false, never>;
|
|
17
20
|
}
|
|
18
21
|
//# sourceMappingURL=section-loader-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-loader-component.d.ts","sourceRoot":"","sources":["../../src/lib/section-loader-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAa,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"section-loader-component.d.ts","sourceRoot":"","sources":["../../src/lib/section-loader-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAa,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAU,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG3K,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;;AAElD,qBAIa,sBAAuB,YAAW,aAAa,EAAE,SAAS,EAAE,SAAS;IAUlE,OAAO,CAAC,GAAG;IATd,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAG,MAAM,CAAC;IACjB,MAAM,EAAG,UAAU,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAS;IACzB,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,CAA4B;IAElB,SAAS,EAAG,gBAAgB,CAAC;IAEjF,OAAO,CAAC,WAAW,CAAyC;gBACxC,GAAG,EAAE,iBAAiB;IAE1C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOzC,eAAe,IAAI,IAAI;IAOvB,OAAO,CAAC,aAAa;IAarB,WAAW;yCAvCF,sBAAsB;2CAAtB,sBAAsB;CA2ClC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { Component, Input, ViewChild, ViewContainerRef, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { MJGlobal } from '@memberjunction/global';
|
|
3
3
|
import { BaseFormSectionComponent } from './base-form-section-component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
const _c0 = ["container"];
|
|
6
|
-
function
|
|
6
|
+
function SectionLoaderComponent_ng_template_1_Template(rf, ctx) { }
|
|
7
7
|
export class SectionLoaderComponent {
|
|
8
|
-
constructor() {
|
|
8
|
+
constructor(cdr) {
|
|
9
|
+
this.cdr = cdr;
|
|
9
10
|
this.EditMode = false;
|
|
11
|
+
this.LoadComplete = new EventEmitter();
|
|
10
12
|
this._sectionObj = null;
|
|
11
13
|
}
|
|
12
14
|
ngOnChanges(changes) {
|
|
@@ -29,29 +31,33 @@ export class SectionLoaderComponent {
|
|
|
29
31
|
this._sectionObj = componentRef.instance;
|
|
30
32
|
this._sectionObj.record = this.record;
|
|
31
33
|
this._sectionObj.EditMode = this.EditMode;
|
|
34
|
+
this.cdr.detectChanges(); // Manually trigger change detection so that the call below to LoadComplete.emit() will occur after DOM is updated
|
|
32
35
|
}
|
|
36
|
+
this.LoadComplete.emit();
|
|
33
37
|
}
|
|
34
38
|
ngOnDestroy() {
|
|
35
39
|
// Don't forget to cleanup dynamically created components
|
|
36
40
|
this.container.clear();
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
|
-
SectionLoaderComponent.ɵfac = function SectionLoaderComponent_Factory(t) { return new (t || SectionLoaderComponent)(); };
|
|
43
|
+
SectionLoaderComponent.ɵfac = function SectionLoaderComponent_Factory(t) { return new (t || SectionLoaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
40
44
|
SectionLoaderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SectionLoaderComponent, selectors: [["mj-form-section"]], viewQuery: function SectionLoaderComponent_Query(rf, ctx) { if (rf & 1) {
|
|
41
45
|
i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
|
|
42
46
|
} if (rf & 2) {
|
|
43
47
|
let _t;
|
|
44
48
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.container = _t.first);
|
|
45
|
-
} }, inputs: { Entity: "Entity", Section: "Section", record: "record", EditMode: "EditMode" }, features: [i0.ɵɵNgOnChangesFeature], decls:
|
|
46
|
-
i0.ɵɵ
|
|
49
|
+
} }, inputs: { Entity: "Entity", Section: "Section", record: "record", EditMode: "EditMode" }, outputs: { LoadComplete: "LoadComplete" }, features: [i0.ɵɵNgOnChangesFeature], decls: 3, vars: 0, consts: [[1, "form-section"], ["container", ""]], template: function SectionLoaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
51
|
+
i0.ɵɵtemplate(1, SectionLoaderComponent_ng_template_1_Template, 0, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
47
53
|
} }, encapsulation: 2 });
|
|
48
54
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SectionLoaderComponent, [{
|
|
49
55
|
type: Component,
|
|
50
56
|
args: [{
|
|
51
57
|
selector: 'mj-form-section',
|
|
52
|
-
template: `<ng-template #container></ng-template>`
|
|
58
|
+
template: `<div class="form-section"><ng-template #container></ng-template></div>`
|
|
53
59
|
}]
|
|
54
|
-
}],
|
|
60
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { Entity: [{
|
|
55
61
|
type: Input
|
|
56
62
|
}], Section: [{
|
|
57
63
|
type: Input
|
|
@@ -59,6 +65,8 @@ SectionLoaderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sect
|
|
|
59
65
|
type: Input
|
|
60
66
|
}], EditMode: [{
|
|
61
67
|
type: Input
|
|
68
|
+
}], LoadComplete: [{
|
|
69
|
+
type: Output
|
|
62
70
|
}], container: [{
|
|
63
71
|
type: ViewChild,
|
|
64
72
|
args: ['container', { read: ViewContainerRef }]
|
package/dist/module.d.ts
CHANGED
|
@@ -3,12 +3,12 @@ import * as i1 from "./lib/section-loader-component";
|
|
|
3
3
|
import * as i2 from "./lib/form-toolbar";
|
|
4
4
|
import * as i3 from "@angular/common";
|
|
5
5
|
import * as i4 from "@angular/forms";
|
|
6
|
-
import * as i5 from "@
|
|
6
|
+
import * as i5 from "@memberjunction/ng-tabstrip";
|
|
7
7
|
import * as i6 from "@memberjunction/ng-record-changes";
|
|
8
8
|
import * as i7 from "@progress/kendo-angular-buttons";
|
|
9
9
|
export declare class BaseFormsModule {
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormsModule, never>;
|
|
11
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<BaseFormsModule, [typeof i1.SectionLoaderComponent, typeof i2.FormToolbarComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.
|
|
11
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<BaseFormsModule, [typeof i1.SectionLoaderComponent, typeof i2.FormToolbarComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i5.MJTabStripModule, typeof i6.RecordChangesModule, typeof i7.ButtonsModule], [typeof i1.SectionLoaderComponent, typeof i2.FormToolbarComponent]>;
|
|
12
12
|
static ɵinj: i0.ɵɵInjectorDeclaration<BaseFormsModule>;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=module.d.ts.map
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":";;;;;;;;AAcA,qBAiBa,eAAe;yCAAf,eAAe;0CAAf,eAAe;0CAAf,eAAe;CAAI"}
|
package/dist/module.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
// Kendo UI Angular imports
|
|
4
3
|
import { FormsModule } from '@angular/forms';
|
|
5
|
-
|
|
4
|
+
// Kendo UI Angular imports
|
|
5
|
+
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
6
|
+
import { RecordChangesModule } from '@memberjunction/ng-record-changes';
|
|
7
|
+
import { MJTabStripModule } from '@memberjunction/ng-tabstrip';
|
|
6
8
|
import { SectionLoaderComponent } from './lib/section-loader-component';
|
|
7
9
|
import { FormToolbarComponent } from './lib/form-toolbar';
|
|
8
|
-
import { RecordChangesModule } from '@memberjunction/ng-record-changes';
|
|
9
|
-
import { ButtonsModule } from '@progress/kendo-angular-buttons';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export class BaseFormsModule {
|
|
12
12
|
}
|
|
@@ -14,7 +14,7 @@ BaseFormsModule.ɵfac = function BaseFormsModule_Factory(t) { return new (t || B
|
|
|
14
14
|
BaseFormsModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: BaseFormsModule });
|
|
15
15
|
BaseFormsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
16
16
|
FormsModule,
|
|
17
|
-
|
|
17
|
+
MJTabStripModule,
|
|
18
18
|
RecordChangesModule,
|
|
19
19
|
ButtonsModule] });
|
|
20
20
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseFormsModule, [{
|
|
@@ -27,7 +27,7 @@ BaseFormsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonMo
|
|
|
27
27
|
imports: [
|
|
28
28
|
CommonModule,
|
|
29
29
|
FormsModule,
|
|
30
|
-
|
|
30
|
+
MJTabStripModule,
|
|
31
31
|
RecordChangesModule,
|
|
32
32
|
ButtonsModule
|
|
33
33
|
],
|
|
@@ -40,7 +40,7 @@ BaseFormsModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonMo
|
|
|
40
40
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(BaseFormsModule, { declarations: [SectionLoaderComponent,
|
|
41
41
|
FormToolbarComponent], imports: [CommonModule,
|
|
42
42
|
FormsModule,
|
|
43
|
-
|
|
43
|
+
MJTabStripModule,
|
|
44
44
|
RecordChangesModule,
|
|
45
45
|
ButtonsModule], exports: [SectionLoaderComponent,
|
|
46
46
|
FormToolbarComponent] }); })();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/ng-base-forms",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.18",
|
|
4
4
|
"description": "MemberJunction: Angular Base Form Components",
|
|
5
5
|
"main": "./dist/public-api.js",
|
|
6
6
|
"typings": "./dist/public-api.d.ts",
|
|
@@ -27,10 +27,8 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@memberjunction/global": "^0.9.167",
|
|
29
29
|
"@memberjunction/core": "^0.9.185",
|
|
30
|
-
"@memberjunction/ng-
|
|
31
|
-
"@memberjunction/ng-
|
|
32
|
-
"@memberjunction/ng-user-view-grid": "^0.9.231",
|
|
33
|
-
"@progress/kendo-angular-layout": "~15.1.0",
|
|
30
|
+
"@memberjunction/ng-record-changes": "^0.9.131",
|
|
31
|
+
"@memberjunction/ng-tabstrip": "^0.9.5",
|
|
34
32
|
"@progress/kendo-angular-buttons": "~15.1.0",
|
|
35
33
|
"tslib": "^2.3.0"
|
|
36
34
|
},
|