@bootkit/ng0 0.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/accordion/accordion-item.component.d.ts +13 -0
- package/accordion/accordion.component.d.ts +13 -0
- package/accordion/accordion.module.d.ts +8 -0
- package/accordion/index.d.ts +5 -0
- package/accordion/public-api.d.ts +3 -0
- package/collapse/collapse.component.d.ts +18 -0
- package/collapse/collapse.directive.d.ts +32 -0
- package/collapse/collapse.module.d.ts +8 -0
- package/collapse/index.d.ts +5 -0
- package/collapse/public-api.d.ts +3 -0
- package/common/index.d.ts +5 -0
- package/common/public-api.d.ts +2 -0
- package/common/types.d.ts +4 -0
- package/common/utils.d.ts +3 -0
- package/esm2022/accordion/accordion-item.component.mjs +34 -0
- package/esm2022/accordion/accordion.component.mjs +25 -0
- package/esm2022/accordion/accordion.module.mjs +25 -0
- package/esm2022/accordion/bootkit-ng0-accordion.mjs +5 -0
- package/esm2022/accordion/public-api.mjs +4 -0
- package/esm2022/bootkit-ng0.mjs +5 -0
- package/esm2022/collapse/bootkit-ng0-collapse.mjs +5 -0
- package/esm2022/collapse/collapse.component.mjs +46 -0
- package/esm2022/collapse/collapse.directive.mjs +94 -0
- package/esm2022/collapse/collapse.module.mjs +23 -0
- package/esm2022/collapse/public-api.mjs +4 -0
- package/esm2022/common/bootkit-ng0-common.mjs +5 -0
- package/esm2022/common/public-api.mjs +3 -0
- package/esm2022/common/types.mjs +3 -0
- package/esm2022/common/utils.mjs +16 -0
- package/esm2022/lib/index.mjs +3 -0
- package/esm2022/lib/types.mjs +2 -0
- package/esm2022/modal/bootkit-ng0-modal.mjs +5 -0
- package/esm2022/modal/modal.component.mjs +44 -0
- package/esm2022/modal/modal.module.mjs +20 -0
- package/esm2022/modal/public-api.mjs +3 -0
- package/esm2022/modal/types.mjs +3 -0
- package/esm2022/nav/bootkit-ng0-nav.mjs +5 -0
- package/esm2022/nav/nav-item.directive.mjs +26 -0
- package/esm2022/nav/nav-link.directive.mjs +45 -0
- package/esm2022/nav/nav.directive.mjs +23 -0
- package/esm2022/nav/nav.module.mjs +35 -0
- package/esm2022/nav/public-api.mjs +7 -0
- package/esm2022/nav/tab-content.component.mjs +29 -0
- package/esm2022/nav/tab-pane.directive.mjs +20 -0
- package/esm2022/offcanvas/bootkit-ng0-offcanvas.mjs +5 -0
- package/esm2022/offcanvas/offcanvas.directive.mjs +118 -0
- package/esm2022/offcanvas/offcanvas.module.mjs +19 -0
- package/esm2022/offcanvas/public-api.mjs +3 -0
- package/esm2022/overlay/bootkit-ng0-overlay.mjs +5 -0
- package/esm2022/overlay/overlay.directive.mjs +111 -0
- package/esm2022/overlay/overlay.module.mjs +22 -0
- package/esm2022/overlay/private/utils.mjs +58 -0
- package/esm2022/overlay/public-api.mjs +3 -0
- package/esm2022/popover/bootkit-ng0-popover.mjs +5 -0
- package/esm2022/popover/popover-wrapper/popover-wrapper.component.mjs +29 -0
- package/esm2022/popover/popover.directive.mjs +140 -0
- package/esm2022/popover/public-api.mjs +2 -0
- package/esm2022/popover/types.mjs +2 -0
- package/esm2022/public-api.mjs +5 -0
- package/esm2022/toast/bootkit-ng0-toast.mjs +5 -0
- package/esm2022/toast/public-api.mjs +4 -0
- package/esm2022/toast/toast-ref.mjs +27 -0
- package/esm2022/toast/toast.component.mjs +68 -0
- package/esm2022/toast/toast.service.mjs +93 -0
- package/esm2022/toast/types.mjs +2 -0
- package/esm2022/tooltip/bootkit-ng0-tooltip.mjs +5 -0
- package/esm2022/tooltip/public-api.mjs +3 -0
- package/esm2022/tooltip/tooltip-wrapper/tooltip-wrapper.component.mjs +44 -0
- package/esm2022/tooltip/tooltip.directive.mjs +93 -0
- package/esm2022/tooltip/types.mjs +2 -0
- package/fesm2022/bootkit-ng0-accordion.mjs +83 -0
- package/fesm2022/bootkit-ng0-accordion.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-collapse.mjs +163 -0
- package/fesm2022/bootkit-ng0-collapse.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-common.mjs +26 -0
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-modal.mjs +68 -0
- package/fesm2022/bootkit-ng0-modal.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-nav.mjs +166 -0
- package/fesm2022/bootkit-ng0-nav.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-offcanvas.mjs +141 -0
- package/fesm2022/bootkit-ng0-offcanvas.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-overlay.mjs +194 -0
- package/fesm2022/bootkit-ng0-overlay.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-popover.mjs +173 -0
- package/fesm2022/bootkit-ng0-popover.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-toast.mjs +191 -0
- package/fesm2022/bootkit-ng0-toast.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-tooltip.mjs +141 -0
- package/fesm2022/bootkit-ng0-tooltip.mjs.map +1 -0
- package/fesm2022/bootkit-ng0.mjs +12 -0
- package/fesm2022/bootkit-ng0.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/index.d.ts +2 -0
- package/lib/types.d.ts +1 -0
- package/modal/index.d.ts +5 -0
- package/modal/modal.component.d.ts +18 -0
- package/modal/modal.module.d.ts +7 -0
- package/modal/public-api.d.ts +2 -0
- package/modal/types.d.ts +2 -0
- package/nav/index.d.ts +5 -0
- package/nav/nav-item.directive.d.ts +13 -0
- package/nav/nav-link.directive.d.ts +16 -0
- package/nav/nav.directive.d.ts +11 -0
- package/nav/nav.module.d.ts +11 -0
- package/nav/public-api.d.ts +6 -0
- package/nav/tab-content.component.d.ts +15 -0
- package/nav/tab-pane.directive.d.ts +9 -0
- package/offcanvas/index.d.ts +5 -0
- package/offcanvas/offcanvas.directive.d.ts +24 -0
- package/offcanvas/offcanvas.module.d.ts +7 -0
- package/offcanvas/public-api.d.ts +2 -0
- package/overlay/index.d.ts +5 -0
- package/overlay/overlay.directive.d.ts +50 -0
- package/overlay/overlay.module.d.ts +10 -0
- package/overlay/private/utils.d.ts +10 -0
- package/overlay/public-api.d.ts +2 -0
- package/package.json +101 -0
- package/popover/index.d.ts +5 -0
- package/popover/popover-wrapper/popover-wrapper.component.d.ts +15 -0
- package/popover/popover.directive.d.ts +30 -0
- package/popover/public-api.d.ts +1 -0
- package/popover/types.d.ts +4 -0
- package/public-api.d.ts +1 -0
- package/toast/index.d.ts +5 -0
- package/toast/public-api.d.ts +3 -0
- package/toast/toast-ref.d.ts +12 -0
- package/toast/toast.component.d.ts +19 -0
- package/toast/toast.service.d.ts +43 -0
- package/toast/types.d.ts +44 -0
- package/tooltip/index.d.ts +5 -0
- package/tooltip/public-api.d.ts +2 -0
- package/tooltip/tooltip-wrapper/tooltip-wrapper.component.d.ts +19 -0
- package/tooltip/tooltip.directive.d.ts +24 -0
- package/tooltip/types.d.ts +3 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { model, input, Directive, HostListener, HostBinding, Component, ChangeDetectionStrategy, ContentChildren, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
|
|
6
|
+
class NavDirective {
|
|
7
|
+
_elementRef;
|
|
8
|
+
_renderer;
|
|
9
|
+
activeItem = model(0);
|
|
10
|
+
disabled = input(false);
|
|
11
|
+
constructor(_elementRef, _renderer) {
|
|
12
|
+
this._elementRef = _elementRef;
|
|
13
|
+
this._renderer = _renderer;
|
|
14
|
+
}
|
|
15
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NavDirective, isStandalone: true, selector: "[ng0Nav]", inputs: { activeItem: { classPropertyName: "activeItem", publicName: "activeItem", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeItem: "activeItemChange" }, exportAs: ["ng0Nav"], ngImport: i0 });
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavDirective, decorators: [{
|
|
19
|
+
type: Directive,
|
|
20
|
+
args: [{
|
|
21
|
+
selector: '[ng0Nav]',
|
|
22
|
+
exportAs: 'ng0Nav',
|
|
23
|
+
standalone: true,
|
|
24
|
+
}]
|
|
25
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
|
|
26
|
+
|
|
27
|
+
class NavItemDirective {
|
|
28
|
+
elementRef;
|
|
29
|
+
_renderer;
|
|
30
|
+
_nav;
|
|
31
|
+
id = input.required({ alias: 'ng0NavItem' });
|
|
32
|
+
disabled = input(false);
|
|
33
|
+
constructor(elementRef, _renderer, _nav) {
|
|
34
|
+
this.elementRef = elementRef;
|
|
35
|
+
this._renderer = _renderer;
|
|
36
|
+
this._nav = _nav;
|
|
37
|
+
}
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavItemDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: NavDirective }], target: i0.ɵɵFactoryTarget.Directive });
|
|
39
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NavItemDirective, isStandalone: true, selector: "[ng0NavItem]", inputs: { id: { classPropertyName: "id", publicName: "ng0NavItem", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["ng0NavItem"], ngImport: i0 });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavItemDirective, decorators: [{
|
|
42
|
+
type: Directive,
|
|
43
|
+
args: [{
|
|
44
|
+
selector: '[ng0NavItem]',
|
|
45
|
+
exportAs: 'ng0NavItem',
|
|
46
|
+
standalone: true,
|
|
47
|
+
}]
|
|
48
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: NavDirective }] });
|
|
49
|
+
|
|
50
|
+
class NavLinkDirective {
|
|
51
|
+
elementRef;
|
|
52
|
+
_renderer;
|
|
53
|
+
_nav;
|
|
54
|
+
_navItem;
|
|
55
|
+
constructor(elementRef, _renderer, _nav, _navItem) {
|
|
56
|
+
this.elementRef = elementRef;
|
|
57
|
+
this._renderer = _renderer;
|
|
58
|
+
this._nav = _nav;
|
|
59
|
+
this._navItem = _navItem;
|
|
60
|
+
}
|
|
61
|
+
_onClick() {
|
|
62
|
+
this._nav.activeItem.set(this._navItem.id);
|
|
63
|
+
}
|
|
64
|
+
get _active() {
|
|
65
|
+
return this._nav.activeItem() === this._navItem.id();
|
|
66
|
+
}
|
|
67
|
+
get _disabled() {
|
|
68
|
+
return this._nav.disabled() || this._navItem.disabled();
|
|
69
|
+
}
|
|
70
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavLinkDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: NavDirective }, { token: NavItemDirective }], target: i0.ɵɵFactoryTarget.Directive });
|
|
71
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: NavLinkDirective, isStandalone: true, selector: "[ng0NavLink]", host: { listeners: { "click": "_onClick()" }, properties: { "class.active": "this._active", "class.disabled": "this._disabled" } }, exportAs: ["ng0NavLink"], ngImport: i0 });
|
|
72
|
+
}
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavLinkDirective, decorators: [{
|
|
74
|
+
type: Directive,
|
|
75
|
+
args: [{
|
|
76
|
+
selector: '[ng0NavLink]',
|
|
77
|
+
exportAs: 'ng0NavLink',
|
|
78
|
+
standalone: true,
|
|
79
|
+
}]
|
|
80
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: NavDirective }, { type: NavItemDirective }], propDecorators: { _onClick: [{
|
|
81
|
+
type: HostListener,
|
|
82
|
+
args: ['click']
|
|
83
|
+
}], _active: [{
|
|
84
|
+
type: HostBinding,
|
|
85
|
+
args: ['class.active']
|
|
86
|
+
}], _disabled: [{
|
|
87
|
+
type: HostBinding,
|
|
88
|
+
args: ['class.disabled']
|
|
89
|
+
}] } });
|
|
90
|
+
|
|
91
|
+
class TabPaneDirective {
|
|
92
|
+
templateRef;
|
|
93
|
+
id = input.required({ alias: 'ng0TabPane' });
|
|
94
|
+
constructor(templateRef) {
|
|
95
|
+
this.templateRef = templateRef;
|
|
96
|
+
}
|
|
97
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TabPaneDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
98
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: TabPaneDirective, isStandalone: true, selector: "[ng0TabPane]", inputs: { id: { classPropertyName: "id", publicName: "ng0TabPane", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["ng0TabPane"], ngImport: i0 });
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TabPaneDirective, decorators: [{
|
|
101
|
+
type: Directive,
|
|
102
|
+
args: [{
|
|
103
|
+
selector: '[ng0TabPane]',
|
|
104
|
+
exportAs: 'ng0TabPane',
|
|
105
|
+
standalone: true,
|
|
106
|
+
}]
|
|
107
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
108
|
+
|
|
109
|
+
class TabContentComponent {
|
|
110
|
+
_elementRef;
|
|
111
|
+
_renderer;
|
|
112
|
+
nav = input.required();
|
|
113
|
+
_panes;
|
|
114
|
+
disabled = input(false);
|
|
115
|
+
constructor(_elementRef, _renderer) {
|
|
116
|
+
this._elementRef = _elementRef;
|
|
117
|
+
this._renderer = _renderer;
|
|
118
|
+
}
|
|
119
|
+
ngOnInit() {
|
|
120
|
+
this._renderer.addClass(this._elementRef.nativeElement, 'tab-content');
|
|
121
|
+
}
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TabContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: TabContentComponent, isStandalone: true, selector: "ng0-tab-content", inputs: { nav: { classPropertyName: "nav", publicName: "nav", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_panes", predicate: TabPaneDirective }], exportAs: ["ng0TabContent"], ngImport: i0, template: "@for (pane of _panes; track $index) {\r\n @if(pane.id() === nav().activeItem()) {\r\n <ng-container *ngTemplateOutlet=\"pane.templateRef;\"></ng-container>\r\n }\r\n}\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: TabContentComponent, decorators: [{
|
|
126
|
+
type: Component,
|
|
127
|
+
args: [{ selector: 'ng0-tab-content', exportAs: 'ng0TabContent', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule], template: "@for (pane of _panes; track $index) {\r\n @if(pane.id() === nav().activeItem()) {\r\n <ng-container *ngTemplateOutlet=\"pane.templateRef;\"></ng-container>\r\n }\r\n}\r\n" }]
|
|
128
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { _panes: [{
|
|
129
|
+
type: ContentChildren,
|
|
130
|
+
args: [TabPaneDirective]
|
|
131
|
+
}] } });
|
|
132
|
+
|
|
133
|
+
const items = [
|
|
134
|
+
NavDirective,
|
|
135
|
+
NavItemDirective,
|
|
136
|
+
NavLinkDirective,
|
|
137
|
+
TabContentComponent,
|
|
138
|
+
TabPaneDirective
|
|
139
|
+
];
|
|
140
|
+
class NavModule {
|
|
141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
142
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: NavModule, imports: [NavDirective,
|
|
143
|
+
NavItemDirective,
|
|
144
|
+
NavLinkDirective,
|
|
145
|
+
TabContentComponent,
|
|
146
|
+
TabPaneDirective], exports: [NavDirective,
|
|
147
|
+
NavItemDirective,
|
|
148
|
+
NavLinkDirective,
|
|
149
|
+
TabContentComponent,
|
|
150
|
+
TabPaneDirective] });
|
|
151
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavModule, imports: [TabContentComponent] });
|
|
152
|
+
}
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NavModule, decorators: [{
|
|
154
|
+
type: NgModule,
|
|
155
|
+
args: [{
|
|
156
|
+
imports: items,
|
|
157
|
+
exports: items
|
|
158
|
+
}]
|
|
159
|
+
}] });
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Generated bundle index. Do not edit.
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
export { NavDirective, NavItemDirective, NavLinkDirective, NavModule, TabContentComponent, TabPaneDirective };
|
|
166
|
+
//# sourceMappingURL=bootkit-ng0-nav.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-nav.mjs","sources":["../../../projects/ng0/nav/nav.directive.ts","../../../projects/ng0/nav/nav-item.directive.ts","../../../projects/ng0/nav/nav-link.directive.ts","../../../projects/ng0/nav/tab-pane.directive.ts","../../../projects/ng0/nav/tab-content.component.ts","../../../projects/ng0/nav/tab-content.component.html","../../../projects/ng0/nav/nav.module.ts","../../../projects/ng0/nav/bootkit-ng0-nav.ts"],"sourcesContent":["import { Directive, ElementRef, Renderer2, input, model } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Nav]',\r\n exportAs: 'ng0Nav',\r\n standalone: true,\r\n})\r\nexport class NavDirective {\r\n activeItem = model<any>(0);\r\n disabled = input(false);\r\n\r\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\r\n }\r\n}\r\n","import { Directive, ElementRef, Renderer2, input } from '@angular/core';\r\nimport { NavDirective } from './nav.directive';\r\n\r\n@Directive({\r\n selector: '[ng0NavItem]',\r\n exportAs: 'ng0NavItem',\r\n standalone: true,\r\n})\r\nexport class NavItemDirective {\r\n id = input.required<any>({alias: 'ng0NavItem'});\r\n disabled = input(false);\r\n\r\n constructor(public elementRef: ElementRef, private _renderer: Renderer2, private _nav: NavDirective) {\r\n }\r\n}\r\n","import { Directive, ElementRef, HostBinding, HostListener, Renderer2, input } from '@angular/core';\r\nimport { NavDirective } from './nav.directive';\r\nimport { NavItemDirective } from './nav-item.directive';\r\n\r\n@Directive({\r\n selector: '[ng0NavLink]',\r\n exportAs: 'ng0NavLink',\r\n standalone: true,\r\n})\r\nexport class NavLinkDirective {\r\n constructor(public elementRef: ElementRef, private _renderer: Renderer2, private _nav: NavDirective, private _navItem: NavItemDirective) {\r\n }\r\n\r\n @HostListener('click')\r\n private _onClick() {\r\n this._nav.activeItem.set(this._navItem.id);\r\n }\r\n\r\n @HostBinding('class.active') \r\n private get _active() {\r\n return this._nav.activeItem() === this._navItem.id();\r\n }\r\n\r\n @HostBinding('class.disabled') \r\n private get _disabled() {\r\n return this._nav.disabled() || this._navItem.disabled();\r\n }\r\n}\r\n","import { Directive, input, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0TabPane]',\r\n exportAs: 'ng0TabPane',\r\n standalone: true,\r\n})\r\nexport class TabPaneDirective {\r\n id = input.required<any>({alias: 'ng0TabPane'});\r\n \r\n constructor(public templateRef: TemplateRef<any>) {\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, ElementRef, Renderer2, OnInit, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TabPaneDirective } from './tab-pane.directive';\r\nimport { NavDirective } from './nav.directive';\r\n\r\n@Component({\r\n selector: 'ng0-tab-content',\r\n exportAs: 'ng0TabContent',\r\n templateUrl: './tab-content.component.html',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule]\r\n})\r\nexport class TabContentComponent implements OnInit {\r\n nav = input.required<NavDirective>();\r\n\r\n @ContentChildren(TabPaneDirective) protected _panes: QueryList<TabPaneDirective>;\r\n\r\n disabled = input(false);\r\n\r\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._renderer.addClass(this._elementRef.nativeElement, 'tab-content');\r\n }\r\n}\r\n","@for (pane of _panes; track $index) {\r\n @if(pane.id() === nav().activeItem()) {\r\n <ng-container *ngTemplateOutlet=\"pane.templateRef;\"></ng-container>\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { NavDirective } from './nav.directive';\r\nimport { NavLinkDirective } from './nav-link.directive';\r\nimport { TabContentComponent } from './tab-content.component';\r\nimport { TabPaneDirective } from './tab-pane.directive';\r\nimport { NavItemDirective } from './nav-item.directive';\r\n\r\nconst items = [\r\n NavDirective,\r\n NavItemDirective,\r\n NavLinkDirective,\r\n TabContentComponent,\r\n TabPaneDirective\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class NavModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NavDirective","i2.NavItemDirective"],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, EventEmitter, afterNextRender, effect, untracked, Directive, Output, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class OffcanvasDirective {
|
|
5
|
+
_el;
|
|
6
|
+
_renderer;
|
|
7
|
+
show = input(false);
|
|
8
|
+
hasBackdrop = input(false);
|
|
9
|
+
backdropClick = new EventEmitter;
|
|
10
|
+
_firstShowEffectRun = true;
|
|
11
|
+
_firstBackdropEffectRun = true;
|
|
12
|
+
_backdropElement;
|
|
13
|
+
_backdropClickUnlistenFunc;
|
|
14
|
+
_backdropTransitionendUnlistenFunc;
|
|
15
|
+
addClass = (c) => this._renderer.addClass(this._el.nativeElement, c);
|
|
16
|
+
constructor(_el, _renderer) {
|
|
17
|
+
this._el = _el;
|
|
18
|
+
this._renderer = _renderer;
|
|
19
|
+
afterNextRender(() => {
|
|
20
|
+
if (this.show() && this.hasBackdrop()) {
|
|
21
|
+
this._createBackdrop();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
effect(() => {
|
|
25
|
+
var show = this.show();
|
|
26
|
+
var backdrop = untracked(() => this.hasBackdrop());
|
|
27
|
+
if (this._firstShowEffectRun) {
|
|
28
|
+
if (show) {
|
|
29
|
+
this.addClass('show');
|
|
30
|
+
}
|
|
31
|
+
this._firstShowEffectRun = false;
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (show) {
|
|
35
|
+
this.addClass('show');
|
|
36
|
+
if (backdrop)
|
|
37
|
+
this._createBackdrop();
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.addClass('hiding');
|
|
41
|
+
this._hideBackdrop(); // we first hide backdrop, after hide transition completed, we destroy it.
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
effect(() => {
|
|
45
|
+
var backdrop = this.hasBackdrop();
|
|
46
|
+
var show = untracked(() => this.show());
|
|
47
|
+
if (this._firstBackdropEffectRun) {
|
|
48
|
+
this._firstBackdropEffectRun = false;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (show) {
|
|
52
|
+
if (backdrop)
|
|
53
|
+
this._createBackdrop();
|
|
54
|
+
else
|
|
55
|
+
this._destroyBackdrop();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
ngOnInit() {
|
|
60
|
+
}
|
|
61
|
+
_createBackdrop() {
|
|
62
|
+
if (!this._backdropElement) {
|
|
63
|
+
this._backdropElement = this._renderer.createElement('div');
|
|
64
|
+
['offcanvas-backdrop', 'fade', 'show'].forEach(c => this._renderer.addClass(this._backdropElement, c));
|
|
65
|
+
// Append the new element next to the host element
|
|
66
|
+
const parent = this._renderer.parentNode(this._el.nativeElement);
|
|
67
|
+
const nextSibling = this._renderer.nextSibling(this._el.nativeElement);
|
|
68
|
+
this._renderer.insertBefore(parent, this._backdropElement, nextSibling);
|
|
69
|
+
this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropElement, 'click', (e) => {
|
|
70
|
+
this.backdropClick.emit(e);
|
|
71
|
+
});
|
|
72
|
+
this._backdropTransitionendUnlistenFunc = this._renderer.listen(this._backdropElement, 'transitionend', (e) => {
|
|
73
|
+
if (!this.show()) {
|
|
74
|
+
this._destroyBackdrop();
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
_destroyBackdrop() {
|
|
80
|
+
if (this._backdropElement) {
|
|
81
|
+
const parent = this._renderer.parentNode(this._el.nativeElement);
|
|
82
|
+
this._renderer.removeChild(parent, this._backdropElement, false);
|
|
83
|
+
this._backdropClickUnlistenFunc();
|
|
84
|
+
this._backdropClickUnlistenFunc = undefined;
|
|
85
|
+
this._backdropElement = undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
_hideBackdrop() {
|
|
89
|
+
if (this._backdropElement) {
|
|
90
|
+
this._renderer.removeClass(this._backdropElement, 'show');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_onTransitionend(e) {
|
|
94
|
+
if (!this.show() && e.propertyName == 'transform') {
|
|
95
|
+
['show', 'hiding'].forEach(x => this._renderer.removeClass(this._el.nativeElement, x));
|
|
96
|
+
// if (this.backdrop())
|
|
97
|
+
// this._destroyBackdrop();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
ngOnDestroy() {
|
|
101
|
+
this._destroyBackdrop();
|
|
102
|
+
}
|
|
103
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
104
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: OffcanvasDirective, isStandalone: true, selector: "[ng0Offcanvas]", inputs: { show: { classPropertyName: "show", publicName: "show", isSignal: true, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick" }, host: { listeners: { "transitionend": "_onTransitionend($event)" } }, exportAs: ["ng0Offcanvas"], ngImport: i0 });
|
|
105
|
+
}
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasDirective, decorators: [{
|
|
107
|
+
type: Directive,
|
|
108
|
+
args: [{
|
|
109
|
+
selector: '[ng0Offcanvas]',
|
|
110
|
+
exportAs: 'ng0Offcanvas',
|
|
111
|
+
standalone: true,
|
|
112
|
+
}]
|
|
113
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { backdropClick: [{
|
|
114
|
+
type: Output
|
|
115
|
+
}], _onTransitionend: [{
|
|
116
|
+
type: HostListener,
|
|
117
|
+
args: ['transitionend', ['$event']]
|
|
118
|
+
}] } });
|
|
119
|
+
|
|
120
|
+
const items = [
|
|
121
|
+
OffcanvasDirective,
|
|
122
|
+
];
|
|
123
|
+
class OffcanvasModule {
|
|
124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
125
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasModule, imports: [OffcanvasDirective], exports: [OffcanvasDirective] });
|
|
126
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasModule });
|
|
127
|
+
}
|
|
128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OffcanvasModule, decorators: [{
|
|
129
|
+
type: NgModule,
|
|
130
|
+
args: [{
|
|
131
|
+
imports: items,
|
|
132
|
+
exports: items
|
|
133
|
+
}]
|
|
134
|
+
}] });
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Generated bundle index. Do not edit.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
export { OffcanvasDirective, OffcanvasModule };
|
|
141
|
+
//# sourceMappingURL=bootkit-ng0-offcanvas.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-offcanvas.mjs","sources":["../../../projects/ng0/offcanvas/offcanvas.directive.ts","../../../projects/ng0/offcanvas/offcanvas.module.ts","../../../projects/ng0/offcanvas/bootkit-ng0-offcanvas.ts"],"sourcesContent":["import { OnInit, ElementRef, Renderer2, effect, HostListener, Directive, input, Output, EventEmitter, OnDestroy, afterNextRender, untracked } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Offcanvas]',\r\n exportAs: 'ng0Offcanvas',\r\n standalone: true,\r\n})\r\nexport class OffcanvasDirective implements OnInit, OnDestroy {\r\n public show = input(false);\r\n public hasBackdrop = input(false);\r\n\r\n @Output()\r\n public backdropClick = new EventEmitter<MouseEvent>;\r\n\r\n private _firstShowEffectRun = true;\r\n private _firstBackdropEffectRun = true;\r\n private _backdropElement?: any;\r\n private _backdropClickUnlistenFunc?: any;\r\n private _backdropTransitionendUnlistenFunc?: any;\r\n private addClass = (c: string) => this._renderer.addClass(this._el.nativeElement, c);\r\n\r\n constructor(private _el: ElementRef, private _renderer: Renderer2) {\r\n\r\n afterNextRender(() => {\r\n if (this.show() && this.hasBackdrop()) {\r\n this._createBackdrop();\r\n }\r\n });\r\n\r\n effect(() => {\r\n var show = this.show();\r\n var backdrop = untracked(() => this.hasBackdrop());\r\n\r\n if (this._firstShowEffectRun) {\r\n if (show) {\r\n this.addClass('show');\r\n }\r\n this._firstShowEffectRun = false;\r\n return;\r\n }\r\n\r\n\r\n if (show) {\r\n this.addClass('show');\r\n if (backdrop)\r\n this._createBackdrop();\r\n } else {\r\n this.addClass('hiding');\r\n this._hideBackdrop(); // we first hide backdrop, after hide transition completed, we destroy it.\r\n }\r\n });\r\n\r\n effect(() => {\r\n var backdrop = this.hasBackdrop();\r\n var show = untracked(() => this.show());\r\n\r\n if (this._firstBackdropEffectRun) {\r\n this._firstBackdropEffectRun = false;\r\n return;\r\n }\r\n\r\n if (show) {\r\n if (backdrop)\r\n this._createBackdrop();\r\n else\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n private _createBackdrop() {\r\n if (!this._backdropElement) {\r\n this._backdropElement = this._renderer.createElement('div');\r\n ['offcanvas-backdrop', 'fade', 'show'].forEach(c => this._renderer.addClass(this._backdropElement, c));\r\n\r\n // Append the new element next to the host element\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n const nextSibling = this._renderer.nextSibling(this._el.nativeElement);\r\n this._renderer.insertBefore(parent, this._backdropElement, nextSibling);\r\n\r\n this._backdropClickUnlistenFunc = this._renderer.listen(this._backdropElement, 'click', (e) => {\r\n this.backdropClick.emit(e);\r\n });\r\n\r\n this._backdropTransitionendUnlistenFunc = this._renderer.listen(this._backdropElement, 'transitionend', (e) => {\r\n if (!this.show()) {\r\n this._destroyBackdrop();\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _destroyBackdrop() {\r\n if (this._backdropElement) {\r\n const parent = this._renderer.parentNode(this._el.nativeElement);\r\n this._renderer.removeChild(parent, this._backdropElement, false);\r\n this._backdropClickUnlistenFunc()\r\n\r\n this._backdropClickUnlistenFunc = undefined;\r\n this._backdropElement = undefined\r\n }\r\n }\r\n\r\n private _hideBackdrop() {\r\n if (this._backdropElement) {\r\n this._renderer.removeClass(this._backdropElement, 'show');\r\n }\r\n }\r\n\r\n @HostListener('transitionend', ['$event'])\r\n private _onTransitionend(e: TransitionEvent): void {\r\n if (!this.show() && e.propertyName == 'transform') {\r\n ['show', 'hiding'].forEach(x => this._renderer.removeClass(this._el.nativeElement, x));\r\n // if (this.backdrop())\r\n // this._destroyBackdrop();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroyBackdrop()\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { OffcanvasDirective } from './offcanvas.directive';\r\n\r\nconst items = [\r\n OffcanvasDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items\r\n})\r\nexport class OffcanvasModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, model, EventEmitter, effect, Directive, Output, NgModule } from '@angular/core';
|
|
3
|
+
import { flipPlacement } from '@bootkit/ng0/common';
|
|
4
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import * as i1 from '@angular/cdk/overlay';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Get the overlay position based on the provided placement and alignment.
|
|
9
|
+
*
|
|
10
|
+
* @param overlayPlacement - The placement of the overlay (e.g., 'bottom', 'top', 'start', 'end').
|
|
11
|
+
* @param overlayAlignment - The alignment of the overlay (e.g., 'start', 'center', 'end').
|
|
12
|
+
* @returns The connected position for the overlay.
|
|
13
|
+
*/
|
|
14
|
+
function getOverlayPosition(overlayPlacement, overlayAlignment) {
|
|
15
|
+
let p = {};
|
|
16
|
+
switch (overlayPlacement) {
|
|
17
|
+
case 'bottom':
|
|
18
|
+
p.originY = 'bottom';
|
|
19
|
+
p.overlayY = 'top';
|
|
20
|
+
p.originX = overlayAlignment;
|
|
21
|
+
p.overlayX = overlayAlignment;
|
|
22
|
+
break;
|
|
23
|
+
case 'top':
|
|
24
|
+
p.originY = 'top';
|
|
25
|
+
p.overlayY = 'bottom';
|
|
26
|
+
p.originX = overlayAlignment;
|
|
27
|
+
p.overlayX = overlayAlignment;
|
|
28
|
+
break;
|
|
29
|
+
case 'start':
|
|
30
|
+
p.originX = 'start';
|
|
31
|
+
p.overlayX = 'end';
|
|
32
|
+
if (overlayAlignment == 'start') {
|
|
33
|
+
p.originY = 'top';
|
|
34
|
+
p.overlayY = 'top';
|
|
35
|
+
}
|
|
36
|
+
else if (overlayAlignment == 'center') {
|
|
37
|
+
p.originY = 'center';
|
|
38
|
+
p.overlayY = 'center';
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
p.originY = 'bottom';
|
|
42
|
+
p.overlayY = 'bottom';
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
case 'end':
|
|
46
|
+
p.originX = 'end';
|
|
47
|
+
p.overlayX = 'start';
|
|
48
|
+
if (overlayAlignment == 'start') {
|
|
49
|
+
p.originY = 'top';
|
|
50
|
+
p.overlayY = 'top';
|
|
51
|
+
}
|
|
52
|
+
else if (overlayAlignment == 'center') {
|
|
53
|
+
p.originY = 'center';
|
|
54
|
+
p.overlayY = 'center';
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
p.originY = 'bottom';
|
|
58
|
+
p.overlayY = 'bottom';
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
return p;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Directive to manage overlay behavior.
|
|
67
|
+
*/
|
|
68
|
+
class OverlayDirective {
|
|
69
|
+
templateRef;
|
|
70
|
+
_overlayService;
|
|
71
|
+
_injector;
|
|
72
|
+
_renderer;
|
|
73
|
+
_viewRef;
|
|
74
|
+
anchor = input.required();
|
|
75
|
+
open = model(false);
|
|
76
|
+
placement = input('bottom');
|
|
77
|
+
alignment = input('start');
|
|
78
|
+
/**
|
|
79
|
+
* Event emitted when a pointer event occurs outside the overlay.
|
|
80
|
+
*/
|
|
81
|
+
outsidePointerEvent = new EventEmitter();
|
|
82
|
+
_overlayRef;
|
|
83
|
+
_templatePortal;
|
|
84
|
+
_outsidePointerEventsSubscription;
|
|
85
|
+
_hideTimeoutId;
|
|
86
|
+
constructor(templateRef, _overlayService, _injector, _renderer, _viewRef) {
|
|
87
|
+
this.templateRef = templateRef;
|
|
88
|
+
this._overlayService = _overlayService;
|
|
89
|
+
this._injector = _injector;
|
|
90
|
+
this._renderer = _renderer;
|
|
91
|
+
this._viewRef = _viewRef;
|
|
92
|
+
this._templatePortal = new TemplatePortal(this.templateRef, this._viewRef, null, this._injector);
|
|
93
|
+
effect(() => {
|
|
94
|
+
if (this.open()) {
|
|
95
|
+
this._clearTimeout();
|
|
96
|
+
if (!this._overlayRef) {
|
|
97
|
+
const p1 = getOverlayPosition(this.placement(), this.alignment());
|
|
98
|
+
const p2 = getOverlayPosition(flipPlacement(this.placement()), this.alignment());
|
|
99
|
+
const scrollStrategy = this._overlayService.scrollStrategies.reposition();
|
|
100
|
+
const positionStrategy = this._overlayService.position().flexibleConnectedTo(this.anchor()).withPositions([p1, p2]);
|
|
101
|
+
this._overlayRef = this._overlayService.create({ scrollStrategy, positionStrategy, });
|
|
102
|
+
}
|
|
103
|
+
this._outsidePointerEventsSubscription = this._overlayRef.outsidePointerEvents().subscribe(e => this.outsidePointerEvent.emit(e));
|
|
104
|
+
this._overlayRef.attach(this._templatePortal);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this._clearTimeout();
|
|
108
|
+
this._outsidePointerEventsSubscription?.unsubscribe();
|
|
109
|
+
this._overlayRef?.detach();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Show the overlay.
|
|
115
|
+
*/
|
|
116
|
+
show() {
|
|
117
|
+
this._clearTimeout();
|
|
118
|
+
this.open.set(true);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Hide the overlay.
|
|
122
|
+
*/
|
|
123
|
+
hide() {
|
|
124
|
+
this._clearTimeout();
|
|
125
|
+
this.open.set(false);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Hide the overlay after a period of time.
|
|
129
|
+
*/
|
|
130
|
+
hideAfter(ms) {
|
|
131
|
+
this._clearTimeout();
|
|
132
|
+
this._hideTimeoutId = setTimeout(() => {
|
|
133
|
+
this.open.set(false);
|
|
134
|
+
}, ms);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Toggle the overlay visibility.
|
|
138
|
+
*/
|
|
139
|
+
toggle() {
|
|
140
|
+
this.open.update(x => !x);
|
|
141
|
+
}
|
|
142
|
+
_clearTimeout() {
|
|
143
|
+
if (this._hideTimeoutId) {
|
|
144
|
+
clearTimeout(this._hideTimeoutId);
|
|
145
|
+
this._hideTimeoutId = 0;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Lifecycle hook that is called when the directive is destroyed.
|
|
150
|
+
*/
|
|
151
|
+
ngOnDestroy() {
|
|
152
|
+
this._outsidePointerEventsSubscription?.unsubscribe();
|
|
153
|
+
this._clearTimeout();
|
|
154
|
+
this._overlayRef?.dispose();
|
|
155
|
+
}
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OverlayDirective, deps: [{ token: i0.TemplateRef }, { token: i1.Overlay }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: OverlayDirective, isStandalone: true, selector: "[ng0Overlay]", inputs: { anchor: { classPropertyName: "anchor", publicName: "anchor", isSignal: true, isRequired: true, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, alignment: { classPropertyName: "alignment", publicName: "alignment", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", outsidePointerEvent: "outsidePointerEvent" }, exportAs: ["ng0Overlay"], ngImport: i0 });
|
|
158
|
+
}
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OverlayDirective, decorators: [{
|
|
160
|
+
type: Directive,
|
|
161
|
+
args: [{
|
|
162
|
+
selector: '[ng0Overlay]',
|
|
163
|
+
exportAs: 'ng0Overlay',
|
|
164
|
+
standalone: true,
|
|
165
|
+
}]
|
|
166
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1.Overlay }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { outsidePointerEvent: [{
|
|
167
|
+
type: Output
|
|
168
|
+
}] } });
|
|
169
|
+
|
|
170
|
+
const Items = [
|
|
171
|
+
OverlayDirective,
|
|
172
|
+
];
|
|
173
|
+
/**
|
|
174
|
+
* OverlayModule.
|
|
175
|
+
*/
|
|
176
|
+
class OverlayModule {
|
|
177
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
178
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: OverlayModule, imports: [OverlayDirective], exports: [OverlayDirective] });
|
|
179
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OverlayModule });
|
|
180
|
+
}
|
|
181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: OverlayModule, decorators: [{
|
|
182
|
+
type: NgModule,
|
|
183
|
+
args: [{
|
|
184
|
+
imports: Items,
|
|
185
|
+
exports: Items
|
|
186
|
+
}]
|
|
187
|
+
}] });
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Generated bundle index. Do not edit.
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
export { OverlayDirective, OverlayModule };
|
|
194
|
+
//# sourceMappingURL=bootkit-ng0-overlay.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-overlay.mjs","sources":["../../../projects/ng0/overlay/private/utils.ts","../../../projects/ng0/overlay/overlay.directive.ts","../../../projects/ng0/overlay/overlay.module.ts","../../../projects/ng0/overlay/bootkit-ng0-overlay.ts"],"sourcesContent":["import { ConnectedPosition } from \"@angular/cdk/overlay\";\r\nimport { Alignment, Placement } from \"@bootkit/ng0/common\";\r\n\r\n/**\r\n * Get the overlay position based on the provided placement and alignment.\r\n * \r\n * @param overlayPlacement - The placement of the overlay (e.g., 'bottom', 'top', 'start', 'end').\r\n * @param overlayAlignment - The alignment of the overlay (e.g., 'start', 'center', 'end').\r\n * @returns The connected position for the overlay.\r\n */\r\nexport function getOverlayPosition(overlayPlacement: Placement, overlayAlignment: Alignment): ConnectedPosition {\r\n let p = {} as ConnectedPosition;\r\n switch (overlayPlacement) {\r\n case 'bottom':\r\n p.originY = 'bottom';\r\n p.overlayY = 'top';\r\n p.originX = overlayAlignment;\r\n p.overlayX = overlayAlignment;\r\n break;\r\n case 'top':\r\n p.originY = 'top';\r\n p.overlayY = 'bottom';\r\n p.originX = overlayAlignment;\r\n p.overlayX = overlayAlignment;\r\n break;\r\n case 'start':\r\n p.originX = 'start';\r\n p.overlayX = 'end';\r\n\r\n if (overlayAlignment == 'start') {\r\n p.originY = 'top';\r\n p.overlayY = 'top';\r\n } else if (overlayAlignment == 'center') {\r\n p.originY = 'center';\r\n p.overlayY = 'center';\r\n } else {\r\n p.originY = 'bottom';\r\n p.overlayY = 'bottom';\r\n }\r\n break;\r\n case 'end':\r\n p.originX = 'end';\r\n p.overlayX = 'start';\r\n\r\n if (overlayAlignment == 'start') {\r\n p.originY = 'top';\r\n p.overlayY = 'top';\r\n } else if (overlayAlignment == 'center') {\r\n p.originY = 'center';\r\n p.overlayY = 'center';\r\n } else {\r\n p.originY = 'bottom';\r\n p.overlayY = 'bottom';\r\n }\r\n break;\r\n }\r\n\r\n return p;\r\n}\r\n","import { Directive, EventEmitter, Injector, OnDestroy, Output, Renderer2, TemplateRef, ViewContainerRef, effect, input, model } from '@angular/core';\r\nimport { Alignment, flipPlacement, Placement } from '@bootkit/ng0/common';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { getOverlayPosition } from './private/utils';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Directive to manage overlay behavior.\r\n */\r\n@Directive({\r\n selector: '[ng0Overlay]',\r\n exportAs: 'ng0Overlay',\r\n standalone: true,\r\n})\r\nexport class OverlayDirective implements OnDestroy {\r\n public anchor = input.required<any>();\r\n public open = model(false);\r\n public placement = input<Placement>('bottom');\r\n public alignment = input<Alignment>('start');\r\n\r\n /**\r\n * Event emitted when a pointer event occurs outside the overlay.\r\n */\r\n @Output() public outsidePointerEvent = new EventEmitter<MouseEvent>();\r\n\r\n private _overlayRef?: OverlayRef;\r\n private _templatePortal: TemplatePortal<any>;\r\n private _outsidePointerEventsSubscription?: Subscription;\r\n private _hideTimeoutId: any;\r\n\r\n constructor(\r\n public readonly templateRef: TemplateRef<any>,\r\n private _overlayService: Overlay,\r\n private _injector: Injector,\r\n private _renderer: Renderer2,\r\n private _viewRef: ViewContainerRef) {\r\n\r\n this._templatePortal = new TemplatePortal(this.templateRef, this._viewRef, null, this._injector);\r\n\r\n effect(() => {\r\n if (this.open()) {\r\n this._clearTimeout()\r\n\r\n if (!this._overlayRef) {\r\n const p1 = getOverlayPosition(this.placement(), this.alignment());\r\n const p2 = getOverlayPosition(flipPlacement(this.placement()), this.alignment());\r\n const scrollStrategy = this._overlayService.scrollStrategies.reposition();\r\n const positionStrategy = this._overlayService.position().flexibleConnectedTo(this.anchor()).withPositions([p1, p2]);\r\n this._overlayRef = this._overlayService.create({ scrollStrategy, positionStrategy, });\r\n }\r\n\r\n this._outsidePointerEventsSubscription = this._overlayRef.outsidePointerEvents().subscribe(e => this.outsidePointerEvent.emit(e))\r\n this._overlayRef.attach(this._templatePortal);\r\n } else {\r\n this._clearTimeout();\r\n this._outsidePointerEventsSubscription?.unsubscribe();\r\n this._overlayRef?.detach();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Show the overlay.\r\n */\r\n public show() {\r\n this._clearTimeout();\r\n this.open.set(true);\r\n }\r\n\r\n /**\r\n * Hide the overlay.\r\n */\r\n public hide() {\r\n this._clearTimeout();\r\n this.open.set(false);\r\n }\r\n\r\n /**\r\n * Hide the overlay after a period of time.\r\n */\r\n public hideAfter(ms: number) {\r\n this._clearTimeout();\r\n this._hideTimeoutId = setTimeout(() => {\r\n this.open.set(false);\r\n }, ms);\r\n }\r\n\r\n /**\r\n * Toggle the overlay visibility.\r\n */\r\n public toggle() {\r\n this.open.update(x => !x);\r\n }\r\n\r\n private _clearTimeout() {\r\n if (this._hideTimeoutId) {\r\n clearTimeout(this._hideTimeoutId);\r\n this._hideTimeoutId = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Lifecycle hook that is called when the directive is destroyed.\r\n */\r\n ngOnDestroy(): void {\r\n this._outsidePointerEventsSubscription?.unsubscribe();\r\n this._clearTimeout()\r\n this._overlayRef?.dispose();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { OverlayDirective } from './overlay.directive';\r\n\r\nconst Items = [\r\n OverlayDirective,\r\n]\r\n\r\n/**\r\n * OverlayModule.\r\n */\r\n@NgModule({\r\n imports: Items,\r\n exports: Items\r\n})\r\nexport class OverlayModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|