@datarailsshared/datarailsshared 1.5.393 → 1.5.397

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 (142) hide show
  1. package/datarailsshared-datarailsshared-1.5.397.tgz +0 -0
  2. package/esm2022/lib/date-tags/any-tag.component.mjs +18 -18
  3. package/esm2022/lib/date-tags/date-tag.component.mjs +99 -23
  4. package/esm2022/lib/date-tags/date-tag.module.mjs +27 -26
  5. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +40 -26
  6. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +43 -25
  7. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +40 -26
  8. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +26 -12
  9. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +40 -26
  10. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +40 -26
  11. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +16 -16
  12. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +13 -12
  13. package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +18 -15
  14. package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +71 -54
  15. package/esm2022/lib/dr-accordion/accordion-item.component.mjs +37 -32
  16. package/esm2022/lib/dr-accordion/accordion.component.mjs +15 -10
  17. package/esm2022/lib/dr-accordion/accordion.module.mjs +20 -19
  18. package/esm2022/lib/dr-alert/dr-alert.component.mjs +44 -16
  19. package/esm2022/lib/dr-alert/dr-alert.module.mjs +14 -13
  20. package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +98 -23
  21. package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +13 -12
  22. package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +9 -9
  23. package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +43 -17
  24. package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +14 -13
  25. package/esm2022/lib/dr-chat/chat.component.mjs +115 -38
  26. package/esm2022/lib/dr-chat/chat.module.mjs +27 -26
  27. package/esm2022/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.mjs +21 -11
  28. package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +128 -37
  29. package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +126 -41
  30. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +11 -11
  31. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +6 -6
  32. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +40 -11
  33. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +22 -9
  34. package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +86 -20
  35. package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +9 -7
  36. package/esm2022/lib/dr-chip/dr-chip.component.mjs +49 -15
  37. package/esm2022/lib/dr-code-editor/components/code-editor-hint-wrapper.component.mjs +14 -10
  38. package/esm2022/lib/dr-code-editor/components/dr-codemirror.component.mjs +62 -57
  39. package/esm2022/lib/dr-code-editor/dr-code-editor.component.mjs +48 -20
  40. package/esm2022/lib/dr-code-editor/dr-code-editor.module.mjs +14 -13
  41. package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +69 -41
  42. package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +14 -13
  43. package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +265 -13
  44. package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +154 -16
  45. package/esm2022/lib/dr-dialog/dialog.module.mjs +14 -13
  46. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +9 -9
  47. package/esm2022/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.mjs +29 -0
  48. package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +9 -9
  49. package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +175 -56
  50. package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +98 -87
  51. package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +32 -15
  52. package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +55 -18
  53. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +92 -25
  54. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +13 -12
  55. package/esm2022/lib/dr-error/dr-error.component.mjs +48 -24
  56. package/esm2022/lib/dr-error/dr-error.module.mjs +14 -13
  57. package/esm2022/lib/dr-inputs/button/button.component.mjs +88 -45
  58. package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +53 -28
  59. package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +32 -32
  60. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +67 -42
  61. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.mjs +72 -32
  62. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +111 -42
  63. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +99 -10
  64. package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +9 -9
  65. package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +6 -6
  66. package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +168 -84
  67. package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +64 -63
  68. package/esm2022/lib/dr-inputs/dr-link/dr-link.component.mjs +26 -16
  69. package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +13 -13
  70. package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +243 -104
  71. package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +77 -20
  72. package/esm2022/lib/dr-inputs/dr-slider/dr-slider.component.mjs +23 -17
  73. package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +64 -22
  74. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +53 -21
  75. package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +40 -28
  76. package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +51 -41
  77. package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +14 -10
  78. package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +16 -14
  79. package/esm2022/lib/dr-layout/dr-layout.component.mjs +16 -7
  80. package/esm2022/lib/dr-layout/dr-layout.module.mjs +13 -12
  81. package/esm2022/lib/dr-popover/dr-popover-ref.mjs +4 -1
  82. package/esm2022/lib/dr-popover/dr-popover.component.mjs +71 -40
  83. package/esm2022/lib/dr-popover/dr-popover.directive.mjs +51 -49
  84. package/esm2022/lib/dr-popover/dr-popover.module.mjs +13 -12
  85. package/esm2022/lib/dr-popover/dr-popover.service.mjs +25 -13
  86. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +41 -17
  87. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +42 -27
  88. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +14 -13
  89. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +6 -6
  90. package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +17 -7
  91. package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +25 -20
  92. package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +13 -12
  93. package/esm2022/lib/dr-tabs/dr-tab.component.mjs +33 -25
  94. package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +118 -30
  95. package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +14 -13
  96. package/esm2022/lib/dr-tags/dr-tag.component.mjs +74 -33
  97. package/esm2022/lib/dr-tags/dr-tag.module.mjs +14 -13
  98. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +72 -19
  99. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +14 -13
  100. package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +6 -6
  101. package/esm2022/lib/dr-toastr/default-toastr/default-toastr.component.mjs +48 -10
  102. package/esm2022/lib/dr-toastr/dr-toastr.module.mjs +19 -18
  103. package/esm2022/lib/dr-toastr/dr-toastr.service.mjs +9 -9
  104. package/esm2022/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.mjs +23 -14
  105. package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +76 -9
  106. package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +63 -25
  107. package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +41 -39
  108. package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +14 -13
  109. package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +211 -19
  110. package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +52 -15
  111. package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +14 -13
  112. package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +21 -21
  113. package/esm2022/lib/dr-treeview/models/treeview-config.mjs +6 -6
  114. package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +11 -11
  115. package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +9 -9
  116. package/esm2022/lib/image-cropper/dr-image-cropper-canvas.service.mjs +6 -6
  117. package/esm2022/lib/image-cropper/dr-image-cropper.component.mjs +67 -28
  118. package/esm2022/lib/list-tags/list-tag.component.mjs +57 -17
  119. package/esm2022/lib/list-tags/list-tag.module.mjs +14 -13
  120. package/esm2022/lib/models/dropdown.mjs +1 -1
  121. package/esm2022/lib/models/popover.mjs +1 -1
  122. package/esm2022/lib/stepper/stepper.component.mjs +225 -28
  123. package/esm2022/lib/stepper/stepper.module.mjs +13 -12
  124. package/esm2022/lib/utils/decorators.mjs +12 -0
  125. package/esm2022/public-api.mjs +2 -2
  126. package/fesm2022/datarailsshared-datarailsshared.mjs +5786 -2724
  127. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -1
  128. package/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.d.ts +8 -0
  129. package/lib/dr-dropdown/dr-dropdown.component.d.ts +24 -22
  130. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +16 -15
  131. package/lib/dr-dropdown/dr-dropdown.module.d.ts +5 -4
  132. package/lib/dr-dropdown/dr-dropdown.service.d.ts +23 -8
  133. package/lib/dr-popover/dr-popover-ref.d.ts +1 -0
  134. package/lib/dr-popover/dr-popover.service.d.ts +2 -1
  135. package/lib/models/dropdown.d.ts +13 -21
  136. package/lib/models/popover.d.ts +6 -3
  137. package/lib/utils/decorators.d.ts +1 -0
  138. package/package.json +5 -2
  139. package/public-api.d.ts +2 -2
  140. package/datarailsshared-datarailsshared-1.5.393.tgz +0 -0
  141. package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +0 -113
  142. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -15
@@ -1,55 +1,144 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core';
2
- import { DrDropdownService } from './dr-dropdown.service';
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, EventEmitter, inject, Input, Output, ViewChild, } from '@angular/core';
11
+ import { DrPopoverRef } from '../models/popover';
12
+ import { first, merge, Subject, takeUntil } from 'rxjs';
13
+ import { DropdownInstanceService } from './dr-dropdown.service';
14
+ import { Debounce } from '../utils/decorators';
3
15
  import * as i0 from "@angular/core";
