@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.
Files changed (133) 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 +3984 -3995
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  6. package/datarailsshared-datarailsshared-1.3.51.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +9 -9
  8. package/datarailsshared-datarailsshared.metadata.json +1 -1
  9. package/esm2015/datarailsshared-datarailsshared.js +9 -9
  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-accordion/accordion-item-body.component.js +57 -57
  19. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +79 -79
  20. package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -123
  21. package/esm2015/lib/dr-accordion/accordion.component.js +43 -43
  22. package/esm2015/lib/dr-accordion/accordion.module.js +23 -23
  23. package/esm2015/lib/dr-avatar/dr-avatar.component.js +42 -42
  24. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -26
  25. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +15 -15
  26. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -12
  27. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +97 -97
  28. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +110 -110
  29. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +89 -89
  30. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -34
  31. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -24
  32. package/esm2015/lib/dr-inputs/button/button.component.js +80 -80
  33. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +63 -63
  34. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.js +47 -47
  35. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.component.js +183 -186
  36. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker.service.js +41 -41
  37. package/esm2015/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +129 -129
  38. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +185 -185
  39. package/esm2015/lib/dr-inputs/dr-inputs.module.js +51 -51
  40. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +31 -31
  41. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +90 -90
  42. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +64 -64
  43. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +56 -56
  44. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +64 -64
  45. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +164 -164
  46. package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -20
  47. package/esm2015/lib/dr-popover/dr-popover.component.js +77 -77
  48. package/esm2015/lib/dr-popover/dr-popover.directive.js +72 -72
  49. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -23
  50. package/esm2015/lib/dr-popover/dr-popover.service.js +102 -102
  51. package/esm2015/lib/dr-spinner/dr-spinner.component.js +29 -29
  52. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +53 -53
  53. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -18
  54. package/esm2015/lib/dr-tabs/dr-tab.component.js +23 -23
  55. package/esm2015/lib/dr-tabs/dr-tabs.component.js +28 -28
  56. package/esm2015/lib/dr-tabs/dr-tabs.module.js +30 -30
  57. package/esm2015/lib/dr-tags/dr-tag.component.js +54 -54
  58. package/esm2015/lib/dr-tags/dr-tag.module.js +22 -22
  59. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +30 -30
  60. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +102 -102
  61. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +23 -23
  62. package/esm2015/lib/list-tags/list-tag.component.js +41 -41
  63. package/esm2015/lib/list-tags/list-tag.module.js +29 -29
  64. package/esm2015/lib/models/constants.js +97 -97
  65. package/esm2015/lib/models/datePicker.js +40 -40
  66. package/esm2015/lib/models/dropdown.js +2 -2
  67. package/esm2015/lib/models/popover.js +27 -27
  68. package/esm2015/lib/models/serverTags.js +2 -2
  69. package/esm2015/public-api.js +57 -57
  70. package/fesm2015/datarailsshared-datarailsshared.js +3365 -3368
  71. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  72. package/lib/date-tags/date-tag.component.d.ts +27 -27
  73. package/lib/date-tags/date-tag.module.d.ts +4 -4
  74. package/lib/date-tags/day-tag/day-tag.component.d.ts +12 -12
  75. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +21 -21
  76. package/lib/date-tags/month-tag/month-tag.component.d.ts +14 -14
  77. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +17 -17
  78. package/lib/date-tags/week-tag/week-tag.component.d.ts +19 -19
  79. package/lib/date-tags/year-tag/year-tag.component.d.ts +14 -14
  80. package/lib/dr-accordion/accordion-item-body.component.d.ts +11 -11
  81. package/lib/dr-accordion/accordion-item-header.component.d.ts +16 -16
  82. package/lib/dr-accordion/accordion-item.component.d.ts +53 -53
  83. package/lib/dr-accordion/accordion.component.d.ts +19 -19
  84. package/lib/dr-accordion/accordion.module.d.ts +2 -2
  85. package/lib/dr-avatar/dr-avatar.component.d.ts +10 -10
  86. package/lib/dr-avatar/dr-avatar.module.d.ts +2 -2
  87. package/lib/dr-avatar/dr-avatar.pipe.d.ts +4 -4
  88. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +5 -5
  89. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +12 -12
  90. package/lib/dr-dropdown/dr-dropdown.component.d.ts +26 -26
  91. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +23 -23
  92. package/lib/dr-dropdown/dr-dropdown.module.d.ts +2 -2
  93. package/lib/dr-dropdown/dr-dropdown.service.d.ts +11 -11
  94. package/lib/dr-inputs/button/button.component.d.ts +21 -21
  95. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +20 -20
  96. package/lib/dr-inputs/dr-date-picker/dr-date-picker-format.directive.d.ts +10 -10
  97. package/lib/dr-inputs/dr-date-picker/dr-date-picker.component.d.ts +54 -54
  98. package/lib/dr-inputs/dr-date-picker/dr-date-picker.service.d.ts +12 -12
  99. package/lib/dr-inputs/dr-date-picker/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +41 -41
  100. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +58 -58
  101. package/lib/dr-inputs/dr-inputs.module.d.ts +2 -2
  102. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +11 -11
  103. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +38 -38
  104. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +23 -23
  105. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +19 -19
  106. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +21 -21
  107. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +39 -39
  108. package/lib/dr-popover/dr-popover-ref.d.ts +16 -16
  109. package/lib/dr-popover/dr-popover.component.d.ts +26 -26
  110. package/lib/dr-popover/dr-popover.directive.d.ts +26 -26
  111. package/lib/dr-popover/dr-popover.module.d.ts +2 -2
  112. package/lib/dr-popover/dr-popover.service.d.ts +17 -17
  113. package/lib/dr-spinner/dr-spinner.component.d.ts +10 -10
  114. package/lib/dr-spinner/dr-spinner.directive.d.ts +15 -15
  115. package/lib/dr-spinner/dr-spinner.module.d.ts +2 -2
  116. package/lib/dr-tabs/dr-tab.component.d.ts +8 -8
  117. package/lib/dr-tabs/dr-tabs.component.d.ts +11 -11
  118. package/lib/dr-tabs/dr-tabs.module.d.ts +2 -2
  119. package/lib/dr-tags/dr-tag.component.d.ts +15 -15
  120. package/lib/dr-tags/dr-tag.module.d.ts +2 -2
  121. package/lib/dr-tooltip/dr-tooltip.component.d.ts +16 -16
  122. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +23 -23
  123. package/lib/dr-tooltip/dr-tooltip.module.d.ts +2 -2
  124. package/lib/list-tags/list-tag.component.d.ts +14 -14
  125. package/lib/list-tags/list-tag.module.d.ts +2 -2
  126. package/lib/models/constants.d.ts +87 -87
  127. package/lib/models/datePicker.d.ts +25 -25
  128. package/lib/models/dropdown.d.ts +48 -48
  129. package/lib/models/popover.d.ts +32 -32
  130. package/lib/models/serverTags.d.ts +28 -28
  131. package/package.json +1 -1
  132. package/public-api.d.ts +55 -55
  133. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItYXZhdGFyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1hdmF0YXIvZHItYXZhdGFyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFFdkIsU0FBUyxDQUFDLElBQVMsRUFBRSxPQUFlLE1BQU07UUFDeEMsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNySDtRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRyxDQUFDOzs7WUFYRixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7YUFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2RyQXZhdGFyJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJBdmF0YXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybShpdGVtOiBhbnksIHR5cGU6IHN0cmluZyA9ICdmdWxsJyk6IHN0cmluZyB7XHJcbiAgICBpZiAodHlwZSA9PT0gJ2luaXRpYWxzJykge1xyXG4gICAgICByZXR1cm4gKGl0ZW0uZmlyc3RfbmFtZSAmJiBpdGVtLmxhc3RfbmFtZSA/IChpdGVtLmZpcnN0X25hbWVbMF0gKyBpdGVtLmxhc3RfbmFtZVswXSkgOiBpdGVtLmVtYWlsWzBdKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpdGVtLmZpcnN0X25hbWUgJiYgaXRlbS5sYXN0X25hbWUgPyAoaXRlbS5maXJzdF9uYW1lICsgJyAnICsgaXRlbS5sYXN0X25hbWUpIDogaXRlbS5lbWFpbDtcclxuICB9XHJcbn1cclxuIl19
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24taXRlbS1zaG93LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1kcm9wZG93bi9kci1kcm9wZG93bi1pdGVtLXNob3cucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQU1wRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFNBQVMsQ0FBQyxHQUF1QjtRQUMvQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQzs7O1lBTkYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSx3QkFBd0I7YUFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdkckRyb3Bkb3duSXRlbVNob3dQaXBlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkl0ZW1TaG93UGlwZTxUPiBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybShhcnI6IElEcm9wZG93bkl0ZW08VD5bXSk6IElEcm9wZG93bkl0ZW08VD5bXSB7XHJcbiAgICByZXR1cm4gYXJyLmZpbHRlcihpdGVtID0+IGl0ZW0uc2hvdyA/IGl0ZW0uc2hvdyhpdGVtLmRhdGEpIDogdHJ1ZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
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\r\n (mouseleave)=\"onMouseLeave()\"\r\n (clickOutside)=\"onClickedOutside()\"\r\n [drDropdownPosition]=\"option\"\r\n #dropdownPosition=\"dropdownPosition\"\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]=\"tooltipPosition(dropdownPosition.widthMoreRight)\"\r\n [drTooltipOptions]=\"{ withoutArrow: true }\"\r\n [drTooltipClass]=\"'dr-dropdown__tooltip'\"\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",
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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SCxDQUFDOzs7WUF4R0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2Qix3L0NBQTJDO2dCQUUzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQVBRLGlCQUFpQjtZQUZRLGlCQUFpQjs7O3VCQVloRCxTQUFTLFNBQUMsVUFBVTs0QkFDcEIsU0FBUyxTQUFDLGVBQWU7c0JBV3pCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJRHJvcGRvd25JdGVtLCBFbFBvc2l0aW9uLCBJRHJvcGRvd25BY3Rpb25JY29uLCBJRHJvcGRvd24sIElEcm9wZG93bkNvb3JkaW5hdGUgfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBEckRyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHItZHJvcGRvd24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2RyLWRyb3Bkb3duJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RyLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25Db21wb25lbnQge1xyXG5cclxuICBAVmlld0NoaWxkKCdsaXN0TWVudScpIHZpZXdNZW51OiBIVE1MRWxlbWVudDtcclxuICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyJykgbWVudUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgcG9zaXRpb246IEVsUG9zaXRpb24gfCBJRHJvcGRvd25Db29yZGluYXRlID0gJ2xlZnQnO1xyXG4gIGRyRHJvcGRvd25JbkhvdmVyOiBib29sZWFuO1xyXG4gIGxpc3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj5bXTtcclxuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xyXG4gIHByaXZhdGUgZmlyc3RJbml0OiBib29sZWFuO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgbWVudVNlcnZpY2U6IERyRHJvcGRvd25TZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBvcHRpb25zKGRhdGE6IElEcm9wZG93bjxJRHJvcGRvd25JdGVtPGFueT4+KSB7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICB0aGlzLm9wdGlvbiA9IGRhdGEub3B0aW9uO1xyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gZGF0YS5wb3NpdGlvbjtcclxuICAgICAgdGhpcy5kckRyb3Bkb3duSW5Ib3ZlciA9IGRhdGEuZHJEcm9wZG93bkluSG92ZXI7XHJcbiAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3MgPSBkYXRhLmNsYXNzO1xyXG4gICAgICB0aGlzLmxpc3QgPSBkYXRhLmxpc3QgfHwgW107XHJcbiAgICAgIHRoaXMubGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIGl0ZW0uY2hpbGRPcHRpb25zID0ge1xyXG4gICAgICAgICAgICBsaXN0OiBpdGVtLmNoaWxkcmVuLFxyXG4gICAgICAgICAgICBjbGFzczogaXRlbT8uY2hpbGRPcHRpb25zPy5jbGFzcyB8fCAnJyxcclxuICAgICAgICAgICAgcG9zaXRpb246ICdjaGlsZCdcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kckRyb3Bkb3duSW5Ib3ZlcikgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrZWRPdXRzaWRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZmlyc3RJbml0KSB7XHJcbiAgICAgIHRoaXMubWVudVNlcnZpY2UuZGVzdHJveSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maXJzdEluaXQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZSgpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudVNlcnZpY2UuZGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgZGlzYWJsZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+IHwgSURyb3Bkb3duQWN0aW9uSWNvbjxhbnk+KTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWFjdC5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGFjdC5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBhY3QuZGlzYWJsZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYWN0LmRpc2FibGVkKGFjdC5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdGVkKGFjdDogSURyb3Bkb3duSXRlbTx1bmtub3duPik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFhY3Quc2VsZWN0ZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBhY3Quc2VsZWN0ZWQgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gYWN0LnNlbGVjdGVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZChhY3QuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0b29sdGlwVG9TaG93KGFjdDogSURyb3Bkb3duSXRlbTx1bmtub3duPik6IHN0cmluZyB7XHJcbiAgICBpZiAoYWN0LnRvb2xUaXBJZkRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkKGFjdCkpIHJldHVybiAnJztcclxuICAgIHJldHVybiBhY3QudG9vbFRpcDtcclxuICB9XHJcblxyXG4gIHRvb2x0aXBQb3NpdGlvbih3aWR0aE1vcmVSaWdodDogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIHdpZHRoTW9yZVJpZ2h0ID8gJ3JpZ2h0JyA6ICdsZWZ0JztcclxuICB9XHJcblxyXG4gIGFjdGlvbihhY3Q6IElEcm9wZG93bkl0ZW08YW55Pikge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKGFjdCkpIHtcclxuICAgICAgaWYgKGFjdC5hY3Rpb24pIHtcclxuICAgICAgICBhY3QuYWN0aW9uKGFjdC5kYXRhKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmFjdGlvbkl0ZW0ubmV4dCh7ZXZlbnQ6IGFjdC5ldmVudCB8fCBhY3QudGl0bGUgfHwgJ2RlZmF1bHQnLCBkYXRhOiBhY3QuZGF0YX0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25JY29uQ2xpY2soJGV2ZW50LCBhY3Rpb25JY29uOiBJRHJvcGRvd25BY3Rpb25JY29uPGFueT4sIGRhdGE6IGFueSkge1xyXG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKGFjdGlvbkljb24pKSB7XHJcbiAgICAgIGFjdGlvbkljb24uYWN0aW9uKGRhdGEpO1xyXG4gICAgICB0aGlzLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
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==