@datarailsshared/datarailsshared 1.3.49 → 1.3.51
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/_datarailsshared.styles.css +3 -3
- package/assets/styles/_styles.scss +2 -2
- package/assets/styles/img/default-avatar.svg +5 -5
- package/bundles/datarailsshared-datarailsshared.umd.js +3984 -3995
- package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
- package/datarailsshared-datarailsshared-1.3.51.tgz +0 -0
- package/datarailsshared-datarailsshared.d.ts +9 -9
- package/datarailsshared-datarailsshared.metadata.json +1 -1
- package/esm2015/datarailsshared-datarailsshared.js +9 -9
- package/esm2015/lib/date-tags/date-tag.component.js +70 -70
- package/esm2015/lib/date-tags/date-tag.module.js +50 -50
- package/esm2015/lib/date-tags/day-tag/day-tag.component.js +81 -81
- package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -143
- package/esm2015/lib/date-tags/month-tag/month-tag.component.js +87 -87
- package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -101
- package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -124
- package/esm2015/lib/date-tags/year-tag/year-tag.component.js +93 -93
- package/esm2015/lib/dr-accordion/accordion-item-body.component.js +57 -57
- package/esm2015/lib/dr-accordion/accordion-item-header.component.js +79 -79
- package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -123
- package/esm2015/lib/dr-accordion/accordion.component.js +43 -43
- package/esm2015/lib/dr-accordion/accordion.module.js +23 -23
- package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
- package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
- package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
- package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
- package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +97 -97
- package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +110 -110
- package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +89 -89
- package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
- package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
- package/esm2015/lib/dr-inputs/button/button.component.js +80 -80
- package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -186
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -41
- package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -129
- package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +185 -185
- package/esm2015/lib/dr-inputs/dr-inputs.module.js +51 -51
- package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +31 -31
- package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +90 -90
- package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
- package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +56 -56
- package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
- package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
- package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
- package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
- package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
- package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
- package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
- package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
- package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
- package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
- package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
- package/esm2015/lib/dr-tabs/dr-tabs.component.js +28 -28
- package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
- package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
- package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
- package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
- package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
- package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
- package/esm2015/lib/list-tags/list-tag.component.js +41 -41
- package/esm2015/lib/list-tags/list-tag.module.js +29 -29
- package/esm2015/lib/models/constants.js +97 -97
- package/esm2015/lib/models/datePicker.js +40 -40
- package/esm2015/lib/models/dropdown.js +2 -2
- package/esm2015/lib/models/popover.js +27 -27
- package/esm2015/lib/models/serverTags.js +2 -2
- package/esm2015/public-api.js +57 -57
- package/fesm2015/datarailsshared-datarailsshared.js +3365 -3368
- package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
- package/lib/date-tags/date-tag.component.d.ts +27 -27
- package/lib/date-tags/date-tag.module.d.ts +4 -4
- package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
- package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
- package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
- package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
- package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
- package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
- package/lib/dr-accordion/accordion-item-body.component.d.ts +11 -11
- package/lib/dr-accordion/accordion-item-header.component.d.ts +16 -16
- package/lib/dr-accordion/accordion-item.component.d.ts +53 -53
- package/lib/dr-accordion/accordion.component.d.ts +19 -19
- package/lib/dr-accordion/accordion.module.d.ts +2 -2
- package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
- package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
- package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
- package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
- package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +12 -12
- package/lib/dr-dropdown/dr-dropdown.component.d.ts +26 -26
- package/lib/dr-dropdown/dr-dropdown.directive.d.ts +23 -23
- package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
- package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
- package/lib/dr-inputs/button/button.component.d.ts +21 -21
- package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
- package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
- package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -54
- package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -12
- package/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +41 -41
- package/lib/dr-inputs/dr-input/dr-input.component.d.ts +58 -58
- package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
- package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +11 -11
- package/lib/dr-inputs/dr-select/dr-select.component.d.ts +38 -38
- package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
- package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +19 -19
- package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
- package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
- package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
- package/lib/dr-popover/dr-popover.component.d.ts +26 -26
- package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
- package/lib/dr-popover/dr-popover.module.d.ts +2 -2
- package/lib/dr-popover/dr-popover.service.d.ts +17 -17
- package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
- package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
- package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
- package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
- package/lib/dr-tabs/dr-tabs.component.d.ts +11 -11
- package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
- package/lib/dr-tags/dr-tag.component.d.ts +15 -15
- package/lib/dr-tags/dr-tag.module.d.ts +2 -2
- package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
- package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
- package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
- package/lib/list-tags/list-tag.component.d.ts +14 -14
- package/lib/list-tags/list-tag.module.d.ts +2 -2
- package/lib/models/constants.d.ts +87 -87
- package/lib/models/datePicker.d.ts +25 -25
- package/lib/models/dropdown.d.ts +48 -48
- package/lib/models/popover.d.ts +32 -32
- package/lib/models/serverTags.d.ts +28 -28
- package/package.json +1 -1
- package/public-api.d.ts +55 -55
- package/datarailsshared-datarailsshared-1.3.49.tgz +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
export class DrAvatarPipe {
|
|
3
|
-
transform(item, type = 'full') {
|
|
4
|
-
if (type === 'initials') {
|
|
5
|
-
return (item.first_name && item.last_name ? (item.first_name[0] + item.last_name[0]) : item.email[0]).toUpperCase();
|
|
6
|
-
}
|
|
7
|
-
return item.first_name && item.last_name ? (item.first_name + ' ' + item.last_name) : item.email;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
DrAvatarPipe.decorators = [
|
|
11
|
-
{ type: Pipe, args: [{
|
|
12
|
-
name: 'drAvatar'
|
|
13
|
-
},] }
|
|
14
|
-
];
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
export class DrAvatarPipe {
|
|
3
|
+
transform(item, type = 'full') {
|
|
4
|
+
if (type === 'initials') {
|
|
5
|
+
return (item.first_name && item.last_name ? (item.first_name[0] + item.last_name[0]) : item.email[0]).toUpperCase();
|
|
6
|
+
}
|
|
7
|
+
return item.first_name && item.last_name ? (item.first_name + ' ' + item.last_name) : item.email;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
DrAvatarPipe.decorators = [
|
|
11
|
+
{ type: Pipe, args: [{
|
|
12
|
+
name: 'drAvatar'
|
|
13
|
+
},] }
|
|
14
|
+
];
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItYXZhdGFyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1hdmF0YXIvZHItYXZhdGFyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFFdkIsU0FBUyxDQUFDLElBQVMsRUFBRSxPQUFlLE1BQU07UUFDeEMsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNySDtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRyxDQUFDOzs7WUFYRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7YUFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2RyQXZhdGFyJ1xufSlcbmV4cG9ydCBjbGFzcyBEckF2YXRhclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0oaXRlbTogYW55LCB0eXBlOiBzdHJpbmcgPSAnZnVsbCcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlID09PSAnaW5pdGlhbHMnKSB7XG4gICAgICByZXR1cm4gKGl0ZW0uZmlyc3RfbmFtZSAmJiBpdGVtLmxhc3RfbmFtZSA/IChpdGVtLmZpcnN0X25hbWVbMF0gKyBpdGVtLmxhc3RfbmFtZVswXSkgOiBpdGVtLmVtYWlsWzBdKS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtLmZpcnN0X25hbWUgJiYgaXRlbS5sYXN0X25hbWUgPyAoaXRlbS5maXJzdF9uYW1lICsgJyAnICsgaXRlbS5sYXN0X25hbWUpIDogaXRlbS5lbWFpbDtcbiAgfVxufVxuIl19
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { Pipe } from '@angular/core';
|
|
2
|
-
export class DrDropdownItemShowPipe {
|
|
3
|
-
transform(arr) {
|
|
4
|
-
return arr.filter(item => item.show ? item.show(item.data) : true);
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
DrDropdownItemShowPipe.decorators = [
|
|
8
|
-
{ type: Pipe, args: [{
|
|
9
|
-
name: 'drDropdownItemShowPipe'
|
|
10
|
-
},] }
|
|
11
|
-
];
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
export class DrDropdownItemShowPipe {
|
|
3
|
+
transform(arr) {
|
|
4
|
+
return arr.filter(item => item.show ? item.show(item.data) : true);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
DrDropdownItemShowPipe.decorators = [
|
|
8
|
+
{ type: Pipe, args: [{
|
|
9
|
+
name: 'drDropdownItemShowPipe'
|
|
10
|
+
},] }
|
|
11
|
+
];
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24taXRlbS1zaG93LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1kcm9wZG93bi9kci1kcm9wZG93bi1pdGVtLXNob3cucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQU1wRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFNBQVMsQ0FBQyxHQUF1QjtRQUMvQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7O1lBTkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSx3QkFBd0I7YUFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZHJEcm9wZG93bkl0ZW1TaG93UGlwZSdcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkl0ZW1TaG93UGlwZTxUPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oYXJyOiBJRHJvcGRvd25JdGVtPFQ+W10pOiBJRHJvcGRvd25JdGVtPFQ+W10ge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zaG93ID8gaXRlbS5zaG93KGl0ZW0uZGF0YSkgOiB0cnVlKTtcbiAgfVxufVxuIl19
|
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
-
export class DrDropdownPositionDirective {
|
|
3
|
-
constructor(el, renderer) {
|
|
4
|
-
this.el = el;
|
|
5
|
-
this.renderer = renderer;
|
|
6
|
-
this.position = 'left';
|
|
7
|
-
}
|
|
8
|
-
ngOnInit() {
|
|
9
|
-
setTimeout(this.calculatePosition.bind(this), 1);
|
|
10
|
-
}
|
|
11
|
-
calculatePosition() {
|
|
12
|
-
let xDifference = 0;
|
|
13
|
-
let defaultDelta = 10;
|
|
14
|
-
let defaultPadding = 0;
|
|
15
|
-
if (this.position === 'child') {
|
|
16
|
-
defaultDelta = 0;
|
|
17
|
-
defaultPadding = 10;
|
|
18
|
-
xDifference = this.el.nativeElement.parentElement.parentElement.offsetWidth - this.el.nativeElement.offsetWidth;
|
|
19
|
-
const parentRect = this.el.nativeElement.parentElement.parentElement.getBoundingClientRect();
|
|
20
|
-
this.position = {
|
|
21
|
-
x: this.el.nativeElement.offsetWidth,
|
|
22
|
-
y: this.el.nativeElement.parentElement.parentElement.offsetTop - 9,
|
|
23
|
-
clientX: parentRect.x + this.el.nativeElement.parentElement.parentElement.offsetWidth,
|
|
24
|
-
clientY: parentRect.y
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
if (typeof this.position === 'string') {
|
|
28
|
-
this.renderer.setStyle(this.el.nativeElement, 'top', this.position === 'bottom' ?
|
|
29
|
-
this.drDropdownPosition.y - this.drDropdownPosition.height + 'px' :
|
|
30
|
-
this.drDropdownPosition.y + 'px');
|
|
31
|
-
this.renderer.setStyle(this.el.nativeElement, 'left', this.position === 'right' ?
|
|
32
|
-
this.drDropdownPosition.x + this.drDropdownPosition.width + 'px' :
|
|
33
|
-
this.drDropdownPosition.x + 'px');
|
|
34
|
-
const menuHeight = this.el.nativeElement.offsetHeight;
|
|
35
|
-
const heightMoreWindowBottom = menuHeight + this.drDropdownPosition.y > window.innerHeight;
|
|
36
|
-
const heightMoreWindowTop = menuHeight - this.drDropdownPosition.y + this.drDropdownPosition.height / 2 > 48; // header height;
|
|
37
|
-
const widthMoreWindowRight = this.drDropdownPosition.x + 250 > window.innerWidth;
|
|
38
|
-
const spaceBetweenElAndRightBorder = window.innerWidth - (this.drDropdownPosition.x + this.el.nativeElement.offsetWidth);
|
|
39
|
-
this.widthMoreRight = this.drDropdownPosition.x < spaceBetweenElAndRightBorder;
|
|
40
|
-
if (heightMoreWindowBottom) {
|
|
41
|
-
this.position = 'top';
|
|
42
|
-
}
|
|
43
|
-
if (heightMoreWindowBottom && widthMoreWindowRight && !heightMoreWindowTop || this.position === 'top-left') {
|
|
44
|
-
this.position = 'top-left';
|
|
45
|
-
this.renderer.setStyle(this.el.nativeElement, 'transform', 'translate(-100%, calc(-100% + ' + this.drDropdownPosition.height + 'px))');
|
|
46
|
-
}
|
|
47
|
-
if (heightMoreWindowTop && heightMoreWindowBottom) {
|
|
48
|
-
this.position = 'left-center';
|
|
49
|
-
}
|
|
50
|
-
if (this.position === 'bottom-left') {
|
|
51
|
-
this.renderer.setStyle(this.el.nativeElement, 'transform', `translate(calc(-100% + ${this.drDropdownPosition.width}px), ${this.drDropdownPosition.height + 8}px)`);
|
|
52
|
-
}
|
|
53
|
-
const className = this.position === 'top' ? 'content-top'
|
|
54
|
-
: this.position === 'top-left' ? 'content-top-left'
|
|
55
|
-
: this.position === 'bottom' ? 'content-bottom'
|
|
56
|
-
: this.position === 'bottom-left' ? 'content-bottom-left'
|
|
57
|
-
: this.position === 'left' ? 'content-left'
|
|
58
|
-
: this.position === 'left-center' ? 'content-left-center'
|
|
59
|
-
: this.position === 'right' ? 'content-right'
|
|
60
|
-
: this.position === 'bottom-right' ? 'content-bottom-right' : '';
|
|
61
|
-
this.renderer.addClass(this.el.nativeElement, className);
|
|
62
|
-
this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const defaultChildPadding = 3;
|
|
66
|
-
const widthMoreWindowRight = window.innerWidth - (this.position.clientX - this.el.nativeElement.offsetWidth - defaultPadding);
|
|
67
|
-
const widthMoreWindowBottom = window.innerHeight - (this.position.clientY - this.el.nativeElement.offsetHeight - defaultPadding);
|
|
68
|
-
const spaceRightAmount = window.innerWidth - (this.position.clientX + this.el.nativeElement.offsetWidth + defaultPadding);
|
|
69
|
-
this.widthMoreRight = !(widthMoreWindowRight < 0);
|
|
70
|
-
let calculatedHorizantallyPos = widthMoreWindowRight < 0
|
|
71
|
-
? -this.position.x + -defaultChildPadding
|
|
72
|
-
: this.position.x + defaultChildPadding + xDifference;
|
|
73
|
-
if (spaceRightAmount <= 0) {
|
|
74
|
-
calculatedHorizantallyPos -= this.el.nativeElement.offsetWidth;
|
|
75
|
-
}
|
|
76
|
-
const deltaHeight = widthMoreWindowBottom < 0 ? widthMoreWindowBottom : defaultDelta;
|
|
77
|
-
this.renderer.setStyle(this.el.nativeElement, 'top', (this.position.y + deltaHeight) + 'px');
|
|
78
|
-
this.renderer.setStyle(this.el.nativeElement, 'left', (calculatedHorizantallyPos) + 'px');
|
|
79
|
-
this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
DrDropdownPositionDirective.decorators = [
|
|
84
|
-
{ type: Directive, args: [{
|
|
85
|
-
selector: '[drDropdownPosition]',
|
|
86
|
-
exportAs: 'dropdownPosition'
|
|
87
|
-
},] }
|
|
88
|
-
];
|
|
89
|
-
DrDropdownPositionDirective.ctorParameters = () => [
|
|
90
|
-
{ type: ElementRef },
|
|
91
|
-
{ type: Renderer2 }
|
|
92
|
-
];
|
|
93
|
-
DrDropdownPositionDirective.propDecorators = {
|
|
94
|
-
drDropdownPosition: [{ type: Input }],
|
|
95
|
-
position: [{ type: Input }]
|
|
96
|
-
};
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPaEYsTUFBTSxPQUFPLDJCQUEyQjtJQU9wQyxZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFKdEQsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFLN0QsQ0FBQztJQUVELFFBQVE7UUFDSixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUMzQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNoSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFx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QUVyRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRTtJQUNMLENBQUM7OztZQW5HSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsUUFBUSxFQUFFLGtCQUFrQjthQUMvQjs7O1lBTm1CLFVBQVU7WUFBaUIsU0FBUzs7O2lDQVNuRCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRHJvcGRvd25Db29yZGluYXRlLCBFbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbZHJEcm9wZG93blBvc2l0aW9uXScsXHJcbiAgICBleHBvcnRBczogJ2Ryb3Bkb3duUG9zaXRpb24nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEckRyb3Bkb3duUG9zaXRpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIEBJbnB1dCgpIGRyRHJvcGRvd25Qb3NpdGlvbjtcclxuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiBFbFBvc2l0aW9uIHwgSURyb3Bkb3duQ29vcmRpbmF0ZSA9ICdsZWZ0JztcclxuXHJcbiAgICB3aWR0aE1vcmVSaWdodDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlUG9zaXRpb24uYmluZCh0aGlzKSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XHJcbiAgICAgICAgbGV0IHhEaWZmZXJlbmNlID0gMDtcclxuICAgICAgICBsZXQgZGVmYXVsdERlbHRhID0gMTA7XHJcbiAgICAgICAgbGV0IGRlZmF1bHRQYWRkaW5nID0gMDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdjaGlsZCcpIHtcclxuICAgICAgICAgICAgZGVmYXVsdERlbHRhID0gMDtcclxuICAgICAgICAgICAgZGVmYXVsdFBhZGRpbmcgPSAxMDtcclxuICAgICAgICAgICAgeERpZmZlcmVuY2UgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgICB4OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgICAgICAgICB5OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFRvcCAtIDksXHJcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBwYXJlbnRSZWN0LnggKyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgY2xpZW50WTogcGFyZW50UmVjdC55XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucG9zaXRpb24gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndG9wJyxcclxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJyA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55IC0gdGhpcy5kckRyb3Bkb3duUG9zaXRpb24uaGVpZ2h0ICsgJ3B4JyA6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55ICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ud2lkdGggKyAncHgnIDpcclxuICAgICAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnggKyAncHgnKTtcclxuICAgICAgICAgICAgY29uc3QgbWVudUhlaWdodCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE1vcmVXaW5kb3dCb3R0b20gPSBtZW51SGVpZ2h0ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSA+IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0TW9yZVdpbmRvd1RvcCA9IG1lbnVIZWlnaHQgLSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24uaGVpZ2h0IC8gMiA+IDQ4OyAvLyBoZWFkZXIgaGVpZ2h0O1xyXG4gICAgICAgICAgICBjb25zdCB3aWR0aE1vcmVXaW5kb3dSaWdodCA9IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnggKyAyNTAgPiB3aW5kb3cuaW5uZXJXaWR0aDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkVsQW5kUmlnaHRCb3JkZXIgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICh0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgICAgICAgICAgdGhpcy53aWR0aE1vcmVSaWdodCA9IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnggPCBzcGFjZUJldHdlZW5FbEFuZFJpZ2h0Qm9yZGVyO1xyXG5cclxuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dCb3R0b20pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSAndG9wJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSAmJiB3aWR0aE1vcmVXaW5kb3dSaWdodCAmJiAhaGVpZ2h0TW9yZVdpbmRvd1RvcCB8fCB0aGlzLnBvc2l0aW9uID09PSAndG9wLWxlZnQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gJ3RvcC1sZWZ0JztcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndHJhbnNmb3JtJyxcclxuICAgICAgICAgICAgICAgICAgJ3RyYW5zbGF0ZSgtMTAwJSwgY2FsYygtMTAwJSArICcgKyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi5oZWlnaHQgKyAncHgpKScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb3JlV2luZG93VG9wICYmIGhlaWdodE1vcmVXaW5kb3dCb3R0b20pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSAnbGVmdC1jZW50ZXInO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tLWxlZnQnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoY2FsYygtMTAwJSArICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLndpZHRoIH1weCksICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCArIDggfXB4KWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMucG9zaXRpb24gPT09ICd0b3AnID8gJ2NvbnRlbnQtdG9wJ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcC1sZWZ0JyA/ICdjb250ZW50LXRvcC1sZWZ0J1xyXG4gICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJyA/ICdjb250ZW50LWJvdHRvbSdcclxuICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tLWxlZnQnID8gJ2NvbnRlbnQtYm90dG9tLWxlZnQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcgPyAnY29udGVudC1sZWZ0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnbGVmdC1jZW50ZXInID8gJ2NvbnRlbnQtbGVmdC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0JyA/ICdjb250ZW50LXJpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcgPyAnY29udGVudC1ib3R0b20tcmlnaHQnIDogJyc7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3otaW5kZXgnLCAnMTAwMTAnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Q2hpbGRQYWRkaW5nID0gMztcclxuICAgICAgICAgICAgY29uc3Qgd2lkdGhNb3JlV2luZG93UmlnaHQgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICh0aGlzLnBvc2l0aW9uLmNsaWVudFggLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBkZWZhdWx0UGFkZGluZyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLnBvc2l0aW9uLmNsaWVudFkgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gZGVmYXVsdFBhZGRpbmcpO1xyXG4gICAgICAgICAgICBjb25zdCBzcGFjZVJpZ2h0QW1vdW50ID0gd2luZG93LmlubmVyV2lkdGggLSAodGhpcy5wb3NpdGlvbi5jbGllbnRYICsgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICsgZGVmYXVsdFBhZGRpbmcpO1xyXG4gICAgICAgICAgICB0aGlzLndpZHRoTW9yZVJpZ2h0ID0gISh3aWR0aE1vcmVXaW5kb3dSaWdodCA8IDApO1xyXG5cclxuICAgICAgICAgICAgbGV0IGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MgPSB3aWR0aE1vcmVXaW5kb3dSaWdodCA8IDBcclxuICAgICAgICAgICAgICA/IC10aGlzLnBvc2l0aW9uLnggKyAtZGVmYXVsdENoaWxkUGFkZGluZ1xyXG4gICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbi54ICsgZGVmYXVsdENoaWxkUGFkZGluZyArIHhEaWZmZXJlbmNlO1xyXG5cclxuICAgICAgICAgICAgaWYgKHNwYWNlUmlnaHRBbW91bnQgPD0gMCkge1xyXG4gICAgICAgICAgICAgIGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MgLT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YUhlaWdodCA9IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA8IDAgPyB3aWR0aE1vcmVXaW5kb3dCb3R0b20gOiBkZWZhdWx0RGVsdGE7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RvcCcsICh0aGlzLnBvc2l0aW9uLnkgKyBkZWx0YUhlaWdodCkgKyAncHgnKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgKGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MpICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsICcxMDAxMCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
1
|
+
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
|
|
2
|
+
export class DrDropdownPositionDirective {
|
|
3
|
+
constructor(el, renderer) {
|
|
4
|
+
this.el = el;
|
|
5
|
+
this.renderer = renderer;
|
|
6
|
+
this.position = 'left';
|
|
7
|
+
}
|
|
8
|
+
ngOnInit() {
|
|
9
|
+
setTimeout(this.calculatePosition.bind(this), 1);
|
|
10
|
+
}
|
|
11
|
+
calculatePosition() {
|
|
12
|
+
let xDifference = 0;
|
|
13
|
+
let defaultDelta = 10;
|
|
14
|
+
let defaultPadding = 0;
|
|
15
|
+
if (this.position === 'child') {
|
|
16
|
+
defaultDelta = 0;
|
|
17
|
+
defaultPadding = 10;
|
|
18
|
+
xDifference = this.el.nativeElement.parentElement.parentElement.offsetWidth - this.el.nativeElement.offsetWidth;
|
|
19
|
+
const parentRect = this.el.nativeElement.parentElement.parentElement.getBoundingClientRect();
|
|
20
|
+
this.position = {
|
|
21
|
+
x: this.el.nativeElement.offsetWidth,
|
|
22
|
+
y: this.el.nativeElement.parentElement.parentElement.offsetTop - 9,
|
|
23
|
+
clientX: parentRect.x + this.el.nativeElement.parentElement.parentElement.offsetWidth,
|
|
24
|
+
clientY: parentRect.y
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (typeof this.position === 'string') {
|
|
28
|
+
this.renderer.setStyle(this.el.nativeElement, 'top', this.position === 'bottom' ?
|
|
29
|
+
this.drDropdownPosition.y - this.drDropdownPosition.height + 'px' :
|
|
30
|
+
this.drDropdownPosition.y + 'px');
|
|
31
|
+
this.renderer.setStyle(this.el.nativeElement, 'left', this.position === 'right' ?
|
|
32
|
+
this.drDropdownPosition.x + this.drDropdownPosition.width + 'px' :
|
|
33
|
+
this.drDropdownPosition.x + 'px');
|
|
34
|
+
const menuHeight = this.el.nativeElement.offsetHeight;
|
|
35
|
+
const heightMoreWindowBottom = menuHeight + this.drDropdownPosition.y > window.innerHeight;
|
|
36
|
+
const heightMoreWindowTop = menuHeight - this.drDropdownPosition.y + this.drDropdownPosition.height / 2 > 48; // header height;
|
|
37
|
+
const widthMoreWindowRight = this.drDropdownPosition.x + 250 > window.innerWidth;
|
|
38
|
+
const spaceBetweenElAndRightBorder = window.innerWidth - (this.drDropdownPosition.x + this.el.nativeElement.offsetWidth);
|
|
39
|
+
this.widthMoreRight = this.drDropdownPosition.x < spaceBetweenElAndRightBorder;
|
|
40
|
+
if (heightMoreWindowBottom) {
|
|
41
|
+
this.position = 'top';
|
|
42
|
+
}
|
|
43
|
+
if (heightMoreWindowBottom && widthMoreWindowRight && !heightMoreWindowTop || this.position === 'top-left') {
|
|
44
|
+
this.position = 'top-left';
|
|
45
|
+
this.renderer.setStyle(this.el.nativeElement, 'transform', 'translate(-100%, calc(-100% + ' + this.drDropdownPosition.height + 'px))');
|
|
46
|
+
}
|
|
47
|
+
if (heightMoreWindowTop && heightMoreWindowBottom) {
|
|
48
|
+
this.position = 'left-center';
|
|
49
|
+
}
|
|
50
|
+
if (this.position === 'bottom-left') {
|
|
51
|
+
this.renderer.setStyle(this.el.nativeElement, 'transform', `translate(calc(-100% + ${this.drDropdownPosition.width}px), ${this.drDropdownPosition.height + 8}px)`);
|
|
52
|
+
}
|
|
53
|
+
const className = this.position === 'top' ? 'content-top'
|
|
54
|
+
: this.position === 'top-left' ? 'content-top-left'
|
|
55
|
+
: this.position === 'bottom' ? 'content-bottom'
|
|
56
|
+
: this.position === 'bottom-left' ? 'content-bottom-left'
|
|
57
|
+
: this.position === 'left' ? 'content-left'
|
|
58
|
+
: this.position === 'left-center' ? 'content-left-center'
|
|
59
|
+
: this.position === 'right' ? 'content-right'
|
|
60
|
+
: this.position === 'bottom-right' ? 'content-bottom-right' : '';
|
|
61
|
+
this.renderer.addClass(this.el.nativeElement, className);
|
|
62
|
+
this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const defaultChildPadding = 3;
|
|
66
|
+
const widthMoreWindowRight = window.innerWidth - (this.position.clientX - this.el.nativeElement.offsetWidth - defaultPadding);
|
|
67
|
+
const widthMoreWindowBottom = window.innerHeight - (this.position.clientY - this.el.nativeElement.offsetHeight - defaultPadding);
|
|
68
|
+
const spaceRightAmount = window.innerWidth - (this.position.clientX + this.el.nativeElement.offsetWidth + defaultPadding);
|
|
69
|
+
this.widthMoreRight = !(widthMoreWindowRight < 0);
|
|
70
|
+
let calculatedHorizantallyPos = widthMoreWindowRight < 0
|
|
71
|
+
? -this.position.x + -defaultChildPadding
|
|
72
|
+
: this.position.x + defaultChildPadding + xDifference;
|
|
73
|
+
if (spaceRightAmount <= 0) {
|
|
74
|
+
calculatedHorizantallyPos -= this.el.nativeElement.offsetWidth;
|
|
75
|
+
}
|
|
76
|
+
const deltaHeight = widthMoreWindowBottom < 0 ? widthMoreWindowBottom : defaultDelta;
|
|
77
|
+
this.renderer.setStyle(this.el.nativeElement, 'top', (this.position.y + deltaHeight) + 'px');
|
|
78
|
+
this.renderer.setStyle(this.el.nativeElement, 'left', (calculatedHorizantallyPos) + 'px');
|
|
79
|
+
this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
DrDropdownPositionDirective.decorators = [
|
|
84
|
+
{ type: Directive, args: [{
|
|
85
|
+
selector: '[drDropdownPosition]',
|
|
86
|
+
exportAs: 'dropdownPosition'
|
|
87
|
+
},] }
|
|
88
|
+
];
|
|
89
|
+
DrDropdownPositionDirective.ctorParameters = () => [
|
|
90
|
+
{ type: ElementRef },
|
|
91
|
+
{ type: Renderer2 }
|
|
92
|
+
];
|
|
93
|
+
DrDropdownPositionDirective.propDecorators = {
|
|
94
|
+
drDropdownPosition: [{ type: Input }],
|
|
95
|
+
position: [{ type: Input }]
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPaEYsTUFBTSxPQUFPLDJCQUEyQjtJQU9wQyxZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFKdEQsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFLN0QsQ0FBQztJQUVELFFBQVE7UUFDSixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUMzQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNoSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFx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QUVyRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUNyRTtJQUNMLENBQUM7OztZQW5HSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsUUFBUSxFQUFFLGtCQUFrQjthQUMvQjs7O1lBTm1CLFVBQVU7WUFBaUIsU0FBUzs7O2lDQVNuRCxLQUFLO3VCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURyb3Bkb3duQ29vcmRpbmF0ZSwgRWxQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9kcm9wZG93bic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyRHJvcGRvd25Qb3NpdGlvbl0nLFxuICAgIGV4cG9ydEFzOiAnZHJvcGRvd25Qb3NpdGlvbidcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93blBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIGRyRHJvcGRvd25Qb3NpdGlvbjtcbiAgICBASW5wdXQoKSBwb3NpdGlvbjogRWxQb3NpdGlvbiB8IElEcm9wZG93bkNvb3JkaW5hdGUgPSAnbGVmdCc7XG5cbiAgICB3aWR0aE1vcmVSaWdodDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlUG9zaXRpb24uYmluZCh0aGlzKSwgMSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XG4gICAgICAgIGxldCB4RGlmZmVyZW5jZSA9IDA7XG4gICAgICAgIGxldCBkZWZhdWx0RGVsdGEgPSAxMDtcbiAgICAgICAgbGV0IGRlZmF1bHRQYWRkaW5nID0gMDtcblxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2NoaWxkJykge1xuICAgICAgICAgICAgZGVmYXVsdERlbHRhID0gMDtcbiAgICAgICAgICAgIGRlZmF1bHRQYWRkaW5nID0gMTA7XG4gICAgICAgICAgICB4RGlmZmVyZW5jZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRSZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICAgICAgICB4OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgeTogdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRUb3AgLSA5LFxuICAgICAgICAgICAgICAgIGNsaWVudFg6IHBhcmVudFJlY3QueCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgY2xpZW50WTogcGFyZW50UmVjdC55XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc2l0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0b3AnLFxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJyA/XG4gICAgICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSAtIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCArICdweCcgOlxuICAgICAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnkgKyAncHgnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnbGVmdCcsXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgP1xuICAgICAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnggKyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi53aWR0aCArICdweCcgOlxuICAgICAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnggKyAncHgnKTtcbiAgICAgICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSA9IG1lbnVIZWlnaHQgKyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55ID4gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0TW9yZVdpbmRvd1RvcCA9IG1lbnVIZWlnaHQgLSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24uaGVpZ2h0IC8gMiA+IDQ4OyAvLyBoZWFkZXIgaGVpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGhNb3JlV2luZG93UmlnaHQgPSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgMjUwID4gd2luZG93LmlubmVyV2lkdGg7XG5cbiAgICAgICAgICAgIGNvbnN0IHNwYWNlQmV0d2VlbkVsQW5kUmlnaHRCb3JkZXIgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICh0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcbiAgICAgICAgICAgIHRoaXMud2lkdGhNb3JlUmlnaHQgPSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54IDwgc3BhY2VCZXR3ZWVuRWxBbmRSaWdodEJvcmRlcjtcblxuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dCb3R0b20pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSAmJiB3aWR0aE1vcmVXaW5kb3dSaWdodCAmJiAhaGVpZ2h0TW9yZVdpbmRvd1RvcCB8fCB0aGlzLnBvc2l0aW9uID09PSAndG9wLWxlZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AtbGVmdCc7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgJ3RyYW5zbGF0ZSgtMTAwJSwgY2FsYygtMTAwJSArICcgKyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi5oZWlnaHQgKyAncHgpKScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dUb3AgJiYgaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSAnbGVmdC1jZW50ZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoY2FsYygtMTAwJSArICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLndpZHRoIH1weCksICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCArIDggfXB4KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcgPyAnY29udGVudC10b3AnXG4gICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcC1sZWZ0JyA/ICdjb250ZW50LXRvcC1sZWZ0J1xuICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgPyAnY29udGVudC1ib3R0b20nXG4gICAgICAgICAgICAgICAgICA6IHRoaXMucG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcgPyAnY29udGVudC1ib3R0b20tbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcgPyAnY29udGVudC1sZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQtY2VudGVyJyA/ICdjb250ZW50LWxlZnQtY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnID8gJ2NvbnRlbnQtcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcgPyAnY29udGVudC1ib3R0b20tcmlnaHQnIDogJyc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsICcxMDAxMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENoaWxkUGFkZGluZyA9IDM7XG4gICAgICAgICAgICBjb25zdCB3aWR0aE1vcmVXaW5kb3dSaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gKHRoaXMucG9zaXRpb24uY2xpZW50WCAtIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIGRlZmF1bHRQYWRkaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtICh0aGlzLnBvc2l0aW9uLmNsaWVudFkgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gZGVmYXVsdFBhZGRpbmcpO1xuICAgICAgICAgICAgY29uc3Qgc3BhY2VSaWdodEFtb3VudCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gKHRoaXMucG9zaXRpb24uY2xpZW50WCArIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIGRlZmF1bHRQYWRkaW5nKTtcbiAgICAgICAgICAgIHRoaXMud2lkdGhNb3JlUmlnaHQgPSAhKHdpZHRoTW9yZVdpbmRvd1JpZ2h0IDwgMCk7XG5cbiAgICAgICAgICAgIGxldCBjYWxjdWxhdGVkSG9yaXphbnRhbGx5UG9zID0gd2lkdGhNb3JlV2luZG93UmlnaHQgPCAwXG4gICAgICAgICAgICAgID8gLXRoaXMucG9zaXRpb24ueCArIC1kZWZhdWx0Q2hpbGRQYWRkaW5nXG4gICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbi54ICsgZGVmYXVsdENoaWxkUGFkZGluZyArIHhEaWZmZXJlbmNlO1xuXG4gICAgICAgICAgICBpZiAoc3BhY2VSaWdodEFtb3VudCA8PSAwKSB7XG4gICAgICAgICAgICAgIGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MgLT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkZWx0YUhlaWdodCA9IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA8IDAgPyB3aWR0aE1vcmVXaW5kb3dCb3R0b20gOiBkZWZhdWx0RGVsdGE7XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndG9wJywgKHRoaXMucG9zaXRpb24ueSArIGRlbHRhSGVpZ2h0KSArICdweCcpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgKGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MpICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3otaW5kZXgnLCAnMTAwMTAnKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { DrDropdownService } from './dr-dropdown.service';
|
|
3
|
-
export class DrDropdownComponent {
|
|
4
|
-
constructor(menuService, cdr) {
|
|
5
|
-
this.menuService = menuService;
|
|
6
|
-
this.cdr = cdr;
|
|
7
|
-
this.position = 'left';
|
|
8
|
-
}
|
|
9
|
-
set options(data) {
|
|
10
|
-
if (data) {
|
|
11
|
-
this.option = data.option;
|
|
12
|
-
this.position = data.position;
|
|
13
|
-
this.drDropdownInHover = data.drDropdownInHover;
|
|
14
|
-
this.containerClass = data.class;
|
|
15
|
-
this.list = data.list || [];
|
|
16
|
-
this.list.forEach(item => {
|
|
17
|
-
var _a, _b;
|
|
18
|
-
if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {
|
|
19
|
-
item.childOptions = {
|
|
20
|
-
list: item.children,
|
|
21
|
-
class: ((_b = item === null || item === void 0 ? void 0 : item.childOptions) === null || _b === void 0 ? void 0 : _b.class) || '',
|
|
22
|
-
position: 'child'
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
this.cdr.markForCheck();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
onMouseLeave() {
|
|
30
|
-
if (this.drDropdownInHover)
|
|
31
|
-
this.menuService.destroy();
|
|
32
|
-
}
|
|
33
|
-
onClickedOutside() {
|
|
34
|
-
if (this.firstInit) {
|
|
35
|
-
this.menuService.destroy();
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
this.firstInit = true;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
hide() {
|
|
42
|
-
this.menuService.destroy();
|
|
43
|
-
}
|
|
44
|
-
disabled(act) {
|
|
45
|
-
if (!act.disabled) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
if (typeof act.disabled === 'boolean') {
|
|
49
|
-
return act.disabled;
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
return act.disabled(act.data);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
selected(act) {
|
|
56
|
-
if (!act.selected) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
if (typeof act.selected === 'boolean') {
|
|
60
|
-
return act.selected;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
return act.selected(act.data);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
tooltipToShow(act) {
|
|
67
|
-
if (act.toolTipIfDisabled && !this.disabled(act))
|
|
68
|
-
return '';
|
|
69
|
-
return act.toolTip;
|
|
70
|
-
}
|
|
71
|
-
tooltipPosition(widthMoreRight) {
|
|
72
|
-
return widthMoreRight ? 'right' : 'left';
|
|
73
|
-
}
|
|
74
|
-
action(act) {
|
|
75
|
-
if (!this.disabled(act)) {
|
|
76
|
-
if (act.action) {
|
|
77
|
-
act.action(act.data);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.menuService.actionItem.next({ event: act.event || act.title || 'default', data: act.data });
|
|
81
|
-
}
|
|
82
|
-
this.hide();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
onActionIconClick($event, actionIcon, data) {
|
|
86
|
-
$event.stopPropagation();
|
|
87
|
-
if (!this.disabled(actionIcon)) {
|
|
88
|
-
actionIcon.action(data);
|
|
89
|
-
this.hide();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
DrDropdownComponent.decorators = [
|
|
94
|
-
{ type: Component, args: [{
|
|
95
|
-
selector: 'dr-dropdown',
|
|
96
|
-
template: "<div #menuContainer\
|
|
97
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
98
|
-
styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden}::ng-deep .dr-dropdown__container__item:hover>*>.dr-dropdown{visibility:visible}::ng-deep .dr-dropdown__tooltip>.default-content{max-width:300px;white-space:normal!important}.dr-dropdown{position:absolute;z-index:-1;top:0;left:0;width:auto}.dr-dropdown__container{display:flex;flex-direction:column;background:#fff;border-radius:4px;box-shadow:0 4px 8px 1px #00000040;padding:8px 0;overflow-y:auto;max-height:60vh}.dr-dropdown__container__item{display:flex;align-items:center;justify-content:flex-start;cursor:pointer;min-width:15rem;font-style:normal;font-weight:400;font-size:14px;line-height:24px;clear:both;width:100%;white-space:nowrap;padding:0 12px;height:36px;flex-shrink:0}.dr-dropdown__container__item:hover{background-color:#f9faff}.dr-dropdown__container__item:hover .showOnHover{visibility:visible}.dr-dropdown__container__item.item-selected{background:#F3F7FF}.dr-dropdown__container__item.item-disabled,.dr-dropdown__container__item.item-disabled i,.dr-dropdown__container__item.item-disabled .dr-dropdown__container__item__text{color:#bcbcbc}.dr-dropdown__container__item i:first-child{margin-right:8px}.dr-dropdown__container__item__text{margin-right:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dr-dropdown__container__item i,.dr-dropdown__container__item__text{color:#151b3f}.dr-dropdown__container__item i{color:#4e566c}.dr-dropdown__container__item i:hover{color:#4646ce}.dr-dropdown__container__item .showOnHover{visibility:hidden}.dr-dropdown.content-top{transform:translate(-50%,-100%)}.dr-dropdown.content-top-left{transform:translate(-100%,-100%)}.dr-dropdown.content-bottom{transform:translate(-50%,50%)}.dr-dropdown.content-bottom-left{transform:translate(-90%,35%)}.dr-dropdown.content-bottom-right{transform:translateY(15%)}.dr-dropdown.content-left{transform:translate(-100%)}.dr-dropdown.content-left-center{transform:translate(-100%,-50%)}.dr-dropdown.content-right{transform:translate(5%)}\n"]
|
|
99
|
-
},] }
|
|
100
|
-
];
|
|
101
|
-
DrDropdownComponent.ctorParameters = () => [
|
|
102
|
-
{ type: DrDropdownService },
|
|
103
|
-
{ type: ChangeDetectorRef }
|
|
104
|
-
];
|
|
105
|
-
DrDropdownComponent.propDecorators = {
|
|
106
|
-
viewMenu: [{ type: ViewChild, args: ['listMenu',] }],
|
|
107
|
-
menuContainer: [{ type: ViewChild, args: ['menuContainer',] }],
|
|
108
|
-
options: [{ type: Input }]
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { DrDropdownService } from './dr-dropdown.service';
|
|
3
|
+
export class DrDropdownComponent {
|
|
4
|
+
constructor(menuService, cdr) {
|
|
5
|
+
this.menuService = menuService;
|
|
6
|
+
this.cdr = cdr;
|
|
7
|
+
this.position = 'left';
|
|
8
|
+
}
|
|
9
|
+
set options(data) {
|
|
10
|
+
if (data) {
|
|
11
|
+
this.option = data.option;
|
|
12
|
+
this.position = data.position;
|
|
13
|
+
this.drDropdownInHover = data.drDropdownInHover;
|
|
14
|
+
this.containerClass = data.class;
|
|
15
|
+
this.list = data.list || [];
|
|
16
|
+
this.list.forEach(item => {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {
|
|
19
|
+
item.childOptions = {
|
|
20
|
+
list: item.children,
|
|
21
|
+
class: ((_b = item === null || item === void 0 ? void 0 : item.childOptions) === null || _b === void 0 ? void 0 : _b.class) || '',
|
|
22
|
+
position: 'child'
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
this.cdr.markForCheck();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
onMouseLeave() {
|
|
30
|
+
if (this.drDropdownInHover)
|
|
31
|
+
this.menuService.destroy();
|
|
32
|
+
}
|
|
33
|
+
onClickedOutside() {
|
|
34
|
+
if (this.firstInit) {
|
|
35
|
+
this.menuService.destroy();
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.firstInit = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
hide() {
|
|
42
|
+
this.menuService.destroy();
|
|
43
|
+
}
|
|
44
|
+
disabled(act) {
|
|
45
|
+
if (!act.disabled) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (typeof act.disabled === 'boolean') {
|
|
49
|
+
return act.disabled;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return act.disabled(act.data);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
selected(act) {
|
|
56
|
+
if (!act.selected) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (typeof act.selected === 'boolean') {
|
|
60
|
+
return act.selected;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return act.selected(act.data);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
tooltipToShow(act) {
|
|
67
|
+
if (act.toolTipIfDisabled && !this.disabled(act))
|
|
68
|
+
return '';
|
|
69
|
+
return act.toolTip;
|
|
70
|
+
}
|
|
71
|
+
tooltipPosition(widthMoreRight) {
|
|
72
|
+
return widthMoreRight ? 'right' : 'left';
|
|
73
|
+
}
|
|
74
|
+
action(act) {
|
|
75
|
+
if (!this.disabled(act)) {
|
|
76
|
+
if (act.action) {
|
|
77
|
+
act.action(act.data);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.menuService.actionItem.next({ event: act.event || act.title || 'default', data: act.data });
|
|
81
|
+
}
|
|
82
|
+
this.hide();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
onActionIconClick($event, actionIcon, data) {
|
|
86
|
+
$event.stopPropagation();
|
|
87
|
+
if (!this.disabled(actionIcon)) {
|
|
88
|
+
actionIcon.action(data);
|
|
89
|
+
this.hide();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
DrDropdownComponent.decorators = [
|
|
94
|
+
{ type: Component, args: [{
|
|
95
|
+
selector: 'dr-dropdown',
|
|
96
|
+
template: "<div #menuContainer\n (mouseleave)=\"onMouseLeave()\"\n (clickOutside)=\"onClickedOutside()\"\n [drDropdownPosition]=\"option\"\n #dropdownPosition=\"dropdownPosition\"\n [position]=\"position\"\n [class]=\"containerClass\"\n class=\"dr-dropdown\">\n <div class=\"dr-dropdown__container\">\n <div *ngFor=\"let act of list | drDropdownItemShowPipe\"\n (click)=\"action(act)\"\n [drTooltip]=\"tooltipToShow(act)\"\n [drTooltipPosition]=\"tooltipPosition(dropdownPosition.widthMoreRight)\"\n [drTooltipOptions]=\"{ withoutArrow: true }\"\n [drTooltipClass]=\"'dr-dropdown__tooltip'\"\n class=\"dr-dropdown__container__item\"\n [class.item-disabled]=\"disabled(act)\"\n [class.item-selected]=\"selected(act)\">\n <i *ngIf=\"act.icon\" [class]=\"act.icon\"></i>\n <span class=\"dr-dropdown__container__item__text\">{{act.title}}</span>\n <i *ngFor=\"let actionIcon of act.actionIcons\"\n [class]=\"actionIcon.icon\"\n [class.showOnHover]=\"actionIcon.showOnHover\"\n (click)=\"onActionIconClick($event, actionIcon, act.data)\"></i>\n <i *ngIf=\"act.children?.length\" class=\"dr-icon-arrow-right\"></i>\n <dr-dropdown *ngIf=\"act.children?.length\" [options]=\"act.childOptions\"></dr-dropdown>\n </div>\n </div>\n</div>\n",
|
|
97
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
98
|
+
styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden}::ng-deep .dr-dropdown__container__item:hover>*>.dr-dropdown{visibility:visible}::ng-deep .dr-dropdown__tooltip>.default-content{max-width:300px;white-space:normal!important}.dr-dropdown{position:absolute;z-index:-1;top:0;left:0;width:auto}.dr-dropdown__container{display:flex;flex-direction:column;background:#fff;border-radius:4px;box-shadow:0 4px 8px 1px #00000040;padding:8px 0;overflow-y:auto;max-height:60vh}.dr-dropdown__container__item{display:flex;align-items:center;justify-content:flex-start;cursor:pointer;min-width:15rem;font-style:normal;font-weight:400;font-size:14px;line-height:24px;clear:both;width:100%;white-space:nowrap;padding:0 12px;height:36px;flex-shrink:0}.dr-dropdown__container__item:hover{background-color:#f9faff}.dr-dropdown__container__item:hover .showOnHover{visibility:visible}.dr-dropdown__container__item.item-selected{background:#F3F7FF}.dr-dropdown__container__item.item-disabled,.dr-dropdown__container__item.item-disabled i,.dr-dropdown__container__item.item-disabled .dr-dropdown__container__item__text{color:#bcbcbc}.dr-dropdown__container__item i:first-child{margin-right:8px}.dr-dropdown__container__item__text{margin-right:auto;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dr-dropdown__container__item i,.dr-dropdown__container__item__text{color:#151b3f}.dr-dropdown__container__item i{color:#4e566c}.dr-dropdown__container__item i:hover{color:#4646ce}.dr-dropdown__container__item .showOnHover{visibility:hidden}.dr-dropdown.content-top{transform:translate(-50%,-100%)}.dr-dropdown.content-top-left{transform:translate(-100%,-100%)}.dr-dropdown.content-bottom{transform:translate(-50%,50%)}.dr-dropdown.content-bottom-left{transform:translate(-90%,35%)}.dr-dropdown.content-bottom-right{transform:translateY(15%)}.dr-dropdown.content-left{transform:translate(-100%)}.dr-dropdown.content-left-center{transform:translate(-100%,-50%)}.dr-dropdown.content-right{transform:translate(5%)}\n"]
|
|
99
|
+
},] }
|
|
100
|
+
];
|
|
101
|
+
DrDropdownComponent.ctorParameters = () => [
|
|
102
|
+
{ type: DrDropdownService },
|
|
103
|
+
{ type: ChangeDetectorRef }
|
|
104
|
+
];
|
|
105
|
+
DrDropdownComponent.propDecorators = {
|
|
106
|
+
viewMenu: [{ type: ViewChild, args: ['listMenu',] }],
|
|
107
|
+
menuContainer: [{ type: ViewChild, args: ['menuContainer',] }],
|
|
108
|
+
options: [{ type: Input }]
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBVzlCLFlBQXNCLFdBQThCLEVBQVUsR0FBc0I7UUFBOUQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFOcEYsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFPcEQsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLElBQW1DO1FBQ3RELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQ2hELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFOztnQkFDdkIsSUFBSSxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sRUFBRTtvQkFDekIsSUFBSSxDQUFDLFlBQVksR0FBRzt3QkFDbEIsSUFBSSxFQUFFLElBQUksQ0FB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SCxDQUFDOzs7WUF4R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2Qiw4N0NBQTJDO2dCQUUzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVBRLGlCQUFpQjtZQUZRLGlCQUFpQjs7O3VCQVloRCxTQUFTLFNBQUMsVUFBVTs0QkFDcEIsU0FBUyxTQUFDLGVBQWU7c0JBV3pCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURyb3Bkb3duSXRlbSwgRWxQb3NpdGlvbiwgSURyb3Bkb3duQWN0aW9uSWNvbiwgSURyb3Bkb3duLCBJRHJvcGRvd25Db29yZGluYXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHItZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kci1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEckRyb3Bkb3duQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdsaXN0TWVudScpIHZpZXdNZW51OiBIVE1MRWxlbWVudDtcbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lcicpIG1lbnVDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBvcHRpb246IGFueTtcbiAgcG9zaXRpb246IEVsUG9zaXRpb24gfCBJRHJvcGRvd25Db29yZGluYXRlID0gJ2xlZnQnO1xuICBkckRyb3Bkb3duSW5Ib3ZlcjogYm9vbGVhbjtcbiAgbGlzdDogSURyb3Bkb3duSXRlbTx1bmtub3duPltdO1xuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICBwcml2YXRlIGZpcnN0SW5pdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IERyRHJvcGRvd25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKGRhdGE6IElEcm9wZG93bjxJRHJvcGRvd25JdGVtPGFueT4+KSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMub3B0aW9uID0gZGF0YS5vcHRpb247XG4gICAgICB0aGlzLnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbjtcbiAgICAgIHRoaXMuZHJEcm9wZG93bkluSG92ZXIgPSBkYXRhLmRyRHJvcGRvd25JbkhvdmVyO1xuICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9IGRhdGEuY2xhc3M7XG4gICAgICB0aGlzLmxpc3QgPSBkYXRhLmxpc3QgfHwgW107XG4gICAgICB0aGlzLmxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGl0ZW0uY2hpbGRPcHRpb25zID0ge1xuICAgICAgICAgICAgbGlzdDogaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICAgIGNsYXNzOiBpdGVtPy5jaGlsZE9wdGlvbnM/LmNsYXNzIHx8ICcnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdjaGlsZCdcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW91c2VMZWF2ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kckRyb3Bkb3duSW5Ib3ZlcikgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBvbkNsaWNrZWRPdXRzaWRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpcnN0SW5pdCkge1xuICAgICAgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlyc3RJbml0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMubWVudVNlcnZpY2UuZGVzdHJveSgpO1xuICB9XG5cbiAgZGlzYWJsZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+IHwgSURyb3Bkb3duQWN0aW9uSWNvbjxhbnk+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhY3QuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhY3QuZGlzYWJsZWQgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZChhY3QuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0ZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgaWYgKCFhY3Quc2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhY3Quc2VsZWN0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZChhY3QuZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdG9vbHRpcFRvU2hvdyhhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4pOiBzdHJpbmcge1xuICAgIGlmIChhY3QudG9vbFRpcElmRGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWQoYWN0KSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBhY3QudG9vbFRpcDtcbiAgfVxuXG4gIHRvb2x0aXBQb3NpdGlvbih3aWR0aE1vcmVSaWdodDogYm9vbGVhbikge1xuICAgIHJldHVybiB3aWR0aE1vcmVSaWdodCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gIH1cblxuICBhY3Rpb24oYWN0OiBJRHJvcGRvd25JdGVtPGFueT4pIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0KSkge1xuICAgICAgaWYgKGFjdC5hY3Rpb24pIHtcbiAgICAgICAgYWN0LmFjdGlvbihhY3QuZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmFjdGlvbkl0ZW0ubmV4dCh7ZXZlbnQ6IGFjdC5ldmVudCB8fCBhY3QudGl0bGUgfHwgJ2RlZmF1bHQnLCBkYXRhOiBhY3QuZGF0YX0pO1xuICAgICAgfVxuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25BY3Rpb25JY29uQ2xpY2soJGV2ZW50LCBhY3Rpb25JY29uOiBJRHJvcGRvd25BY3Rpb25JY29uPGFueT4sIGRhdGE6IGFueSkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0aW9uSWNvbikpIHtcbiAgICAgIGFjdGlvbkljb24uYWN0aW9uKGRhdGEpO1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==
|