@sebgroup/green-angular 1.5.1 → 1.6.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/esm2020/index.mjs CHANGED
@@ -10,4 +10,5 @@ export * from './lib/progress-circle';
10
10
  export * from './lib/segmented-control';
11
11
  export * from './lib/slider';
12
12
  export * from './lib/in-page-wizard';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2dyZWVuLWFuZ3VsYXIubW9kdWxlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYWNjb3JkaW9uJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlcGlja2VyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZHJvcGRvd24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wcm9ncmVzcy1jaXJjbGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWdtZW50ZWQtY29udHJvbCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NsaWRlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2luLXBhZ2Utd2l6YXJkJ1xuIl19
13
+ export * from './lib/context-menu';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLGNBQWMsQ0FBQTtBQUM1QixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxjQUFjLENBQUE7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvZ3JlZW4tYW5ndWxhci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY2NvcmRpb24nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYWRnZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2J1dHRvbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGVwaWNrZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kcm9wZG93bidcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGFsJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdGlvbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2dyZXNzLWNpcmNsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlZ21lbnRlZC1jb250cm9sJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2xpZGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW4tcGFnZS13aXphcmQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb250ZXh0LW1lbnUnXG4iXX0=
@@ -0,0 +1,100 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class NggContextMenuComponent {
5
+ constructor(elementRef) {
6
+ this.elementRef = elementRef;
7
+ this.direction = 'ltr';
8
+ this.menuItems = [];
9
+ this.menuItemTemplate = null;
10
+ this.menuAnchorTemplate = null;
11
+ this.contextMenuItemClicked = new EventEmitter();
12
+ this.isActive = false;
13
+ this.top = '0px';
14
+ this.left = '0px';
15
+ }
16
+ onDocumentClick(target) {
17
+ if (!this.isActive) {
18
+ return;
19
+ }
20
+ const contextMenuElement = this.elementRef.nativeElement;
21
+ if (!contextMenuElement.contains(target)) {
22
+ this.close();
23
+ }
24
+ }
25
+ open() {
26
+ if (this.isActive) {
27
+ this.close();
28
+ return;
29
+ }
30
+ const anchor = this.anchor?.nativeElement;
31
+ const buttonRect = anchor.getBoundingClientRect();
32
+ const left = this.calculateLeft(this.direction, buttonRect);
33
+ const top = this.calculateTop(buttonRect.bottom);
34
+ this.left = `${left}px`;
35
+ this.top = `${top}px`;
36
+ this.isActive = true;
37
+ }
38
+ close() {
39
+ this.isActive = false;
40
+ }
41
+ onItemClick(item) {
42
+ this.contextMenuItemClicked.emit(item);
43
+ this.close();
44
+ }
45
+ onMenuItemKeyDown(event, menuItem) {
46
+ switch (event.key) {
47
+ case 'Enter':
48
+ case ' ':
49
+ event.preventDefault();
50
+ this.onItemClick(menuItem);
51
+ break;
52
+ default:
53
+ break;
54
+ }
55
+ }
56
+ calculateTop(buttonRectBottom) {
57
+ return buttonRectBottom + window.pageYOffset;
58
+ }
59
+ calculateLeft(direction, buttonRect) {
60
+ const popover = this.popover?.nativeElement;
61
+ const popoverWidth = popover?.offsetWidth || 0;
62
+ switch (direction) {
63
+ case 'rtl':
64
+ return popoverWidth <= buttonRect.left
65
+ ? buttonRect.right - popoverWidth
66
+ : buttonRect.left;
67
+ case 'ltr':
68
+ default:
69
+ return buttonRect.right + popoverWidth <= window.innerWidth
70
+ ? buttonRect.left
71
+ : buttonRect.right - popoverWidth;
72
+ }
73
+ }
74
+ }
75
+ NggContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
76
+ NggContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggContextMenuComponent, selector: "ngg-context-menu", inputs: { direction: "direction", menuItems: "menuItems", menuItemTemplate: "menuItemTemplate", menuAnchorTemplate: "menuAnchorTemplate" }, outputs: { contextMenuItemClicked: "contextMenuItemClicked" }, host: { listeners: { "document:click": "onDocumentClick($event.target)" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["contextMenuPopover"], descendants: true }, { propertyName: "anchor", first: true, predicate: ["contextMenuAnchor"], descendants: true }], ngImport: i0, template: "<button #contextMenuAnchor class=\"ghost small\" (click)=\"open()\">\n <ng-container\n [ngTemplateOutlet]=\"menuAnchorTemplate ?? defaultButtonTemplate\"\n >\n </ng-container>\n</button>\n\n<div\n class=\"popover popover-context-menu\"\n [class.active]=\"isActive\"\n [style.top]=\"top\"\n [style.left]=\"left\"\n #contextMenuPopover\n>\n <ul role=\"listbox\">\n <li\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"onItemClick(menuItem)\"\n tabindex=\"0\"\n (keydown)=\"onMenuItemKeyDown($event, menuItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"menuItemTemplate ?? defaultMenuItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"\n >\n </ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template #defaultMenuItemTemplate let-menuItem>\n <span>{{ menuItem.label }}</span>\n</ng-template>\n\n<ng-template #defaultButtonTemplate>\n <i class=\"sg-icon sg-icon-ellipsis\">Open context menu</i>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'ngg-context-menu', template: "<button #contextMenuAnchor class=\"ghost small\" (click)=\"open()\">\n <ng-container\n [ngTemplateOutlet]=\"menuAnchorTemplate ?? defaultButtonTemplate\"\n >\n </ng-container>\n</button>\n\n<div\n class=\"popover popover-context-menu\"\n [class.active]=\"isActive\"\n [style.top]=\"top\"\n [style.left]=\"left\"\n #contextMenuPopover\n>\n <ul role=\"listbox\">\n <li\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"onItemClick(menuItem)\"\n tabindex=\"0\"\n (keydown)=\"onMenuItemKeyDown($event, menuItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"menuItemTemplate ?? defaultMenuItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"\n >\n </ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template #defaultMenuItemTemplate let-menuItem>\n <span>{{ menuItem.label }}</span>\n</ng-template>\n\n<ng-template #defaultButtonTemplate>\n <i class=\"sg-icon sg-icon-ellipsis\">Open context menu</i>\n</ng-template>\n" }]
80
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { direction: [{
81
+ type: Input
82
+ }], menuItems: [{
83
+ type: Input
84
+ }], menuItemTemplate: [{
85
+ type: Input
86
+ }], menuAnchorTemplate: [{
87
+ type: Input
88
+ }], contextMenuItemClicked: [{
89
+ type: Output
90
+ }], popover: [{
91
+ type: ViewChild,
92
+ args: ['contextMenuPopover']
93
+ }], anchor: [{
94
+ type: ViewChild,
95
+ args: ['contextMenuAnchor']
96
+ }], onDocumentClick: [{
97
+ type: HostListener,
98
+ args: ['document:click', ['$event.target']]
99
+ }] } });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBOzs7QUFPdEIsTUFBTSxPQUFPLHVCQUF1QjtJQWlCbEMsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWhCakMsY0FBUyxHQUFrQixLQUFLLENBQUE7UUFDaEMsY0FBUyxHQUFxQixFQUFFLENBQUE7UUFDaEMscUJBQWdCLEdBQWdDLElBQUksQ0FBQTtRQUNwRCx1QkFBa0IsR0FBZ0MsSUFBSSxDQUFBO1FBRXJELDJCQUFzQixHQUM5QixJQUFJLFlBQVksRUFBa0IsQ0FBQTtRQU1wQyxhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLFFBQUcsR0FBRyxLQUFLLENBQUE7UUFDWCxTQUFJLEdBQUcsS0FBSyxDQUFBO0lBRWlDLENBQUM7SUFHOUMsZUFBZSxDQUFDLE1BQW1CO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU07U0FDUDtRQUNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUE0QixDQUFBO1FBRXZFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1NBQ2I7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDWixPQUFNO1NBQ1A7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQTRCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUE7UUFFakQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRWhELElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQTtRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUE7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7SUFDdEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLElBQW9CO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQW9CLEVBQUUsUUFBd0I7UUFDOUQsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2pCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxHQUFHO2dCQUNOLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQTtnQkFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtnQkFDMUIsTUFBSztZQUNQO2dCQUNFLE1BQUs7U0FDUjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsZ0JBQXdCO1FBQ25DLE9BQU8sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWlCLEVBQUUsVUFBbUI7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUE0QixDQUFBO1FBQzFELE1BQU0sWUFBWSxHQUFHLE9BQU8sRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFBO1FBRTlDLFFBQVEsU0FBUyxFQUFFO1lBQ2pCLEtBQUssS0FBSztnQkFDUixPQUFPLFlBQVksSUFBSSxVQUFVLENBQUMsSUFBSTtvQkFDcEMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsWUFBWTtvQkFDakMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUE7WUFDckIsS0FBSyxLQUFLLENBQUM7WUFDWDtnQkFDRSxPQUFPLFVBQVUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxJQUFJLE1BQU0sQ0FBQyxVQUFVO29CQUN6RCxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7b0JBQ2pCLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQTtTQUN0QztJQUNILENBQUM7O29IQXhGVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw2aEJDaEJwQywyK0JBcUNBOzJGRHJCYSx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0Usa0JBQWtCO2lHQUluQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRzBCLE9BQU87c0JBQXZDLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUVDLE1BQU07c0JBQXJDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQVM5QixlQUFlO3NCQURkLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb24gfSBmcm9tICdAc2ViZ3JvdXAvZXh0cmFjdCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdnLWNvbnRleHQtbWVudScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb250ZXh0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dDb250ZXh0TWVudUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInXG4gIEBJbnB1dCgpIG1lbnVJdGVtczogRHJvcGRvd25PcHRpb25bXSA9IFtdXG4gIEBJbnB1dCgpIG1lbnVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgbnVsbCA9IG51bGxcbiAgQElucHV0KCkgbWVudUFuY2hvclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsXG5cbiAgQE91dHB1dCgpIGNvbnRleHRNZW51SXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxEcm9wZG93bk9wdGlvbj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJvcGRvd25PcHRpb24+KClcblxuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudVBvcG92ZXInKSBwb3BvdmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkXG5cbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnVBbmNob3InKSBhbmNob3I6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcblxuICBpc0FjdGl2ZSA9IGZhbHNlXG4gIHRvcCA9ICcwcHgnXG4gIGxlZnQgPSAnMHB4J1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKVxuICBvbkRvY3VtZW50Q2xpY2sodGFyZ2V0OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHRNZW51RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG5cbiAgICBpZiAoIWNvbnRleHRNZW51RWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICB9XG4gIH1cblxuICBvcGVuKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICB0aGlzLmNsb3NlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuYW5jaG9yPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgY29uc3QgYnV0dG9uUmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuY2FsY3VsYXRlTGVmdCh0aGlzLmRpcmVjdGlvbiwgYnV0dG9uUmVjdClcbiAgICBjb25zdCB0b3AgPSB0aGlzLmNhbGN1bGF0ZVRvcChidXR0b25SZWN0LmJvdHRvbSlcblxuICAgIHRoaXMubGVmdCA9IGAke2xlZnR9cHhgXG4gICAgdGhpcy50b3AgPSBgJHt0b3B9cHhgXG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWVcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZVxuICB9XG5cbiAgb25JdGVtQ2xpY2soaXRlbTogRHJvcGRvd25PcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRNZW51SXRlbUNsaWNrZWQuZW1pdChpdGVtKVxuICAgIHRoaXMuY2xvc2UoKVxuICB9XG5cbiAgb25NZW51SXRlbUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIG1lbnVJdGVtOiBEcm9wZG93bk9wdGlvbik6IHZvaWQge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICcgJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKG1lbnVJdGVtKVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBjYWxjdWxhdGVUb3AoYnV0dG9uUmVjdEJvdHRvbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYnV0dG9uUmVjdEJvdHRvbSArIHdpbmRvdy5wYWdlWU9mZnNldFxuICB9XG5cbiAgY2FsY3VsYXRlTGVmdChkaXJlY3Rpb246IHN0cmluZywgYnV0dG9uUmVjdDogRE9NUmVjdCk6IG51bWJlciB7XG4gICAgY29uc3QgcG9wb3ZlciA9IHRoaXMucG9wb3Zlcj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgIGNvbnN0IHBvcG92ZXJXaWR0aCA9IHBvcG92ZXI/Lm9mZnNldFdpZHRoIHx8IDBcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdydGwnOlxuICAgICAgICByZXR1cm4gcG9wb3ZlcldpZHRoIDw9IGJ1dHRvblJlY3QubGVmdFxuICAgICAgICAgID8gYnV0dG9uUmVjdC5yaWdodCAtIHBvcG92ZXJXaWR0aFxuICAgICAgICAgIDogYnV0dG9uUmVjdC5sZWZ0XG4gICAgICBjYXNlICdsdHInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGJ1dHRvblJlY3QucmlnaHQgKyBwb3BvdmVyV2lkdGggPD0gd2luZG93LmlubmVyV2lkdGhcbiAgICAgICAgICA/IGJ1dHRvblJlY3QubGVmdFxuICAgICAgICAgIDogYnV0dG9uUmVjdC5yaWdodCAtIHBvcG92ZXJXaWR0aFxuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiAjY29udGV4dE1lbnVBbmNob3IgY2xhc3M9XCJnaG9zdCBzbWFsbFwiIChjbGljayk9XCJvcGVuKClcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVBbmNob3JUZW1wbGF0ZSA/PyBkZWZhdWx0QnV0dG9uVGVtcGxhdGVcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9idXR0b24+XG5cbjxkaXZcbiAgY2xhc3M9XCJwb3BvdmVyIHBvcG92ZXItY29udGV4dC1tZW51XCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gIFtzdHlsZS50b3BdPVwidG9wXCJcbiAgW3N0eWxlLmxlZnRdPVwibGVmdFwiXG4gICNjb250ZXh0TWVudVBvcG92ZXJcbj5cbiAgPHVsIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgPGxpXG4gICAgICAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgbWVudUl0ZW1zXCJcbiAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhtZW51SXRlbSlcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIChrZXlkb3duKT1cIm9uTWVudUl0ZW1LZXlEb3duKCRldmVudCwgbWVudUl0ZW0pXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVJdGVtVGVtcGxhdGUgPz8gZGVmYXVsdE1lbnVJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG1lbnVJdGVtIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRNZW51SXRlbVRlbXBsYXRlIGxldC1tZW51SXRlbT5cbiAgPHNwYW4+e3sgbWVudUl0ZW0ubGFiZWwgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b25UZW1wbGF0ZT5cbiAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tZWxsaXBzaXNcIj5PcGVuIGNvbnRleHQgbWVudTwvaT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NggContextMenuComponent } from './context-menu.component';
4
+ import * as i0 from "@angular/core";
5
+ export class NggContextMenuModule {
6
+ }
7
+ NggContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ NggContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, declarations: [NggContextMenuComponent], imports: [CommonModule], exports: [NggContextMenuComponent] });
9
+ NggContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, imports: [CommonModule] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [NggContextMenuComponent],
14
+ imports: [CommonModule],
15
+ exports: [NggContextMenuComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvbGliL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBOztBQU9sRSxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBSmhCLHVCQUF1QixhQUM1QixZQUFZLGFBQ1osdUJBQXVCO2tIQUV0QixvQkFBb0IsWUFIckIsWUFBWTsyRkFHWCxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdnQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtbWVudS5jb21wb25lbnQnXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW05nZ0NvbnRleHRNZW51Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtOZ2dDb250ZXh0TWVudUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ0NvbnRleHRNZW51TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './context-menu.component';
2
+ export * from './context-menu.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9jb250ZXh0LW1lbnUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLHVCQUF1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LW1lbnUubW9kdWxlJyJdfQ==
@@ -9,6 +9,7 @@ import { NggModalModule } from './modal';
9
9
  import { NggProgressCircleModule } from './progress-circle/progress-circle.module';
10
10
  import { NggSegmentedControlModule } from './segmented-control/segmented-control.module';
11
11
  import { NggSliderModule } from './slider/slider.module';
12
+ import { NggContextMenuModule } from './context-menu';
12
13
  import { NggInPageWizardModule } from './in-page-wizard';
13
14
  import * as i0 from "@angular/core";
14
15
  export class NggModule {
@@ -23,6 +24,7 @@ NggModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
23
24
  NggProgressCircleModule,
24
25
  NggSegmentedControlModule,
25
26
  NggSliderModule,
27
+ NggContextMenuModule,
26
28
  NggInPageWizardModule] });
