@datarailsshared/datarailsshared 1.3.27 → 1.3.30

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.
Files changed (117) hide show
  1. package/_datarailsshared.styles.css +3 -3
  2. package/assets/styles/_styles.scss +2 -2
  3. package/assets/styles/img/default-avatar.svg +5 -5
  4. package/bundles/datarailsshared-datarailsshared.umd.js +3346 -3307
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  6. package/datarailsshared-datarailsshared-1.3.30.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +7 -7
  8. package/datarailsshared-datarailsshared.metadata.json +1 -1
  9. package/esm2015/datarailsshared-datarailsshared.js +7 -7
  10. package/esm2015/lib/date-tags/date-tag.component.js +70 -70
  11. package/esm2015/lib/date-tags/date-tag.module.js +50 -50
  12. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +81 -81
  13. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +143 -143
  14. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +87 -87
  15. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +101 -101
  16. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +124 -124
  17. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +93 -93
  18. package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
  19. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
  20. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
  21. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
  22. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +89 -89
  23. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +103 -103
  24. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +75 -75
  25. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
  26. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
  27. package/esm2015/lib/dr-inputs/button/button.component.js +79 -44
  28. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
  29. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
  30. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +131 -131
  31. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +166 -166
  32. package/esm2015/lib/dr-inputs/dr-inputs.module.js +43 -43
  33. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +87 -87
  34. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
  35. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +52 -52
  36. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
  37. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
  38. package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
  39. package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
  40. package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
  41. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
  42. package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
  43. package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
  44. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
  45. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
  46. package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
  47. package/esm2015/lib/dr-tabs/dr-tabs.component.js +27 -27
  48. package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
  49. package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
  50. package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
  51. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
  52. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
  53. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
  54. package/esm2015/lib/list-tags/list-tag.component.js +41 -41
  55. package/esm2015/lib/list-tags/list-tag.module.js +29 -29
  56. package/esm2015/lib/models/constants.js +97 -97
  57. package/esm2015/lib/models/datePicker.js +37 -37
  58. package/esm2015/lib/models/dropdown.js +2 -2
  59. package/esm2015/lib/models/popover.js +27 -27
  60. package/esm2015/lib/models/serverTags.js +2 -2
  61. package/esm2015/public-api.js +50 -50
  62. package/fesm2015/datarailsshared-datarailsshared.js +2778 -2743
  63. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  64. package/lib/date-tags/date-tag.component.d.ts +27 -27
  65. package/lib/date-tags/date-tag.module.d.ts +4 -4
  66. package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
  67. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
  68. package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
  69. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
  70. package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
  71. package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
  72. package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
  73. package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
  74. package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
  75. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
  76. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +11 -11
  77. package/lib/dr-dropdown/dr-dropdown.component.d.ts +23 -23
  78. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +19 -19
  79. package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
  80. package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
  81. package/lib/dr-inputs/button/button.component.d.ts +20 -11
  82. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
  83. package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
  84. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +28 -28
  85. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +53 -53
  86. package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
  87. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +36 -36
  88. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
  89. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +17 -17
  90. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
  91. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
  92. package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
  93. package/lib/dr-popover/dr-popover.component.d.ts +26 -26
  94. package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
  95. package/lib/dr-popover/dr-popover.module.d.ts +2 -2
  96. package/lib/dr-popover/dr-popover.service.d.ts +17 -17
  97. package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
  98. package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
  99. package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
  100. package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
  101. package/lib/dr-tabs/dr-tabs.component.d.ts +10 -10
  102. package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
  103. package/lib/dr-tags/dr-tag.component.d.ts +15 -15
  104. package/lib/dr-tags/dr-tag.module.d.ts +2 -2
  105. package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
  106. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
  107. package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
  108. package/lib/list-tags/list-tag.component.d.ts +14 -14
  109. package/lib/list-tags/list-tag.module.d.ts +2 -2
  110. package/lib/models/constants.d.ts +87 -87
  111. package/lib/models/datePicker.d.ts +21 -21
  112. package/lib/models/dropdown.d.ts +47 -47
  113. package/lib/models/popover.d.ts +32 -32
  114. package/lib/models/serverTags.d.ts +28 -28
  115. package/package.json +1 -1
  116. package/public-api.d.ts +49 -49
  117. package/datarailsshared-datarailsshared-1.3.27.tgz +0 -0
