@memberjunction/ng-skip-chat 2.13.2

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.
@@ -0,0 +1,12 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./tab-strip/tab-strip.component";
3
+ import * as i2 from "./tab-body/tab-body.component";
4
+ import * as i3 from "./tab/tab.component";
5
+ import * as i4 from "@angular/common";
6
+ import * as i5 from "@memberjunction/ng-container-directives";
7
+ export declare class MJTabStripModule {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJTabStripModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MJTabStripModule, [typeof i1.MJTabStripComponent, typeof i2.MJTabBodyComponent, typeof i3.MJTabComponent], [typeof i4.CommonModule, typeof i5.ContainerDirectivesModule], [typeof i1.MJTabStripComponent, typeof i2.MJTabBodyComponent, typeof i3.MJTabComponent]>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<MJTabStripModule>;
11
+ }
12
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":";;;;;;AASA,qBAgBa,gBAAgB;yCAAhB,gBAAgB;0CAAhB,gBAAgB;0CAAhB,gBAAgB;CAAI"}
@@ -0,0 +1,40 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ // LOCAL
4
+ import { MJTabStripComponent } from './tab-strip/tab-strip.component';
5
+ import { MJTabBodyComponent } from './tab-body/tab-body.component';
6
+ import { MJTabComponent } from './tab/tab.component';
7
+ import { ContainerDirectivesModule } from '@memberjunction/ng-container-directives';
8
+ import * as i0 from "@angular/core";
9
+ export class MJTabStripModule {
10
+ }
11
+ MJTabStripModule.ɵfac = function MJTabStripModule_Factory(t) { return new (t || MJTabStripModule)(); };
12
+ MJTabStripModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: MJTabStripModule });
13
+ MJTabStripModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
14
+ ContainerDirectivesModule] });
15
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTabStripModule, [{
16
+ type: NgModule,
17
+ args: [{
18
+ declarations: [
19
+ MJTabStripComponent,
20
+ MJTabBodyComponent,
21
+ MJTabComponent
22
+ ],
23
+ imports: [
24
+ CommonModule,
25
+ ContainerDirectivesModule,
26
+ ],
27
+ exports: [
28
+ MJTabStripComponent,
29
+ MJTabBodyComponent,
30
+ MJTabComponent
31
+ ]
32
+ }]
33
+ }], null, null); })();
34
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MJTabStripModule, { declarations: [MJTabStripComponent,
35
+ MJTabBodyComponent,
36
+ MJTabComponent], imports: [CommonModule,
37
+ ContainerDirectivesModule], exports: [MJTabStripComponent,
38
+ MJTabBodyComponent,
39
+ MJTabComponent] }); })();
40
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;;AAkBpF,MAAM,OAAO,gBAAgB;;gFAAhB,gBAAgB;kEAAhB,gBAAgB;sEATzB,YAAY;QACZ,yBAAyB;iFAQhB,gBAAgB;cAhB5B,QAAQ;eAAC;gBACR,YAAY,EAAE;oBACZ,mBAAmB;oBACnB,kBAAkB;oBAClB,cAAc;iBACf;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,yBAAyB;iBAC1B;gBACD,OAAO,EAAE;oBACP,mBAAmB;oBACnB,kBAAkB;oBAClB,cAAc;iBACf;aACF;;wFACY,gBAAgB,mBAdzB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc,aAGd,YAAY;QACZ,yBAAyB,aAGzB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc"}
@@ -0,0 +1,55 @@
1
+ import { ChangeDetectorRef, ElementRef } from '@angular/core';
2
+ import { MJTabBase } from '../tab.base';
3
+ import { MJTabStripComponent } from '../tab-strip/tab-strip.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Represents the tab in the header of a given tab strip
7
+ */
8
+ export declare class MJTabComponent extends MJTabBase {
9
+ private tabstrip;
10
+ private cdr;
11
+ elementRef: ElementRef;
12
+ private _tabSelected;
13
+ /**
14
+ * Determines if the tab is currently selected or not. This is set by the TabStrip component automatically when the SelectedTabIndex is set, do not set this directly.
15
+ */
16
+ get TabSelected(): boolean;
17
+ set TabSelected(value: boolean);
18
+ private _visible;
19
+ get Visible(): boolean;
20
+ set Visible(value: boolean);
21
+ private _name;
22
+ get Name(): string;
23
+ set Name(value: string);
24
+ private _id;
25
+ get ID(): any;
26
+ set ID(value: any);
27
+ private _props;
28
+ /**
29
+ * A property bag that can be used to store any additional properties that you want to associate with this tab.
30
+ */
31
+ get Props(): any;
32
+ set Props(value: any);
33
+ /**
34
+ * Determines if the tab can be closed by a user, or not. Defaults to false.
35
+ */
36
+ TabCloseable: boolean;
37
+ /**
38
+ * Returns a reference to the tab strip that this tab belongs to.
39
+ */
40
+ get TabStrip(): MJTabStripComponent;
41
+ constructor(tabstrip: MJTabStripComponent, cdr: ChangeDetectorRef, elementRef: ElementRef);
42
+ /**
43
+ * Event handler for when this tab is clicked to select it, generally not a great idea to call this directly, but it is possible to call directly to simulate a click.
44
+ * The preferred approach is to set the SelectedTabIndex property on the TabStrip component directly.
45
+ */
46
+ selectTab(): void;
47
+ /**
48
+ * Event handler for when the close button is clicked on the tab. This will fire the BeforeTabClosed event on the TabStrip component, and if it is not cancelled, will then fire the AfterTabClosed event.
49
+ */
50
+ closeTab($event: MouseEvent): void;
51
+ handleContextMenu($event: MouseEvent): void;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJTabComponent, [{ host: true; }, null, null]>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJTabComponent, "mj-tab", never, { "TabSelected": { "alias": "TabSelected"; "required": false; }; "Visible": { "alias": "Visible"; "required": false; }; "Name": { "alias": "Name"; "required": false; }; "ID": { "alias": "ID"; "required": false; }; "Props": { "alias": "Props"; "required": false; }; "TabCloseable": { "alias": "TabCloseable"; "required": false; }; }, {}, never, ["*"], false, never>;
54
+ }
55
+ //# sourceMappingURL=tab.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.component.d.ts","sourceRoot":"","sources":["../../../src/lib/tab/tab.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;AAEvE;;GAEG;AACH,qBAKa,cAAe,SAAQ,SAAS;IAuEvB,OAAO,CAAC,QAAQ;IACxB,OAAO,CAAC,GAAG;IACJ,UAAU,EAAE,UAAU;IAxEzC,OAAO,CAAC,YAAY,CAAkB;IACtC;;OAEG;IACH,IAAa,WAAW,IAGD,OAAO,CAD7B;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAG7B;IAED,OAAO,CAAC,QAAQ,CAAiB;IACjC,IAAa,OAAO,IAAI,OAAO,CAE9B;IACD,IAAW,OAAO,CAAC,KAAK,EAAE,OAAO,EAchC;IAED,OAAO,CAAC,KAAK,CAAa;IAC1B,IAAa,IAAI,IAAI,MAAM,CAE1B;IACD,IAAW,IAAI,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,OAAO,CAAC,GAAG,CAAa;IACxB,IAAa,EAAE,IAAI,GAAG,CAErB;IACD,IAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAEvB;IAED,OAAO,CAAC,MAAM,CAAa;IAC3B;;OAEG;IACH,IAAa,KAAK,IAAI,GAAG,CAExB;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,GAAG,EAE1B;IAED;;OAEG;IACM,YAAY,EAAE,OAAO,CAAS;IAEvC;;OAEG;IACH,IAAW,QAAQ,IAAI,mBAAmB,CAEzC;gBAC2B,QAAQ,EAAE,mBAAmB,EACrC,GAAG,EAAE,iBAAiB,EACvB,UAAU,EAAE,UAAU;IAIzC;;;OAGG;IACI,SAAS;IAIhB;;OAEG;IACI,QAAQ,CAAC,MAAM,EAAE,UAAU;IAK3B,iBAAiB,CAAC,MAAM,EAAE,UAAU;yCA7FhC,cAAc;2CAAd,cAAc;CAiG1B"}
@@ -0,0 +1,138 @@
1
+ import { Component, Input, Host } from '@angular/core';
2
+ import { MJTabBase } from '../tab.base';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../tab-strip/tab-strip.component";
5
+ import * as i2 from "@angular/common";
6
+ const _c0 = ["*"];
7
+ const _c1 = a0 => ({ "single-tab-selected": a0 });
8
+ function MJTabComponent_span_2_Template(rf, ctx) { if (rf & 1) {
9
+ const _r1 = i0.ɵɵgetCurrentView();
10
+ i0.ɵɵelementStart(0, "span", 2);
11
+ i0.ɵɵlistener("click", function MJTabComponent_span_2_Template_span_click_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeTab($event)); });
12
+ i0.ɵɵtext(1, "\u2716");
13
+ i0.ɵɵelementEnd();
14
+ } }
15
+ /**
16
+ * Represents the tab in the header of a given tab strip
17
+ */
18
+ export class MJTabComponent extends MJTabBase {
19
+ /**
20
+ * Determines if the tab is currently selected or not. This is set by the TabStrip component automatically when the SelectedTabIndex is set, do not set this directly.
21
+ */
22
+ get TabSelected() {
23
+ return this._tabSelected;
24
+ }
25
+ set TabSelected(value) {
26
+ this._tabSelected = value;
27
+ this.cdr.detectChanges(); // Manually trigger change detection to update the view
28
+ }
29
+ get Visible() {
30
+ return this._visible;
31
+ }
32
+ set Visible(value) {
33
+ this._visible = value;
34
+ // whenever the visible property changes we need to set the display style to none if it is not visible and make sure
35
+ // we're not selected and set to tab index of 0 if we're selected
36
+ // Step 1 - get the elementRef and set our display to none
37
+ if (!this._visible)
38
+ this.elementRef.nativeElement.style.display = value ? "" : "none";
39
+ else
40
+ this.elementRef.nativeElement.style.display = "";
41
+ // Step 2 - if we're not visible, make sure we're not selected
42
+ if (!this._visible)
43
+ this.tabstrip.SelectedTabIndex = 0;
44
+ }
45
+ get Name() {
46
+ return this._name;
47
+ }
48
+ set Name(value) {
49
+ this._name = value;
50
+ }
51
+ get ID() {
52
+ return this._id;
53
+ }
54
+ set ID(value) {
55
+ this._id = value;
56
+ }
57
+ /**
58
+ * A property bag that can be used to store any additional properties that you want to associate with this tab.
59
+ */
60
+ get Props() {
61
+ return this._props;
62
+ }
63
+ set Props(value) {
64
+ this._props = value;
65
+ }
66
+ /**
67
+ * Returns a reference to the tab strip that this tab belongs to.
68
+ */
69
+ get TabStrip() {
70
+ return this.tabstrip;
71
+ }
72
+ constructor(tabstrip, cdr, elementRef) {
73
+ super();
74
+ this.tabstrip = tabstrip;
75
+ this.cdr = cdr;
76
+ this.elementRef = elementRef;
77
+ this._tabSelected = false;
78
+ this._visible = true;
79
+ this._name = "";
80
+ this._id = null;
81
+ this._props = null;
82
+ /**
83
+ * Determines if the tab can be closed by a user, or not. Defaults to false.
84
+ */
85
+ this.TabCloseable = false;
86
+ }
87
+ /**
88
+ * Event handler for when this tab is clicked to select it, generally not a great idea to call this directly, but it is possible to call directly to simulate a click.
89
+ * The preferred approach is to set the SelectedTabIndex property on the TabStrip component directly.
90
+ */
91
+ selectTab() {
92
+ this.tabstrip.SelectedTabIndex = this.index;
93
+ }
94
+ /**
95
+ * Event handler for when the close button is clicked on the tab. This will fire the BeforeTabClosed event on the TabStrip component, and if it is not cancelled, will then fire the AfterTabClosed event.
96
+ */
97
+ closeTab($event) {
98
+ $event.stopPropagation(); // prevent click from going to the tab
99
+ this.tabstrip.CloseTab(this.index);
100
+ }
101
+ handleContextMenu($event) {
102
+ $event.preventDefault();
103
+ this.tabstrip.handleTabContextMenu($event, this);
104
+ }
105
+ }
106
+ MJTabComponent.ɵfac = function MJTabComponent_Factory(t) { return new (t || MJTabComponent)(i0.ɵɵdirectiveInject(i1.MJTabStripComponent, 1), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
107
+ MJTabComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJTabComponent, selectors: [["mj-tab"]], inputs: { TabSelected: "TabSelected", Visible: "Visible", Name: "Name", ID: "ID", Props: "Props", TabCloseable: "TabCloseable" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 3, vars: 4, consts: [[1, "single-tab", 3, "click", "contextmenu", "ngClass"], ["class", "tab-close-button", 3, "click", 4, "ngIf"], [1, "tab-close-button", 3, "click"]], template: function MJTabComponent_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵprojectionDef();
109
+ i0.ɵɵelementStart(0, "div", 0);
110
+ i0.ɵɵlistener("click", function MJTabComponent_Template_div_click_0_listener() { return ctx.selectTab(); })("contextmenu", function MJTabComponent_Template_div_contextmenu_0_listener($event) { return ctx.handleContextMenu($event); });
111
+ i0.ɵɵprojection(1);
112
+ i0.ɵɵtemplate(2, MJTabComponent_span_2_Template, 2, 0, "span", 1);
113
+ i0.ɵɵelementEnd();
114
+ } if (rf & 2) {
115
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c1, ctx.TabSelected));
116
+ i0.ɵɵadvance(2);
117
+ i0.ɵɵproperty("ngIf", ctx.TabCloseable);
118
+ } }, dependencies: [i2.NgClass, i2.NgIf], styles: [".single-tab[_ngcontent-%COMP%] {\n flex: 0 0 auto; \n\n cursor: pointer;\n height: 26px;\n margin-right: 1px;\n padding-left: 10px;\n padding-right: 10px;\n padding-top: 5px;\n border-radius: 8px 8px 0 0;\n border-top: solid 1px #D5D8E5;;\n border-left: solid 1px #D5D8E5;;\n border-right: solid 1px #D5D8E5;;\n border-bottom: 0;\n background-color: #D5D8E5;\n font-size: 14px;\n }\n .single-tab[_ngcontent-%COMP%]:hover {\n color: #bb443c;\n }\n .single-tab-selected[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n font-weight: bold;\n }\n \n .tab-close-button[_ngcontent-%COMP%] {\n cursor: pointer;\n margin-left: 10px;\n padding: 2px;\n font-size: 12px;\n border-radius: 10px;\n color: black;\n }\n .tab-close-button[_ngcontent-%COMP%]:hover {\n background-color: lightgray;\n }"] });
119
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTabComponent, [{
120
+ type: Component,
121
+ args: [{ selector: 'mj-tab', template: "<div class=\"single-tab\" [ngClass]=\"{'single-tab-selected': TabSelected}\" (click)=\"selectTab()\" (contextmenu)=\"handleContextMenu($event)\">\n <ng-content><!--CONTENT PROJECTION GOES HERE--></ng-content>\n <span *ngIf=\"TabCloseable\" class=\"tab-close-button\" (click)=\"closeTab($event)\" >\u2716</span>\n</div>", styles: ["\n .single-tab {\n flex: 0 0 auto; /* Prevent tabs from shrinking */\n cursor: pointer;\n height: 26px;\n margin-right: 1px;\n padding-left: 10px;\n padding-right: 10px;\n padding-top: 5px;\n border-radius: 8px 8px 0 0;\n border-top: solid 1px #D5D8E5;;\n border-left: solid 1px #D5D8E5;;\n border-right: solid 1px #D5D8E5;;\n border-bottom: 0;\n background-color: #D5D8E5;\n font-size: 14px;\n }\n .single-tab:hover {\n color: #bb443c;\n }\n .single-tab-selected {\n background-color: #F5F6FA;\n font-weight: bold;\n }\n \n .tab-close-button {\n cursor: pointer;\n margin-left: 10px;\n padding: 2px;\n font-size: 12px;\n border-radius: 10px;\n color: black;\n }\n .tab-close-button:hover {\n background-color: lightgray;\n }\n "] }]
122
+ }], () => [{ type: i1.MJTabStripComponent, decorators: [{
123
+ type: Host
124
+ }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { TabSelected: [{
125
+ type: Input
126
+ }], Visible: [{
127
+ type: Input
128
+ }], Name: [{
129
+ type: Input
130
+ }], ID: [{
131
+ type: Input
132
+ }], Props: [{
133
+ type: Input
134
+ }], TabCloseable: [{
135
+ type: Input
136
+ }] }); })();
137
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJTabComponent, { className: "MJTabComponent" }); })();
138
+ //# sourceMappingURL=tab.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.component.js","sourceRoot":"","sources":["../../../src/lib/tab/tab.component.ts","../../../src/lib/tab/tab.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { MJTabBase } from '../tab.base';
2
+ import { MJTabStripComponent } from '../tab-strip/tab-strip.component';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MJTabBodyComponent extends MJTabBase {
5
+ private tabStrip;
6
+ TabVisible: boolean;
7
+ FillWidth: boolean;
8
+ FillHeight: boolean;
9
+ constructor(tabStrip: MJTabStripComponent);
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJTabBodyComponent, [{ host: true; }]>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJTabBodyComponent, "mj-tab-body", never, { "TabVisible": { "alias": "TabVisible"; "required": false; }; "FillWidth": { "alias": "FillWidth"; "required": false; }; "FillHeight": { "alias": "FillHeight"; "required": false; }; }, {}, never, ["*"], false, never>;
12
+ }
13
+ //# sourceMappingURL=tab-body.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-body.component.d.ts","sourceRoot":"","sources":["../../../src/lib/tab-body/tab-body.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;;AAEvE,qBAKa,kBAAmB,SAAQ,SAAS;IAM3B,OAAO,CAAC,QAAQ;IAL3B,UAAU,UAAS;IAEnB,SAAS,EAAE,OAAO,CAAQ;IAC1B,UAAU,EAAE,OAAO,CAAQ;gBAER,QAAQ,EAAE,mBAAmB;yCAN9C,kBAAkB;2CAAlB,kBAAkB;CAS9B"}
@@ -0,0 +1,38 @@
1
+ import { Component, Input, Host } from '@angular/core';
2
+ import { MJTabBase } from '../tab.base';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../tab-strip/tab-strip.component";
5
+ import * as i2 from "@memberjunction/ng-container-directives";
6
+ const _c0 = ["*"];
7
+ export class MJTabBodyComponent extends MJTabBase {
8
+ constructor(tabStrip) {
9
+ super();
10
+ this.tabStrip = tabStrip;
11
+ this.TabVisible = false;
12
+ this.FillWidth = true;
13
+ this.FillHeight = true;
14
+ }
15
+ }
16
+ MJTabBodyComponent.ɵfac = function MJTabBodyComponent_Factory(t) { return new (t || MJTabBodyComponent)(i0.ɵɵdirectiveInject(i1.MJTabStripComponent, 1)); };
17
+ MJTabBodyComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJTabBodyComponent, selectors: [["mj-tab-body"]], inputs: { TabVisible: "TabVisible", FillWidth: "FillWidth", FillHeight: "FillHeight" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 2, vars: 3, consts: [["mjFillContainer", "", 1, "tab-body", 3, "hidden", "fillHeight", "fillWidth"]], template: function MJTabBodyComponent_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵprojectionDef();
19
+ i0.ɵɵelementStart(0, "div", 0);
20
+ i0.ɵɵprojection(1);
21
+ i0.ɵɵelementEnd();
22
+ } if (rf & 2) {
23
+ i0.ɵɵproperty("hidden", !ctx.TabVisible)("fillHeight", ctx.FillHeight)("fillWidth", ctx.FillWidth);
24
+ } }, dependencies: [i2.FillContainer], styles: [".tab-body[_ngcontent-%COMP%] {\n border-top: 0;\n background-color: #F5F6FA; \n width: 100%;\n height: 200px;\n display: block;\n overflow: auto;\n }"] });
25
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTabBodyComponent, [{
26
+ type: Component,
27
+ args: [{ selector: 'mj-tab-body', template: "<div class=\"tab-body\" [hidden]=\"!TabVisible\" mjFillContainer [fillHeight]=\"FillHeight\" [fillWidth]=\"FillWidth\">\n <ng-content><!--CONTENT PROJECTION GOES HERE--></ng-content>\n</div> ", styles: [" \n\n.tab-body {\n border-top: 0;\n background-color: #F5F6FA; \n width: 100%;\n height: 200px;\n display: block;\n overflow: auto;\n } "] }]
28
+ }], () => [{ type: i1.MJTabStripComponent, decorators: [{
29
+ type: Host
30
+ }] }], { TabVisible: [{
31
+ type: Input
32
+ }], FillWidth: [{
33
+ type: Input
34
+ }], FillHeight: [{
35
+ type: Input
36
+ }] }); })();
37
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJTabBodyComponent, { className: "MJTabBodyComponent" }); })();
38
+ //# sourceMappingURL=tab-body.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-body.component.js","sourceRoot":"","sources":["../../../src/lib/tab-body/tab-body.component.ts","../../../src/lib/tab-body/tab-body.component.html"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;;;;;AAQxC,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAM/C,YAA4B,QAA6B;QACvD,KAAK,EAAE,CAAC;QADkB,aAAQ,GAAR,QAAQ,CAAqB;QALhD,eAAU,GAAG,KAAK,CAAC;QAEnB,cAAS,GAAY,IAAI,CAAC;QAC1B,eAAU,GAAY,IAAI,CAAC;IAIpC,CAAC;;oFARU,kBAAkB;qEAAlB,kBAAkB;;QCV/B,8BAA+G;QAC3G,kBAA4D;QAChE,iBAAM;;QAFiF,AAA1B,AAAvC,wCAAsB,8BAA0C,4BAAwB;;iFDUjG,kBAAkB;cAL9B,SAAS;2BACE,aAAa;;sBAUV,IAAI;qBALR,UAAU;kBAAlB,KAAK;YAEG,SAAS;kBAAjB,KAAK;YACG,UAAU;kBAAlB,KAAK;;kFAJK,kBAAkB"}
@@ -0,0 +1,117 @@
1
+ import { EventEmitter, QueryList, ElementRef, AfterContentInit, AfterContentChecked, AfterViewInit, ChangeDetectorRef } from '@angular/core';
2
+ import { MJTabComponent } from '../tab/tab.component';
3
+ import { MJTabBodyComponent } from '../tab-body/tab-body.component';
4
+ import * as i0 from "@angular/core";
5
+ export declare class TabEvent {
6
+ index: number;
7
+ tab: MJTabComponent | null;
8
+ body: MJTabBodyComponent | null;
9
+ }
10
+ export declare class TabCancelableEvent extends TabEvent {
11
+ cancel: boolean;
12
+ }
13
+ export declare class TabClosedEvent extends TabEvent {
14
+ /**
15
+ * This property provides the default calculation for what the new tab index will be and can be overriden by the container component to set a different value.
16
+ */
17
+ newTabIndex: number;
18
+ /**
19
+ * Whenever the container is done processing, it MUST call this done method to signal that it is done.
20
+ */
21
+ done: (error?: any) => {};
22
+ }
23
+ export declare class TabContextMenuEvent extends TabEvent {
24
+ mouseEvent: MouseEvent;
25
+ }
26
+ export declare class MJTabStripComponent implements AfterContentInit, AfterContentChecked, AfterViewInit {
27
+ private cdr;
28
+ protected _selectedTabIndex: number;
29
+ static OutputDebugInfo: boolean;
30
+ protected static OutputDebugMessage(message: string): void;
31
+ constructor(cdr: ChangeDetectorRef);
32
+ FillWidth: boolean;
33
+ FillHeight: boolean;
34
+ /**
35
+ * The index of the selected tab. You can get/set this value and it will change the displayed tab.
36
+ */
37
+ get SelectedTabIndex(): number;
38
+ set SelectedTabIndex(index: number);
39
+ /**
40
+ * This method will attempt to set the current tab by name. If the tab is found, it will be selected and the method will return the tab object. If the tab is not found, the method will return undefined.
41
+ * @param tabName
42
+ * @returns
43
+ */
44
+ SelectTabByName(tabName: string): MJTabComponent | undefined;
45
+ GetTabByName(tabName: string): MJTabComponent | undefined;
46
+ protected innerRefreshTabVisibility(index: number): void;
47
+ /**
48
+ * This event is fired before a tab is selected. If you set cancel to true, the tab will not be selected.
49
+ */
50
+ BeforeTabSelected: EventEmitter<TabCancelableEvent>;
51
+ /**
52
+ * This event is fired when a tab is selected.
53
+ */
54
+ TabSelected: EventEmitter<TabEvent>;
55
+ /**
56
+ * This event is fired before a tab is closed. If you set cancel to true, the tab will not be closed.
57
+ */
58
+ BeforeTabClosed: EventEmitter<TabCancelableEvent>;
59
+ /**
60
+ * This event is fired after a tab is closed.
61
+ */
62
+ TabClosed: EventEmitter<TabClosedEvent>;
63
+ /**
64
+ * This event is fired when a tab is right-clicked and the context menu event from the tab header fires.
65
+ */
66
+ TabContextMenu: EventEmitter<TabContextMenuEvent>;
67
+ /**
68
+ * This event is fired whenever the tab control is scrolled left or right. This event can be invoked either due to a user clicking on the left/right buttons or by calling the scrollLeft/scrollRight methods, or by
69
+ * the ScrollIntoView method being called.
70
+ */
71
+ TabScrolled: EventEmitter<any>;
72
+ tabs: QueryList<MJTabComponent>;
73
+ tabBodies: QueryList<MJTabBodyComponent>;
74
+ private _viewInitialized;
75
+ ngAfterViewInit(): void;
76
+ ngAfterContentInit(): void;
77
+ ngAfterContentChecked(): void;
78
+ /**
79
+ * Call this method if you are ever dynamically adding or removing tabs from the component over time using @if or *ngIf or other similar methods. This will force the tab strip to
80
+ * re-evaluate the tabs and tab bodies and update the display accordingly.
81
+ */
82
+ RefreshTabs(): void;
83
+ protected syncTabIndexes(): void;
84
+ /**
85
+ * Returns a read-only (copy) of the tabs in this tab strip.
86
+ */
87
+ get Tabs(): MJTabComponent[];
88
+ /**
89
+ * Returns a read-only (copy) of the tab bodies in this tab strip.
90
+ */
91
+ get TabBodies(): MJTabBodyComponent[];
92
+ /**
93
+ * Method will close the specified tab number. It is automatically called by a tab that has TabCloseable set to true, if the user clicks the close button, and can be called programatically as well.
94
+ */
95
+ CloseTab(tabIndex: number): Promise<void>;
96
+ handleTabContextMenu($event: MouseEvent, tab: MJTabComponent): void;
97
+ tabInnerContainer: ElementRef;
98
+ showLeftButton: boolean;
99
+ showRightButton: boolean;
100
+ onResize(event: any): void;
101
+ protected checkTabScrollButtons(): void;
102
+ protected scrollTabHeader(scrollAmount: number): void;
103
+ /**
104
+ * This property determines how many pixels to scroll when the scrollLeft or scrollRight methods are called.
105
+ */
106
+ ScrollAmount: number;
107
+ scrollLeft(): void;
108
+ scrollRight(): void;
109
+ /**
110
+ * This method will scroll the specified tab index into view if it is not currently visible in the tab strip.
111
+ * @param tabIndex
112
+ */
113
+ scrollIntoView(tabIndex: number): void;
114
+ static ɵfac: i0.ɵɵFactoryDeclaration<MJTabStripComponent, never>;
115
+ static ɵcmp: i0.ɵɵComponentDeclaration<MJTabStripComponent, "mj-tabstrip", never, { "FillWidth": { "alias": "FillWidth"; "required": false; }; "FillHeight": { "alias": "FillHeight"; "required": false; }; "SelectedTabIndex": { "alias": "SelectedTabIndex"; "required": false; }; "ScrollAmount": { "alias": "ScrollAmount"; "required": false; }; }, { "BeforeTabSelected": "BeforeTabSelected"; "TabSelected": "TabSelected"; "BeforeTabClosed": "BeforeTabClosed"; "TabClosed": "TabClosed"; "TabContextMenu": "TabContextMenu"; "TabScrolled": "TabScrolled"; }, ["tabs", "tabBodies"], ["mj-tab", "mj-tab-body"], false, never>;
116
+ }
117
+ //# sourceMappingURL=tab-strip.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-strip.component.d.ts","sourceRoot":"","sources":["../../../src/lib/tab-strip/tab-strip.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAA2B,SAAS,EAA2B,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjN,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;;AAIpE,qBAAa,QAAQ;IACZ,KAAK,EAAG,MAAM,CAAC;IACf,GAAG,EAAE,cAAc,GAAG,IAAI,CAAQ;IAClC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAQ;CAC/C;AACD,qBAAa,kBAAmB,SAAQ,QAAQ;IACvC,MAAM,EAAE,OAAO,CAAS;CAChC;AACD,qBAAa,cAAe,SAAQ,QAAQ;IAC1C;;OAEG;IACI,WAAW,EAAG,MAAM,CAAA;IAC3B;;OAEG;IACI,IAAI,EAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;CACnC;AACD,qBAAa,mBAAoB,SAAQ,QAAQ;IACxC,UAAU,EAAG,UAAU,CAAC;CAChC;AAED,qBAKa,mBAAoB,YAAW,gBAAgB,EAAE,mBAAmB,EAAE,aAAa;IAUlF,OAAO,CAAC,GAAG;IATvB,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAK;IAExC,OAAc,eAAe,EAAE,OAAO,CAAS;IAC/C,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;gBAMtC,GAAG,EAAE,iBAAiB;IACjC,SAAS,EAAE,OAAO,CAAQ;IAC1B,UAAU,EAAE,OAAO,CAAQ;IAEpC;;OAEG;IACH,IAAa,gBAAgB,IAAI,MAAM,CAEtC;IACD,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAgCjC;IAED;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAW5D,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIhE,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,MAAM;IAiBjD;;OAEG;IACO,iBAAiB,mCAA0C;IAErE;;OAEG;IACO,WAAW,yBAAgC;IAErD;;OAEG;IACO,eAAe,mCAA0C;IAEnE;;OAEG;IACO,SAAS,+BAA0C;IAE7D;;OAEG;IACO,cAAc,oCAA2C;IAEnE;;;OAGG;IACO,WAAW,oBAAsB;IAGV,IAAI,EAAG,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7B,SAAS,EAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAG/E,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,eAAe;IAMf,kBAAkB;IAGlB,qBAAqB,IAAI,IAAI;IAK7B;;;OAGG;IACI,WAAW;IAMlB,SAAS,CAAC,cAAc;IAaxB;;OAEG;IACH,IAAW,IAAI,IAAI,cAAc,EAAE,CAElC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,kBAAkB,EAAE,CAE3C;IAED;;OAEG;IACU,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAoD/B,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc;IAMnC,iBAAiB,EAAG,UAAU,CAAC;IAE/D,cAAc,EAAE,OAAO,CAAS;IAChC,eAAe,EAAE,OAAO,CAAS;IAGjC,QAAQ,CAAC,KAAK,EAAE,GAAG;IAInB,SAAS,CAAC,qBAAqB;IAe/B,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM;IAU9C;;OAEG;IACM,YAAY,EAAE,MAAM,CAAO;IAC7B,UAAU;IAGV,WAAW;IAKlB;;;OAGG;IACI,cAAc,CAAC,QAAQ,EAAE,MAAM;yCAnS3B,mBAAmB;2CAAnB,mBAAmB;CAiU/B"}
@@ -0,0 +1,404 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Component, Input, EventEmitter, Output, ContentChildren, ViewChild, HostListener } from '@angular/core';
11
+ import { MJTabComponent } from '../tab/tab.component';
12
+ import { MJTabBodyComponent } from '../tab-body/tab-body.component';
13
+ import { SharedService } from '@memberjunction/ng-shared';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@angular/common";
16
+ import * as i2 from "@memberjunction/ng-container-directives";
17
+ const _c0 = ["tabInnerContainer"];
18
+ const _c1 = [[["mj-tab"]], [["mj-tab-body"]]];
19
+ const _c2 = ["mj-tab", "mj-tab-body"];
20
+ function MJTabStripComponent_div_2_Template(rf, ctx) { if (rf & 1) {
21
+ const _r1 = i0.ɵɵgetCurrentView();
22
+ i0.ɵɵelementStart(0, "div", 7);
23
+ i0.ɵɵlistener("click", function MJTabStripComponent_div_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollLeft()); });
24
+ i0.ɵɵelement(1, "span", 8);
25
+ i0.ɵɵelementEnd();
26
+ } }
27
+ function MJTabStripComponent_div_6_Template(rf, ctx) { if (rf & 1) {
28
+ const _r3 = i0.ɵɵgetCurrentView();
29
+ i0.ɵɵelementStart(0, "div", 9);
30
+ i0.ɵɵlistener("click", function MJTabStripComponent_div_6_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollRight()); });
31
+ i0.ɵɵelement(1, "span", 10);
32
+ i0.ɵɵelementEnd();
33
+ } }
34
+ export class TabEvent {
35
+ constructor() {
36
+ this.tab = null;
37
+ this.body = null;
38
+ }
39
+ }
40
+ export class TabCancelableEvent extends TabEvent {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.cancel = false;
44
+ }
45
+ }
46
+ export class TabClosedEvent extends TabEvent {
47
+ }
48
+ export class TabContextMenuEvent extends TabEvent {
49
+ }
50
+ export class MJTabStripComponent {
51
+ static OutputDebugMessage(message) {
52
+ if (MJTabStripComponent.OutputDebugInfo) {
53
+ console.log(message);
54
+ }
55
+ }
56
+ constructor(cdr) {
57
+ this.cdr = cdr;
58
+ this._selectedTabIndex = 0; // default to negative 1 so any valid value of 0+ will invoke a state change internally later
59
+ this.FillWidth = true;
60
+ this.FillHeight = true;
61
+ /**
62
+ * This event is fired before a tab is selected. If you set cancel to true, the tab will not be selected.
63
+ */
64
+ this.BeforeTabSelected = new EventEmitter();
65
+ /**
66
+ * This event is fired when a tab is selected.
67
+ */
68
+ this.TabSelected = new EventEmitter();
69
+ /**
70
+ * This event is fired before a tab is closed. If you set cancel to true, the tab will not be closed.
71
+ */
72
+ this.BeforeTabClosed = new EventEmitter();
73
+ /**
74
+ * This event is fired after a tab is closed.
75
+ */
76
+ this.TabClosed = new EventEmitter(true);
77
+ /**
78
+ * This event is fired when a tab is right-clicked and the context menu event from the tab header fires.
79
+ */
80
+ this.TabContextMenu = new EventEmitter();
81
+ /**
82
+ * This event is fired whenever the tab control is scrolled left or right. This event can be invoked either due to a user clicking on the left/right buttons or by calling the scrollLeft/scrollRight methods, or by
83
+ * the ScrollIntoView method being called.
84
+ */
85
+ this.TabScrolled = new EventEmitter();
86
+ this._viewInitialized = false;
87
+ this.showLeftButton = false;
88
+ this.showRightButton = false;
89
+ /**
90
+ * This property determines how many pixels to scroll when the scrollLeft or scrollRight methods are called.
91
+ */
92
+ this.ScrollAmount = 150;
93
+ }
94
+ /**
95
+ * The index of the selected tab. You can get/set this value and it will change the displayed tab.
96
+ */
97
+ get SelectedTabIndex() {
98
+ return this._selectedTabIndex;
99
+ }
100
+ set SelectedTabIndex(index) {
101
+ var _a;
102
+ // check to make sure that the new index is different from the current index and only do the work here if it is different
103
+ MJTabStripComponent.OutputDebugMessage(`MJTabStripComponent.SelectedTabIndex(${index})`);
104
+ if (index !== this._selectedTabIndex) {
105
+ const props = {
106
+ index: index,
107
+ tab: index !== null && this.tabs ? this.tabs.toArray()[index] : null,
108
+ body: index !== null && this.tabBodies ? this.tabBodies.toArray()[index] : null,
109
+ cancel: false
110
+ };
111
+ if ((_a = props.tab) === null || _a === void 0 ? void 0 : _a.Visible) {
112
+ this.BeforeTabSelected.emit(props);
113
+ if (!props.cancel) {
114
+ this._selectedTabIndex = index;
115
+ this.innerRefreshTabVisibility(index);
116
+ const afterProps = {
117
+ index: index,
118
+ tab: props.tab,
119
+ body: props.body
120
+ };
121
+ this.TabSelected.emit(afterProps);
122
+ }
123
+ }
124
+ else
125
+ throw new Error(`Tab index ${index} is not visible and cannot be selected.`);
126
+ }
127
+ else {
128
+ // always do this even if we're not firing event since we're already on the right tab
129
+ this.innerRefreshTabVisibility(index);
130
+ }
131
+ }
132
+ /**
133
+ * This method will attempt to set the current tab by name. If the tab is found, it will be selected and the method will return the tab object. If the tab is not found, the method will return undefined.
134
+ * @param tabName
135
+ * @returns
136
+ */
137
+ SelectTabByName(tabName) {
138
+ const tab = this.GetTabByName(tabName);
139
+ if (tab) {
140
+ if (tab.Visible)
141
+ this.SelectedTabIndex = tab.index;
142
+ else
143
+ throw new Error(`Tab ${tabName} is not visible and cannot be selected.`);
144
+ }
145
+ return tab;
146
+ }
147
+ GetTabByName(tabName) {
148
+ return this.tabs.find(t => { var _a; return ((_a = t.Name) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase()) === tabName.trim().toLowerCase(); });
149
+ }
150
+ innerRefreshTabVisibility(index) {
151
+ Promise.resolve().then(() => {
152
+ var _a, _b;
153
+ MJTabStripComponent.OutputDebugMessage(`MJTabStripComponent.innerRefreshTabVisibility(${index})`);
154
+ // do this within a Promise.resolve() to ensure that the change detection has a chance to catch up before we start changing things
155
+ // now, we have to tell each of our tabs they have been selected or not, and also to tell the bodies if they are visible or not
156
+ (_a = this.tabs) === null || _a === void 0 ? void 0 : _a.forEach((tab, i) => tab.TabSelected = i === index);
157
+ (_b = this.tabBodies) === null || _b === void 0 ? void 0 : _b.forEach((body, i) => body.TabVisible = i === index);
158
+ // let angular now it needs to update its change detection
159
+ this.cdr.detectChanges();
160
+ // also ask for a resize now
161
+ SharedService.Instance.InvokeManualResize();
162
+ });
163
+ }
164
+ ngAfterViewInit() {
165
+ this._viewInitialized = true;
166
+ this.SelectedTabIndex = this.SelectedTabIndex; // force a refresh of the tab visibility
167
+ this.syncTabIndexes();
168
+ this.checkTabScrollButtons();
169
+ }
170
+ ngAfterContentInit() {
171
+ this.syncTabIndexes();
172
+ }
173
+ ngAfterContentChecked() {
174
+ this.syncTabIndexes();
175
+ this.checkTabScrollButtons();
176
+ }
177
+ /**
178
+ * Call this method if you are ever dynamically adding or removing tabs from the component over time using @if or *ngIf or other similar methods. This will force the tab strip to
179
+ * re-evaluate the tabs and tab bodies and update the display accordingly.
180
+ */
181
+ RefreshTabs() {
182
+ this.cdr.detectChanges();
183
+ this.syncTabIndexes();
184
+ this.innerRefreshTabVisibility(this.SelectedTabIndex);
185
+ }
186
+ syncTabIndexes() {
187
+ if (!this._viewInitialized)
188
+ return; // don't do anything until the view is initialized
189
+ // Automatically assign indices to tabs and tab bodies
190
+ this.tabs.forEach((tab, index) => tab.index = index);
191
+ this.tabBodies.forEach((body, index) => body.index = index);
192
+ if (this.SelectedTabIndex === null && this.tabs.length > 0) {
193
+ this.SelectedTabIndex = 0;
194
+ }
195
+ else if (this.tabs.length === 0)
196
+ this.SelectedTabIndex = -1;
197
+ }
198
+ /**
199
+ * Returns a read-only (copy) of the tabs in this tab strip.
200
+ */
201
+ get Tabs() {
202
+ return this.tabs.toArray();
203
+ }
204
+ /**
205
+ * Returns a read-only (copy) of the tab bodies in this tab strip.
206
+ */
207
+ get TabBodies() {
208
+ return this.tabBodies.toArray();
209
+ }
210
+ /**
211
+ * Method will close the specified tab number. It is automatically called by a tab that has TabCloseable set to true, if the user clicks the close button, and can be called programatically as well.
212
+ */
213
+ CloseTab(tabIndex) {
214
+ return __awaiter(this, void 0, void 0, function* () {
215
+ MJTabStripComponent.OutputDebugMessage(`MJTabStripComponent.CloseTab(${tabIndex})`);
216
+ if (tabIndex >= 0 && tabIndex < this.tabs.length) {
217
+ // figure out what the new tab index will be so we can share with our container component
218
+ let newTabIndex;
219
+ if (this.tabs.length === 1) {
220
+ // deleting the only tab we have, shouldn't happen but if so, set to -1
221
+ newTabIndex = -1;
222
+ }
223
+ else if (this.SelectedTabIndex >= this.tabs.length - 1) {
224
+ // we are ABOUT to delete the last tab, so select what will be the new last tab
225
+ newTabIndex = this.tabs.length - 2; // substract 2 becuase subtracting 1 would be the last tab, but we are about to delete it
226
+ }
227
+ else {
228
+ // deleting a tab that is not the last one, so we don't need to do anything special, just set the index to what it was before
229
+ newTabIndex = this.SelectedTabIndex;
230
+ }
231
+ const props = {
232
+ index: tabIndex,
233
+ tab: this.tabs.toArray()[tabIndex],
234
+ body: this.tabBodies.toArray()[tabIndex],
235
+ cancel: false,
236
+ };
237
+ this.BeforeTabClosed.emit(props);
238
+ if (!props.cancel) {
239
+ // Convert callback to a promise
240
+ const waitForCompletion = new Promise((resolve, reject) => {
241
+ props.done = (error) => {
242
+ if (error) {
243
+ reject(error);
244
+ }
245
+ else {
246
+ resolve(true);
247
+ }
248
+ };
249
+ });
250
+ props.newTabIndex = newTabIndex;
251
+ // fire off the event to the container component
252
+ this.TabClosed.emit(props);
253
+ // wait for callback to occur from the event handler
254
+ yield waitForCompletion;
255
+ // finally, set the tab index to the props.newTabIndex value which allows the container to override our default calculation for new tab index
256
+ this.SelectedTabIndex = props.newTabIndex;
257
+ }
258
+ }
259
+ else
260
+ throw new Error("Invalid tab index: " + tabIndex);
261
+ });
262
+ }
263
+ handleTabContextMenu($event, tab) {
264
+ this.TabContextMenu.emit({ index: tab.index, tab: tab, body: this.tabBodies.toArray()[tab.index], mouseEvent: $event });
265
+ }
266
+ onResize(event) {
267
+ this.checkTabScrollButtons();
268
+ }
269
+ checkTabScrollButtons() {
270
+ if (this.tabInnerContainer && this.tabInnerContainer.nativeElement && this.tabInnerContainer.nativeElement.parentElement) {
271
+ const container = this.tabInnerContainer.nativeElement;
272
+ const parent = container.parentElement;
273
+ const currentLeft = container.style.left ? parseInt(container.style.left) : 0;
274
+ // show the right button if the container is wider than the parent AND the left position(which is zero or negative) + the container width is greater than the parent width
275
+ this.showRightButton = container.clientWidth > parent.clientWidth &&
276
+ currentLeft + container.clientWidth > parent.clientWidth;
277
+ // Show left button if left position is less than 0, meaning some of the left side of the container is off screen
278
+ this.showLeftButton = currentLeft < 0;
279
+ }
280
+ }
281
+ scrollTabHeader(scrollAmount) {
282
+ const style = this.tabInnerContainer.nativeElement.style;
283
+ if (style) {
284
+ const curLeft = style.left ? parseInt(style.left) : 0;
285
+ style.left = (curLeft + scrollAmount) + 'px';
286
+ this.checkTabScrollButtons(); // can do immediately because the above is direct DOM manipulation so the effect is immediate
287
+ this.TabScrolled.emit();
288
+ }
289
+ }
290
+ scrollLeft() {
291
+ this.scrollTabHeader(150);
292
+ }
293
+ scrollRight() {
294
+ this.scrollTabHeader(-150);
295
+ }
296
+ /**
297
+ * This method will scroll the specified tab index into view if it is not currently visible in the tab strip.
298
+ * @param tabIndex
299
+ */
300
+ scrollIntoView(tabIndex) {
301
+ // In this method, we need to calculate the current left position of the specified tab,
302
+ // if it is not visible we need to scroll left or scroll right sufficiently in order to ensure that the tab specified is visible
303
+ // we do NOT change tab selection, the caller can do that separately if they want to
304
+ if (tabIndex >= 0 && tabIndex < this.tabs.length) {
305
+ const tab = this.tabs.toArray()[tabIndex];
306
+ if (tab) {
307
+ const tabElement = tab.elementRef.nativeElement;
308
+ if (tabElement) {
309
+ const tabLeft = tabElement.offsetLeft;
310
+ const tabRight = tabLeft + tabElement.offsetWidth;
311
+ const container = this.tabInnerContainer.nativeElement;
312
+ const containerLeft = container.offsetLeft;
313
+ const containerRight = containerLeft + container.offsetWidth;
314
+ if (tabLeft < containerLeft) {
315
+ // tab is off to the left, scroll left
316
+ this.scrollTabHeader(tabLeft - containerLeft);
317
+ }
318
+ else if (tabRight > containerRight) {
319
+ // tab is off to the right, scroll right
320
+ this.scrollTabHeader(tabRight - containerRight);
321
+ }
322
+ else {
323
+ // tab is already visible, do nothing
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+ }
330
+ MJTabStripComponent.OutputDebugInfo = false;
331
+ MJTabStripComponent.ɵfac = function MJTabStripComponent_Factory(t) { return new (t || MJTabStripComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
332
+ MJTabStripComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJTabStripComponent, selectors: [["mj-tabstrip"]], contentQueries: function MJTabStripComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
333
+ i0.ɵɵcontentQuery(dirIndex, MJTabComponent, 4);
334
+ i0.ɵɵcontentQuery(dirIndex, MJTabBodyComponent, 4);
335
+ } if (rf & 2) {
336
+ let _t;
337
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabs = _t);
338
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabBodies = _t);
339
+ } }, viewQuery: function MJTabStripComponent_Query(rf, ctx) { if (rf & 1) {
340
+ i0.ɵɵviewQuery(_c0, 5);
341
+ } if (rf & 2) {
342
+ let _t;
343
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabInnerContainer = _t.first);
344
+ } }, hostBindings: function MJTabStripComponent_HostBindings(rf, ctx) { if (rf & 1) {
345
+ i0.ɵɵlistener("resize", function MJTabStripComponent_resize_HostBindingHandler($event) { return ctx.onResize($event); }, false, i0.ɵɵresolveWindow);
346
+ } }, inputs: { FillWidth: "FillWidth", FillHeight: "FillHeight", SelectedTabIndex: "SelectedTabIndex", ScrollAmount: "ScrollAmount" }, outputs: { BeforeTabSelected: "BeforeTabSelected", TabSelected: "TabSelected", BeforeTabClosed: "BeforeTabClosed", TabClosed: "TabClosed", TabContextMenu: "TabContextMenu", TabScrolled: "TabScrolled" }, ngContentSelectors: _c2, decls: 9, vars: 6, consts: [["tabInnerContainer", ""], ["mjFillContainer", "", 1, "tabstrip-container", 3, "fillWidth", "fillHeight"], [1, "tab-header-outer"], ["class", "tab-scroll-button tab-scroll-button-left", 3, "click", 4, "ngIf"], [1, "tab-header-inner"], ["class", "tab-scroll-button tab-scroll-button-right", 3, "click", 4, "ngIf"], ["mjFillContainer", "", 1, "tab-bodies", 3, "fillWidth", "fillHeight"], [1, "tab-scroll-button", "tab-scroll-button-left", 3, "click"], [1, "fa-solid", "fa-caret-left"], [1, "tab-scroll-button", "tab-scroll-button-right", 3, "click"], [1, "fa-solid", "fa-caret-right"]], template: function MJTabStripComponent_Template(rf, ctx) { if (rf & 1) {
347
+ i0.ɵɵprojectionDef(_c1);
348
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
349
+ i0.ɵɵtemplate(2, MJTabStripComponent_div_2_Template, 2, 0, "div", 3);
350
+ i0.ɵɵelementStart(3, "div", 4, 0);
351
+ i0.ɵɵprojection(5);
352
+ i0.ɵɵelementEnd();
353
+ i0.ɵɵtemplate(6, MJTabStripComponent_div_6_Template, 2, 0, "div", 5);
354
+ i0.ɵɵelementEnd();
355
+ i0.ɵɵelementStart(7, "div", 6);
356
+ i0.ɵɵprojection(8, 1);
357
+ i0.ɵɵelementEnd()();
358
+ } if (rf & 2) {
359
+ i0.ɵɵproperty("fillWidth", ctx.FillWidth)("fillHeight", ctx.FillHeight);
360
+ i0.ɵɵadvance(2);
361
+ i0.ɵɵproperty("ngIf", ctx.showLeftButton);
362
+ i0.ɵɵadvance(4);
363
+ i0.ɵɵproperty("ngIf", ctx.showRightButton);
364
+ i0.ɵɵadvance();
365
+ i0.ɵɵproperty("fillWidth", ctx.FillWidth)("fillHeight", ctx.FillHeight);
366
+ } }, dependencies: [i1.NgIf, i2.FillContainer], styles: [".tabstrip-container[_ngcontent-%COMP%] {\n display: block;\n overflow: hidden;\n font-size: 14px; \n\n}\n\n.tab-header-outer[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n overflow: hidden; \n\n background-color: #D5D8E5;\n}\n\n.tab-header-inner[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n white-space: nowrap; \n\n position: relative; \n\n z-index: 1; \n\n\n padding-left: 5px;\n padding-top: 5px;\n background-color: #D5D8E5;\n border-bottom: #F5F6FA;\n}\n\n.tab-scroll-button-left[_ngcontent-%COMP%], .tab-scroll-button-right[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2; \n\n}\n\n.tab-scroll-button-left[_ngcontent-%COMP%] {\n left: 0;\n}\n\n.tab-scroll-button-right[_ngcontent-%COMP%] {\n right: 0;\n}\n\n.tab-scroll-button[_ngcontent-%COMP%] {\n padding: 8px 10px 10px 8px;\n cursor: pointer;\n border-radius: 6px;\n background-color: lightblue;\n}\n.tab-scroll-button[_ngcontent-%COMP%]:hover {\n background-color: pink;\n}"] });
367
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTabStripComponent, [{
368
+ type: Component,
369
+ args: [{ selector: 'mj-tabstrip', template: "<div class=\"tabstrip-container\" mjFillContainer [fillWidth]=\"FillWidth\" [fillHeight]=\"FillHeight\">\n <!-- Tab Headers -->\n <div class=\"tab-header-outer\">\n <div *ngIf=\"showLeftButton\" class=\"tab-scroll-button tab-scroll-button-left\" (click)=\"scrollLeft()\">\n <span class=\"fa-solid fa-caret-left\"></span>\n </div>\n <div class=\"tab-header-inner\" #tabInnerContainer>\n <ng-content select=\"mj-tab\"></ng-content> <!-- Where <mj-tab> components are projected -->\n </div>\n <div *ngIf=\"showRightButton\" class=\"tab-scroll-button tab-scroll-button-right\" (click)=\"scrollRight()\">\n <span class=\"fa-solid fa-caret-right\"></span>\n </div>\n </div>\n <!-- Tab Content -->\n <div class=\"tab-bodies\" mjFillContainer [fillWidth]=\"FillWidth\" [fillHeight]=\"FillHeight\">\n <ng-content select=\"mj-tab-body\"></ng-content> <!-- Where <mj-tab-body> components are projected -->\n </div>\n</div>", styles: [".tabstrip-container {\n display: block;\n overflow: hidden;\n font-size: 14px; /*default font size*/\n}\n\n.tab-header-outer {\n position: relative;\n display: flex;\n align-items: center;\n overflow: hidden; /* Hide the overflow */\n background-color: #D5D8E5;\n}\n\n.tab-header-inner {\n display: flex;\n flex-direction: row;\n white-space: nowrap; /* Prevent wrapping of tabs */\n position: relative; /* Needed for z-index to work */\n z-index: 1; /* Place tabs above the content */\n\n padding-left: 5px;\n padding-top: 5px;\n background-color: #D5D8E5;\n border-bottom: #F5F6FA;\n}\n\n.tab-scroll-button-left, .tab-scroll-button-right {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 2; /* Ensure buttons are above the content */\n}\n\n.tab-scroll-button-left {\n left: 0;\n}\n\n.tab-scroll-button-right {\n right: 0;\n}\n\n.tab-scroll-button {\n padding: 8px 10px 10px 8px;\n cursor: pointer;\n border-radius: 6px;\n background-color: lightblue;\n}\n.tab-scroll-button:hover {\n background-color: pink;\n}\n\n "] }]
370
+ }], () => [{ type: i0.ChangeDetectorRef }], { FillWidth: [{
371
+ type: Input
372
+ }], FillHeight: [{
373
+ type: Input
374
+ }], SelectedTabIndex: [{
375
+ type: Input
376
+ }], BeforeTabSelected: [{
377
+ type: Output
378
+ }], TabSelected: [{
379
+ type: Output
380
+ }], BeforeTabClosed: [{
381
+ type: Output
382
+ }], TabClosed: [{
383
+ type: Output
384
+ }], TabContextMenu: [{
385
+ type: Output
386
+ }], TabScrolled: [{
387
+ type: Output
388
+ }], tabs: [{
389
+ type: ContentChildren,
390
+ args: [MJTabComponent]
391
+ }], tabBodies: [{
392
+ type: ContentChildren,
393
+ args: [MJTabBodyComponent]
394
+ }], tabInnerContainer: [{
395
+ type: ViewChild,
396
+ args: ['tabInnerContainer']
397
+ }], onResize: [{
398
+ type: HostListener,
399
+ args: ['window:resize', ['$event']]
400
+ }], ScrollAmount: [{
401
+ type: Input
402
+ }] }); })();
403
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJTabStripComponent, { className: "MJTabStripComponent" }); })();
404
+ //# sourceMappingURL=tab-strip.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-strip.component.js","sourceRoot":"","sources":["../../../src/lib/tab-strip/tab-strip.component.ts","../../../src/lib/tab-strip/tab-strip.component.html"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare class MJTabBase {
2
+ index: number;
3
+ }
4
+ //# sourceMappingURL=tab.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.base.d.ts","sourceRoot":"","sources":["../../src/lib/tab.base.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAClB,KAAK,EAAG,MAAM,CAAA;CACjB"}
@@ -0,0 +1,3 @@
1
+ export class MJTabBase {
2
+ }
3
+ //# sourceMappingURL=tab.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.base.js","sourceRoot":"","sources":["../../src/lib/tab.base.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;CAErB"}
@@ -0,0 +1,6 @@
1
+ export * from './lib/tab-strip/tab-strip.component';
2
+ export * from './lib/tab-body/tab-body.component';
3
+ export * from './lib/tab/tab.component';
4
+ export * from './lib/tab.base';
5
+ export * from './lib/module';
6
+ //# sourceMappingURL=public-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAIA,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Public API Surface
3
+ */
4
+ export * from './lib/tab-strip/tab-strip.component';
5
+ export * from './lib/tab-body/tab-body.component';
6
+ export * from './lib/tab/tab.component';
7
+ export * from './lib/tab.base';
8
+ export * from './lib/module';
9
+ //# sourceMappingURL=public-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api.js","sourceRoot":"","sources":["../src/public-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAC"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@memberjunction/ng-skip-chat",
3
+ "version": "2.13.2",
4
+ "description": "MemberJunction: Simple Skip Chat components usable in any Angular project",
5
+ "main": "./dist/public-api.js",
6
+ "typings": "./dist/public-api.d.ts",
7
+ "files": [
8
+ "/dist"
9
+ ],
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1",
12
+ "build": "ngc"
13
+ },
14
+ "keywords": [],
15
+ "author": "",
16
+ "license": "ISC",
17
+ "devDependencies": {
18
+ "@angular/compiler": "18.0.2",
19
+ "@angular/compiler-cli": "18.0.2"
20
+ },
21
+ "peerDependencies": {
22
+ "@angular/common": "18.0.2",
23
+ "@angular/core": "18.0.2"
24
+ },
25
+ "dependencies": {
26
+ "tslib": "^2.3.0",
27
+ "@memberjunction/ng-shared": "2.13.2",
28
+ "@memberjunction/ng-container-directives": "2.13.2"
29
+ },
30
+ "sideEffects": false
31
+ }