27
29
  NggModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModule, imports: [CommonModule, NggAccordionModule,
28
30
  NggBadgeModule,
@@ -33,6 +35,7 @@ NggModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
33
35
  NggProgressCircleModule,
34
36
  NggSegmentedControlModule,
35
37
  NggSliderModule,
38
+ NggContextMenuModule,
36
39
  NggInPageWizardModule] });
37
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModule, decorators: [{
38
41
  type: NgModule,
@@ -49,8 +52,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
49
52
  NggProgressCircleModule,
50
53
  NggSegmentedControlModule,
51
54
  NggSliderModule,
55
+ NggContextMenuModule,
52
56
  NggInPageWizardModule,
53
57
  ],
54
58
  }]
55
59
  }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZW4tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9ncmVlbi1hbmd1bGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7QUFrQnhELE1BQU0sT0FBTyxTQUFTOztzR0FBVCxTQUFTO3VHQUFULFNBQVMsWUFkVixZQUFZLGFBRXBCLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsZUFBZTtRQUNmLHFCQUFxQjt1R0FHWixTQUFTLFlBZFYsWUFBWSxFQUVwQixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLGVBQWU7UUFDZixxQkFBcUI7MkZBR1osU0FBUztrQkFoQnJCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixlQUFlO3dCQUNmLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBOZ2dBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICcuL2FjY29yZGlvbidcbmltcG9ydCB7IE5nZ0JhZGdlTW9kdWxlIH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dCdXR0b25Nb2R1bGUgfSBmcm9tICcuL2J1dHRvbi9idXR0b24ubW9kdWxlJ1xuaW1wb3J0IHsgTmdnRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJy4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLm1vZHVsZSdcbmltcG9ydCB7IE5nZ0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi9kcm9wZG93bi9kcm9wZG93bi5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dNb2RhbE1vZHVsZSB9IGZyb20gJy4vbW9kYWwnXG5pbXBvcnQgeyBOZ2dQcm9ncmVzc0NpcmNsZU1vZHVsZSB9IGZyb20gJy4vcHJvZ3Jlc3MtY2lyY2xlL3Byb2dyZXNzLWNpcmNsZS5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dTZWdtZW50ZWRDb250cm9sTW9kdWxlIH0gZnJvbSAnLi9zZWdtZW50ZWQtY29udHJvbC9zZWdtZW50ZWQtY29udHJvbC5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dTbGlkZXJNb2R1bGUgfSBmcm9tICcuL3NsaWRlci9zbGlkZXIubW9kdWxlJ1xuaW1wb3J0IHsgTmdnSW5QYWdlV2l6YXJkTW9kdWxlIH0gZnJvbSAnLi9pbi1wYWdlLXdpemFyZCdcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ2dBY2NvcmRpb25Nb2R1bGUsXG4gICAgTmdnQmFkZ2VNb2R1bGUsXG4gICAgTmdnQnV0dG9uTW9kdWxlLFxuICAgIE5nZ0RhdGVwaWNrZXJNb2R1bGUsXG4gICAgTmdnRHJvcGRvd25Nb2R1bGUsXG4gICAgTmdnTW9kYWxNb2R1bGUsXG4gICAgTmdnUHJvZ3Jlc3NDaXJjbGVNb2R1bGUsXG4gICAgTmdnU2VnbWVudGVkQ29udHJvbE1vZHVsZSxcbiAgICBOZ2dTbGlkZXJNb2R1bGUsXG4gICAgTmdnSW5QYWdlV2l6YXJkTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ2dNb2R1bGUge31cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JlZW4tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9ncmVlbi1hbmd1bGFyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFBO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7QUFtQnhELE1BQU0sT0FBTyxTQUFTOztzR0FBVCxTQUFTO3VHQUFULFNBQVMsWUFmVixZQUFZLGFBRXBCLGtCQUFrQjtRQUNsQixjQUFjO1FBQ2QsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixxQkFBcUI7dUdBR1osU0FBUyxZQWZWLFlBQVksRUFFcEIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxlQUFlO1FBQ2YsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLHFCQUFxQjsyRkFHWixTQUFTO2tCQWpCckIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdnQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAnLi9hY2NvcmRpb24nXG5pbXBvcnQgeyBOZ2dCYWRnZU1vZHVsZSB9IGZyb20gJy4vYmFkZ2UvYmFkZ2UubW9kdWxlJ1xuaW1wb3J0IHsgTmdnQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLm1vZHVsZSdcbmltcG9ydCB7IE5nZ0RhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICcuL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5tb2R1bGUnXG5pbXBvcnQgeyBOZ2dEcm9wZG93bk1vZHVsZSB9IGZyb20gJy4vZHJvcGRvd24vZHJvcGRvd24ubW9kdWxlJ1xuaW1wb3J0IHsgTmdnTW9kYWxNb2R1bGUgfSBmcm9tICcuL21vZGFsJ1xuaW1wb3J0IHsgTmdnUHJvZ3Jlc3NDaXJjbGVNb2R1bGUgfSBmcm9tICcuL3Byb2dyZXNzLWNpcmNsZS9wcm9ncmVzcy1jaXJjbGUubW9kdWxlJ1xuaW1wb3J0IHsgTmdnU2VnbWVudGVkQ29udHJvbE1vZHVsZSB9IGZyb20gJy4vc2VnbWVudGVkLWNvbnRyb2wvc2VnbWVudGVkLWNvbnRyb2wubW9kdWxlJ1xuaW1wb3J0IHsgTmdnU2xpZGVyTW9kdWxlIH0gZnJvbSAnLi9zbGlkZXIvc2xpZGVyLm1vZHVsZSdcbmltcG9ydCB7IE5nZ0NvbnRleHRNZW51TW9kdWxlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUnXG5pbXBvcnQgeyBOZ2dJblBhZ2VXaXphcmRNb2R1bGUgfSBmcm9tICcuL2luLXBhZ2Utd2l6YXJkJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW1xuICAgIE5nZ0FjY29yZGlvbk1vZHVsZSxcbiAgICBOZ2dCYWRnZU1vZHVsZSxcbiAgICBOZ2dCdXR0b25Nb2R1bGUsXG4gICAgTmdnRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBOZ2dEcm9wZG93bk1vZHVsZSxcbiAgICBOZ2dNb2RhbE1vZHVsZSxcbiAgICBOZ2dQcm9ncmVzc0NpcmNsZU1vZHVsZSxcbiAgICBOZ2dTZWdtZW50ZWRDb250cm9sTW9kdWxlLFxuICAgIE5nZ1NsaWRlck1vZHVsZSxcbiAgICBOZ2dDb250ZXh0TWVudU1vZHVsZSxcbiAgICBOZ2dJblBhZ2VXaXphcmRNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5nZ01vZHVsZSB7fVxuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, ContentChildren, NgModule, ChangeDetectionStrategy, HostBinding, Directive, Injector, Inject, ViewChild, ContentChild } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, ContentChildren, NgModule, ChangeDetectionStrategy, HostBinding, Directive, Injector, Inject, ViewChild, ContentChild, HostListener } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { randomId, dropdownValues, createDropdown, months, years, createDatepicker, calculateDegrees, sliderColors, getSliderTrackBackground, PaginationI18n } from '@sebgroup/extract';