@@ -1,89 +1,89 @@
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
- if (heightMoreWindowBottom) {
39
- this.position = 'top';
40
- }
41
- if (heightMoreWindowBottom && widthMoreWindowRight && !heightMoreWindowTop || this.position === 'top-left') {
42
- this.position = 'top-left';
43
- this.renderer.setStyle(this.el.nativeElement, 'transform', 'translate(-100%, calc(-100% + ' + this.drDropdownPosition.height + 'px))');
44
- }
45
- if (heightMoreWindowTop && heightMoreWindowBottom) {
46
- this.position = 'left-center';
47
- }
48
- if (this.position === 'bottom-left') {
49
- this.renderer.setStyle(this.el.nativeElement, 'transform', `translate(calc(-100% + ${this.drDropdownPosition.width}px), ${this.drDropdownPosition.height + 8}px)`);
50
- }
51
- const className = this.position === 'top' ? 'content-top'
52
- : this.position === 'top-left' ? 'content-top-left'
53
- : this.position === 'bottom' ? 'content-bottom'
54
- : this.position === 'bottom-left' ? 'content-bottom-left'
55
- : this.position === 'left' ? 'content-left'
56
- : this.position === 'left-center' ? 'content-left-center'
57
- : this.position === 'right' ? 'content-right'
58
- : this.position === 'bottom-right' ? 'content-bottom-right' : '';
59
- this.renderer.addClass(this.el.nativeElement, className);
60
- this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
61
- }
62
- else {
63
- const defaultChildPadding = 3;
64
- const widthMoreWindowRight = window.innerWidth - this.position.clientX - this.el.nativeElement.offsetWidth - defaultPadding;
65
- const widthMoreWindowBottom = window.innerHeight - this.position.clientY - this.el.nativeElement.offsetHeight - defaultPadding;
66
- const calculatedHorizantallyPos = widthMoreWindowRight < 0
67
- ? -this.position.x + -defaultChildPadding
68
- : this.position.x + defaultChildPadding + xDifference;
69
- const deltaHeight = widthMoreWindowBottom < 0 ? widthMoreWindowBottom : defaultDelta;
70
- this.renderer.setStyle(this.el.nativeElement, 'top', (this.position.y + deltaHeight) + 'px');
71
- this.renderer.setStyle(this.el.nativeElement, 'left', (calculatedHorizantallyPos) + 'px');
72
- this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
73
- }
74
- }
75
- }
76
- DrDropdownPositionDirective.decorators = [
77
- { type: Directive, args: [{
78
- selector: '[drDropdownPosition]'
79
- },] }
80
- ];
81
- DrDropdownPositionDirective.ctorParameters = () => [
82
- { type: ElementRef },
83
- { type: Renderer2 }
84
- ];
85
- DrDropdownPositionDirective.propDecorators = {
86
- drDropdownPosition: [{ type: Input }],
87
- position: [{ type: Input }]
88
- };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNaEYsTUFBTSxPQUFPLDJCQUEyQjtJQUtwQyxZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGdEQsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFHN0QsQ0FBQztJQUVELFFBQVE7UUFDSixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUMzQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNoSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFx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SW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElEcm9wZG93bkNvb3JkaW5hdGUsIEVsUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tkckRyb3Bkb3duUG9zaXRpb25dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93blBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBASW5wdXQoKSBkckRyb3Bkb3duUG9zaXRpb247XHJcbiAgICBASW5wdXQoKSBwb3NpdGlvbjogRWxQb3NpdGlvbiB8IElEcm9wZG93bkNvb3JkaW5hdGUgPSAnbGVmdCc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uLmJpbmQodGhpcyksIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGN1bGF0ZVBvc2l0aW9uKCkge1xyXG4gICAgICAgIGxldCB4RGlmZmVyZW5jZSA9IDA7XHJcbiAgICAgICAgbGV0IGRlZmF1bHREZWx0YSA9IDEwO1xyXG4gICAgICAgIGxldCBkZWZhdWx0UGFkZGluZyA9IDA7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnY2hpbGQnKSB7XHJcbiAgICAgICAgICAgIGRlZmF1bHREZWx0YSA9IDA7XHJcbiAgICAgICAgICAgIGRlZmF1bHRQYWRkaW5nID0gMTA7XHJcbiAgICAgICAgICAgIHhEaWZmZXJlbmNlID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCAtIHRoaXMuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xyXG4gICAgICAgICAgICAgICAgeDogdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLFxyXG4gICAgICAgICAgICAgICAgeTogdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRUb3AgLSA5LFxyXG4gICAgICAgICAgICAgICAgY2xpZW50WDogcGFyZW50UmVjdC54ICsgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICAgICAgICAgIGNsaWVudFk6IHBhcmVudFJlY3QueVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvc2l0aW9uID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RvcCcsXHJcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSAtIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCArICdweCcgOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSArICdweCcpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2xlZnQnLFxyXG4gICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgP1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueCArIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLndpZHRoICsgJ3B4JyA6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICAgICAgICBjb25zdCBoZWlnaHRNb3JlV2luZG93Qm90dG9tID0gbWVudUhlaWdodCArIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnkgPiB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE1vcmVXaW5kb3dUb3AgPSBtZW51SGVpZ2h0IC0gdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSArIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCAvIDIgPiA0ODsgLy8gaGVhZGVyIGhlaWdodDtcclxuICAgICAgICAgICAgY29uc3Qgd2lkdGhNb3JlV2luZG93UmlnaHQgPSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgMjUwID4gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICAgICAgICAgIGlmIChoZWlnaHRNb3JlV2luZG93Qm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gJ3RvcCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dCb3R0b20gJiYgd2lkdGhNb3JlV2luZG93UmlnaHQgJiYgIWhlaWdodE1vcmVXaW5kb3dUb3AgfHwgdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcC1sZWZ0Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AtbGVmdCc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgICAgICAgICAgICd0cmFuc2xhdGUoLTEwMCUsIGNhbGMoLTEwMCUgKyAnICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24uaGVpZ2h0ICsgJ3B4KSknKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9yZVdpbmRvd1RvcCAmJiBoZWlnaHRNb3JlV2luZG93Qm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gJ2xlZnQtY2VudGVyJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKGNhbGMoLTEwMCUgKyAkeyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi53aWR0aCB9cHgpLCAkeyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi5oZWlnaHQgKyA4IH1weClgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLnBvc2l0aW9uID09PSAndG9wJyA/ICdjb250ZW50LXRvcCdcclxuICAgICAgICAgICAgICA6IHRoaXMucG9zaXRpb24gPT09ICd0b3AtbGVmdCcgPyAnY29udGVudC10b3AtbGVmdCdcclxuICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgPyAnY29udGVudC1ib3R0b20nXHJcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0JyA/ICdjb250ZW50LWJvdHRvbS1sZWZ0J1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQnID8gJ2NvbnRlbnQtbGVmdCdcclxuICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQtY2VudGVyJyA/ICdjb250ZW50LWxlZnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMucG9zaXRpb24gPT09ICdyaWdodCcgPyAnY29udGVudC1yaWdodCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMucG9zaXRpb24gPT09ICdib3R0b20tcmlnaHQnID8gJ2NvbnRlbnQtYm90dG9tLXJpZ2h0JyA6ICcnO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd6LWluZGV4JywgJzEwMDEwJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENoaWxkUGFkZGluZyA9IDM7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoTW9yZVdpbmRvd1JpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSB0aGlzLnBvc2l0aW9uLmNsaWVudFggLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSBkZWZhdWx0UGFkZGluZztcclxuICAgICAgICAgICAgY29uc3Qgd2lkdGhNb3JlV2luZG93Qm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gdGhpcy5wb3NpdGlvbi5jbGllbnRZIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAtIGRlZmF1bHRQYWRkaW5nO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZEhvcml6YW50YWxseVBvcyA9IHdpZHRoTW9yZVdpbmRvd1JpZ2h0IDwgMFxyXG4gICAgICAgICAgICAgID8gLXRoaXMucG9zaXRpb24ueCArIC1kZWZhdWx0Q2hpbGRQYWRkaW5nXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uLnggKyBkZWZhdWx0Q2hpbGRQYWRkaW5nICsgeERpZmZlcmVuY2U7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YUhlaWdodCA9IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA8IDAgPyB3aWR0aE1vcmVXaW5kb3dCb3R0b20gOiBkZWZhdWx0RGVsdGE7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RvcCcsICh0aGlzLnBvc2l0aW9uLnkgKyBkZWx0YUhlaWdodCkgKyAncHgnKTtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdsZWZ0JywgKGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MpICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsICcxMDAxMCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
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
+ if (heightMoreWindowBottom) {
39
+ this.position = 'top';
40
+ }
41
+ if (heightMoreWindowBottom && widthMoreWindowRight && !heightMoreWindowTop || this.position === 'top-left') {
42
+ this.position = 'top-left';
43
+ this.renderer.setStyle(this.el.nativeElement, 'transform', 'translate(-100%, calc(-100% + ' + this.drDropdownPosition.height + 'px))');
44
+ }
45
+ if (heightMoreWindowTop && heightMoreWindowBottom) {
46
+ this.position = 'left-center';
47
+ }
48
+ if (this.position === 'bottom-left') {
49
+ this.renderer.setStyle(this.el.nativeElement, 'transform', `translate(calc(-100% + ${this.drDropdownPosition.width}px), ${this.drDropdownPosition.height + 8}px)`);
50
+ }
51
+ const className = this.position === 'top' ? 'content-top'
52
+ : this.position === 'top-left' ? 'content-top-left'
53
+ : this.position === 'bottom' ? 'content-bottom'
54
+ : this.position === 'bottom-left' ? 'content-bottom-left'
55
+ : this.position === 'left' ? 'content-left'
56
+ : this.position === 'left-center' ? 'content-left-center'
57
+ : this.position === 'right' ? 'content-right'
58
+ : this.position === 'bottom-right' ? 'content-bottom-right' : '';
59
+ this.renderer.addClass(this.el.nativeElement, className);
60
+ this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
61
+ }
62
+ else {
63
+ const defaultChildPadding = 3;
64
+ const widthMoreWindowRight = window.innerWidth - this.position.clientX - this.el.nativeElement.offsetWidth - defaultPadding;
65
+ const widthMoreWindowBottom = window.innerHeight - this.position.clientY - this.el.nativeElement.offsetHeight - defaultPadding;
66
+ const calculatedHorizantallyPos = widthMoreWindowRight < 0
67
+ ? -this.position.x + -defaultChildPadding
68
+ : this.position.x + defaultChildPadding + xDifference;
69
+ const deltaHeight = widthMoreWindowBottom < 0 ? widthMoreWindowBottom : defaultDelta;
70
+ this.renderer.setStyle(this.el.nativeElement, 'top', (this.position.y + deltaHeight) + 'px');
71
+ this.renderer.setStyle(this.el.nativeElement, 'left', (calculatedHorizantallyPos) + 'px');
72
+ this.renderer.setStyle(this.el.nativeElement, 'z-index', '10010');
73
+ }
74
+ }
75
+ }
76
+ DrDropdownPositionDirective.decorators = [
77
+ { type: Directive, args: [{
78
+ selector: '[drDropdownPosition]'
79
+ },] }
80
+ ];
81
+ DrDropdownPositionDirective.ctorParameters = () => [
82
+ { type: ElementRef },
83
+ { type: Renderer2 }
84
+ ];
85
+ DrDropdownPositionDirective.propDecorators = {
86
+ drDropdownPosition: [{ type: Input }],
87
+ position: [{ type: Input }]
88
+ };
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNaEYsTUFBTSxPQUFPLDJCQUEyQjtJQUtwQyxZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFGdEQsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFHN0QsQ0FBQztJQUVELFFBQVE7UUFDSixVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUMzQixZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNoSCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHFCQUFx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SW5wdXQsIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRHJvcGRvd25Db29yZGluYXRlLCBFbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZHJEcm9wZG93blBvc2l0aW9uXSdcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93blBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIGRyRHJvcGRvd25Qb3NpdGlvbjtcbiAgICBASW5wdXQoKSBwb3NpdGlvbjogRWxQb3NpdGlvbiB8IElEcm9wZG93bkNvb3JkaW5hdGUgPSAnbGVmdCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uLmJpbmQodGhpcyksIDEpO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVBvc2l0aW9uKCkge1xuICAgICAgICBsZXQgeERpZmZlcmVuY2UgPSAwO1xuICAgICAgICBsZXQgZGVmYXVsdERlbHRhID0gMTA7XG4gICAgICAgIGxldCBkZWZhdWx0UGFkZGluZyA9IDA7XG5cbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdjaGlsZCcpIHtcbiAgICAgICAgICAgIGRlZmF1bHREZWx0YSA9IDA7XG4gICAgICAgICAgICBkZWZhdWx0UGFkZGluZyA9IDEwO1xuICAgICAgICAgICAgeERpZmZlcmVuY2UgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50UmVjdCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeDogdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIHk6IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQub2Zmc2V0VG9wIC0gOSxcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBwYXJlbnRSZWN0LnggKyB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoLFxuICAgICAgICAgICAgICAgIGNsaWVudFk6IHBhcmVudFJlY3QueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb3NpdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndG9wJyxcbiAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgP1xuICAgICAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLnkgLSB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi5oZWlnaHQgKyAncHgnIDpcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi55ICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2xlZnQnLFxuICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnID9cbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ud2lkdGggKyAncHgnIDpcbiAgICAgICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi54ICsgJ3B4Jyk7XG4gICAgICAgICAgICBjb25zdCBtZW51SGVpZ2h0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE1vcmVXaW5kb3dCb3R0b20gPSBtZW51SGVpZ2h0ICsgdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSA+IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGhlaWdodE1vcmVXaW5kb3dUb3AgPSBtZW51SGVpZ2h0IC0gdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueSArIHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCAvIDIgPiA0ODsgLy8gaGVhZGVyIGhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoTW9yZVdpbmRvd1JpZ2h0ID0gdGhpcy5kckRyb3Bkb3duUG9zaXRpb24ueCArIDI1MCA+IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dCb3R0b20pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gJ3RvcCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSAmJiB3aWR0aE1vcmVXaW5kb3dSaWdodCAmJiAhaGVpZ2h0TW9yZVdpbmRvd1RvcCB8fCB0aGlzLnBvc2l0aW9uID09PSAndG9wLWxlZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICd0b3AtbGVmdCc7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgICAgICAgJ3RyYW5zbGF0ZSgtMTAwJSwgY2FsYygtMTAwJSArICcgKyB0aGlzLmRyRHJvcGRvd25Qb3NpdGlvbi5oZWlnaHQgKyAncHgpKScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhlaWdodE1vcmVXaW5kb3dUb3AgJiYgaGVpZ2h0TW9yZVdpbmRvd0JvdHRvbSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb24gPSAnbGVmdC1jZW50ZXInO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoY2FsYygtMTAwJSArICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLndpZHRoIH1weCksICR7IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLmhlaWdodCArIDggfXB4KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcgPyAnY29udGVudC10b3AnXG4gICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ3RvcC1sZWZ0JyA/ICdjb250ZW50LXRvcC1sZWZ0J1xuICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScgPyAnY29udGVudC1ib3R0b20nXG4gICAgICAgICAgICAgICAgICA6IHRoaXMucG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcgPyAnY29udGVudC1ib3R0b20tbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcgPyAnY29udGVudC1sZWZ0J1xuICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2xlZnQtY2VudGVyJyA/ICdjb250ZW50LWxlZnQtY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnID8gJ2NvbnRlbnQtcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcgPyAnY29udGVudC1ib3R0b20tcmlnaHQnIDogJyc7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsICcxMDAxMCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdENoaWxkUGFkZGluZyA9IDM7XG4gICAgICAgICAgICBjb25zdCB3aWR0aE1vcmVXaW5kb3dSaWdodCA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy5wb3NpdGlvbi5jbGllbnRYIC0gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZGVmYXVsdFBhZGRpbmc7XG4gICAgICAgICAgICBjb25zdCB3aWR0aE1vcmVXaW5kb3dCb3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0aGlzLnBvc2l0aW9uLmNsaWVudFkgLSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gZGVmYXVsdFBhZGRpbmc7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRIb3JpemFudGFsbHlQb3MgPSB3aWR0aE1vcmVXaW5kb3dSaWdodCA8IDBcbiAgICAgICAgICAgICAgPyAtdGhpcy5wb3NpdGlvbi54ICsgLWRlZmF1bHRDaGlsZFBhZGRpbmdcbiAgICAgICAgICAgICAgOiB0aGlzLnBvc2l0aW9uLnggKyBkZWZhdWx0Q2hpbGRQYWRkaW5nICsgeERpZmZlcmVuY2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlbHRhSGVpZ2h0ID0gd2lkdGhNb3JlV2luZG93Qm90dG9tIDwgMCA/IHdpZHRoTW9yZVdpbmRvd0JvdHRvbSA6IGRlZmF1bHREZWx0YTtcblxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICd0b3AnLCAodGhpcy5wb3NpdGlvbi55ICsgZGVsdGFIZWlnaHQpICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2xlZnQnLCAoY2FsY3VsYXRlZEhvcml6YW50YWxseVBvcykgKyAncHgnKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnei1pbmRleCcsICcxMDAxMCcpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,103 +1,103 @@
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.containerClass = data.class;
14
- this.list = data.list || [];
15
- this.list.forEach(item => {
16
- var _a, _b;
17
- if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {
18
- item.childOptions = {
19
- list: item.children,
20
- class: ((_b = item === null || item === void 0 ? void 0 : item.childOptions) === null || _b === void 0 ? void 0 : _b.class) || '',
21
- position: 'child'
22
- };
23
- }
24
- });
25
- this.cdr.markForCheck();
26
- }
27
- }
28
- onClickedOutside() {
29
- if (this.firstInit) {
30
- this.menuService.destroy();
31
- }
32
- else {
33
- this.firstInit = true;
34
- }
35
- }
36
- hide() {
37
- this.menuService.destroy();
38
- }
39
- disabled(act) {
40
- if (!act.disabled) {
41
- return false;
42
- }
43
- if (typeof act.disabled === 'boolean') {
44
- return act.disabled;
45
- }
46
- else {
47
- return act.disabled(act.data);
48
- }
49
- }
50
- selected(act) {
51
- if (!act.selected) {
52
- return false;
53
- }
54
- if (typeof act.selected === 'boolean') {
55
- return act.selected;
56
- }
57
- else {
58
- return act.selected(act.data);
59
- }
60
- }
61
- tooltipToShow(act) {
62
- if (act.toolTipIfDisabled || this.disabled(act) || !act.toolTip) {
63
- return '';
64
- }
65
- return act.toolTip ? act.toolTip : act.title;
66
- }
67
- action(act) {
68
- if (!this.disabled(act)) {
69
- if (act.action) {
70
- act.action(act.data);
71
- }
72
- else {
73
- this.menuService.actionItem.next({ event: act.event || act.title || 'default', data: act.data });
74
- }
75
- this.hide();
76
- }
77
- }
78
- onActionIconClick($event, actionIcon, data) {
79
- $event.stopPropagation();
80
- if (!this.disabled(actionIcon)) {
81
- actionIcon.action(data);
82
- this.hide();
83
- }
84
- }
85
- }
86
- DrDropdownComponent.decorators = [
87
- { type: Component, args: [{
88
- selector: 'dr-dropdown',
89
- template: "<div #menuContainer\r\n (clickOutside)=\"onClickedOutside()\"\r\n [drDropdownPosition]=\"option\"\r\n [position]=\"position\"\r\n [class]=\"containerClass\"\r\n class=\"dr-dropdown\">\r\n <div class=\"dr-dropdown__container\">\r\n <div *ngFor=\"let act of list | drDropdownItemShowPipe\"\r\n (click)=\"action(act)\"\r\n [drTooltip]=\"tooltipToShow(act)\"\r\n [drTooltipPosition]=\"'top'\"\r\n [drTooltipOptions]=\"{ withoutArrow: true }\"\r\n class=\"dr-dropdown__container__item\"\r\n [class.item-disabled]=\"disabled(act)\"\r\n [class.item-selected]=\"selected(act)\">\r\n <i *ngIf=\"act.icon\" [class]=\"act.icon\"></i>\r\n <span class=\"dr-dropdown__container__item__text\">{{act.title}}</span>\r\n <i *ngFor=\"let actionIcon of act.actionIcons\"\r\n [class]=\"actionIcon.icon\"\r\n [class.showOnHover]=\"actionIcon.showOnHover\"\r\n (click)=\"onActionIconClick($event, actionIcon, act.data)\"></i>\r\n <i *ngIf=\"act.children?.length\" class=\"dr-icon-arrow-right\"></i>\r\n <dr-dropdown *ngIf=\"act.children?.length\" [options]=\"act.childOptions\"></dr-dropdown>\r\n </div>\r\n </div>\r\n</div>\r\n",
90
- changeDetection: ChangeDetectionStrategy.OnPush,
91
- styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden}::ng-deep .dr-dropdown__container__item:hover .dr-dropdown{visibility:visible}.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:#f6f7f8}.dr-dropdown__container__item:hover .showOnHover{visibility:visible}.dr-dropdown__container__item.item-selected{background:#F3F7FF}.dr-dropdown__container__item.item-disabled{color:#bcbcbc;pointer-events:none}.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 .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(45%)}.dr-dropdown.content-left{transform:translate(-100%)}.dr-dropdown.content-left-center{transform:translate(-100%,-50%)}.dr-dropdown.content-right{transform:translate(5%)}\n"]
92
- },] }
93
- ];
94
- DrDropdownComponent.ctorParameters = () => [
95
- { type: DrDropdownService },
96
- { type: ChangeDetectorRef }
97
- ];
98
- DrDropdownComponent.propDecorators = {
99
- viewMenu: [{ type: ViewChild, args: ['listMenu',] }],
100
- menuContainer: [{ type: ViewChild, args: ['menuContainer',] }],
101
- options: [{ type: Input }]
102
- };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCLFlBQXNCLFdBQThCLEVBQVUsR0FBc0I7UUFBOUQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFMcEYsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFNcEQsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLElBQW1DO1FBQ3RELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxNQUFNLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUc7d0JBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDbkIsS0FBSyxFQUFFLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1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LFNBQUMsVUFBVTs0QkFDcEIsU0FBUyxTQUFDLGVBQWU7c0JBVXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtLCBFbFBvc2l0aW9uLCBJRHJvcGRvd25BY3Rpb25JY29uLCBJRHJvcGRvd24sIElEcm9wZG93bkNvb3JkaW5hdGUgfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBEckRyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHItZHJvcGRvd24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RyLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25Db21wb25lbnQge1xyXG5cclxuICBAVmlld0NoaWxkKCdsaXN0TWVudScpIHZpZXdNZW51OiBIVE1MRWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyJykgbWVudUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgcG9zaXRpb246IEVsUG9zaXRpb24gfCBJRHJvcGRvd25Db29yZGluYXRlID0gJ2xlZnQnO1xyXG4gIGxpc3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj5bXTtcclxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xyXG4gIHByaXZhdGUgZmlyc3RJbml0OiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IERyRHJvcGRvd25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKGRhdGE6IElEcm9wZG93bjxJRHJvcGRvd25JdGVtPGFueT4+KSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLm9wdGlvbiA9IGRhdGEub3B0aW9uO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbjtcclxuICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9IGRhdGEuY2xhc3M7XHJcbiAgICAgIHRoaXMubGlzdCA9IGRhdGEubGlzdCB8fCBbXTtcclxuICAgICAgdGhpcy5saXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgaXRlbS5jaGlsZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGxpc3Q6IGl0ZW0uY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIGNsYXNzOiBpdGVtPy5jaGlsZE9wdGlvbnM/LmNsYXNzIHx8ICcnLFxyXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2NoaWxkJ1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tlZE91dHNpZGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maXJzdEluaXQpIHtcclxuICAgICAgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpcnN0SW5pdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlZChhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4gfCBJRHJvcGRvd25BY3Rpb25JY29uPGFueT4pOiBib29sZWFuIHtcclxuICAgIGlmICghYWN0LmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgYWN0LmRpc2FibGVkID09PSAnYm9vbGVhbicpIHtcclxuICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhY3QuZGlzYWJsZWQoYWN0LmRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWFjdC5zZWxlY3RlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGFjdC5zZWxlY3RlZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBhY3Quc2VsZWN0ZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYWN0LnNlbGVjdGVkKGFjdC5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvb2x0aXBUb1Nob3coYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogc3RyaW5nIHtcclxuICAgIGlmIChhY3QudG9vbFRpcElmRGlzYWJsZWQgfHwgdGhpcy5kaXNhYmxlZChhY3QpIHx8ICFhY3QudG9vbFRpcCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFjdC50b29sVGlwID8gYWN0LnRvb2xUaXAgOiBhY3QudGl0bGU7XHJcbiAgfVxyXG5cclxuICBhY3Rpb24oYWN0OiBJRHJvcGRvd25JdGVtPGFueT4pIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZChhY3QpKSB7XHJcbiAgICAgIGlmIChhY3QuYWN0aW9uKSB7XHJcbiAgICAgICAgYWN0LmFjdGlvbihhY3QuZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5hY3Rpb25JdGVtLm5leHQoe2V2ZW50OiBhY3QuZXZlbnQgfHwgYWN0LnRpdGxlIHx8ICdkZWZhdWx0JywgZGF0YTogYWN0LmRhdGF9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQWN0aW9uSWNvbkNsaWNrKCRldmVudCwgYWN0aW9uSWNvbjogSURyb3Bkb3duQWN0aW9uSWNvbjxhbnk+LCBkYXRhOiBhbnkpIHtcclxuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZChhY3Rpb25JY29uKSkge1xyXG4gICAgICBhY3Rpb25JY29uLmFjdGlvbihkYXRhKTtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
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.containerClass = data.class;
14
+ this.list = data.list || [];
15
+ this.list.forEach(item => {
16
+ var _a, _b;
17
+ if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) {
18
+ item.childOptions = {
19
+ list: item.children,
20
+ class: ((_b = item === null || item === void 0 ? void 0 : item.childOptions) === null || _b === void 0 ? void 0 : _b.class) || '',
21
+ position: 'child'
22
+ };
23
+ }
24
+ });
25
+ this.cdr.markForCheck();
26
+ }
27
+ }
28
+ onClickedOutside() {
29
+ if (this.firstInit) {
30
+ this.menuService.destroy();
31
+ }
32
+ else {
33
+ this.firstInit = true;
34
+ }
35
+ }
36
+ hide() {
37
+ this.menuService.destroy();
38
+ }
39
+ disabled(act) {
40
+ if (!act.disabled) {
41
+ return false;
42
+ }
43
+ if (typeof act.disabled === 'boolean') {
44
+ return act.disabled;
45
+ }
46
+ else {
47
+ return act.disabled(act.data);
48
+ }
49
+ }
50
+ selected(act) {
51
+ if (!act.selected) {
52
+ return false;
53
+ }
54
+ if (typeof act.selected === 'boolean') {
55
+ return act.selected;
56
+ }
57
+ else {
58
+ return act.selected(act.data);
59
+ }
60
+ }
61
+ tooltipToShow(act) {
62
+ if (act.toolTipIfDisabled || this.disabled(act) || !act.toolTip) {
63
+ return '';
64
+ }
65
+ return act.toolTip ? act.toolTip : act.title;
66
+ }
67
+ action(act) {
68
+ if (!this.disabled(act)) {
69
+ if (act.action) {
70
+ act.action(act.data);
71
+ }
72
+ else {
73
+ this.menuService.actionItem.next({ event: act.event || act.title || 'default', data: act.data });
74
+ }
75
+ this.hide();
76
+ }
77
+ }
78
+ onActionIconClick($event, actionIcon, data) {
79
+ $event.stopPropagation();
80
+ if (!this.disabled(actionIcon)) {
81
+ actionIcon.action(data);
82
+ this.hide();
83
+ }
84
+ }
85
+ }
86
+ DrDropdownComponent.decorators = [
87
+ { type: Component, args: [{
88
+ selector: 'dr-dropdown',
89
+ template: "<div #menuContainer\n (clickOutside)=\"onClickedOutside()\"\n [drDropdownPosition]=\"option\"\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]=\"'top'\"\n [drTooltipOptions]=\"{ withoutArrow: true }\"\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",
90
+ changeDetection: ChangeDetectionStrategy.OnPush,
91
+ styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden}::ng-deep .dr-dropdown__container__item:hover .dr-dropdown{visibility:visible}.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:#f6f7f8}.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;pointer-events:none}.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 .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(45%)}.dr-dropdown.content-left{transform:translate(-100%)}.dr-dropdown.content-left-center{transform:translate(-100%,-50%)}.dr-dropdown.content-right{transform:translate(5%)}\n"]
92
+ },] }
93
+ ];
94
+ DrDropdownComponent.ctorParameters = () => [
95
+ { type: DrDropdownService },
96
+ { type: ChangeDetectorRef }
97
+ ];
98
+ DrDropdownComponent.propDecorators = {
99
+ viewMenu: [{ type: ViewChild, args: ['listMenu',] }],
100
+ menuContainer: [{ type: ViewChild, args: ['menuContainer',] }],
101
+ options: [{ type: Input }]
102
+ };
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVExRCxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCLFlBQXNCLFdBQThCLEVBQVUsR0FBc0I7UUFBOUQsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFMcEYsYUFBUSxHQUFxQyxNQUFNLENBQUM7SUFNcEQsQ0FBQztJQUVELElBQWEsT0FBTyxDQUFDLElBQW1DO1FBQ3RELElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxNQUFNLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUc7d0JBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDbkIsS0FBSyxFQUFFLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1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LFNBQUMsVUFBVTs0QkFDcEIsU0FBUyxTQUFDLGVBQWU7c0JBVXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURyb3Bkb3duSXRlbSwgRWxQb3NpdGlvbiwgSURyb3Bkb3duQWN0aW9uSWNvbiwgSURyb3Bkb3duLCBJRHJvcGRvd25Db29yZGluYXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHItZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kci1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEckRyb3Bkb3duQ29tcG9uZW50IHtcblxuICBAVmlld0NoaWxkKCdsaXN0TWVudScpIHZpZXdNZW51OiBIVE1MRWxlbWVudDtcbiAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lcicpIG1lbnVDb250YWluZXI6IEhUTUxFbGVtZW50O1xuICBvcHRpb246IGFueTtcbiAgcG9zaXRpb246IEVsUG9zaXRpb24gfCBJRHJvcGRvd25Db29yZGluYXRlID0gJ2xlZnQnO1xuICBsaXN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+W107XG4gIGNvbnRhaW5lckNsYXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlyc3RJbml0OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBtZW51U2VydmljZTogRHJEcm9wZG93blNlcnZpY2UsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgQElucHV0KCkgc2V0IG9wdGlvbnMoZGF0YTogSURyb3Bkb3duPElEcm9wZG93bkl0ZW08YW55Pj4pIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgdGhpcy5vcHRpb24gPSBkYXRhLm9wdGlvbjtcbiAgICAgIHRoaXMucG9zaXRpb24gPSBkYXRhLnBvc2l0aW9uO1xuICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9IGRhdGEuY2xhc3M7XG4gICAgICB0aGlzLmxpc3QgPSBkYXRhLmxpc3QgfHwgW107XG4gICAgICB0aGlzLmxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGl0ZW0uY2hpbGRPcHRpb25zID0ge1xuICAgICAgICAgICAgbGlzdDogaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICAgIGNsYXNzOiBpdGVtPy5jaGlsZE9wdGlvbnM/LmNsYXNzIHx8ICcnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdjaGlsZCdcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tlZE91dHNpZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlyc3RJbml0KSB7XG4gICAgICB0aGlzLm1lbnVTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maXJzdEluaXQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGhpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XG4gIH1cblxuICBkaXNhYmxlZChhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4gfCBJRHJvcGRvd25BY3Rpb25JY29uPGFueT4pOiBib29sZWFuIHtcbiAgICBpZiAoIWFjdC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFjdC5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gYWN0LmRpc2FibGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWN0LmRpc2FibGVkKGFjdC5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RlZChhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4pOiBib29sZWFuIHtcbiAgICBpZiAoIWFjdC5zZWxlY3RlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFjdC5zZWxlY3RlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gYWN0LnNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWN0LnNlbGVjdGVkKGFjdC5kYXRhKTtcbiAgICB9XG4gIH1cblxuICB0b29sdGlwVG9TaG93KGFjdDogSURyb3Bkb3duSXRlbTx1bmtub3duPik6IHN0cmluZyB7XG4gICAgaWYgKGFjdC50b29sVGlwSWZEaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKGFjdCkgfHwgIWFjdC50b29sVGlwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdC50b29sVGlwID8gYWN0LnRvb2xUaXAgOiBhY3QudGl0bGU7XG4gIH1cblxuICBhY3Rpb24oYWN0OiBJRHJvcGRvd25JdGVtPGFueT4pIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0KSkge1xuICAgICAgaWYgKGFjdC5hY3Rpb24pIHtcbiAgICAgICAgYWN0LmFjdGlvbihhY3QuZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmFjdGlvbkl0ZW0ubmV4dCh7ZXZlbnQ6IGFjdC5ldmVudCB8fCBhY3QudGl0bGUgfHwgJ2RlZmF1bHQnLCBkYXRhOiBhY3QuZGF0YX0pO1xuICAgICAgfVxuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25BY3Rpb25JY29uQ2xpY2soJGV2ZW50LCBhY3Rpb25JY29uOiBJRHJvcGRvd25BY3Rpb25JY29uPGFueT4sIGRhdGE6IGFueSkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0aW9uSWNvbikpIHtcbiAgICAgIGFjdGlvbkljb24uYWN0aW9uKGRhdGEpO1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=