bhushan-popup-manager 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# PopupManager
|
|
2
|
+
|
|
3
|
+
This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ng generate component component-name
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
ng generate --help
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Building
|
|
20
|
+
|
|
21
|
+
To build the library, run:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ng build popup-manager
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
|
|
28
|
+
|
|
29
|
+
### Publishing the Library
|
|
30
|
+
|
|
31
|
+
Once the project is built, you can publish your library by following these steps:
|
|
32
|
+
|
|
33
|
+
1. Navigate to the `dist` directory:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cd dist/popup-manager
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
2. Run the `npm publish` command to publish your library to the npm registry:
|
|
40
|
+
```bash
|
|
41
|
+
npm publish
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Running unit tests
|
|
45
|
+
|
|
46
|
+
To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
ng test
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Running end-to-end tests
|
|
53
|
+
|
|
54
|
+
For end-to-end (e2e) testing, run:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
ng e2e
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
|
|
61
|
+
|
|
62
|
+
## Additional Resources
|
|
63
|
+
|
|
64
|
+
For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, HostListener, Input, Directive } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
class PopupManager {
|
|
5
|
+
popups = new Map();
|
|
6
|
+
register(id, popup) { this.popups.set(id, popup); }
|
|
7
|
+
unRegister(id) { this.popups.delete(id); }
|
|
8
|
+
get(id) { return this.popups.get(id); }
|
|
9
|
+
toggle(id, triggerElement) {
|
|
10
|
+
const popup = this.popups.get(id);
|
|
11
|
+
if (!popup) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
popup.togglePopup(triggerElement);
|
|
15
|
+
}
|
|
16
|
+
hide(id) {
|
|
17
|
+
const popup = this.popups.get(id);
|
|
18
|
+
if (!popup) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
popup.hideElement();
|
|
22
|
+
}
|
|
23
|
+
show(id) {
|
|
24
|
+
const popup = this.popups.get(id);
|
|
25
|
+
if (!popup) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
popup.showElement();
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: PopupManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: PopupManager, providedIn: 'root' });
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: PopupManager, decorators: [{
|
|
34
|
+
type: Injectable,
|
|
35
|
+
args: [{
|
|
36
|
+
providedIn: 'root',
|
|
37
|
+
}]
|
|
38
|
+
}] });
|
|
39
|
+
|
|
40
|
+
class PopupTrigger {
|
|
41
|
+
elementRef;
|
|
42
|
+
popupService;
|
|
43
|
+
renderer;
|
|
44
|
+
popupTrigger;
|
|
45
|
+
customInput;
|
|
46
|
+
constructor(elementRef, popupService, renderer) {
|
|
47
|
+
this.elementRef = elementRef;
|
|
48
|
+
this.popupService = popupService;
|
|
49
|
+
this.renderer = renderer;
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer');
|
|
53
|
+
}
|
|
54
|
+
click() {
|
|
55
|
+
this.popupService.toggle(this.popupTrigger, this.elementRef.nativeElement);
|
|
56
|
+
}
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: PopupTrigger, deps: [{ token: i0.ElementRef }, { token: PopupManager }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.23", type: PopupTrigger, isStandalone: true, selector: "[bhushan-library-popupTrigger]", inputs: { popupTrigger: "popupTrigger", customInput: "customInput" }, host: { listeners: { "click": "click()" } }, ngImport: i0 });
|
|
59
|
+
}
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: PopupTrigger, decorators: [{
|
|
61
|
+
type: Directive,
|
|
62
|
+
args: [{
|
|
63
|
+
selector: '[bhushan-library-popupTrigger]',
|
|
64
|
+
}]
|
|
65
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: PopupManager }, { type: i0.Renderer2 }], propDecorators: { popupTrigger: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], customInput: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], click: [{
|
|
70
|
+
type: HostListener,
|
|
71
|
+
args: ['click']
|
|
72
|
+
}] } });
|
|
73
|
+
|
|
74
|
+
var PopupPositions;
|
|
75
|
+
(function (PopupPositions) {
|
|
76
|
+
PopupPositions["CENTER"] = "center";
|
|
77
|
+
PopupPositions["TOP"] = "top";
|
|
78
|
+
PopupPositions["BOTTOM"] = "bottom";
|
|
79
|
+
PopupPositions["LEFT"] = "left";
|
|
80
|
+
PopupPositions["RIGHT"] = "right";
|
|
81
|
+
PopupPositions["TOP_LEFT"] = "top-left";
|
|
82
|
+
PopupPositions["TOP_RIGHT"] = "top-right";
|
|
83
|
+
PopupPositions["BOTTOM_LEFT"] = "bottom-left";
|
|
84
|
+
PopupPositions["BOTTOM_RIGHT"] = "bottom-right";
|
|
85
|
+
})(PopupPositions || (PopupPositions = {}));
|
|
86
|
+
|
|
87
|
+
class Popup {
|
|
88
|
+
elementRef;
|
|
89
|
+
renderer;
|
|
90
|
+
popupService;
|
|
91
|
+
constructor(elementRef, renderer, popupService) {
|
|
92
|
+
this.elementRef = elementRef;
|
|
93
|
+
this.renderer = renderer;
|
|
94
|
+
this.popupService = popupService;
|
|
95
|
+
}
|
|
96
|
+
popup;
|
|
97
|
+
top;
|
|
98
|
+
bottom;
|
|
99
|
+
left;
|
|
100
|
+
right;
|
|
101
|
+
position = PopupPositions.CENTER;
|
|
102
|
+
popupStyle;
|
|
103
|
+
isOpen = false;
|
|
104
|
+
triggerElement;
|
|
105
|
+
showPopupClass = 'popup-fade-enter';
|
|
106
|
+
hidePopupClass = 'popup-fade-leave';
|
|
107
|
+
clickedInside = false;
|
|
108
|
+
ngOnInit() {
|
|
109
|
+
this.hide();
|
|
110
|
+
this.popupService.register(this.popup, this);
|
|
111
|
+
this.applyCommonStyle();
|
|
112
|
+
if (this.position) {
|
|
113
|
+
this.applySpecificPosition();
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.applyPosition();
|
|
117
|
+
}
|
|
118
|
+
if (this.popupStyle) {
|
|
119
|
+
this.applyCustomStyle();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
click(event) {
|
|
123
|
+
const target = event.target;
|
|
124
|
+
const clickedInsidePopup = this.elementRef.nativeElement.contains(target);
|
|
125
|
+
const clickedInsideTrigger = this.triggerElement?.contains(target) ?? false;
|
|
126
|
+
if (!clickedInsidePopup && !clickedInsideTrigger) {
|
|
127
|
+
this.hideElement();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
ngOnChanges(changes) {
|
|
131
|
+
if (changes['popupStyle']) {
|
|
132
|
+
console.log('changed');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
togglePopup(triggerElement) {
|
|
136
|
+
this.triggerElement = triggerElement;
|
|
137
|
+
this.isOpen = !this.isOpen;
|
|
138
|
+
this.isOpen ? this.showElement() : this.hideElement();
|
|
139
|
+
}
|
|
140
|
+
showElement() {
|
|
141
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'absolute');
|
|
142
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');
|
|
143
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'z-index', '10000');
|
|
144
|
+
this.renderer.removeClass(this.elementRef.nativeElement, this.hidePopupClass);
|
|
145
|
+
this.renderer.addClass(this.elementRef.nativeElement, this.showPopupClass);
|
|
146
|
+
}
|
|
147
|
+
hideElement() {
|
|
148
|
+
this.isOpen = false;
|
|
149
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');
|
|
150
|
+
this.renderer.removeClass(this.elementRef.nativeElement, this.showPopupClass);
|
|
151
|
+
this.renderer.addClass(this.elementRef.nativeElement, this.hidePopupClass);
|
|
152
|
+
}
|
|
153
|
+
hide() {
|
|
154
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');
|
|
155
|
+
this.renderer.removeClass(this.elementRef.nativeElement, this.showPopupClass);
|
|
156
|
+
this.renderer.addClass(this.elementRef.nativeElement, this.hidePopupClass);
|
|
157
|
+
}
|
|
158
|
+
applyPosition() {
|
|
159
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'absolute');
|
|
160
|
+
if (this.top) {
|
|
161
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', this.top);
|
|
162
|
+
}
|
|
163
|
+
if (this.bottom) {
|
|
164
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', this.bottom);
|
|
165
|
+
}
|
|
166
|
+
if (this.left) {
|
|
167
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', this.left);
|
|
168
|
+
}
|
|
169
|
+
if (this.right) {
|
|
170
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'right', this.right);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
applySpecificPosition() {
|
|
174
|
+
switch (this.position) {
|
|
175
|
+
case PopupPositions.CENTER:
|
|
176
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
177
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');
|
|
178
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');
|
|
179
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translate(-50%, -50%)');
|
|
180
|
+
break;
|
|
181
|
+
case PopupPositions.TOP:
|
|
182
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
183
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');
|
|
184
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');
|
|
185
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateX(-50%)');
|
|
186
|
+
break;
|
|
187
|
+
case PopupPositions.BOTTOM:
|
|
188
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
189
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');
|
|
190
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');
|
|
191
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateX(-50%)');
|
|
192
|
+
break;
|
|
193
|
+
case PopupPositions.LEFT:
|
|
194
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
195
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');
|
|
196
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');
|
|
197
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateY(-50%)');
|
|
198
|
+
break;
|
|
199
|
+
case PopupPositions.RIGHT:
|
|
200
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
201
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');
|
|
202
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');
|
|
203
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateY(-50%)');
|
|
204
|
+
break;
|
|
205
|
+
case PopupPositions.TOP_LEFT:
|
|
206
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
207
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');
|
|
208
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');
|
|
209
|
+
break;
|
|
210
|
+
case PopupPositions.TOP_RIGHT:
|
|
211
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
212
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');
|
|
213
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');
|
|
214
|
+
break;
|
|
215
|
+
case PopupPositions.BOTTOM_LEFT:
|
|
216
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
217
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');
|
|
218
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');
|
|
219
|
+
break;
|
|
220
|
+
case PopupPositions.BOTTOM_RIGHT:
|
|
221
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');
|
|
222
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');
|
|
223
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
applyCustomStyle() {
|
|
228
|
+
if (this.popupStyle) {
|
|
229
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'style', this.popupStyle);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
applyCommonStyle() {
|
|
233
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'z-index', '1000');
|
|
234
|
+
this.renderer.setStyle(this.elementRef.nativeElement, 'box-shadow', '0 10px 25px rgba(0, 0, 0, 0.15)');
|
|
235
|
+
}
|
|
236
|
+
ngOnDestroy() {
|
|
237
|
+
this.popupService.unRegister(this.popup);
|
|
238
|
+
}
|
|
239
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: Popup, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PopupManager }], target: i0.ɵɵFactoryTarget.Directive });
|
|
240
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.23", type: Popup, isStandalone: true, selector: "[bhushan-library-popup]", inputs: { popup: "popup", top: "top", bottom: "bottom", left: "left", right: "right", position: "position", popupStyle: "popupStyle" }, host: { listeners: { "document:click": "click($event)" } }, usesOnChanges: true, ngImport: i0 });
|
|
241
|
+
}
|
|
242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: Popup, decorators: [{
|
|
243
|
+
type: Directive,
|
|
244
|
+
args: [{
|
|
245
|
+
selector: '[bhushan-library-popup]',
|
|
246
|
+
}]
|
|
247
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: PopupManager }], propDecorators: { popup: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], top: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], bottom: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], left: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], right: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], position: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], popupStyle: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], click: [{
|
|
262
|
+
type: HostListener,
|
|
263
|
+
args: ['document:click', ['$event']]
|
|
264
|
+
}] } });
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Generated bundle index. Do not edit.
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
export { Popup, PopupManager, PopupPositions, PopupTrigger };
|
|
271
|
+
//# sourceMappingURL=bhushan-popup-manager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bhushan-popup-manager.mjs","sources":["../../../projects/popup-manager/src/lib/services/popup-manager.ts","../../../projects/popup-manager/src/lib/directives/popup-trigger.ts","../../../projects/popup-manager/src/lib/enums/popup-positions.ts","../../../projects/popup-manager/src/lib/directives/popup.ts","../../../projects/popup-manager/src/bhushan-popup-manager.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Popup } from '../directives/popup';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PopupManager {\n\n private popups = new Map<string, Popup>();\n register(id: string, popup: Popup): void { this.popups.set(id, popup) }\n\n unRegister(id: string): void { this.popups.delete(id) }\n\n get(id: string): any { return this.popups.get(id) }\n\n toggle(id: string, triggerElement: HTMLElement): void {\n\n const popup = this.popups.get(id);\n\n if (!popup) {\n return;\n }\n\n popup.togglePopup(triggerElement);\n }\n\n hide(id: string): void {\n const popup = this.popups.get(id);\n if (!popup) { return }\n popup.hideElement();\n }\n\n show(id: string): void {\n const popup = this.popups.get(id);\n if (!popup) { return }\n popup.showElement();\n }\n}\n","import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\nimport { PopupManager } from '../services/popup-manager';\n\n@Directive({\n selector: '[bhushan-library-popupTrigger]',\n})\nexport class PopupTrigger implements OnInit {\n\n @Input()\n popupTrigger!: string;\n\n @Input()\n customInput!: string;\n\n constructor(\n private elementRef: ElementRef,\n private popupService: PopupManager,\n private renderer: Renderer2\n ) { }\n\n ngOnInit(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'cursor', 'pointer')\n }\n\n\n @HostListener('click')\n click(): any {\n this.popupService.toggle(\n this.popupTrigger,\n this.elementRef.nativeElement\n );\n }\n\n}\n","export enum PopupPositions {\n CENTER = 'center',\n TOP = 'top',\n BOTTOM = 'bottom',\n LEFT = 'left',\n RIGHT = 'right',\n TOP_LEFT = 'top-left',\n TOP_RIGHT = 'top-right',\n BOTTOM_LEFT = 'bottom-left',\n BOTTOM_RIGHT = 'bottom-right'\n}\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';\nimport { PopupManager } from '../services/popup-manager';\nimport { PopupPositions } from '../enums/popup-positions';\n\n@Directive({\n selector: '[bhushan-library-popup]',\n})\nexport class Popup implements OnInit, OnDestroy, OnChanges {\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n private popupService: PopupManager\n ) { }\n\n @Input()\n popup!: string;\n\n @Input()\n top!: string;\n\n @Input()\n bottom!: string;\n\n @Input()\n left!: string;\n\n @Input()\n right!: string;\n\n@Input()\nposition: PopupPositions = PopupPositions.CENTER;\n\n @Input()\n popupStyle!: string;\n\n isOpen = false;\n private triggerElement!: HTMLElement;\n showPopupClass: string = 'popup-fade-enter'\n hidePopupClass: string = 'popup-fade-leave'\n clickedInside: boolean = false\n\n\n\n ngOnInit(): void {\n this.hide();\n this.popupService.register(this.popup, this);\n this.applyCommonStyle();\n if (this.position) {\n this.applySpecificPosition()\n } else {\n this.applyPosition();\n }\n\n if (this.popupStyle) {\n this.applyCustomStyle();\n }\n }\n\n @HostListener('document:click', ['$event'])\n click(event: MouseEvent): void {\n\n const target = event.target as Node;\n\n const clickedInsidePopup = this.elementRef.nativeElement.contains(target);\n\n const clickedInsideTrigger = this.triggerElement?.contains(target) ?? false;\n\n if (!clickedInsidePopup && !clickedInsideTrigger) {\n this.hideElement();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['popupStyle']) {\n console.log('changed')\n }\n }\n\n\n togglePopup(triggerElement: HTMLElement): void {\n this.triggerElement = triggerElement;\n this.isOpen = !this.isOpen;\n this.isOpen ? this.showElement() : this.hideElement();\n }\n\n showElement() {\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'absolute');\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'block');\n this.renderer.setStyle(this.elementRef.nativeElement, 'z-index', '10000');\n this.renderer.removeClass(this.elementRef.nativeElement, this.hidePopupClass)\n this.renderer.addClass(this.elementRef.nativeElement, this.showPopupClass)\n }\n\n hideElement() {\n this.isOpen = false;\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.renderer.removeClass(this.elementRef.nativeElement, this.showPopupClass)\n this.renderer.addClass(this.elementRef.nativeElement, this.hidePopupClass)\n }\n\n private hide(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', 'none');\n this.renderer.removeClass(this.elementRef.nativeElement, this.showPopupClass)\n this.renderer.addClass(this.elementRef.nativeElement, this.hidePopupClass)\n }\n\n applyPosition(): void {\n\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'position',\n 'absolute'\n );\n\n if (this.top) {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'top',\n this.top\n );\n }\n\n if (this.bottom) {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'bottom',\n this.bottom\n );\n }\n\n if (this.left) {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'left',\n this.left\n );\n }\n\n if (this.right) {\n this.renderer.setStyle(\n this.elementRef.nativeElement,\n 'right',\n this.right\n );\n }\n\n\n }\n\n applySpecificPosition(): void {\n\n switch (this.position) {\n\n case PopupPositions.CENTER:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translate(-50%, -50%)');\n break;\n\n case PopupPositions.TOP:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateX(-50%)');\n break;\n\n case PopupPositions.BOTTOM:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateX(-50%)');\n break;\n\n case PopupPositions.LEFT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateY(-50%)');\n break;\n\n case PopupPositions.RIGHT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '50%');\n this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'transform', 'translateY(-50%)');\n break;\n\n case PopupPositions.TOP_LEFT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');\n break;\n\n case PopupPositions.TOP_RIGHT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');\n break;\n\n case PopupPositions.BOTTOM_LEFT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', '0');\n break;\n\n case PopupPositions.BOTTOM_RIGHT:\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'fixed');\n this.renderer.setStyle(this.elementRef.nativeElement, 'bottom', '0');\n this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');\n break;\n }\n\n }\n\n applyCustomStyle(): void {\n if (this.popupStyle) {\n this.renderer.setAttribute(\n this.elementRef.nativeElement,\n 'style',\n this.popupStyle\n );\n }\n }\n\n applyCommonStyle(): void {\n this.renderer.setStyle(this.elementRef.nativeElement, 'z-index', '1000');\n this.renderer.setStyle(this.elementRef.nativeElement, 'box-shadow', '0 10px 25px rgba(0, 0, 0, 0.15)');\n }\n\n ngOnDestroy(): void {\n this.popupService.unRegister(this.popup);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PopupManager"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bhushan-popup-manager",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^21.2.0",
|
|
6
|
+
"@angular/core": "^21.2.0"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"tslib": "^2.3.0"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"module": "fesm2022/bhushan-popup-manager.mjs",
|
|
13
|
+
"typings": "types/bhushan-popup-manager.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/bhushan-popup-manager.d.ts",
|
|
20
|
+
"default": "./fesm2022/bhushan-popup-manager.mjs"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"type": "module"
|
|
24
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { OnInit, OnDestroy, OnChanges, ElementRef, Renderer2, SimpleChanges } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
declare enum PopupPositions {
|
|
5
|
+
CENTER = "center",
|
|
6
|
+
TOP = "top",
|
|
7
|
+
BOTTOM = "bottom",
|
|
8
|
+
LEFT = "left",
|
|
9
|
+
RIGHT = "right",
|
|
10
|
+
TOP_LEFT = "top-left",
|
|
11
|
+
TOP_RIGHT = "top-right",
|
|
12
|
+
BOTTOM_LEFT = "bottom-left",
|
|
13
|
+
BOTTOM_RIGHT = "bottom-right"
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare class Popup implements OnInit, OnDestroy, OnChanges {
|
|
17
|
+
private elementRef;
|
|
18
|
+
private renderer;
|
|
19
|
+
private popupService;
|
|
20
|
+
constructor(elementRef: ElementRef, renderer: Renderer2, popupService: PopupManager);
|
|
21
|
+
popup: string;
|
|
22
|
+
top: string;
|
|
23
|
+
bottom: string;
|
|
24
|
+
left: string;
|
|
25
|
+
right: string;
|
|
26
|
+
position: PopupPositions;
|
|
27
|
+
popupStyle: string;
|
|
28
|
+
isOpen: boolean;
|
|
29
|
+
private triggerElement;
|
|
30
|
+
showPopupClass: string;
|
|
31
|
+
hidePopupClass: string;
|
|
32
|
+
clickedInside: boolean;
|
|
33
|
+
ngOnInit(): void;
|
|
34
|
+
click(event: MouseEvent): void;
|
|
35
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
36
|
+
togglePopup(triggerElement: HTMLElement): void;
|
|
37
|
+
showElement(): void;
|
|
38
|
+
hideElement(): void;
|
|
39
|
+
private hide;
|
|
40
|
+
applyPosition(): void;
|
|
41
|
+
applySpecificPosition(): void;
|
|
42
|
+
applyCustomStyle(): void;
|
|
43
|
+
applyCommonStyle(): void;
|
|
44
|
+
ngOnDestroy(): void;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<Popup, never>;
|
|
46
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<Popup, "[bhushan-library-popup]", never, { "popup": { "alias": "popup"; "required": false; }; "top": { "alias": "top"; "required": false; }; "bottom": { "alias": "bottom"; "required": false; }; "left": { "alias": "left"; "required": false; }; "right": { "alias": "right"; "required": false; }; "position": { "alias": "position"; "required": false; }; "popupStyle": { "alias": "popupStyle"; "required": false; }; }, {}, never, never, true, never>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
declare class PopupManager {
|
|
50
|
+
private popups;
|
|
51
|
+
register(id: string, popup: Popup): void;
|
|
52
|
+
unRegister(id: string): void;
|
|
53
|
+
get(id: string): any;
|
|
54
|
+
toggle(id: string, triggerElement: HTMLElement): void;
|
|
55
|
+
hide(id: string): void;
|
|
56
|
+
show(id: string): void;
|
|
57
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PopupManager, never>;
|
|
58
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PopupManager>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare class PopupTrigger implements OnInit {
|
|
62
|
+
private elementRef;
|
|
63
|
+
private popupService;
|
|
64
|
+
private renderer;
|
|
65
|
+
popupTrigger: string;
|
|
66
|
+
customInput: string;
|
|
67
|
+
constructor(elementRef: ElementRef, popupService: PopupManager, renderer: Renderer2);
|
|
68
|
+
ngOnInit(): void;
|
|
69
|
+
click(): any;
|
|
70
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PopupTrigger, never>;
|
|
71
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<PopupTrigger, "[bhushan-library-popupTrigger]", never, { "popupTrigger": { "alias": "popupTrigger"; "required": false; }; "customInput": { "alias": "customInput"; "required": false; }; }, {}, never, never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { Popup, PopupManager, PopupPositions, PopupTrigger };
|