@@ -1116,6 +1116,119 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1116
1116
  }]
1117
1117
  }] });
1118
1118
 
1119
+ class NggContextMenuComponent {
1120
+ constructor(elementRef) {
1121
+ this.elementRef = elementRef;
1122
+ this.direction = 'ltr';
1123
+ this.menuItems = [];
1124
+ this.menuItemTemplate = null;
1125
+ this.menuAnchorTemplate = null;
1126
+ this.contextMenuItemClicked = new EventEmitter();
1127
+ this.isActive = false;
1128
+ this.top = '0px';
1129
+ this.left = '0px';
1130
+ }
1131
+ onDocumentClick(target) {
1132
+ if (!this.isActive) {
1133
+ return;
1134
+ }
1135
+ const contextMenuElement = this.elementRef.nativeElement;
1136
+ if (!contextMenuElement.contains(target)) {
1137
+ this.close();
1138
+ }
1139
+ }
1140
+ open() {
1141
+ var _a;
1142
+ if (this.isActive) {
1143
+ this.close();
1144
+ return;
1145
+ }
1146
+ const anchor = (_a = this.anchor) === null || _a === void 0 ? void 0 : _a.nativeElement;
1147
+ const buttonRect = anchor.getBoundingClientRect();
1148
+ const left = this.calculateLeft(this.direction, buttonRect);
1149
+ const top = this.calculateTop(buttonRect.bottom);
1150
+ this.left = `${left}px`;
1151
+ this.top = `${top}px`;
1152
+ this.isActive = true;
1153
+ }
1154
+ close() {
1155
+ this.isActive = false;
1156
+ }
1157
+ onItemClick(item) {
1158
+ this.contextMenuItemClicked.emit(item);
1159
+ this.close();
1160
+ }
1161
+ onMenuItemKeyDown(event, menuItem) {
1162
+ switch (event.key) {
1163
+ case 'Enter':
1164
+ case ' ':
1165
+ event.preventDefault();
1166
+ this.onItemClick(menuItem);
1167
+ break;
1168
+ default:
1169
+ break;
1170
+ }
1171
+ }
1172
+ calculateTop(buttonRectBottom) {
1173
+ return buttonRectBottom + window.pageYOffset;
1174
+ }
1175
+ calculateLeft(direction, buttonRect) {
1176
+ var _a;
1177
+ const popover = (_a = this.popover) === null || _a === void 0 ? void 0 : _a.nativeElement;
1178
+ const popoverWidth = (popover === null || popover === void 0 ? void 0 : popover.offsetWidth) || 0;
1179
+ switch (direction) {
1180
+ case 'rtl':
1181
+ return popoverWidth <= buttonRect.left
1182
+ ? buttonRect.right - popoverWidth
1183
+ : buttonRect.left;
1184
+ case 'ltr':
1185
+ default:
1186
+ return buttonRect.right + popoverWidth <= window.innerWidth
1187
+ ? buttonRect.left
1188
+ : buttonRect.right - popoverWidth;
1189
+ }
1190
+ }
1191
+ }
1192
+ NggContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1193
+ NggContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NggContextMenuComponent, selector: "ngg-context-menu", inputs: { direction: "direction", menuItems: "menuItems", menuItemTemplate: "menuItemTemplate", menuAnchorTemplate: "menuAnchorTemplate" }, outputs: { contextMenuItemClicked: "contextMenuItemClicked" }, host: { listeners: { "document:click": "onDocumentClick($event.target)" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["contextMenuPopover"], descendants: true }, { propertyName: "anchor", first: true, predicate: ["contextMenuAnchor"], descendants: true }], ngImport: i0, template: "<button #contextMenuAnchor class=\"ghost small\" (click)=\"open()\">\n <ng-container\n [ngTemplateOutlet]=\"menuAnchorTemplate ?? defaultButtonTemplate\"\n >\n </ng-container>\n</button>\n\n<div\n class=\"popover popover-context-menu\"\n [class.active]=\"isActive\"\n [style.top]=\"top\"\n [style.left]=\"left\"\n #contextMenuPopover\n>\n <ul role=\"listbox\">\n <li\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"onItemClick(menuItem)\"\n tabindex=\"0\"\n (keydown)=\"onMenuItemKeyDown($event, menuItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"menuItemTemplate ?? defaultMenuItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"\n >\n </ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template #defaultMenuItemTemplate let-menuItem>\n <span>{{ menuItem.label }}</span>\n</ng-template>\n\n<ng-template #defaultButtonTemplate>\n <i class=\"sg-icon sg-icon-ellipsis\">Open context menu</i>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
1194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuComponent, decorators: [{
1195
+ type: Component,
1196
+ args: [{ selector: 'ngg-context-menu', template: "<button #contextMenuAnchor class=\"ghost small\" (click)=\"open()\">\n <ng-container\n [ngTemplateOutlet]=\"menuAnchorTemplate ?? defaultButtonTemplate\"\n >\n </ng-container>\n</button>\n\n<div\n class=\"popover popover-context-menu\"\n [class.active]=\"isActive\"\n [style.top]=\"top\"\n [style.left]=\"left\"\n #contextMenuPopover\n>\n <ul role=\"listbox\">\n <li\n *ngFor=\"let menuItem of menuItems\"\n (click)=\"onItemClick(menuItem)\"\n tabindex=\"0\"\n (keydown)=\"onMenuItemKeyDown($event, menuItem)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"menuItemTemplate ?? defaultMenuItemTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: menuItem }\"\n >\n </ng-container>\n </li>\n </ul>\n</div>\n\n<ng-template #defaultMenuItemTemplate let-menuItem>\n <span>{{ menuItem.label }}</span>\n</ng-template>\n\n<ng-template #defaultButtonTemplate>\n <i class=\"sg-icon sg-icon-ellipsis\">Open context menu</i>\n</ng-template>\n" }]
1197
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { direction: [{
1198
+ type: Input
1199
+ }], menuItems: [{
1200
+ type: Input
1201
+ }], menuItemTemplate: [{
1202
+ type: Input
1203
+ }], menuAnchorTemplate: [{
1204
+ type: Input
1205
+ }], contextMenuItemClicked: [{
1206
+ type: Output
1207
+ }], popover: [{
1208
+ type: ViewChild,
1209
+ args: ['contextMenuPopover']
1210
+ }], anchor: [{
1211
+ type: ViewChild,
1212
+ args: ['contextMenuAnchor']
1213
+ }], onDocumentClick: [{
1214
+ type: HostListener,
1215
+ args: ['document:click', ['$event.target']]
1216
+ }] } });
1217
+
1218
+ class NggContextMenuModule {
1219
+ }
1220
+ NggContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1221
+ NggContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, declarations: [NggContextMenuComponent], imports: [CommonModule], exports: [NggContextMenuComponent] });
1222
+ NggContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, imports: [CommonModule] });
1223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggContextMenuModule, decorators: [{
1224
+ type: NgModule,
1225
+ args: [{
1226
+ declarations: [NggContextMenuComponent],
1227
+ imports: [CommonModule],
1228
+ exports: [NggContextMenuComponent],
1229
+ }]
1230
+ }] });
1231
+
1119
1232
  class NggInPageWizardStepCardComponent {
1120
1233
  constructor() {
1121
1234
  this.handleNextClick = new EventEmitter();
@@ -1189,6 +1302,7 @@ NggModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.
1189
1302
  NggProgressCircleModule,
1190
1303
  NggSegmentedControlModule,
1191
1304
  NggSliderModule,
1305
+ NggContextMenuModule,
1192
1306
  NggInPageWizardModule] });
