@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.
- package/dist/lib/module.d.ts +12 -0
- package/dist/lib/module.d.ts.map +1 -0
- package/dist/lib/module.js +40 -0
- package/dist/lib/module.js.map +1 -0
- package/dist/lib/tab/tab.component.d.ts +55 -0
- package/dist/lib/tab/tab.component.d.ts.map +1 -0
- package/dist/lib/tab/tab.component.js +138 -0
- package/dist/lib/tab/tab.component.js.map +1 -0
- package/dist/lib/tab-body/tab-body.component.d.ts +13 -0
- package/dist/lib/tab-body/tab-body.component.d.ts.map +1 -0
- package/dist/lib/tab-body/tab-body.component.js +38 -0
- package/dist/lib/tab-body/tab-body.component.js.map +1 -0
- package/dist/lib/tab-strip/tab-strip.component.d.ts +117 -0
- package/dist/lib/tab-strip/tab-strip.component.d.ts.map +1 -0
- package/dist/lib/tab-strip/tab-strip.component.js +404 -0
- package/dist/lib/tab-strip/tab-strip.component.js.map +1 -0
- package/dist/lib/tab.base.d.ts +4 -0
- package/dist/lib/tab.base.d.ts.map +1 -0
- package/dist/lib/tab.base.js +3 -0
- package/dist/lib/tab.base.js.map +1 -0
- package/dist/public-api.d.ts +6 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +9 -0
- package/dist/public-api.js.map +1 -0
- package/package.json +31 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"tab.base.js","sourceRoot":"","sources":["../../src/lib/tab.base.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;CAErB"}
|
|
@@ -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
|
+
}
|