4
- import * as i1 from "./dr-dropdown.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../dr-tooltip/dr-tooltip.directive";
7
- import * as i4 from "./dr-dropdown-position.directive";
8
- import * as i5 from "./dr-dropdown-item-show.pipe";
16
+ const _c0 = ["menuContainer"];
17
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_1_i_1_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵelement(0, "i");
19
+ } if (rf & 2) {
20
+ const act_r2 = i0.ɵɵnextContext(2).$implicit;
21
+ i0.ɵɵclassMap(act_r2.icon);
22
+ } }
23
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementContainerStart(0, 8);
25
+ i0.ɵɵtemplate(1, DrDropdownComponent_dr_dropdown_item_4_ng_container_1_i_1_Template, 1, 2, "i", 9);
26
+ i0.ɵɵelementStart(2, "span", 10);
27
+ i0.ɵɵtext(3);
28
+ i0.ɵɵelementEnd();
29
+ i0.ɵɵelementContainerEnd();
30
+ } if (rf & 2) {
31
+ const act_r2 = i0.ɵɵnextContext().$implicit;
32
+ i0.ɵɵadvance(1);
33
+ i0.ɵɵproperty("ngIf", act_r2.icon);
34
+ i0.ɵɵadvance(2);
35
+ i0.ɵɵtextInterpolate(act_r2.title);
36
+ } }
37
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_1_Template(rf, ctx) { if (rf & 1) {
38
+ const _r13 = i0.ɵɵgetCurrentView();
39
+ i0.ɵɵelementStart(0, "i", 14);
40
+ i0.ɵɵlistener("mousedown", function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_1_Template_i_mousedown_0_listener($event) { const restoredCtx = i0.ɵɵrestoreView(_r13); const actionIcon_r11 = restoredCtx.$implicit; const act_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onActionIconClick($event, actionIcon_r11, act_r2.data)); });
41
+ i0.ɵɵelementEnd();
42
+ } if (rf & 2) {
43
+ const actionIcon_r11 = ctx.$implicit;
44
+ i0.ɵɵclassMap(actionIcon_r11.icon);
45
+ i0.ɵɵclassProp("showOnHover", actionIcon_r11.showOnHover);
46
+ } }
47
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_2_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelement(0, "i", 15);
49
+ } }
50
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementContainerStart(0, 11);
52
+ i0.ɵɵtemplate(1, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_1_Template, 1, 4, "i", 12);
53
+ i0.ɵɵtemplate(2, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_2_Template, 1, 0, "i", 13);
54
+ i0.ɵɵelementContainerEnd();
55
+ } if (rf & 2) {
56
+ const act_r2 = i0.ɵɵnextContext().$implicit;
57
+ const ctx_r4 = i0.ɵɵnextContext();
58
+ i0.ɵɵadvance(1);
59
+ i0.ɵɵproperty("ngForOf", act_r2.actionIcons);
60
+ i0.ɵɵadvance(1);
61
+ i0.ɵɵproperty("ngIf", ctx_r4.hasChildren(act_r2));
62
+ } }
63
+ const _c1 = function (a0) { return { $implicit: a0 }; };
64
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementContainer(0, 16);
66
+ } if (rf & 2) {
67
+ const act_r2 = i0.ɵɵnextContext().$implicit;
68
+ i0.ɵɵproperty("ngTemplateOutlet", act_r2.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c1, act_r2));
69
+ } }
70
+ const _c2 = function () { return { withoutArrow: true }; };
71
+ function DrDropdownComponent_dr_dropdown_item_4_Template(rf, ctx) { if (rf & 1) {
72
+ const _r18 = i0.ɵɵgetCurrentView();
73
+ i0.ɵɵelementStart(0, "dr-dropdown-item", 4);
74
+ i0.ɵɵlistener("mousedown", function DrDropdownComponent_dr_dropdown_item_4_Template_dr_dropdown_item_mousedown_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const act_r2 = restoredCtx.$implicit; const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.action(act_r2)); });
75
+ i0.ɵɵtemplate(1, DrDropdownComponent_dr_dropdown_item_4_ng_container_1_Template, 4, 2, "ng-container", 5);
76
+ i0.ɵɵtemplate(2, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_Template, 3, 2, "ng-container", 6);
77
+ i0.ɵɵtemplate(3, DrDropdownComponent_dr_dropdown_item_4_ng_container_3_Template, 1, 4, "ng-container", 7);
78
+ i0.ɵɵelementEnd();
79
+ } if (rf & 2) {
80
+ const act_r2 = ctx.$implicit;
81
+ const ctx_r1 = i0.ɵɵnextContext();
82
+ i0.ɵɵproperty("drTooltip", ctx_r1.tooltipToShow(act_r2))("drTooltipPosition", "left")("drTooltipOptions", i0.ɵɵpureFunction0(14, _c2))("drTooltipClass", "dr-dropdown__tooltip")("drDropdown", ctx_r1.hasChildren(act_r2) && act_r2.children)("drDropdownClass", act_r2.childOptions == null ? null : act_r2.childOptions.class)("drDropdownInHover", true)("drDropdownPosition", act_r2.childOptions == null ? null : act_r2.childOptions.position)("disabled", ctx_r1.disabled(act_r2))("selected", ctx_r1.selected(act_r2))("divider", act_r2.separateLine);
83
+ i0.ɵɵadvance(1);
84
+ i0.ɵɵproperty("ngIf", !act_r2.templateRef);
85
+ i0.ɵɵadvance(1);
86
+ i0.ɵɵproperty("ngIf", !act_r2.templateRef);
87
+ i0.ɵɵadvance(1);
88
+ i0.ɵɵproperty("ngIf", act_r2.templateRef);
89
+ } }
90
+ const _c3 = [[["dr-dropdown-item"]]];
91
+ const _c4 = ["dr-dropdown-item"];
9
92
  export class DrDropdownComponent {
10
- constructor(menuService, cdr) {
11
- this.menuService = menuService;
12
- this.cdr = cdr;
13
- this.position = 'left';
14
- this.wasHovered = false;
15
- }
16
93
  set options(data) {
17
94
  if (data) {
18
- this.option = data.option;
19
- this.position = data.position;
20
95
  this.drDropdownInHover = data.drDropdownInHover;
21
96
  this.containerClass = data.class;
22
97
  this.list = data.list || [];
23
98
  this.list.forEach((item) => {
24
99
  if (item.children?.length) {
25
100
  item.childOptions = {
26
- list: item.children,
27
101
  class: item?.childOptions?.class || '',
28
- position: 'child',
102
+ position: item?.childOptions?.position || 'left-top',
29
103
  };
30
104
  }
31
105
  });
32
106
  this.cdr.markForCheck();
107
+ if (this.drDropdownInHover) {
108
+ this.dropdownInstanceService
109
+ .inactive(this)
110
+ .pipe(first(), takeUntil(merge(this.destroy$, this.drDropdownInHoverChange$)))
111
+ .subscribe(() => {
112
+ this.popoverRef.close();
113
+ });
114
+ }
33
115
  }
34
116
  }
35
- onMouseEnter() {
36
- this.wasHovered = true;
37
- }
38
- onMouseLeave() {
39
- if (this.drDropdownInHover)
40
- this.menuService.destroy();
117
+ constructor() {
118
+ this.cdr = inject(ChangeDetectorRef);
119
+ this.popoverRef = inject(DrPopoverRef, { optional: true });
120
+ this.dropdownInstanceService = inject(DropdownInstanceService, { optional: true });
121
+ this.destroy$ = new Subject();
122
+ this._active = true;
123
+ this.drDropdownInHoverChange$ = new Subject();
124
+ this.list = [];
125
+ this.wasHovered = false;
126
+ this.asChild = false;
127
+ this.onAction = new EventEmitter();
128
+ if (!this.dropdownInstanceService)
129
+ return;
130
+ this.dropdownInstanceService.register(this);
131
+ inject(DestroyRef).onDestroy(() => {
132
+ this.dropdownInstanceService.unregister(this);
133
+ this.destroy$.next();
134
+ this.destroy$.next();
135
+ });
41
136
  }
42
- onClickedOutside() {
43
- if (this.firstInit) {
44
- this.menuService.destroy();
45
- }
46
- else {
47
- this.firstInit = true;
137
+ ngOnChanges(changes) {
138
+ if (!changes?.drDropdownInHover?.isFirstChange()) {
139
+ this.drDropdownInHoverChange$.next();
48
140
  }
49
141
  }
50
- hide() {
51
- this.menuService.destroy();
52
- }
53
142
  disabled(act) {
54
143
  if (!act.disabled) {
55
144
  return false;
@@ -77,40 +166,70 @@ export class DrDropdownComponent {
77
166
  return '';
78
167
  return act.customTooltip ? act.customTooltip(act.data) : act.toolTip;
79
168
  }
80
- tooltipPosition(widthMoreRight) {
81
- return widthMoreRight ? 'right' : 'left';
82
- }
83
169
  action(act) {
84
170
  if (!this.disabled(act)) {
85
171
  if (act.action) {
86
172
  act.action(act.data);
87
173
  }
88
174
  else {
89
- this.menuService.actionItem.next({ event: act.event || act.title || 'default', data: act.data });
175
+ const event = { event: act.event || act.title || 'default', data: act.data };
176
+ this.onAction.emit(event);
90
177
  }
91
- this.hide();
92
178
  }
93
179
  }
94
180
  onActionIconClick($event, actionIcon, data) {
95
181
  $event.stopPropagation();
96
- if (!this.disabled(actionIcon)) {
97
- actionIcon.action(data);
98
- this.hide();
99
- }
182
+ actionIcon.action(data);
183
+ }
184
+ hasChildren(item) {
185
+ return !!item.children?.length;
186
+ }
187
+ onMouseenter() {
188
+ this.wasHovered = true;
189
+ this._active = true;
190
+ }
191
+ onMouseleave() {
192
+ this._active = false;
193
+ }
194
+ active() {
195
+ return this._active;
100
196
  }
101
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDropdownComponent, deps: [{ token: i1.DrDropdownService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
102
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrDropdownComponent, selector: "dr-dropdown", inputs: { options: "options" }, viewQueries: [{ propertyName: "viewMenu", first: true, predicate: ["listMenu"], descendants: true }, { propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], ngImport: i0, template: "<div\n #menuContainer\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\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\n *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 [class.separate-line]=\"act.separateLine\">\n <i *ngIf=\"act.icon\" [class]=\"act.icon\"></i>\n <span class=\"dr-dropdown__container__item__text\">{{ act.title }}</span>\n <i\n *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", styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden;transition-delay:.2s}::ng-deep .dr-dropdown__container__item:hover>*>.dr-dropdown{visibility:visible;transition-delay:0s}::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;background:#fff}.dr-dropdown__container__item.separate-line{border-top:1px solid #dfe0e3}.dr-dropdown__container__item:hover{background-color:#f5f5f5}.dr-dropdown__container__item:hover .showOnHover{visibility:visible}.dr-dropdown__container__item.item-selected{background:#eaeaff}.dr-dropdown__container__item.item-disabled,.dr-dropdown__container__item.item-disabled i,.dr-dropdown__container__item.item-disabled .dr-dropdown__container__item__text{background:#fff!important;color:#aeabac}.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:#333}.dr-dropdown__container__item__text+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"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DrTooltipDirective, selector: "[drTooltip]", inputs: ["drTooltip", "drTooltipContext", "drTooltipPosition", "drTooltipClass", "drTooltipTheme", "drTooltipMousleaveTimeout", "drTooltipMouseEnterTimeout", "drTooltipOptions", "drTooltipShow"] }, { kind: "directive", type: i4.DrDropdownPositionDirective, selector: "[drDropdownPosition]", inputs: ["drDropdownPosition", "position"], exportAs: ["dropdownPosition"] }, { kind: "component", type: DrDropdownComponent, selector: "dr-dropdown", inputs: ["options"] }, { kind: "pipe", type: i5.DrDropdownItemShowPipe, name: "drDropdownItemShowPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownComponent_Factory(t) { return new (t || DrDropdownComponent)(); }; }
198
+ /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DrDropdownComponent, selectors: [["dr-dropdown"]], viewQuery: function DrDropdownComponent_Query(rf, ctx) { if (rf & 1) {
199
+ i0.ɵɵviewQuery(_c0, 7);
200
+ } if (rf & 2) {
201
+ let _t;
202
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuContainer = _t.first);
203
+ } }, inputs: { options: "options" }, outputs: { onAction: "action" }, features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 6, vars: 5, consts: [[1, "dr-dropdown"], ["menuContainer", ""], ["tabindex", "-1", "role", "listbox", 1, "dr-dropdown__container", 3, "mouseenter", "mouseleave"], ["drDropdownChild", "", "role", "option", "tabindex", "0", 3, "drTooltip", "drTooltipPosition", "drTooltipOptions", "drTooltipClass", "drDropdown", "drDropdownClass", "drDropdownInHover", "drDropdownPosition", "disabled", "selected", "divider", "mousedown", 4, "ngFor", "ngForOf"], ["drDropdownChild", "", "role", "option", "tabindex", "0", 3, "drTooltip", "drTooltipPosition", "drTooltipOptions", "drTooltipClass", "drDropdown", "drDropdownClass", "drDropdownInHover", "drDropdownPosition", "disabled", "selected", "divider", "mousedown"], ["dropdownItemContent", "", 4, "ngIf"], ["dropdownItemActions", "", 4, "ngIf"], ["dropdownItemContent", "", 3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["dropdownItemContent", ""], [3, "class", 4, "ngIf"], [1, "dr-dropdown__text"], ["dropdownItemActions", ""], [3, "class", "showOnHover", "mousedown", 4, "ngFor", "ngForOf"], ["class", "dr-icon-arrow-right", 4, "ngIf"], [3, "mousedown"], [1, "dr-icon-arrow-right"], ["dropdownItemContent", "", 3, "ngTemplateOutlet", "ngTemplateOutletContext"]], template: function DrDropdownComponent_Template(rf, ctx) { if (rf & 1) {
204
+ i0.ɵɵprojectionDef(_c3);
205
+ i0.ɵɵelementStart(0, "div", 0, 1)(2, "div", 2);
206
+ i0.ɵɵlistener("mouseenter", function DrDropdownComponent_Template_div_mouseenter_2_listener() { return ctx.onMouseenter(); })("mouseleave", function DrDropdownComponent_Template_div_mouseleave_2_listener() { return ctx.onMouseleave(); });
207
+ i0.ɵɵprojection(3);
208
+ i0.ɵɵtemplate(4, DrDropdownComponent_dr_dropdown_item_4_Template, 4, 15, "dr-dropdown-item", 3);
209
+ i0.ɵɵpipe(5, "drDropdownItemShowPipe");
210
+ i0.ɵɵelementEnd()();
211
+ } if (rf & 2) {
212
+ i0.ɵɵclassMap(ctx.containerClass);
213
+ i0.ɵɵadvance(4);
214
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(5, 3, ctx.list));
215
+ } }, styles: [".dr-dropdown__item .dr-dropdown{visibility:hidden;transition-delay:.2s} .dr-dropdown__item:hover>*>.dr-dropdown{visibility:visible;transition-delay:0s} .dr-dropdown__tooltip>.default-content{max-width:300px;white-space:normal!important}.dr-dropdown[_ngcontent-%COMP%]{width:auto}.dr-dropdown__text[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;flex:1}.dr-dropdown__container[_ngcontent-%COMP%]{display:flex;flex-direction:column;background:#fff;padding:8px 0;overflow-y:auto;max-height:60vh;max-width:300px}.dr-dropdown[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:first-child{margin-right:8px}.dr-dropdown[_ngcontent-%COMP%] i[_ngcontent-%COMP%]:not(:first-child):hover{color:#4646ce}.dr-dropdown[_ngcontent-%COMP%] dr-dropdown-item[_ngcontent-%COMP%]:hover .showOnHover[_ngcontent-%COMP%]{visibility:visible}.dr-dropdown[_ngcontent-%COMP%] .showOnHover[_ngcontent-%COMP%]{visibility:hidden}"], changeDetection: 0 }); }
103
216
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDropdownComponent, decorators: [{
105
- type: Component,
106
- args: [{ selector: 'dr-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #menuContainer\n (mouseleave)=\"onMouseLeave()\"\n (mouseenter)=\"onMouseEnter()\"\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\n *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 [class.separate-line]=\"act.separateLine\">\n <i *ngIf=\"act.icon\" [class]=\"act.icon\"></i>\n <span class=\"dr-dropdown__container__item__text\">{{ act.title }}</span>\n <i\n *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", styles: ["::ng-deep .dr-dropdown__container__item .dr-dropdown{visibility:hidden;transition-delay:.2s}::ng-deep .dr-dropdown__container__item:hover>*>.dr-dropdown{visibility:visible;transition-delay:0s}::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;background:#fff}.dr-dropdown__container__item.separate-line{border-top:1px solid #dfe0e3}.dr-dropdown__container__item:hover{background-color:#f5f5f5}.dr-dropdown__container__item:hover .showOnHover{visibility:visible}.dr-dropdown__container__item.item-selected{background:#eaeaff}.dr-dropdown__container__item.item-disabled,.dr-dropdown__container__item.item-disabled i,.dr-dropdown__container__item.item-disabled .dr-dropdown__container__item__text{background:#fff!important;color:#aeabac}.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:#333}.dr-dropdown__container__item__text+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"] }]
107
- }], ctorParameters: function () { return [{ type: i1.DrDropdownService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { viewMenu: [{
108
- type: ViewChild,
109
- args: ['listMenu']
110
- }], menuContainer: [{
111
- type: ViewChild,
112
- args: ['menuContainer']
113
- }], options: [{
114
- type: Input
115
- }] } });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUTFELE1BQU0sT0FBTyxtQkFBbUI7SUFXNUIsWUFDYyxXQUE4QixFQUNoQyxHQUFzQjtRQURwQixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFUbEMsYUFBUSxHQUFxQyxNQUFNLENBQUM7UUFJN0MsZUFBVSxHQUFHLEtBQUssQ0FBQztJQU12QixDQUFDO0lBRUosSUFBYSxPQUFPLENBQUMsSUFBbUM7UUFDcEQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRzt3QkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO3dCQUNuQixLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRTt3QkFDdEMsUUFBUSxFQUFFLE9BQU87cUJBQ3BCLENBQUM7aUJBQ0w7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUI7YUFBTTtZQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDQSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBc0Q7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUNELElBQUksT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNuQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDdkI7YUFBTTtZQUNILE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQTJCO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDbkMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUEyQjtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUQsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUN6RSxDQUFDO0lBRUQsZUFBZSxDQUFDLGNBQXVCO1FBQ25DLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQXVCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDWixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7YUFDcEc7WUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsVUFBb0MsRUFBRSxJQUFTO1FBQ3JFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM1QixVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO0lBQ0wsQ0FBQztrSUF4R1EsbUJBQW1CO3NIQUFuQixtQkFBbUIsMFJDVmhDLDBpREFrQ0EsdXlGRHhCYSxtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNO3dJQUd4QixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ08sYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQWNiLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWxQb3NpdGlvbiwgSURyb3Bkb3duLCBJRHJvcGRvd25BY3Rpb25JY29uLCBJRHJvcGRvd25Db29yZGluYXRlLCBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBEckRyb3Bkb3duQ29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkKCdsaXN0TWVudScpIHZpZXdNZW51OiBIVE1MRWxlbWVudDtcbiAgICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyJykgbWVudUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgb3B0aW9uOiBhbnk7XG4gICAgcG9zaXRpb246IEVsUG9zaXRpb24gfCBJRHJvcGRvd25Db29yZGluYXRlID0gJ2xlZnQnO1xuICAgIGRyRHJvcGRvd25JbkhvdmVyOiBib29sZWFuO1xuICAgIGxpc3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj5bXTtcbiAgICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyB3YXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmaXJzdEluaXQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIG1lbnVTZXJ2aWNlOiBEckRyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge31cblxuICAgIEBJbnB1dCgpIHNldCBvcHRpb25zKGRhdGE6IElEcm9wZG93bjxJRHJvcGRvd25JdGVtPGFueT4+KSB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbiA9IGRhdGEub3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiA9IGRhdGEucG9zaXRpb247XG4gICAgICAgICAgICB0aGlzLmRyRHJvcGRvd25JbkhvdmVyID0gZGF0YS5kckRyb3Bkb3duSW5Ib3ZlcjtcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyQ2xhc3MgPSBkYXRhLmNsYXNzO1xuICAgICAgICAgICAgdGhpcy5saXN0ID0gZGF0YS5saXN0IHx8IFtdO1xuICAgICAgICAgICAgdGhpcy5saXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogaXRlbS5jaGlsZHJlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiBpdGVtPy5jaGlsZE9wdGlvbnM/LmNsYXNzIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdjaGlsZCcsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW91c2VFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53YXNIb3ZlcmVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyRHJvcGRvd25JbkhvdmVyKSB0aGlzLm1lbnVTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBvbkNsaWNrZWRPdXRzaWRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5maXJzdEluaXQpIHtcbiAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maXJzdEluaXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgZGlzYWJsZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+IHwgSURyb3Bkb3duQWN0aW9uSWNvbjxhbnk+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3QuZGlzYWJsZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3QuZGlzYWJsZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0ZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Quc2VsZWN0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3Quc2VsZWN0ZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbHRpcFRvU2hvdyhhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoYWN0LnRvb2xUaXBJZkRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkKGFjdCkpIHJldHVybiAnJztcbiAgICAgICAgcmV0dXJuIGFjdC5jdXN0b21Ub29sdGlwID8gYWN0LmN1c3RvbVRvb2x0aXAoYWN0LmRhdGEpIDogYWN0LnRvb2xUaXA7XG4gICAgfVxuXG4gICAgdG9vbHRpcFBvc2l0aW9uKHdpZHRoTW9yZVJpZ2h0OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB3aWR0aE1vcmVSaWdodCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgfVxuXG4gICAgYWN0aW9uKGFjdDogSURyb3Bkb3duSXRlbTxhbnk+KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZChhY3QpKSB7XG4gICAgICAgICAgICBpZiAoYWN0LmFjdGlvbikge1xuICAgICAgICAgICAgICAgIGFjdC5hY3Rpb24oYWN0LmRhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmFjdGlvbkl0ZW0ubmV4dCh7IGV2ZW50OiBhY3QuZXZlbnQgfHwgYWN0LnRpdGxlIHx8ICdkZWZhdWx0JywgZGF0YTogYWN0LmRhdGEgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWN0aW9uSWNvbkNsaWNrKCRldmVudCwgYWN0aW9uSWNvbjogSURyb3Bkb3duQWN0aW9uSWNvbjxhbnk+LCBkYXRhOiBhbnkpIHtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0aW9uSWNvbikpIHtcbiAgICAgICAgICAgIGFjdGlvbkljb24uYWN0aW9uKGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgI21lbnVDb250YWluZXJcbiAgICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiXG4gICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIlxuICAgIChjbGlja091dHNpZGUpPVwib25DbGlja2VkT3V0c2lkZSgpXCJcbiAgICBbZHJEcm9wZG93blBvc2l0aW9uXT1cIm9wdGlvblwiXG4gICAgI2Ryb3Bkb3duUG9zaXRpb249XCJkcm9wZG93blBvc2l0aW9uXCJcbiAgICBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxuICAgIFtjbGFzc109XCJjb250YWluZXJDbGFzc1wiXG4gICAgY2xhc3M9XCJkci1kcm9wZG93blwiPlxuICAgIDxkaXYgY2xhc3M9XCJkci1kcm9wZG93bl9fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Qgb2YgbGlzdCB8IGRyRHJvcGRvd25JdGVtU2hvd1BpcGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbihhY3QpXCJcbiAgICAgICAgICAgIFtkclRvb2x0aXBdPVwidG9vbHRpcFRvU2hvdyhhY3QpXCJcbiAgICAgICAgICAgIFtkclRvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb24oZHJvcGRvd25Qb3NpdGlvbi53aWR0aE1vcmVSaWdodClcIlxuICAgICAgICAgICAgW2RyVG9vbHRpcE9wdGlvbnNdPVwieyB3aXRob3V0QXJyb3c6IHRydWUgfVwiXG4gICAgICAgICAgICBbZHJUb29sdGlwQ2xhc3NdPVwiJ2RyLWRyb3Bkb3duX190b29sdGlwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImRyLWRyb3Bkb3duX19jb250YWluZXJfX2l0ZW1cIlxuICAgICAgICAgICAgW2NsYXNzLml0ZW0tZGlzYWJsZWRdPVwiZGlzYWJsZWQoYWN0KVwiXG4gICAgICAgICAgICBbY2xhc3MuaXRlbS1zZWxlY3RlZF09XCJzZWxlY3RlZChhY3QpXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZXBhcmF0ZS1saW5lXT1cImFjdC5zZXBhcmF0ZUxpbmVcIj5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0Lmljb25cIiBbY2xhc3NdPVwiYWN0Lmljb25cIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyLWRyb3Bkb3duX19jb250YWluZXJfX2l0ZW1fX3RleHRcIj57eyBhY3QudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb25JY29uIG9mIGFjdC5hY3Rpb25JY29uc1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImFjdGlvbkljb24uaWNvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNob3dPbkhvdmVyXT1cImFjdGlvbkljb24uc2hvd09uSG92ZXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbkljb25DbGljaygkZXZlbnQsIGFjdGlvbkljb24sIGFjdC5kYXRhKVwiPjwvaT5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0LmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cImRyLWljb24tYXJyb3ctcmlnaHRcIj48L2k+XG4gICAgICAgICAgICA8ZHItZHJvcGRvd24gKm5nSWY9XCJhY3QuY2hpbGRyZW4/Lmxlbmd0aFwiIFtvcHRpb25zXT1cImFjdC5jaGlsZE9wdGlvbnNcIj48L2RyLWRyb3Bkb3duPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
217
+ __decorate([
218
+ Debounce(200),
219
+ __metadata("design:type", Function),
220
+ __metadata("design:paramtypes", []),
221
+ __metadata("design:returntype", void 0)
222
+ ], DrDropdownComponent.prototype, "onMouseleave", null);
223
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownComponent, [{
224
+ type: Component,
225
+ args: [{ selector: 'dr-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #menuContainer [class]=\"containerClass\" class=\"dr-dropdown\">\n <div class=\"dr-dropdown__container\" (mouseenter)=\"onMouseenter()\" (mouseleave)=\"onMouseleave()\" tabindex=\"-1\" role=\"listbox\">\n <ng-content select=\"dr-dropdown-item\"></ng-content>\n\n <dr-dropdown-item\n *ngFor=\"let act of list | drDropdownItemShowPipe\"\n (mousedown)=\"action(act)\"\n [drTooltip]=\"tooltipToShow(act)\"\n [drTooltipPosition]=\"'left'\"\n [drTooltipOptions]=\"{ withoutArrow: true }\"\n [drTooltipClass]=\"'dr-dropdown__tooltip'\"\n [drDropdown]=\"hasChildren(act) && act.children\"\n [drDropdownClass]=\"act.childOptions?.class\"\n [drDropdownInHover]=\"true\"\n [drDropdownPosition]=\"act.childOptions?.position\"\n drDropdownChild\n [disabled]=\"disabled(act)\"\n [selected]=\"selected(act)\"\n [divider]=\"act.separateLine\"\n role=\"option\"\n tabindex=\"0\">\n <ng-container dropdownItemContent *ngIf=\"!act.templateRef\">\n <i *ngIf=\"act.icon\" [class]=\"act.icon\"></i>\n <span class=\"dr-dropdown__text\">{{ act.title }}</span>\n </ng-container>\n\n <ng-container dropdownItemActions *ngIf=\"!act.templateRef\">\n <i\n *ngFor=\"let actionIcon of act.actionIcons\"\n [class]=\"actionIcon.icon\"\n [class.showOnHover]=\"actionIcon.showOnHover\"\n (mousedown)=\"onActionIconClick($event, actionIcon, act.data)\"></i>\n <i *ngIf=\"hasChildren(act)\" class=\"dr-icon-arrow-right\"></i>\n </ng-container>\n\n <ng-container\n *ngIf=\"act.templateRef\"\n dropdownItemContent\n [ngTemplateOutlet]=\"act.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: act }\">\n </ng-container>\n </dr-dropdown-item>\n </div>\n</div>\n", styles: ["::ng-deep .dr-dropdown__item .dr-dropdown{visibility:hidden;transition-delay:.2s}::ng-deep .dr-dropdown__item:hover>*>.dr-dropdown{visibility:visible;transition-delay:0s}::ng-deep .dr-dropdown__tooltip>.default-content{max-width:300px;white-space:normal!important}.dr-dropdown{width:auto}.dr-dropdown__text{overflow:hidden;text-overflow:ellipsis;flex:1}.dr-dropdown__container{display:flex;flex-direction:column;background:#fff;padding:8px 0;overflow-y:auto;max-height:60vh;max-width:300px}.dr-dropdown i:first-child{margin-right:8px}.dr-dropdown i:not(:first-child):hover{color:#4646ce}.dr-dropdown dr-dropdown-item:hover .showOnHover{visibility:visible}.dr-dropdown .showOnHover{visibility:hidden}\n"] }]
226
+ }], function () { return []; }, { menuContainer: [{
227
+ type: ViewChild,
228
+ args: ['menuContainer', { static: true }]
229
+ }], options: [{
230
+ type: Input
231
+ }], onAction: [{
232
+ type: Output,
233
+ args: ['action']
234
+ }], onMouseleave: [] }); })();
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0lDSy9CLG9CQUEyQzs7O0lBQXZCLDBCQUFrQjs7O0lBRDFDLGdDQUEyRDtJQUN2RCxrR0FBMkM7SUFDM0MsZ0NBQWdDO0lBQUEsWUFBZTtJQUFBLGlCQUFPO0lBQzFELDBCQUFlOzs7SUFGUCxlQUFjO0lBQWQsa0NBQWM7SUFDYyxlQUFlO0lBQWYsa0NBQWU7Ozs7SUFJL0MsNkJBSWtFO0lBQTlELDJUQUFhLGVBQUEsOERBQStDLENBQUEsSUFBQztJQUFDLGlCQUFJOzs7SUFGbEUsa0NBQXlCO0lBQ3pCLHlEQUE0Qzs7O0lBRWhELHdCQUE0RDs7O0lBTmhFLGlDQUEyRDtJQUN2RCxtR0FJ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QWMsa0JBQWMsSUFBQywwRkFBZSxrQkFBYyxJQUE3QjtZQUM3RCxrQkFBbUQ7WUFFbkQsK0ZBcUNtQjs7WUFDdkIsaUJBQU0sRUFBQTs7WUExQ1UsaUNBQXdCO1lBS2hCLGVBQWdDO1lBQWhDLHdEQUFnQzs7O0FEMEl4RDtJQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Ozs7dURBR2I7dUZBekhRLG1CQUFtQjtjQU4vQixTQUFTOzJCQUNJLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTTtzQ0FZL0MsYUFBYTtrQkFEWixTQUFTO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFXeEMsT0FBTztrQkFEVixLQUFLO1lBNEJOLFFBQVE7a0JBRFAsTUFBTTttQkFBQyxRQUFRO1lBeUVoQixZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEcm9wZG93biwgSURyb3Bkb3duQWN0aW9uLCBJRHJvcGRvd25BY3Rpb25JY29uLCBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyUG9wb3ZlclJlZiB9IGZyb20gJy4uL21vZGVscy9wb3BvdmVyJztcbmltcG9ydCB7IGZpcnN0LCBtZXJnZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEcm9wZG93bkluc3RhbmNlUmVmLCBEcm9wZG93bkluc3RhbmNlU2VydmljZSB9IGZyb20gJy4vZHItZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJy4uL3V0aWxzL2RlY29yYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2RyLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBEcm9wZG93bkluc3RhbmNlUmVmIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3BvdmVyUmVmID0gaW5qZWN0KERyUG9wb3ZlclJlZiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlID0gaW5qZWN0KERyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIF9hY3RpdmUgPSB0cnVlO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudUNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbWVudUNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICBkckRyb3Bkb3duSW5Ib3ZlcjogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyRHJvcGRvd25JbkhvdmVyQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGlzdDogSURyb3Bkb3duSXRlbTx1bmtub3duPltdID0gW107XG4gICAgY29udGFpbmVyQ2xhc3M6IHN0cmluZztcbiAgICB3YXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgYXNDaGlsZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgb3B0aW9ucyhkYXRhOiBJRHJvcGRvd248SURyb3Bkb3duSXRlbTx1bmtub3duPj4pIHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93bkluSG92ZXIgPSBkYXRhLmRyRHJvcGRvd25JbkhvdmVyO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9IGRhdGEuY2xhc3M7XG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBkYXRhLmxpc3QgfHwgW107XG4gICAgICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogaXRlbT8uY2hpbGRPcHRpb25zPy5jbGFzcyB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpdGVtPy5jaGlsZE9wdGlvbnM/LnBvc2l0aW9uIHx8ICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJEcm9wZG93bkluSG92ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5pbmFjdGl2ZSh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShmaXJzdCgpLCB0YWtlVW50aWwobWVyZ2UodGhpcy5kZXN0cm95JCwgdGhpcy5kckRyb3Bkb3duSW5Ib3ZlckNoYW5nZSQpKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCdhY3Rpb24nKVxuICAgIG9uQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJRHJvcGRvd25BY3Rpb248dW5rbm93bj4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kcm9wZG93bkluc3RhbmNlU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghY2hhbmdlcz8uZHJEcm9wZG93bkluSG92ZXI/LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duSW5Ib3ZlckNoYW5nZSQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3QuZGlzYWJsZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3QuZGlzYWJsZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0ZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Quc2VsZWN0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3Quc2VsZWN0ZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbHRpcFRvU2hvdyhhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoYWN0LnRvb2xUaXBJZkRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkKGFjdCkpIHJldHVybiAnJztcbiAgICAgICAgcmV0dXJuIGFjdC5jdXN0b21Ub29sdGlwID8gYWN0LmN1c3RvbVRvb2x0aXAoYWN0LmRhdGEpIDogYWN0LnRvb2xUaXA7XG4gICAgfVxuXG4gICAgYWN0aW9uKGFjdDogSURyb3Bkb3duSXRlbTx1bmtub3duPikge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0KSkge1xuICAgICAgICAgICAgaWYgKGFjdC5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBhY3QuYWN0aW9uKGFjdC5kYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB7IGV2ZW50OiBhY3QuZXZlbnQgfHwgYWN0LnRpdGxlIHx8ICdkZWZhdWx0JywgZGF0YTogYWN0LmRhdGEgfTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWN0aW9uLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BY3Rpb25JY29uQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCBhY3Rpb25JY29uOiBJRHJvcGRvd25BY3Rpb25JY29uPHVua25vd24+LCBkYXRhOiB1bmtub3duKSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgYWN0aW9uSWNvbi5hY3Rpb24oZGF0YSk7XG4gICAgfVxuXG4gICAgaGFzQ2hpbGRyZW4oaXRlbTogSURyb3Bkb3duSXRlbTx1bmtub3duPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFpdGVtLmNoaWxkcmVuPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgb25Nb3VzZWVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndhc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIEBEZWJvdW5jZSgyMDApXG4gICAgb25Nb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxufVxuIiwiPGRpdiAjbWVudUNvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiBjbGFzcz1cImRyLWRyb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyLWRyb3Bkb3duX19jb250YWluZXJcIiAobW91c2VlbnRlcik9XCJvbk1vdXNlZW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VsZWF2ZSgpXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRyLWRyb3Bkb3duLWl0ZW1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRyLWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Qgb2YgbGlzdCB8IGRyRHJvcGRvd25JdGVtU2hvd1BpcGVcIlxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJhY3Rpb24oYWN0KVwiXG4gICAgICAgICAgICBbZHJUb29sdGlwXT1cInRvb2x0aXBUb1Nob3coYWN0KVwiXG4gICAgICAgICAgICBbZHJUb29sdGlwUG9zaXRpb25dPVwiJ2xlZnQnXCJcbiAgICAgICAgICAgIFtkclRvb2x0aXBPcHRpb25zXT1cInsgd2l0aG91dEFycm93OiB0cnVlIH1cIlxuICAgICAgICAgICAgW2RyVG9vbHRpcENsYXNzXT1cIidkci1kcm9wZG93bl9fdG9vbHRpcCdcIlxuICAgICAgICAgICAgW2RyRHJvcGRvd25dPVwiaGFzQ2hpbGRyZW4oYWN0KSAmJiBhY3QuY2hpbGRyZW5cIlxuICAgICAgICAgICAgW2RyRHJvcGRvd25DbGFzc109XCJhY3QuY2hpbGRPcHRpb25zPy5jbGFzc1wiXG4gICAgICAgICAgICBbZHJEcm9wZG93bkluSG92ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZHJEcm9wZG93blBvc2l0aW9uXT1cImFjdC5jaGlsZE9wdGlvbnM/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgIGRyRHJvcGRvd25DaGlsZFxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKGFjdClcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkKGFjdClcIlxuICAgICAgICAgICAgW2RpdmlkZXJdPVwiYWN0LnNlcGFyYXRlTGluZVwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBkcm9wZG93bkl0ZW1Db250ZW50ICpuZ0lmPVwiIWFjdC50ZW1wbGF0ZVJlZlwiPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0Lmljb25cIiBbY2xhc3NdPVwiYWN0Lmljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkci1kcm9wZG93bl9fdGV4dFwiPnt7IGFjdC50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGRyb3Bkb3duSXRlbUFjdGlvbnMgKm5nSWY9XCIhYWN0LnRlbXBsYXRlUmVmXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbkljb24gb2YgYWN0LmFjdGlvbkljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImFjdGlvbkljb24uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zaG93T25Ib3Zlcl09XCJhY3Rpb25JY29uLnNob3dPbkhvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkFjdGlvbkljb25DbGljaygkZXZlbnQsIGFjdGlvbkljb24sIGFjdC5kYXRhKVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhhc0NoaWxkcmVuKGFjdClcIiBjbGFzcz1cImRyLWljb24tYXJyb3ctcmlnaHRcIj48L2k+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkl0ZW1Db250ZW50XG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGFjdCB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kci1kcm9wZG93bi1pdGVtPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,17 +1,14 @@
1
- import { ComponentFactoryResolver, Directive, ElementRef, HostListener, Inject, Input, ViewChild, ViewContainerRef, } from '@angular/core';
2
- import { DOCUMENT } from '@angular/common';
3
- import { DrDropdownComponent } from './dr-dropdown.component';
4
- import { DrDropdownService } from './dr-dropdown.service';
1
+ import { Directive, ElementRef, EventEmitter, HostListener, inject, Injector, Input, Output } from '@angular/core';
2
+ import { DrDropdownService, DropdownInstanceService } from './dr-dropdown.service';
5
3
  import * as i0 from "@angular/core";
6
- import * as i1 from "./dr-dropdown.service";
7
4
  export class DrDropdownDirective {
8
- constructor(componentFactoryResolver, viewContainerRef, service, el, _document) {
9
- this.componentFactoryResolver = componentFactoryResolver;
10
- this.viewContainerRef = viewContainerRef;
11
- this.service = service;
12
- this.el = el;
13
- this._document = _document;
14
- this.position = 'left';
5
+ constructor() {
6
+ this.elementRef = inject((ElementRef));
7
+ this.service = inject(DrDropdownService);
8
+ this.child = inject(DrDropdownChildDirective, { optional: true, self: true });
9
+ this.dropdownInstanceService = inject(DropdownInstanceService);
10
+ this.drDropdownPosition = 'left-top';
11
+ this.drDropdownAction = new EventEmitter();
15
12
  this.mouseleaveTimeout = 200;
16
13
  }
17
14
  elementHover() {
@@ -24,94 +21,108 @@ export class DrDropdownDirective {
24
21
  }
25
22
  leaveDropdownTriggerElement() {
26
23
  if (this.drDropdownInHover) {
27
- setTimeout((_) => {
28
- if (this.contentCmpRef && !this.contentCmpRef.instance.wasHovered) {
29
- this.contentCmpRef.destroy();
30
- this.contentCmpRef = null;
24
+ setTimeout(() => {
25
+ if (this.ref && !this.ref.instance.wasHovered) {
26
+ this.close();
31
27
  }
32
28
  }, this.mouseleaveTimeout);
33
29
  }
34
30
  }
35
- documentClick(e) {
36
- this.closeDropdown(e);
31
+ documentClick() {
32
+ this.close();
37
33
  }
38
34
  openDropdown() {
39
- const option = this.el.nativeElement.getBoundingClientRect();
40
- this._document.querySelectorAll('dr-dropdown').forEach((item) => item.remove());
41
- if (this.contentCmpRef && this.contentCmpRef.destroyCbs) {
42
- this.contentCmpRef.destroy();
43
- this.contentCmpRef = null;
35
+ if (!this.drDropdown?.length) {
36
+ return;
37
+ }
38
+ if (this.ref) {
39
+ this.close();
40
+ return;
44
41
  }
45
- else {
46
- this.service.destroy();
47
- this.showMenu({
48
- option,
42
+ this.ref = this.service.open({
43
+ hostRef: this.elementRef,
44
+ position: this.drDropdownPosition,
45
+ asChild: !!this.child,
46
+ providers: [{ provide: DropdownInstanceService, useValue: this.dropdownInstanceService }],
47
+ action$: this.drDropdownAction,
48
+ options: {
49
49
  drDropdownInHover: this.drDropdownInHover,
50
- position: this.position,
50
+ position: this.drDropdownPosition,
51
51
  list: this.drDropdown,
52
52
  class: this.drDropdownClass,
53
- });
54
- }
53
+ },
54
+ });
55
55
  }
56
- closeDropdown(e) {
57
- if (!this.contentCmpRef) {
58
- return;
56
+ close() {
57
+ if (this.ref) {
58
+ this.ref.close();
59
+ this.ref = null;
59
60
  }
60
- const clickTarget = e.target;
61
- const triggerElement = this.el.nativeElement;
62
- const dropdownElement = this.contentCmpRef.location.nativeElement;
63
- const isClickTriggerElement = triggerElement.contains(clickTarget) || triggerElement === clickTarget;
64
- const isClickDropdownContents = dropdownElement.contains(clickTarget);
65
- if (!isClickTriggerElement && !isClickDropdownContents) {
66
- const elems = this._document.querySelectorAll('dr-dropdown');
67
- setTimeout(() => elems.forEach((item) => item.remove()), 100);
68
- }
69
- }
70
- showMenu(options) {
71
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DrDropdownComponent);
72
- this.contentCmpRef = this.viewContainerRef.createComponent(componentFactory);
73
- this.service.addMenu = this.contentCmpRef;
74
- this._document.querySelector('dr-layout').appendChild(this.contentCmpRef.location.nativeElement);
75
- this.contentCmpRef.instance.options = options;
76
61
  }
77
62
  ngOnDestroy() {
78
- if (this.contentCmpRef) {
79
- this.contentCmpRef.destroy();
80
- }
63
+ this.close();
81
64
  }
82
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDropdownDirective, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: i1.DrDropdownService }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
83
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DrDropdownDirective, selector: "[drDropdown]", inputs: { position: "position", drDropdown: "drDropdown", drDropdownClass: "drDropdownClass", drDropdownInHover: "drDropdownInHover" }, host: { listeners: { "mouseenter": "elementHover()", "click": "elementClick()", "mouseleave": "leaveDropdownTriggerElement()", "document:mouseup": "documentClick($event)" } }, viewQueries: [{ propertyName: "contentCmpRef", first: true, predicate: DrDropdownComponent, descendants: true, read: ViewContainerRef, static: true }], ngImport: i0 }); }
65
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownDirective_Factory(t) { return new (t || DrDropdownDirective)(); }; }
66
+ /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrDropdownDirective, selectors: [["", "drDropdown", ""]], hostBindings: function DrDropdownDirective_HostBindings(rf, ctx) { if (rf & 1) {
67
+ i0.ɵɵlistener("mouseenter", function DrDropdownDirective_mouseenter_HostBindingHandler() { return ctx.elementHover(); })("click", function DrDropdownDirective_click_HostBindingHandler() { return ctx.elementClick(); })("mouseleave", function DrDropdownDirective_mouseleave_HostBindingHandler() { return ctx.leaveDropdownTriggerElement(); })("mouseup", function DrDropdownDirective_mouseup_HostBindingHandler() { return ctx.documentClick(); }, false, i0.ɵɵresolveDocument);
68
+ } }, inputs: { drDropdown: "drDropdown", drDropdownPosition: "drDropdownPosition", drDropdownClass: "drDropdownClass", drDropdownInHover: "drDropdownInHover" }, outputs: { drDropdownAction: "drDropdownAction" }, features: [i0.ɵɵProvidersFeature([
69
+ {
70
+ provide: DropdownInstanceService,
71
+ useFactory: ((injector) => {
72
+ const service = injector.get(DropdownInstanceService, null, { skipSelf: true });
73
+ return service ?? new DropdownInstanceService(injector);
74
+ }),
75
+ deps: [Injector],
76
+ },
77
+ ])] }); }
78
+ }
79
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownDirective, [{
80
+ type: Directive,
81
+ args: [{
82
+ selector: '[drDropdown]',
83
+ providers: [
84
+ {
85
+ provide: DropdownInstanceService,
86
+ useFactory: ((injector) => {
87
+ const service = injector.get(DropdownInstanceService, null, { skipSelf: true });
88
+ return service ?? new DropdownInstanceService(injector);
89
+ }),
90
+ deps: [Injector],
91
+ },
92
+ ],
93
+ }]
94
+ }], null, { drDropdown: [{
95
+ type: Input,
96
+ args: [{ required: true }]
97
+ }], drDropdownPosition: [{
98
+ type: Input
99
+ }], drDropdownClass: [{
100
+ type: Input
101
+ }], drDropdownInHover: [{
102
+ type: Input
103
+ }], drDropdownAction: [{
104
+ type: Output
105
+ }], elementHover: [{
106
+ type: HostListener,
107
+ args: ['mouseenter']
108
+ }], elementClick: [{
109
+ type: HostListener,
110
+ args: ['click']
111
+ }], leaveDropdownTriggerElement: [{
112
+ type: HostListener,
113
+ args: ['mouseleave']
114
+ }], documentClick: [{
115
+ type: HostListener,
116
+ args: ['document:mouseup']
117
+ }] }); })();
118
+ export class DrDropdownChildDirective {
119
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownChildDirective_Factory(t) { return new (t || DrDropdownChildDirective)(); }; }
120
+ /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrDropdownChildDirective, selectors: [["", "drDropdownChild", ""]] }); }
84
121
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrDropdownDirective, decorators: [{
86
- type: Directive,
87
- args: [{
88
- selector: '[drDropdown]',
89
- }]
90
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: i1.DrDropdownService }, { type: i0.ElementRef }, { type: undefined, decorators: [{
91
- type: Inject,
92
- args: [DOCUMENT]
93
- }] }]; }, propDecorators: { position: [{
94
- type: Input
95
- }], drDropdown: [{
96
- type: Input
97
- }], drDropdownClass: [{
98
- type: Input
99
- }], drDropdownInHover: [{
100
- type: Input
101
- }], contentCmpRef: [{
102
- type: ViewChild,
103
- args: [DrDropdownComponent, { static: true, read: ViewContainerRef }]
104
- }], elementHover: [{
105
- type: HostListener,
106
- args: ['mouseenter']
107
- }], elementClick: [{
108
- type: HostListener,
109
- args: ['click']
110
- }], leaveDropdownTriggerElement: [{
111
- type: HostListener,
112
- args: ['mouseleave']
113
- }], documentClick: [{
114
- type: HostListener,
115
- args: ['document:mouseup', ['$event']]
116
- }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx3QkFBd0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBSzFELE1BQU0sT0FBTyxtQkFBbUI7SUFTNUIsWUFDWSx3QkFBa0QsRUFDbEQsZ0JBQWtDLEVBQ2xDLE9BQTBCLEVBQzFCLEVBQWMsRUFDSSxTQUFjO1FBSmhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ0ksY0FBUyxHQUFULFNBQVMsQ0FBSztRQWJuQyxhQUFRLEdBQWUsTUFBTSxDQUFDO1FBTXRCLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztJQVF0QyxDQUFDO0lBRXdCLFlBQVk7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxPQUFPO1FBQ3BDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRXNCLFlBQVk7UUFDL0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFMkIsMkJBQTJCO1FBQ25ELElB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LGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsRCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztrSUF6RlEsbUJBQW1CLHFKQWNoQixRQUFRO3NIQWRYLG1CQUFtQiwyWkFLakIsbUJBQW1CLDJCQUF3QixnQkFBZ0I7OzRGQUw3RCxtQkFBbUI7a0JBSC9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7aUJBQzNCOzswQkFlUSxNQUFNOzJCQUFDLFFBQVE7NENBYlgsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNvRSxhQUFhO3NCQUF0RixTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBWTVDLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWTtnQkFLSCxZQUFZO3NCQUFsQyxZQUFZO3VCQUFDLE9BQU87Z0JBSU8sMkJBQTJCO3NCQUF0RCxZQUFZO3VCQUFDLFlBQVk7Z0JBV29CLGFBQWE7c0JBQTFELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudEZhY3RvcnksXG4gICAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEVsUG9zaXRpb24sIElEcm9wZG93biwgSURyb3Bkb3duSXRlbSB9IGZyb20gJy4uL21vZGVscy9kcm9wZG93bic7XG5pbXBvcnQgeyBEckRyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9kci1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJEcm9wZG93blNlcnZpY2UgfSBmcm9tICcuL2RyLWRyb3Bkb3duLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tkckRyb3Bkb3duXScsXG59KVxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiBFbFBvc2l0aW9uID0gJ2xlZnQnO1xuICAgIEBJbnB1dCgpIGRyRHJvcGRvd246IElEcm9wZG93bkl0ZW08VD5bXTtcbiAgICBASW5wdXQoKSBkckRyb3Bkb3duQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBkckRyb3Bkb3duSW5Ib3ZlcjogYm9vbGVhbjtcbiAgICBAVmlld0NoaWxkKERyRHJvcGRvd25Db21wb25lbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGNvbnRlbnRDbXBSZWY7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vdXNlbGVhdmVUaW1lb3V0ID0gMjAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlOiBEckRyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IGFueSxcbiAgICApIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJykgZWxlbWVudEhvdmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZHJEcm9wZG93bkluSG92ZXIpIHJldHVybjtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpIGVsZW1lbnRDbGljaygpIHtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgbGVhdmVEcm9wZG93blRyaWdnZXJFbGVtZW50KCkge1xuICAgICAgICBpZiAodGhpcy5kckRyb3Bkb3duSW5Ib3Zlcikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoXykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnRDbXBSZWYgJiYgIXRoaXMuY29udGVudENtcFJlZi5pbnN0YW5jZS53YXNIb3ZlcmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENtcFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudENtcFJlZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5tb3VzZWxlYXZlVGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSkgZG9jdW1lbnRDbGljayhlKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bihlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkci1kcm9wZG93bicpLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlKCkpO1xuICAgICAgICBpZiAodGhpcy5jb250ZW50Q21wUmVmICYmIHRoaXMuY29udGVudENtcFJlZi5kZXN0cm95Q2JzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRDbXBSZWYuZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Q21wUmVmID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLnNob3dNZW51KHtcbiAgICAgICAgICAgICAgICBvcHRpb24sXG4gICAgICAgICAgICAgICAgZHJEcm9wZG93bkluSG92ZXI6IHRoaXMuZHJEcm9wZG93bkluSG92ZXIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICAgICAgbGlzdDogdGhpcy5kckRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIGNsYXNzOiB0aGlzLmRyRHJvcGRvd25DbGFzcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnRDbXBSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsaWNrVGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBkcm9wZG93bkVsZW1lbnQgPSB0aGlzLmNvbnRlbnRDbXBSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNDbGlja1RyaWdnZXJFbGVtZW50ID0gdHJpZ2dlckVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpIHx8IHRyaWdnZXJFbGVtZW50ID09PSBjbGlja1RhcmdldDtcbiAgICAgICAgY29uc3QgaXNDbGlja0Ryb3Bkb3duQ29udGVudHMgPSBkcm9wZG93bkVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpO1xuXG4gICAgICAgIGlmICghaXNDbGlja1RyaWdnZXJFbGVtZW50ICYmICFpc0NsaWNrRHJvcGRvd25Db250ZW50cykge1xuICAgICAgICAgICAgY29uc3QgZWxlbXMgPSB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkci1kcm9wZG93bicpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBlbGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZSgpKSwgMTAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd01lbnUob3B0aW9uczogSURyb3Bkb3duPFQ+KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8RHJEcm9wZG93bkNvbXBvbmVudD4gPVxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRHJEcm9wZG93bkNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29udGVudENtcFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XG4gICAgICAgIHRoaXMuc2VydmljZS5hZGRNZW51ID0gdGhpcy5jb250ZW50Q21wUmVmO1xuICAgICAgICB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkci1sYXlvdXQnKS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRlbnRDbXBSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMuY29udGVudENtcFJlZi5pbnN0YW5jZS5vcHRpb25zID0gb3B0aW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRDbXBSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudENtcFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
122
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownChildDirective, [{
123
+ type: Directive,
124
+ args: [{
125
+ selector: '[drDropdownChild]',
126
+ }]
127
+ }], null, null); })();
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWlCbkYsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBSzNFLHVCQUFrQixHQUFlLFVBQVUsQ0FBQztRQU81QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUl6QyxzQkFBaUIsR0FBRyxHQUFHLENBQUM7S0FnRTVDO0lBN0RHLFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFDcEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCwyQkFBMkI7UUFDdkIsSUFBSSxJQUFJLENBQUMsaUJB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QUFRLEVBQUUsSUFBSSxFQUFFO1lBR3pCLGtCQUFrQjtrQkFEakIsS0FBSztZQUdOLGVBQWU7a0JBRGQsS0FBSztZQUdOLGlCQUFpQjtrQkFEaEIsS0FBSztZQUlOLGdCQUFnQjtrQkFEZixNQUFNO1lBUVAsWUFBWTtrQkFEWCxZQUFZO21CQUFDLFlBQVk7WUFPMUIsWUFBWTtrQkFEWCxZQUFZO21CQUFDLE9BQU87WUFNckIsMkJBQTJCO2tCQUQxQixZQUFZO21CQUFDLFlBQVk7WUFZMUIsYUFBYTtrQkFEWixZQUFZO21CQUFDLGtCQUFrQjs7QUE2Q3BDLE1BQU0sT0FBTyx3QkFBd0I7NEdBQXhCLHdCQUF3QjttR0FBeEIsd0JBQXdCOzt1RkFBeEIsd0JBQXdCO2NBSHBDLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbFBvc2l0aW9uLCBJRHJvcGRvd25BY3Rpb24sIElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgRHJEcm9wZG93blNlcnZpY2UsIERyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IERyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2RyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEclBvcG92ZXJSZWYgfSBmcm9tICcuLi9tb2RlbHMvcG9wb3Zlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyRHJvcGRvd25dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdG9yLmdldChEcm9wZG93bkluc3RhbmNlU2VydmljZSwgbnVsbCwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZSA/PyBuZXcgRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UoaW5qZWN0b3IpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkRpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoRHJEcm9wZG93blNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpbGQgPSBpbmplY3QoRHJEcm9wZG93bkNoaWxkRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcGRvd25JbnN0YW5jZVNlcnZpY2UgPSBpbmplY3QoRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UpO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBkckRyb3Bkb3duOiBJRHJvcGRvd25JdGVtPFQ+W107XG4gICAgQElucHV0KClcbiAgICBkckRyb3Bkb3duUG9zaXRpb246IEVsUG9zaXRpb24gPSAnbGVmdC10b3AnO1xuICAgIEBJbnB1dCgpXG4gICAgZHJEcm9wZG93bkNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBkckRyb3Bkb3duSW5Ib3ZlcjogYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKVxuICAgIGRyRHJvcGRvd25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElEcm9wZG93bkFjdGlvbjxUPj4oKTtcblxuICAgIHByaXZhdGUgcmVmOiBEclBvcG92ZXJSZWY8RHJEcm9wZG93bkNvbXBvbmVudD47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vdXNlbGVhdmVUaW1lb3V0ID0gMjAwO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gICAgZWxlbWVudEhvdmVyKCkge1xuICAgICAgICBpZiAoIXRoaXMuZHJEcm9wZG93bkluSG92ZXIpIHJldHVybjtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gICAgZWxlbWVudENsaWNrKCkge1xuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICAgIGxlYXZlRHJvcGRvd25UcmlnZ2VyRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJEcm9wZG93bkluSG92ZXIpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZiAmJiAhdGhpcy5yZWYuaW5zdGFuY2Uud2FzSG92ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgdGhpcy5tb3VzZWxlYXZlVGltZW91dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJylcbiAgICBkb2N1bWVudENsaWNrKCkge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kckRyb3Bkb3duPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlZikge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWYgPSB0aGlzLnNlcnZpY2Uub3Blbih7XG4gICAgICAgICAgICBob3N0UmVmOiB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5kckRyb3Bkb3duUG9zaXRpb24sXG4gICAgICAgICAgICBhc0NoaWxkOiAhIXRoaXMuY2hpbGQsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IERyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlLCB1c2VWYWx1ZTogdGhpcy5kcm9wZG93bkluc3RhbmNlU2VydmljZSB9XSxcbiAgICAgICAgICAgIGFjdGlvbiQ6IHRoaXMuZHJEcm9wZG93bkFjdGlvbixcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICBkckRyb3Bkb3duSW5Ib3ZlcjogdGhpcy5kckRyb3Bkb3duSW5Ib3ZlcixcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5kckRyb3Bkb3duUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgbGlzdDogdGhpcy5kckRyb3Bkb3duLFxuICAgICAgICAgICAgICAgIGNsYXNzOiB0aGlzLmRyRHJvcGRvd25DbGFzcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlZikge1xuICAgICAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZHJEcm9wZG93bkNoaWxkXScsXG59KVxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25DaGlsZERpcmVjdGl2ZSB7fVxuIl19