1193
1307
  NggModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModule, imports: [CommonModule, NggAccordionModule,
1194
1308
  NggBadgeModule,
@@ -1199,6 +1313,7 @@ NggModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.
1199
1313
  NggProgressCircleModule,
1200
1314
  NggSegmentedControlModule,
1201
1315
  NggSliderModule,
1316
+ NggContextMenuModule,
1202
1317
  NggInPageWizardModule] });
1203
1318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NggModule, decorators: [{
1204
1319
  type: NgModule,
@@ -1215,6 +1330,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1215
1330
  NggProgressCircleModule,
1216
1331
  NggSegmentedControlModule,
1217
1332
  NggSliderModule,
1333
+ NggContextMenuModule,
1218
1334
  NggInPageWizardModule,
1219
1335
  ],
1220
1336
  }]
@@ -1409,5 +1525,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1409
1525
  * Generated bundle index. Do not edit.
1410
1526
  */
1411
1527
 
1412
- export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule, NggBadgeComponent, NggBadgeModule, NggButtonComponent, NggButtonModule, NggDatepickerComponent, NggDatepickerModule, NggDropdownComponent, NggDropdownModule, NggDropdownOptionDirective, NggInPageWizardModule, NggInPageWizardStepCardComponent, NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalHeaderComponent, NggModalModule, NggModule, NggPaginationComponent, NggPaginationModule, NggProgressCircleComponent, NggProgressCircleModule, NggSegmentedControlComponent, NggSegmentedControlModule, NggSliderComponent, NggSliderModule, dateValidator };
1528
+ export { NggAccordionComponent, NggAccordionListItemComponent, NggAccordionModule, NggBadgeComponent, NggBadgeModule, NggButtonComponent, NggButtonModule, NggContextMenuComponent, NggContextMenuModule, NggDatepickerComponent, NggDatepickerModule, NggDropdownComponent, NggDropdownModule, NggDropdownOptionDirective, NggInPageWizardModule, NggInPageWizardStepCardComponent, NggModalBodyComponent, NggModalComponent, NggModalFooterComponent, NggModalHeaderComponent, NggModalModule, NggModule, NggPaginationComponent, NggPaginationModule, NggProgressCircleComponent, NggProgressCircleModule, NggSegmentedControlComponent, NggSegmentedControlModule, NggSliderComponent, NggSliderModule, dateValidator };
1413
1529
  //# sourceMappingURL=sebgroup-green-angular.mjs.map