@datarailsshared/datarailsshared 1.4.569 → 1.5.1

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 (493) hide show
  1. package/assets/styles/_storybook-styles.scss +37 -0
  2. package/assets/styles/_styles.scss +9 -2
  3. package/assets/styles/colors.scss +88 -74
  4. package/assets/styles/dataRailsFont.scss +1 -1
  5. package/assets/styles/dialog.scss +22 -0
  6. package/assets/styles/icons.scss +1 -1
  7. package/assets/styles/mixins.scss +106 -6
  8. package/assets/styles/vars.scss +6 -4
  9. package/datarailsshared-datarailsshared-1.5.1.tgz +0 -0
  10. package/esm2022/datarailsshared-datarailsshared.mjs +5 -0
  11. package/esm2022/lib/date-tags/any-tag.component.mjs +42 -0
  12. package/esm2022/lib/date-tags/date-tag.component.mjs +126 -0
  13. package/esm2022/lib/date-tags/date-tag.module.mjs +53 -0
  14. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +95 -0
  15. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +222 -0
  16. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.service.mjs +87 -0
  17. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +98 -0
  18. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +126 -0
  19. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +102 -0
  20. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +96 -0
  21. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +92 -0
  22. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +19 -0
  23. package/esm2022/lib/directives/dr-shine-animation/dr-shine-animation.directive.mjs +63 -0
  24. package/esm2022/lib/directives/let/let.directive.mjs +35 -0
  25. package/esm2022/lib/directives/ng-track-by-property/ng-track-by-property.directive.mjs +23 -0
  26. package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +61 -0
  27. package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +154 -0
  28. package/esm2022/lib/dr-accordion/accordion-item.component.mjs +143 -0
  29. package/esm2022/lib/dr-accordion/accordion.component.mjs +55 -0
  30. package/esm2022/lib/dr-accordion/accordion.module.mjs +35 -0
  31. package/esm2022/lib/dr-alert/dr-alert.component.mjs +64 -0
  32. package/esm2022/lib/dr-alert/dr-alert.module.mjs +20 -0
  33. package/{esm2015/lib/dr-alert/enums/dr-alert-theme.enum.js → esm2022/lib/dr-alert/enums/dr-alert-theme.enum.mjs} +1 -2
  34. package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +142 -0
  35. package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +21 -0
  36. package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +20 -0
  37. package/esm2022/lib/dr-avatar/services/dr-avatar.service.mjs +17 -0
  38. package/esm2022/lib/dr-avatar/types.mjs +2 -0
  39. package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +53 -0
  40. package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +21 -0
  41. package/esm2022/lib/dr-chat/chat.component.mjs +202 -0
  42. package/esm2022/lib/dr-chat/chat.module.mjs +81 -0
  43. package/esm2022/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.mjs +31 -0
  44. package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +273 -0
  45. package/esm2022/lib/dr-chat/dr-chat-form-with-history/chat-form-with-history.component.mjs +380 -0
  46. package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +185 -0
  47. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +47 -0
  48. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +26 -0
  49. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +78 -0
  50. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +30 -0
  51. package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +187 -0
  52. package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +14 -0
  53. package/esm2022/lib/dr-chip/dr-chip.component.mjs +58 -0
  54. package/esm2022/lib/dr-code-editor/components/code-editor-hint-wrapper.component.mjs +19 -0
  55. package/esm2022/lib/dr-code-editor/components/dr-codemirror.component.mjs +204 -0
  56. package/esm2022/lib/dr-code-editor/dr-code-editor.component.mjs +326 -0
  57. package/esm2022/lib/dr-code-editor/dr-code-editor.module.mjs +29 -0
  58. package/esm2022/lib/dr-code-editor/models/code-editor-hint.mjs +6 -0
  59. package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +106 -0
  60. package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +20 -0
  61. package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +339 -0
  62. package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +238 -0
  63. package/esm2022/lib/dr-dialog/dialog.module.mjs +27 -0
  64. package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +27 -0
  65. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +77 -0
  66. package/esm2022/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.mjs +29 -0
  67. package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +16 -0
  68. package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +248 -0
  69. package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +142 -0
  70. package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +41 -0
  71. package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +62 -0
  72. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +203 -0
  73. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +21 -0
  74. package/esm2022/lib/dr-error/dr-error.component.mjs +90 -0
  75. package/esm2022/lib/dr-error/dr-error.module.mjs +22 -0
  76. package/esm2022/lib/dr-inputs/button/button.component.mjs +101 -0
  77. package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +110 -0
  78. package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +55 -0
  79. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +400 -0
  80. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.mjs +157 -0
  81. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +269 -0
  82. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +326 -0
  83. package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +16 -0
  84. package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +224 -0
  85. package/esm2022/lib/dr-inputs/date-pickers/services/week-selection-strategy.mjs +34 -0
  86. package/esm2022/lib/dr-inputs/date-pickers/week-selector/week-selector.component.mjs +91 -0
  87. package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +336 -0
  88. package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +128 -0
  89. package/esm2022/lib/dr-inputs/dr-link/dr-link.component.mjs +43 -0
  90. package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +37 -0
  91. package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +391 -0
  92. package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +138 -0
  93. package/esm2022/lib/dr-inputs/dr-slider/dr-slider.component.mjs +53 -0
  94. package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +108 -0
  95. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +108 -0
  96. package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +88 -0
  97. package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +185 -0
  98. package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +19 -0
  99. package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +25 -0
  100. package/esm2022/lib/dr-layout/dr-layout.component.mjs +21 -0
  101. package/esm2022/lib/dr-layout/dr-layout.module.mjs +22 -0
  102. package/esm2022/lib/dr-popover/dr-popover-ref.mjs +23 -0
  103. package/esm2022/lib/dr-popover/dr-popover.component.mjs +155 -0
  104. package/esm2022/lib/dr-popover/dr-popover.directive.mjs +137 -0
  105. package/esm2022/lib/dr-popover/dr-popover.module.mjs +20 -0
  106. package/esm2022/lib/dr-popover/dr-popover.service.mjs +117 -0
  107. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +104 -0
  108. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +100 -0
  109. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +87 -0
  110. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +27 -0
  111. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +195 -0
  112. package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +27 -0
  113. package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +66 -0
  114. package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +22 -0
  115. package/esm2022/lib/dr-tabs/dr-tab.component.mjs +47 -0
  116. package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +252 -0
  117. package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +25 -0
  118. package/esm2022/lib/dr-tags/dr-tag.component.mjs +235 -0
  119. package/esm2022/lib/dr-tags/dr-tag.module.mjs +23 -0
  120. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.component.mjs +161 -0
  121. package/esm2022/lib/dr-tags-constructor/dr-tags-constructor.module.mjs +24 -0
  122. package/esm2022/lib/dr-tags-constructor/tags-constructor.service.mjs +71 -0
  123. package/esm2022/lib/dr-toastr/default-toastr/default-toastr.component.mjs +73 -0
  124. package/esm2022/lib/dr-toastr/dr-toastr.module.mjs +31 -0
  125. package/esm2022/lib/dr-toastr/dr-toastr.service.mjs +44 -0
  126. package/esm2022/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.mjs +31 -0
  127. package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +82 -0
  128. package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +86 -0
  129. package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +194 -0
  130. package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +24 -0
  131. package/esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs +14 -0
  132. package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +407 -0
  133. package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +97 -0
  134. package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +31 -0
  135. package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +108 -0
  136. package/esm2022/lib/dr-treeview/helpers/treeview-helper.mjs +82 -0
  137. package/esm2022/lib/dr-treeview/models/treeview-config.mjs +25 -0
  138. package/{esm2015/lib/dr-treeview/models/treeview-header-template-context.js → esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs} +1 -1
  139. package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +47 -0
  140. package/{esm2015/lib/dr-treeview/models/treeview-item-template-context.js → esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs} +1 -1
  141. package/esm2022/lib/dr-treeview/models/treeview-item.mjs +155 -0
  142. package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +21 -0
  143. package/esm2022/lib/drawer/drawer-animation.mjs +18 -0
  144. package/esm2022/lib/drawer/drawer-config.mjs +35 -0
  145. package/esm2022/lib/drawer/drawer-container.component.mjs +179 -0
  146. package/esm2022/lib/drawer/drawer-position-strategy.mjs +14 -0
  147. package/esm2022/lib/drawer/drawer-ref.mjs +106 -0
  148. package/esm2022/lib/drawer/drawer.module.mjs +19 -0
  149. package/esm2022/lib/drawer/drawer.service.mjs +140 -0
  150. package/esm2022/lib/drawer/public-api.mjs +6 -0
  151. package/esm2022/lib/image-cropper/dr-image-cropper-canvas.service.mjs +78 -0
  152. package/esm2022/lib/image-cropper/dr-image-cropper.component.mjs +133 -0
  153. package/esm2022/lib/image-cropper/dr-image-cropper.types.mjs +6 -0
  154. package/esm2022/lib/list-tags/list-tag.component.mjs +82 -0
  155. package/esm2022/lib/list-tags/list-tag.module.mjs +22 -0
  156. package/esm2022/lib/models/chat.mjs +36 -0
  157. package/{esm2015/lib/models/constants.js → esm2022/lib/models/constants.mjs} +17 -22
  158. package/{esm2015/lib/models/datePicker.js → esm2022/lib/models/datePicker.mjs} +2 -2
  159. package/esm2022/lib/models/datePickerRange.mjs +2 -0
  160. package/esm2022/lib/models/dropdown.mjs +2 -0
  161. package/{esm2015/lib/models/feedback.js → esm2022/lib/models/feedback.mjs} +1 -2
  162. package/esm2022/lib/models/popover.mjs +27 -0
  163. package/{esm2015/lib/models/serverTags.js → esm2022/lib/models/serverTags.mjs} +1 -1
  164. package/esm2022/lib/models/spinnerOptions.mjs +2 -0
  165. package/esm2022/lib/models/toastr.mjs +14 -0
  166. package/esm2022/lib/pipes/filter/filter.pipe.mjs +48 -0
  167. package/esm2022/lib/pipes/img/img.pipe.mjs +19 -0
  168. package/esm2022/lib/stepper/stepper.component.mjs +270 -0
  169. package/esm2022/lib/stepper/stepper.module.mjs +20 -0
  170. package/esm2022/lib/utils/data-analytics.service.mjs +21 -0
  171. package/esm2022/lib/utils/decorators.mjs +12 -0
  172. package/esm2022/lib/utils/dr-shared-utils.mjs +85 -0
  173. package/esm2022/public-api.mjs +156 -0
  174. package/esm2022/src/lib/drawer/drDrawer.mjs +5 -0
  175. package/esm2022/src/lib/drawer/drawer-animation.mjs +18 -0
  176. package/esm2022/src/lib/drawer/drawer-config.mjs +35 -0
  177. package/esm2022/src/lib/drawer/drawer-container.component.mjs +179 -0
  178. package/esm2022/src/lib/drawer/drawer-position-strategy.mjs +14 -0
  179. package/esm2022/src/lib/drawer/drawer-ref.mjs +106 -0
  180. package/esm2022/src/lib/drawer/drawer.module.mjs +19 -0
  181. package/esm2022/src/lib/drawer/drawer.service.mjs +140 -0
  182. package/esm2022/src/lib/drawer/public-api.mjs +6 -0
  183. package/fesm2022/datarailsshared-datarailsshared.mjs +13716 -0
  184. package/fesm2022/datarailsshared-datarailsshared.mjs.map +1 -0
  185. package/fesm2022/drDrawer.mjs +496 -0
  186. package/fesm2022/drDrawer.mjs.map +1 -0
  187. package/index.d.ts +5 -0
  188. package/lib/date-tags/any-tag.component.d.ts +20 -0
  189. package/lib/date-tags/date-tag.component.d.ts +4 -16
  190. package/lib/date-tags/date-tag.module.d.ts +19 -2
  191. package/lib/date-tags/day-tag/day-tag.component.d.ts +4 -1
  192. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +4 -1
  193. package/lib/date-tags/forecast-tag/forecast-tag.service.d.ts +11 -8
  194. package/lib/date-tags/month-tag/month-tag.component.d.ts +4 -1
  195. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +4 -1
  196. package/lib/date-tags/week-tag/week-tag.component.d.ts +4 -1
  197. package/lib/date-tags/year-tag/year-tag.component.d.ts +4 -1
  198. package/lib/directives/click-outside/click-outside.directive.d.ts +23 -0
  199. package/lib/directives/click-outside/click-outside.module.d.ts +8 -0
  200. package/lib/directives/dr-shine-animation/dr-shine-animation.directive.d.ts +18 -0
  201. package/lib/directives/let/let.directive.d.ts +19 -0
  202. package/lib/directives/ng-track-by-property/ng-track-by-property.directive.d.ts +8 -0
  203. package/lib/dr-accordion/accordion-item-body.component.d.ts +3 -0
  204. package/lib/dr-accordion/accordion-item-header.component.d.ts +14 -1
  205. package/lib/dr-accordion/accordion-item.component.d.ts +4 -1
  206. package/lib/dr-accordion/accordion.component.d.ts +5 -0
  207. package/lib/dr-accordion/accordion.module.d.ts +9 -0
  208. package/lib/dr-alert/dr-alert.component.d.ts +3 -0
  209. package/lib/dr-alert/dr-alert.module.d.ts +6 -0
  210. package/lib/dr-avatar/dr-avatar.component.d.ts +15 -13
  211. package/lib/dr-avatar/dr-avatar.module.d.ts +8 -0
  212. package/lib/dr-avatar/dr-avatar.pipe.d.ts +5 -1
  213. package/lib/dr-avatar/services/dr-avatar.service.d.ts +1 -1
  214. package/lib/dr-avatar/types.d.ts +8 -0
  215. package/lib/dr-badge-status/dr-badge-status.component.d.ts +5 -4
  216. package/lib/dr-badge-status/dr-badge-status.module.d.ts +7 -0
  217. package/lib/dr-chat/chat.component.d.ts +6 -7
  218. package/lib/dr-chat/chat.module.d.ts +20 -0
  219. package/lib/dr-chat/dr-chat-alert/dr-chat-alert.component.d.ts +8 -0
  220. package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +11 -1
  221. package/lib/dr-chat/dr-chat-form-with-history/chat-form-with-history.component.d.ts +81 -0
  222. package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +4 -0
  223. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +3 -0
  224. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +3 -0
  225. package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +3 -0
  226. package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +3 -0
  227. package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +15 -2
  228. package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +3 -0
  229. package/lib/dr-chip/dr-chip.component.d.ts +10 -0
  230. package/lib/dr-code-editor/components/code-editor-hint-wrapper.component.d.ts +7 -0
  231. package/lib/dr-code-editor/components/dr-codemirror.component.d.ts +47 -0
  232. package/lib/dr-code-editor/dr-code-editor.component.d.ts +45 -0
  233. package/lib/dr-code-editor/dr-code-editor.module.d.ts +17 -0
  234. package/lib/dr-code-editor/models/code-editor-hint.d.ts +14 -0
  235. package/lib/dr-details-list/dr-details-list.component.d.ts +3 -0
  236. package/lib/dr-details-list/dr-details-list.module.d.ts +6 -0
  237. package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +6 -5
  238. package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +6 -5
  239. package/lib/dr-dialog/dialog.module.d.ts +12 -0
  240. package/lib/dr-dialog/interfaces/dialog-data.d.ts +13 -9
  241. package/lib/dr-dialog/services/dialog.service.d.ts +10 -3
  242. package/lib/dr-dropdown/dr-dropdown-item/dr-dropdown-item.component.d.ts +8 -0
  243. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +3 -0
  244. package/lib/dr-dropdown/dr-dropdown.component.d.ts +28 -21
  245. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +21 -14
  246. package/lib/dr-dropdown/dr-dropdown.module.d.ts +11 -0
  247. package/lib/dr-dropdown/dr-dropdown.service.d.ts +26 -8
  248. package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +3 -0
  249. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +8 -0
  250. package/lib/dr-error/dr-error.component.d.ts +12 -8
  251. package/lib/dr-error/dr-error.module.d.ts +8 -0
  252. package/lib/dr-inputs/button/button.component.d.ts +6 -8
  253. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +10 -2
  254. package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +3 -0
  255. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +29 -9
  256. package/lib/dr-inputs/date-pickers/dr-date-picker-range/dr-date-picker-range.component.d.ts +40 -0
  257. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +18 -11
  258. package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +11 -10
  259. package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +4 -2
  260. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +22 -5
  261. package/lib/dr-inputs/date-pickers/services/week-selection-strategy.d.ts +12 -0
  262. package/lib/dr-inputs/date-pickers/week-selector/week-selector.component.d.ts +23 -0
  263. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +35 -20
  264. package/lib/dr-inputs/dr-inputs.module.d.ts +30 -0
  265. package/lib/dr-inputs/dr-link/dr-link.component.d.ts +16 -0
  266. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +4 -0
  267. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +20 -3
  268. package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +4 -0
  269. package/lib/dr-inputs/dr-slider/dr-slider.component.d.ts +18 -0
  270. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +3 -0
  271. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +6 -1
  272. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +3 -0
  273. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +3 -0
  274. package/lib/dr-layout/dr-layout-body.component.d.ts +3 -0
  275. package/lib/dr-layout/dr-layout-header.component.d.ts +3 -0
  276. package/lib/dr-layout/dr-layout.component.d.ts +3 -0
  277. package/lib/dr-layout/dr-layout.module.d.ts +8 -0
  278. package/lib/dr-popover/dr-popover-ref.d.ts +1 -0
  279. package/lib/dr-popover/dr-popover.component.d.ts +8 -4
  280. package/lib/dr-popover/dr-popover.directive.d.ts +9 -5
  281. package/lib/dr-popover/dr-popover.module.d.ts +7 -0
  282. package/lib/dr-popover/dr-popover.service.d.ts +5 -1
  283. package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +3 -4
  284. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +3 -0
  285. package/lib/dr-scenario/dr-scenario.module.d.ts +11 -0
  286. package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
  287. package/lib/dr-scenario/services/scenario.service.d.ts +3 -0
  288. package/lib/dr-spinner/dr-spinner.component.d.ts +3 -0
  289. package/lib/dr-spinner/dr-spinner.directive.d.ts +4 -2
  290. package/lib/dr-spinner/dr-spinner.module.d.ts +7 -0
  291. package/lib/dr-tabs/dr-tab.component.d.ts +5 -0
  292. package/lib/dr-tabs/dr-tabs.component.d.ts +21 -4
  293. package/lib/dr-tabs/dr-tabs.module.d.ts +11 -0
  294. package/lib/dr-tags/dr-tag.component.d.ts +3 -0
  295. package/lib/dr-tags/dr-tag.module.d.ts +9 -0
  296. package/lib/dr-tags-constructor/dr-tags-constructor.component.d.ts +33 -0
  297. package/lib/dr-tags-constructor/dr-tags-constructor.module.d.ts +10 -0
  298. package/lib/dr-tags-constructor/tags-constructor.service.d.ts +12 -0
  299. package/lib/dr-toastr/default-toastr/default-toastr.component.d.ts +15 -0
  300. package/lib/dr-toastr/dr-toastr.module.d.ts +9 -0
  301. package/lib/dr-toastr/dr-toastr.service.d.ts +14 -0
  302. package/lib/dr-tooltip/components/tooltip-default/tooltip-default.component.d.ts +9 -0
  303. package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +3 -1
  304. package/lib/dr-tooltip/dr-tooltip.component.d.ts +4 -1
  305. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +7 -0
  306. package/lib/dr-tooltip/dr-tooltip.module.d.ts +9 -0
  307. package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +18 -2
  308. package/lib/dr-treeview/components/treeview/treeview.component.d.ts +3 -0
  309. package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +3 -0
  310. package/lib/dr-treeview/dr-tree-view.module.d.ts +9 -0
  311. package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +9 -0
  312. package/lib/dr-treeview/models/treeview-config.d.ts +3 -0
  313. package/lib/dr-treeview/models/treeview-i18n.d.ts +5 -0
  314. package/lib/dr-treeview/models/treeview-item.d.ts +2 -1
  315. package/lib/dr-treeview/pipes/treeview.pipe.d.ts +3 -0
  316. package/lib/drawer/drawer-animation.d.ts +5 -0
  317. package/lib/drawer/drawer-config.d.ts +68 -0
  318. package/lib/drawer/drawer-container.component.d.ts +45 -0
  319. package/lib/drawer/drawer-position-strategy.d.ts +10 -0
  320. package/lib/drawer/drawer-ref.d.ts +55 -0
  321. package/lib/drawer/drawer.module.d.ts +7 -0
  322. package/lib/drawer/drawer.service.d.ts +62 -0
  323. package/lib/drawer/public-api.d.ts +5 -0
  324. package/lib/image-cropper/dr-image-cropper-canvas.service.d.ts +20 -0
  325. package/lib/image-cropper/dr-image-cropper.component.d.ts +28 -0
  326. package/lib/image-cropper/dr-image-cropper.types.d.ts +9 -0
  327. package/lib/list-tags/list-tag.component.d.ts +3 -0
  328. package/lib/list-tags/list-tag.module.d.ts +8 -0
  329. package/lib/models/chat.d.ts +3 -3
  330. package/lib/models/datePicker.d.ts +10 -3
  331. package/lib/models/datePickerRange.d.ts +4 -0
  332. package/lib/models/dropdown.d.ts +15 -21
  333. package/lib/models/popover.d.ts +7 -4
  334. package/lib/models/serverTags.d.ts +4 -4
  335. package/lib/models/spinnerOptions.d.ts +2 -10
  336. package/lib/models/toastr.d.ts +18 -0
  337. package/lib/pipes/filter/filter.pipe.d.ts +7 -0
  338. package/lib/pipes/img/img.pipe.d.ts +7 -0
  339. package/lib/stepper/interfaces/stepper.d.ts +1 -1
  340. package/lib/stepper/stepper.component.d.ts +13 -8
  341. package/lib/stepper/stepper.module.d.ts +7 -0
  342. package/lib/utils/data-analytics.service.d.ts +8 -0
  343. package/lib/utils/decorators.d.ts +1 -0
  344. package/lib/utils/dr-shared-utils.d.ts +9 -0
  345. package/package.json +41 -15
  346. package/public-api.d.ts +59 -6
  347. package/src/lib/drawer/drawer-animation.d.ts +5 -0
  348. package/src/lib/drawer/drawer-config.d.ts +68 -0
  349. package/src/lib/drawer/drawer-container.component.d.ts +45 -0
  350. package/src/lib/drawer/drawer-position-strategy.d.ts +10 -0
  351. package/src/lib/drawer/drawer-ref.d.ts +55 -0
  352. package/src/lib/drawer/drawer.module.d.ts +7 -0
  353. package/src/lib/drawer/drawer.service.d.ts +62 -0
  354. package/src/lib/drawer/index.d.ts +5 -0
  355. package/src/lib/drawer/public-api.d.ts +5 -0
  356. package/styles.css +749 -0
  357. package/_datarailsshared.styles.css +0 -4
  358. package/assets/styles/img/dr-icon-info.svg +0 -4
  359. package/bundles/datarailsshared-datarailsshared.umd.js +0 -8372
  360. package/bundles/datarailsshared-datarailsshared.umd.js.map +0 -1
  361. package/datarailsshared-datarailsshared-1.4.569.tgz +0 -0
  362. package/datarailsshared-datarailsshared.d.ts +0 -34
  363. package/datarailsshared-datarailsshared.metadata.json +0 -1
  364. package/esm2015/datarailsshared-datarailsshared.js +0 -35
  365. package/esm2015/lib/date-tags/date-tag.component.js +0 -74
  366. package/esm2015/lib/date-tags/date-tag.module.js +0 -36
  367. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +0 -77
  368. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +0 -164
  369. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.service.js +0 -83
  370. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +0 -80
  371. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +0 -114
  372. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +0 -84
  373. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +0 -78
  374. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +0 -55
  375. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +0 -77
  376. package/esm2015/lib/dr-accordion/accordion-item.component.js +0 -123
  377. package/esm2015/lib/dr-accordion/accordion.component.js +0 -43
  378. package/esm2015/lib/dr-accordion/accordion.module.js +0 -23
  379. package/esm2015/lib/dr-alert/dr-alert.component.js +0 -35
  380. package/esm2015/lib/dr-alert/dr-alert.module.js +0 -18
  381. package/esm2015/lib/dr-avatar/dr-avatar.component.js +0 -54
  382. package/esm2015/lib/dr-avatar/dr-avatar.module.js +0 -26
  383. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +0 -16
  384. package/esm2015/lib/dr-avatar/services/dr-avatar.service.js +0 -17
  385. package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +0 -25
  386. package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +0 -20
  387. package/esm2015/lib/dr-chat/chat.component.js +0 -119
  388. package/esm2015/lib/dr-chat/chat.module.js +0 -41
  389. package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +0 -155
  390. package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +0 -71
  391. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +0 -49
  392. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +0 -23
  393. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +0 -47
  394. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +0 -18
  395. package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +0 -87
  396. package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +0 -15
  397. package/esm2015/lib/dr-details-list/dr-details-list.component.js +0 -65
  398. package/esm2015/lib/dr-details-list/dr-details-list.module.js +0 -16
  399. package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +0 -84
  400. package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +0 -92
  401. package/esm2015/lib/dr-dialog/dialog.module.js +0 -34
  402. package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +0 -25
  403. package/esm2015/lib/dr-dialog/services/dialog.service.js +0 -78
  404. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +0 -12
  405. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +0 -104
  406. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +0 -114
  407. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +0 -104
  408. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +0 -34
  409. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +0 -24
  410. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +0 -120
  411. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +0 -19
  412. package/esm2015/lib/dr-error/dr-error.component.js +0 -56
  413. package/esm2015/lib/dr-error/dr-error.module.js +0 -22
  414. package/esm2015/lib/dr-inputs/button/button.component.js +0 -39
  415. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +0 -66
  416. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +0 -47
  417. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +0 -234
  418. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +0 -182
  419. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +0 -183
  420. package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +0 -12
  421. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +0 -194
  422. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +0 -194
  423. package/esm2015/lib/dr-inputs/dr-inputs.module.js +0 -68
  424. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +0 -29
  425. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +0 -123
  426. package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +0 -74
  427. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +0 -68
  428. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +0 -67
  429. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +0 -73
  430. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +0 -157
  431. package/esm2015/lib/dr-layout/dr-layout-body.component.js +0 -13
  432. package/esm2015/lib/dr-layout/dr-layout-header.component.js +0 -17
  433. package/esm2015/lib/dr-layout/dr-layout.component.js +0 -14
  434. package/esm2015/lib/dr-layout/dr-layout.module.js +0 -20
  435. package/esm2015/lib/dr-popover/dr-popover-ref.js +0 -20
  436. package/esm2015/lib/dr-popover/dr-popover.component.js +0 -106
  437. package/esm2015/lib/dr-popover/dr-popover.directive.js +0 -84
  438. package/esm2015/lib/dr-popover/dr-popover.module.js +0 -23
  439. package/esm2015/lib/dr-popover/dr-popover.service.js +0 -106
  440. package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +0 -104
  441. package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +0 -75
  442. package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +0 -79
  443. package/esm2015/lib/dr-scenario/dr-scenario.module.js +0 -28
  444. package/esm2015/lib/dr-scenario/services/scenario.service.js +0 -196
  445. package/esm2015/lib/dr-spinner/dr-spinner.component.js +0 -18
  446. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +0 -58
  447. package/esm2015/lib/dr-spinner/dr-spinner.module.js +0 -18
  448. package/esm2015/lib/dr-tabs/dr-tab.component.js +0 -26
  449. package/esm2015/lib/dr-tabs/dr-tabs.component.js +0 -35
  450. package/esm2015/lib/dr-tabs/dr-tabs.module.js +0 -32
  451. package/esm2015/lib/dr-tags/dr-tag.component.js +0 -183
  452. package/esm2015/lib/dr-tags/dr-tag.module.js +0 -24
  453. package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +0 -19
  454. package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +0 -18
  455. package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +0 -20
  456. package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +0 -34
  457. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +0 -41
  458. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +0 -151
  459. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +0 -38
  460. package/esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js +0 -2
  461. package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +0 -210
  462. package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +0 -58
  463. package/esm2015/lib/dr-treeview/dr-tree-view.module.js +0 -38
  464. package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +0 -97
  465. package/esm2015/lib/dr-treeview/helpers/treeview-helper.js +0 -82
  466. package/esm2015/lib/dr-treeview/models/treeview-config.js +0 -22
  467. package/esm2015/lib/dr-treeview/models/treeview-i18n.js +0 -42
  468. package/esm2015/lib/dr-treeview/models/treeview-item.js +0 -155
  469. package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +0 -17
  470. package/esm2015/lib/list-tags/list-tag.component.js +0 -37
  471. package/esm2015/lib/list-tags/list-tag.module.js +0 -23
  472. package/esm2015/lib/models/chat.js +0 -38
  473. package/esm2015/lib/models/dropdown.js +0 -2
  474. package/esm2015/lib/models/popover.js +0 -27
  475. package/esm2015/lib/models/spinnerOptions.js +0 -13
  476. package/esm2015/lib/stepper/stepper.component.js +0 -55
  477. package/esm2015/lib/stepper/stepper.module.js +0 -17
  478. package/esm2015/lib/utils/dr-shared-utils.js +0 -47
  479. package/esm2015/public-api.js +0 -101
  480. package/fesm2015/datarailsshared-datarailsshared.js +0 -7194
  481. package/fesm2015/datarailsshared-datarailsshared.js.map +0 -1
  482. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -12
  483. package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +0 -5
  484. package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +0 -6
  485. package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +0 -4
  486. /package/{esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js → esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs} +0 -0
  487. /package/{esm2015/lib/dr-scenario/interfaces/scenario.js → esm2022/lib/dr-scenario/interfaces/scenario.mjs} +0 -0
  488. /package/{esm2015/lib/dr-tags/dr-tag.types.js → esm2022/lib/dr-tags/dr-tag.types.mjs} +0 -0
  489. /package/{esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs} +0 -0
  490. /package/{esm2015/lib/dr-tooltip/enums/tooltip-theme.enum.js → esm2022/lib/dr-tooltip/enums/tooltip-theme.enum.mjs} +0 -0
  491. /package/{esm2015/lib/models/badgeStatus.js → esm2022/lib/models/badgeStatus.mjs} +0 -0
  492. /package/{esm2015/lib/models/validationError.js → esm2022/lib/models/validationError.mjs} +0 -0
  493. /package/{esm2015/lib/stepper/interfaces/stepper.js → esm2022/lib/stepper/interfaces/stepper.mjs} +0 -0
@@ -0,0 +1,248 @@
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';
15
+ import * as i0 from "@angular/core";
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", 11);
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 _r14 = i0.ɵɵgetCurrentView();
39
+ i0.ɵɵelementStart(0, "i", 15);
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(_r14); const actionIcon_r12 = restoredCtx.$implicit; const act_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onActionIconClick($event, actionIcon_r12, act_r2.data)); });
41
+ i0.ɵɵelementEnd();
42
+ } if (rf & 2) {
43
+ const actionIcon_r12 = ctx.$implicit;
44
+ const index_r3 = i0.ɵɵnextContext(2).index;
45
+ const ctx_r10 = i0.ɵɵnextContext();
46
+ i0.ɵɵclassMap(actionIcon_r12.icon);
47
+ i0.ɵɵclassProp("showOnHover", actionIcon_r12.showOnHover);
48
+ i0.ɵɵattribute("data-analytics", ctx_r10.getDataAnalyticsTag(actionIcon_r12, index_r3));
49
+ } }
50
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_2_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelement(0, "i", 16);
52
+ } }
53
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementContainerStart(0, 12);
55
+ i0.ɵɵtemplate(1, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_1_Template, 1, 5, "i", 13);
56
+ i0.ɵɵtemplate(2, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_i_2_Template, 1, 0, "i", 14);
57
+ i0.ɵɵelementContainerEnd();
58
+ } if (rf & 2) {
59
+ const act_r2 = i0.ɵɵnextContext().$implicit;
60
+ const ctx_r5 = i0.ɵɵnextContext();
61
+ i0.ɵɵadvance(1);
62
+ i0.ɵɵproperty("ngForOf", act_r2.actionIcons);
63
+ i0.ɵɵadvance(1);
64
+ i0.ɵɵproperty("ngIf", ctx_r5.hasChildren(act_r2));
65
+ } }
66
+ const _c1 = function (a0) { return { $implicit: a0 }; };
67
+ function DrDropdownComponent_dr_dropdown_item_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementContainer(0, 17);
69
+ } if (rf & 2) {
70
+ const act_r2 = i0.ɵɵnextContext().$implicit;
71
+ i0.ɵɵproperty("ngTemplateOutlet", act_r2.templateRef)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c1, act_r2));
72
+ } }
73
+ const _c2 = function () { return { withoutArrow: true }; };
74
+ function DrDropdownComponent_dr_dropdown_item_4_Template(rf, ctx) { if (rf & 1) {
75
+ const _r20 = i0.ɵɵgetCurrentView();
76
+ i0.ɵɵelementStart(0, "dr-dropdown-item", 4);
77
+ i0.ɵɵlistener("mousedown", function DrDropdownComponent_dr_dropdown_item_4_Template_dr_dropdown_item_mousedown_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r20); const act_r2 = restoredCtx.$implicit; const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.action(act_r2)); });
78
+ i0.ɵɵtemplate(1, DrDropdownComponent_dr_dropdown_item_4_ng_container_1_Template, 4, 2, "ng-container", 5);
79
+ i0.ɵɵtemplate(2, DrDropdownComponent_dr_dropdown_item_4_ng_container_2_Template, 3, 2, "ng-container", 6);
80
+ i0.ɵɵtemplate(3, DrDropdownComponent_dr_dropdown_item_4_ng_container_3_Template, 1, 4, "ng-container", 7);
81
+ i0.ɵɵelementEnd();
82
+ } if (rf & 2) {
83
+ const act_r2 = ctx.$implicit;
84
+ const index_r3 = ctx.index;
85
+ const ctx_r1 = i0.ɵɵnextContext();
86
+ i0.ɵɵproperty("drTooltip", ctx_r1.tooltipToShow(act_r2))("drTooltipPosition", "left")("drTooltipOptions", i0.ɵɵpureFunction0(15, _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);
87
+ i0.ɵɵattribute("data-analytics", ctx_r1.getDataAnalyticsTag(act_r2, index_r3));
88
+ i0.ɵɵadvance(1);
89
+ i0.ɵɵproperty("ngIf", !act_r2.templateRef);
90
+ i0.ɵɵadvance(1);
91
+ i0.ɵɵproperty("ngIf", !act_r2.templateRef);
92
+ i0.ɵɵadvance(1);
93
+ i0.ɵɵproperty("ngIf", act_r2.templateRef);
94
+ } }
95
+ const _c3 = [[["dr-dropdown-item"]]];
96
+ const _c4 = ["dr-dropdown-item"];
97
+ export class DrDropdownComponent {
98
+ set options(data) {
99
+ if (data) {
100
+ this.drDropdownInHover = data.drDropdownInHover;
101
+ this.containerClass = data.class;
102
+ this.dataAnalytics = data.dataAnalytics;
103
+ this.list = data.list || [];
104
+ this.list.forEach((item) => {
105
+ if (item.children?.length) {
106
+ item.childOptions = {
107
+ class: item?.childOptions?.class || '',
108
+ position: item?.childOptions?.position || 'left-top',
109
+ };
110
+ }
111
+ });
112
+ this.cdr.markForCheck();
113
+ if (this.drDropdownInHover) {
114
+ this.dropdownInstanceService
115
+ .inactive(this)
116
+ .pipe(first(), takeUntil(merge(this.destroy$, this.drDropdownInHoverChange$)))
117
+ .subscribe(() => {
118
+ this.popoverRef.close();
119
+ });
120
+ }
121
+ }
122
+ }
123
+ constructor() {
124
+ this.cdr = inject(ChangeDetectorRef);
125
+ this.popoverRef = inject(DrPopoverRef, { optional: true });
126
+ this.dropdownInstanceService = inject(DropdownInstanceService, { optional: true });
127
+ this.destroy$ = new Subject();
128
+ this._active = true;
129
+ this.drDropdownInHoverChange$ = new Subject();
130
+ this.list = [];
131
+ this.wasHovered = false;
132
+ this.asChild = false;
133
+ this.onAction = new EventEmitter();
134
+ if (!this.dropdownInstanceService)
135
+ return;
136
+ this.dropdownInstanceService.register(this);
137
+ inject(DestroyRef).onDestroy(() => {
138
+ this.dropdownInstanceService.unregister(this);
139
+ this.destroy$.next();
140
+ this.destroy$.next();
141
+ });
142
+ }
143
+ ngOnChanges(changes) {
144
+ if (!changes?.drDropdownInHover?.isFirstChange()) {
145
+ this.drDropdownInHoverChange$.next();
146
+ }
147
+ }
148
+ disabled(act) {
149
+ if (!act.disabled) {
150
+ return false;
151
+ }
152
+ if (typeof act.disabled === 'boolean') {
153
+ return act.disabled;
154
+ }
155
+ else {
156
+ return act.disabled(act.data);
157
+ }
158
+ }
159
+ selected(act) {
160
+ if (!act.selected) {
161
+ return false;
162
+ }
163
+ if (typeof act.selected === 'boolean') {
164
+ return act.selected;
165
+ }
166
+ else {
167
+ return act.selected(act.data);
168
+ }
169
+ }
170
+ tooltipToShow(act) {
171
+ if (act.toolTipIfDisabled && !this.disabled(act))
172
+ return '';
173
+ return act.customTooltip ? act.customTooltip(act.data) : act.toolTip;
174
+ }
175
+ action(act) {
176
+ if (!this.disabled(act)) {
177
+ if (act.action) {
178
+ act.action(act.data);
179
+ }
180
+ else {
181
+ const event = { event: act.event || act.title || 'default', data: act.data };
182
+ this.onAction.emit(event);
183
+ }
184
+ }
185
+ }
186
+ onActionIconClick($event, actionIcon, data) {
187
+ $event.stopPropagation();
188
+ actionIcon.action(data);
189
+ }
190
+ hasChildren(item) {
191
+ return !!item.children?.length;
192
+ }
193
+ onMouseenter() {
194
+ this.wasHovered = true;
195
+ this._active = true;
196
+ }
197
+ onMouseleave() {
198
+ this._active = false;
199
+ }
200
+ active() {
201
+ return this._active;
202
+ }
203
+ getDataAnalyticsTag(act, index) {
204
+ return act.dataAnalytics
205
+ ? act.dataAnalytics
206
+ : this.dataAnalytics
207
+ ? this.dataAnalytics + '_' + (act.title?.replace(/ /g, '-') || index)
208
+ : null;
209
+ }
210
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownComponent_Factory(t) { return new (t || DrDropdownComponent)(); }; }
211
+ /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DrDropdownComponent, selectors: [["dr-dropdown"]], viewQuery: function DrDropdownComponent_Query(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵviewQuery(_c0, 7);
213
+ } if (rf & 2) {
214
+ let _t;
215
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuContainer = _t.first);
216
+ } }, 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", ""], ["class", "dr-dropdown__icon", 3, "class", 4, "ngIf"], [1, "dr-dropdown__text"], [1, "dr-dropdown__icon"], ["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) {
217
+ i0.ɵɵprojectionDef(_c3);
218
+ i0.ɵɵelementStart(0, "div", 0, 1)(2, "div", 2);
219
+ i0.ɵɵlistener("mouseenter", function DrDropdownComponent_Template_div_mouseenter_2_listener() { return ctx.onMouseenter(); })("mouseleave", function DrDropdownComponent_Template_div_mouseleave_2_listener() { return ctx.onMouseleave(); });
220
+ i0.ɵɵprojection(3);
221
+ i0.ɵɵtemplate(4, DrDropdownComponent_dr_dropdown_item_4_Template, 4, 16, "dr-dropdown-item", 3);
222
+ i0.ɵɵpipe(5, "drDropdownItemShowPipe");
223
+ i0.ɵɵelementEnd()();
224
+ } if (rf & 2) {
225
+ i0.ɵɵclassMap(ctx.containerClass);
226
+ i0.ɵɵadvance(4);
227
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(5, 3, ctx.list));
228
+ } }, 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__icon[_ngcontent-%COMP%]{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 }); }
229
+ }
230
+ __decorate([
231
+ Debounce(200),
232
+ __metadata("design:type", Function),
233
+ __metadata("design:paramtypes", []),
234
+ __metadata("design:returntype", void 0)
235
+ ], DrDropdownComponent.prototype, "onMouseleave", null);
236
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownComponent, [{
237
+ type: Component,
238
+ 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; let index = index\"\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 [attr.data-analytics]=\"getDataAnalyticsTag(act, index)\"\n role=\"option\"\n tabindex=\"0\">\n <ng-container dropdownItemContent *ngIf=\"!act.templateRef\">\n <i *ngIf=\"act.icon\" [class]=\"act.icon\" class=\"dr-dropdown__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 [attr.data-analytics]=\"getDataAnalyticsTag(actionIcon, index)\"\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__icon{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"] }]
239
+ }], function () { return []; }, { menuContainer: [{
240
+ type: ViewChild,
241
+ args: ['menuContainer', { static: true }]
242
+ }], options: [{
243
+ type: Input
244
+ }], onAction: [{
245
+ type: Output,
246
+ args: ['action']
247
+ }], onMouseleave: [] }); })();
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0lDTS9CLHdCQUFxRTs7O0lBQWpELDBCQUFrQjs7O0lBRDFDLGdDQUEyRDtJQUN2RCxrR0FBcUU7SUFDckUsZ0NBQWdDO0lBQUEsWUFBZTtJQUFBLGlCQUFPO0lBQzFELDBCQUFlOzs7SUFGUCxlQUFjO0lBQWQsa0NBQWM7SUFDYyxlQUFlO0lBQWYsa0NBQWU7Ozs7SUFJL0MsNkJBS2tFO0lBQTlELDJUQUFhLGVBQUEsOERBQStDLENBQUEsSUFBQztJQUFDLGlCQUFJOzs7OztJQUZsRSxrQ0FBeUI7SUFDekIseURBQTRDO0lBRjVDLHVGQUE4RDs7O0lBSWxFLHdCQUE0RDs7O0lBUGhFLGlD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QUFDO0lBQ3hCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUEyQixFQUFFLEtBQWE7UUFDMUQsT0FBTyxHQUFHLENBQUMsYUFBYTtZQUNwQixDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWE7WUFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhO2dCQUNsQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDO2dCQUNyRSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pCLENBQUM7dUdBdklRLG1CQUFtQjttR0FBbkIsbUJBQW1COzs7Ozs7O1lDekJoQyxpQ0FBaUUsYUFBQTtZQUN6Qix1R0FBYyxrQkFBYyxJQUFDLDBGQUFlLGtCQUFjLElBQTdCO1lBQzdELGtCQUFtRDtZQUVuRCwrRkF1Q21COztZQUN2QixpQkFBTSxFQUFBOztZQTVDVSxpQ0FBd0I7WUFLaEIsZUFBa0M7WUFBbEMsd0RBQWtDOzs7QUQ0STFEO0lBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQzs7Ozt1REFHYjt1RkEzSFEsbUJBQW1CO2NBTi9CLFNBQVM7MkJBQ0ksYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNO3NDQVkvQyxhQUFhO2tCQURaLFNBQVM7bUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQVl4QyxPQUFPO2tCQURWLEtBQUs7WUE2Qk4sUUFBUTtrQkFEUCxNQUFNO21CQUFDLFFBQVE7WUF5RWhCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURyb3Bkb3duLCBJRHJvcGRvd25BY3Rpb24sIElEcm9wZG93bkFjdGlvbkljb24sIElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgRHJQb3BvdmVyUmVmIH0gZnJvbSAnLi4vbW9kZWxzL3BvcG92ZXInO1xuaW1wb3J0IHsgZmlyc3QsIG1lcmdlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyb3Bkb3duSW5zdGFuY2VSZWYsIERyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IERlYm91bmNlIH0gZnJvbSAnLi4vdXRpbHMvZGVjb3JhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItZHJvcGRvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIERyb3Bkb3duSW5zdGFuY2VSZWYge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcG92ZXJSZWYgPSBpbmplY3QoRHJQb3BvdmVyUmVmLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcGRvd25JbnN0YW5jZVNlcnZpY2UgPSBpbmplY3QoRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgX2FjdGl2ZSA9IHRydWU7XG5cbiAgICBAVmlld0NoaWxkKCdtZW51Q29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBtZW51Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIGRyRHJvcGRvd25JbkhvdmVyOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJEcm9wZG93bkluSG92ZXJDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBsaXN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+W10gPSBbXTtcbiAgICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAgIHdhc0hvdmVyZWQgPSBmYWxzZTtcbiAgICBhc0NoaWxkID0gZmFsc2U7XG4gICAgZGF0YUFuYWx5dGljczogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgb3B0aW9ucyhkYXRhOiBJRHJvcGRvd248SURyb3Bkb3duSXRlbTx1bmtub3duPj4pIHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZHJEcm9wZG93bkluSG92ZXIgPSBkYXRhLmRyRHJvcGRvd25JbkhvdmVyO1xuICAgICAgICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9IGRhdGEuY2xhc3M7XG4gICAgICAgICAgICB0aGlzLmRhdGFBbmFseXRpY3MgPSBkYXRhLmRhdGFBbmFseXRpY3M7XG4gICAgICAgICAgICB0aGlzLmxpc3QgPSBkYXRhLmxpc3QgfHwgW107XG4gICAgICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jaGlsZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzczogaXRlbT8uY2hpbGRPcHRpb25zPy5jbGFzcyB8fCAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBpdGVtPy5jaGlsZE9wdGlvbnM/LnBvc2l0aW9uIHx8ICdsZWZ0LXRvcCcsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZHJEcm9wZG93bkluSG92ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5pbmFjdGl2ZSh0aGlzKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShmaXJzdCgpLCB0YWtlVW50aWwobWVyZ2UodGhpcy5kZXN0cm95JCwgdGhpcy5kckRyb3Bkb3duSW5Ib3ZlckNoYW5nZSQpKSlcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAT3V0cHV0KCdhY3Rpb24nKVxuICAgIG9uQWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxJRHJvcGRvd25BY3Rpb248dW5rbm93bj4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5kcm9wZG93bkluc3RhbmNlU2VydmljZS5yZWdpc3Rlcih0aGlzKTtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyk7XG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICghY2hhbmdlcz8uZHJEcm9wZG93bkluSG92ZXI/LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5kckRyb3Bkb3duSW5Ib3ZlckNoYW5nZSQubmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3QuZGlzYWJsZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5kaXNhYmxlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3QuZGlzYWJsZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0ZWQoYWN0OiBJRHJvcGRvd25JdGVtPHVua25vd24+KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghYWN0LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBhY3Quc2VsZWN0ZWQgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgcmV0dXJuIGFjdC5zZWxlY3RlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY3Quc2VsZWN0ZWQoYWN0LmRhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbHRpcFRvU2hvdyhhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4pOiBzdHJpbmcge1xuICAgICAgICBpZiAoYWN0LnRvb2xUaXBJZkRpc2FibGVkICYmICF0aGlzLmRpc2FibGVkKGFjdCkpIHJldHVybiAnJztcbiAgICAgICAgcmV0dXJuIGFjdC5jdXN0b21Ub29sdGlwID8gYWN0LmN1c3RvbVRvb2x0aXAoYWN0LmRhdGEpIDogYWN0LnRvb2xUaXA7XG4gICAgfVxuXG4gICAgYWN0aW9uKGFjdDogSURyb3Bkb3duSXRlbTx1bmtub3duPikge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoYWN0KSkge1xuICAgICAgICAgICAgaWYgKGFjdC5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBhY3QuYWN0aW9uKGFjdC5kYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSB7IGV2ZW50OiBhY3QuZXZlbnQgfHwgYWN0LnRpdGxlIHx8ICdkZWZhdWx0JywgZGF0YTogYWN0LmRhdGEgfTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQWN0aW9uLmVtaXQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25BY3Rpb25JY29uQ2xpY2soJGV2ZW50OiBNb3VzZUV2ZW50LCBhY3Rpb25JY29uOiBJRHJvcGRvd25BY3Rpb25JY29uPHVua25vd24+LCBkYXRhOiB1bmtub3duKSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgYWN0aW9uSWNvbi5hY3Rpb24oZGF0YSk7XG4gICAgfVxuXG4gICAgaGFzQ2hpbGRyZW4oaXRlbTogSURyb3Bkb3duSXRlbTx1bmtub3duPik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFpdGVtLmNoaWxkcmVuPy5sZW5ndGg7XG4gICAgfVxuXG4gICAgb25Nb3VzZWVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLndhc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIEBEZWJvdW5jZSgyMDApXG4gICAgb25Nb3VzZWxlYXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gICAgfVxuXG4gICAgZ2V0RGF0YUFuYWx5dGljc1RhZyhhY3Q6IElEcm9wZG93bkl0ZW08dW5rbm93bj4sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYWN0LmRhdGFBbmFseXRpY3NcbiAgICAgICAgICAgID8gYWN0LmRhdGFBbmFseXRpY3NcbiAgICAgICAgICAgIDogdGhpcy5kYXRhQW5hbHl0aWNzXG4gICAgICAgICAgICAgID8gdGhpcy5kYXRhQW5hbHl0aWNzICsgJ18nICsgKGFjdC50aXRsZT8ucmVwbGFjZSgvIC9nLCAnLScpIHx8IGluZGV4KVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgfVxufVxuIiwiPGRpdiAjbWVudUNvbnRhaW5lciBbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiBjbGFzcz1cImRyLWRyb3Bkb3duXCI+XG4gICAgPGRpdiBjbGFzcz1cImRyLWRyb3Bkb3duX19jb250YWluZXJcIiAobW91c2VlbnRlcik9XCJvbk1vdXNlZW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VsZWF2ZSgpXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRyLWRyb3Bkb3duLWl0ZW1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgPGRyLWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Qgb2YgbGlzdCB8IGRyRHJvcGRvd25JdGVtU2hvd1BpcGU7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiYWN0aW9uKGFjdClcIlxuICAgICAgICAgICAgW2RyVG9vbHRpcF09XCJ0b29sdGlwVG9TaG93KGFjdClcIlxuICAgICAgICAgICAgW2RyVG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXG4gICAgICAgICAgICBbZHJUb29sdGlwT3B0aW9uc109XCJ7IHdpdGhvdXRBcnJvdzogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFtkclRvb2x0aXBDbGFzc109XCInZHItZHJvcGRvd25fX3Rvb2x0aXAnXCJcbiAgICAgICAgICAgIFtkckRyb3Bkb3duXT1cImhhc0NoaWxkcmVuKGFjdCkgJiYgYWN0LmNoaWxkcmVuXCJcbiAgICAgICAgICAgIFtkckRyb3Bkb3duQ2xhc3NdPVwiYWN0LmNoaWxkT3B0aW9ucz8uY2xhc3NcIlxuICAgICAgICAgICAgW2RyRHJvcGRvd25JbkhvdmVyXT1cInRydWVcIlxuICAgICAgICAgICAgW2RyRHJvcGRvd25Qb3NpdGlvbl09XCJhY3QuY2hpbGRPcHRpb25zPy5wb3NpdGlvblwiXG4gICAgICAgICAgICBkckRyb3Bkb3duQ2hpbGRcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZChhY3QpXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZChhY3QpXCJcbiAgICAgICAgICAgIFtkaXZpZGVyXT1cImFjdC5zZXBhcmF0ZUxpbmVcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1hbmFseXRpY3NdPVwiZ2V0RGF0YUFuYWx5dGljc1RhZyhhY3QsIGluZGV4KVwiXG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBkcm9wZG93bkl0ZW1Db250ZW50ICpuZ0lmPVwiIWFjdC50ZW1wbGF0ZVJlZlwiPlxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiYWN0Lmljb25cIiBbY2xhc3NdPVwiYWN0Lmljb25cIiBjbGFzcz1cImRyLWRyb3Bkb3duX19pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHItZHJvcGRvd25fX3RleHRcIj57eyBhY3QudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBkcm9wZG93bkl0ZW1BY3Rpb25zICpuZ0lmPVwiIWFjdC50ZW1wbGF0ZVJlZlwiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb25JY29uIG9mIGFjdC5hY3Rpb25JY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtYW5hbHl0aWNzXT1cImdldERhdGFBbmFseXRpY3NUYWcoYWN0aW9uSWNvbiwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImFjdGlvbkljb24uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zaG93T25Ib3Zlcl09XCJhY3Rpb25JY29uLnNob3dPbkhvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkFjdGlvbkljb25DbGljaygkZXZlbnQsIGFjdGlvbkljb24sIGFjdC5kYXRhKVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImhhc0NoaWxkcmVuKGFjdClcIiBjbGFzcz1cImRyLWljb24tYXJyb3ctcmlnaHRcIj48L2k+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBkcm9wZG93bkl0ZW1Db250ZW50XG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0LnRlbXBsYXRlUmVmXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGFjdCB9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kci1kcm9wZG93bi1pdGVtPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,142 @@
1
+ import { Directive, ElementRef, EventEmitter, HostListener, inject, Injector, Input, Output } from '@angular/core';
2
+ import { DrDropdownService, DropdownInstanceService } from './dr-dropdown.service';
3
+ import * as i0 from "@angular/core";
4
+ export class DrDropdownDirective {
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();
12
+ this.dropdownClosed = new EventEmitter();
13
+ this.dropdownOpened = new EventEmitter();
14
+ this.mouseleaveTimeout = 200;
15
+ }
16
+ elementHover() {
17
+ if (!this.drDropdownInHover)
18
+ return;
19
+ this.openDropdown();
20
+ }
21
+ elementClick() {
22
+ this.openDropdown();
23
+ }
24
+ leaveDropdownTriggerElement() {
25
+ if (this.drDropdownInHover) {
26
+ setTimeout(() => {
27
+ if (this.ref && !this.ref.instance.wasHovered) {
28
+ this.close();
29
+ }
30
+ }, this.mouseleaveTimeout);
31
+ }
32
+ }
33
+ documentClick() {
34
+ this.close();
35
+ }
36
+ openDropdown() {
37
+ if (!this.drDropdown?.length) {
38
+ return;
39
+ }
40
+ if (this.ref) {
41
+ this.close();
42
+ return;
43
+ }
44
+ this.ref = this.service.open({
45
+ hostRef: this.elementRef,
46
+ position: this.drDropdownPosition,
47
+ asChild: !!this.child,
48
+ providers: [{ provide: DropdownInstanceService, useValue: this.dropdownInstanceService }],
49
+ action$: this.drDropdownAction,
50
+ options: {
51
+ drDropdownInHover: this.drDropdownInHover,
52
+ position: this.drDropdownPosition,
53
+ list: this.drDropdown,
54
+ class: this.drDropdownClass,
55
+ dataAnalytics: this.dataAnalytics,
56
+ },
57
+ });
58
+ this.dropdownOpened.emit();
59
+ }
60
+ close() {
61
+ if (this.ref) {
62
+ this.ref.close();
63
+ this.ref = null;
64
+ this.dropdownClosed.emit();
65
+ }
66
+ }
67
+ ngOnDestroy() {
68
+ this.close();
69
+ }
70
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownDirective_Factory(t) { return new (t || DrDropdownDirective)(); }; }
71
+ /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrDropdownDirective, selectors: [["", "drDropdown", ""]], hostBindings: function DrDropdownDirective_HostBindings(rf, ctx) { if (rf & 1) {
72
+ 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);
73
+ } }, inputs: { drDropdown: "drDropdown", drDropdownPosition: "drDropdownPosition", drDropdownClass: "drDropdownClass", drDropdownInHover: "drDropdownInHover", dataAnalytics: ["data-analytics", "dataAnalytics"] }, outputs: { drDropdownAction: "drDropdownAction", dropdownClosed: "drDropdownClose", dropdownOpened: "drDropdownOpened" }, features: [i0.ɵɵProvidersFeature([
74
+ {
75
+ provide: DropdownInstanceService,
76
+ useFactory: ((injector) => {
77
+ const service = injector.get(DropdownInstanceService, null, { skipSelf: true });
78
+ return service ?? new DropdownInstanceService(injector);
79
+ }),
80
+ deps: [Injector],
81
+ },
82
+ ])] }); }
83
+ }
84
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownDirective, [{
85
+ type: Directive,
86
+ args: [{
87
+ selector: '[drDropdown]',
88
+ providers: [
89
+ {
90
+ provide: DropdownInstanceService,
91
+ useFactory: ((injector) => {
92
+ const service = injector.get(DropdownInstanceService, null, { skipSelf: true });
93
+ return service ?? new DropdownInstanceService(injector);
94
+ }),
95
+ deps: [Injector],
96
+ },
97
+ ],
98
+ }]
99
+ }], null, { drDropdown: [{
100
+ type: Input,
101
+ args: [{ required: true }]
102
+ }], drDropdownPosition: [{
103
+ type: Input
104
+ }], drDropdownClass: [{
105
+ type: Input
106
+ }], drDropdownInHover: [{
107
+ type: Input
108
+ }], dataAnalytics: [{
109
+ type: Input,
110
+ args: [{ alias: 'data-analytics' }]
111
+ }], drDropdownAction: [{
112
+ type: Output
113
+ }], dropdownClosed: [{
114
+ type: Output,
115
+ args: ['drDropdownClose']
116
+ }], dropdownOpened: [{
117
+ type: Output,
118
+ args: ['drDropdownOpened']
119
+ }], elementHover: [{
120
+ type: HostListener,
121
+ args: ['mouseenter']
122
+ }], elementClick: [{
123
+ type: HostListener,
124
+ args: ['click']
125
+ }], leaveDropdownTriggerElement: [{
126
+ type: HostListener,
127
+ args: ['mouseleave']
128
+ }], documentClick: [{
129
+ type: HostListener,
130
+ args: ['document:mouseup']
131
+ }] }); })();
132
+ export class DrDropdownChildDirective {
133
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownChildDirective_Factory(t) { return new (t || DrDropdownChildDirective)(); }; }
134
+ /** @nocollapse */ static { this.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DrDropdownChildDirective, selectors: [["", "drDropdownChild", ""]] }); }
135
+ }
136
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownChildDirective, [{
137
+ type: Directive,
138
+ args: [{
139
+ selector: '[drDropdownChild]',
140
+ }]
141
+ }], null, null); })();
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQWlCbkYsTUFBTSxPQUFPLG1CQUFtQjtJQWJoQztRQWNxQixlQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFBdUIsQ0FBQSxDQUFDLENBQUM7UUFDN0MsWUFBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BDLFVBQUssR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLDRCQUF1QixHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBSzNFLHVCQUFrQixHQUFlLFVBQVUsQ0FBQztRQVM1QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUMvQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDekMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBSXJELHNCQUFpQixHQUFHLEdBQUcsQ0FBQztLQW1FNUM7SUFoRUcsWUFBWTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsT0FBTztRQUNwQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELFlBQVk7UUFD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QUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOzRCQUNoRixPQUFPLE9BQU8sSUFBSSxJQUFJLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUM1RCxDQUFDLENBQUE7d0JBQ0QsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDO3FCQUNuQjtpQkFDSjthQUNKO2dCQVFHLFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFHekIsa0JBQWtCO2tCQURqQixLQUFLO1lBR04sZUFBZTtrQkFEZCxLQUFLO1lBR04saUJBQWlCO2tCQURoQixLQUFLO1lBR04sYUFBYTtrQkFEWixLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBSWxDLGdCQUFnQjtrQkFEZixNQUFNO1lBRW9CLGNBQWM7a0JBQXhDLE1BQU07bUJBQUMsaUJBQWlCO1lBQ0csY0FBYztrQkFBekMsTUFBTTttQkFBQyxrQkFBa0I7WUFPMUIsWUFBWTtrQkFEWCxZQUFZO21CQUFDLFlBQVk7WUFPMUIsWUFBWTtrQkFEWCxZQUFZO21CQUFDLE9BQU87WUFNckIsMkJBQTJCO2tCQUQxQixZQUFZO21CQUFDLFlBQVk7WUFZMUIsYUFBYTtrQkFEWixZQUFZO21CQUFDLGtCQUFrQjs7QUFnRHBDLE1BQU0sT0FBTyx3QkFBd0I7NEdBQXhCLHdCQUF3QjttR0FBeEIsd0JBQXdCOzt1RkFBeEIsd0JBQXdCO2NBSHBDLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbFBvc2l0aW9uLCBJRHJvcGRvd25BY3Rpb24sIElEcm9wZG93bkl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgRHJEcm9wZG93blNlcnZpY2UsIERyb3Bkb3duSW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi9kci1kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7IERyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2RyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEclBvcG92ZXJSZWYgfSBmcm9tICcuLi9tb2RlbHMvcG9wb3Zlcic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2RyRHJvcGRvd25dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZSA9IGluamVjdG9yLmdldChEcm9wZG93bkluc3RhbmNlU2VydmljZSwgbnVsbCwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VydmljZSA/PyBuZXcgRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UoaW5qZWN0b3IpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkRpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoRHJEcm9wZG93blNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hpbGQgPSBpbmplY3QoRHJEcm9wZG93bkNoaWxkRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlLCBzZWxmOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcGRvd25JbnN0YW5jZVNlcnZpY2UgPSBpbmplY3QoRHJvcGRvd25JbnN0YW5jZVNlcnZpY2UpO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBkckRyb3Bkb3duOiBJRHJvcGRvd25JdGVtPFQ+W107XG4gICAgQElucHV0KClcbiAgICBkckRyb3Bkb3duUG9zaXRpb246IEVsUG9zaXRpb24gPSAnbGVmdC10b3AnO1xuICAgIEBJbnB1dCgpXG4gICAgZHJEcm9wZG93bkNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBkckRyb3Bkb3duSW5Ib3ZlcjogYm9vbGVhbjtcbiAgICBASW5wdXQoeyBhbGlhczogJ2RhdGEtYW5hbHl0aWNzJyB9KVxuICAgIGRhdGFBbmFseXRpY3M6IHN0cmluZztcblxuICAgIEBPdXRwdXQoKVxuICAgIGRyRHJvcGRvd25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElEcm9wZG93bkFjdGlvbjxUPj4oKTtcbiAgICBAT3V0cHV0KCdkckRyb3Bkb3duQ2xvc2UnKSBkcm9wZG93bkNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCdkckRyb3Bkb3duT3BlbmVkJykgZHJvcGRvd25PcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIHJlZjogRHJQb3BvdmVyUmVmPERyRHJvcGRvd25Db21wb25lbnQ+O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb3VzZWxlYXZlVGltZW91dCA9IDIwMDtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICAgIGVsZW1lbnRIb3ZlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRyRHJvcGRvd25JbkhvdmVyKSByZXR1cm47XG4gICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIGVsZW1lbnRDbGljaygpIHtcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJylcbiAgICBsZWF2ZURyb3Bkb3duVHJpZ2dlckVsZW1lbnQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyRHJvcGRvd25JbkhvdmVyKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWYgJiYgIXRoaXMucmVmLmluc3RhbmNlLndhc0hvdmVyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIHRoaXMubW91c2VsZWF2ZVRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpXG4gICAgZG9jdW1lbnRDbGljaygpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZHJEcm9wZG93bj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVmID0gdGhpcy5zZXJ2aWNlLm9wZW4oe1xuICAgICAgICAgICAgaG9zdFJlZjogdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgcG9zaXRpb246IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLFxuICAgICAgICAgICAgYXNDaGlsZDogISF0aGlzLmNoaWxkLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBEcm9wZG93bkluc3RhbmNlU2VydmljZSwgdXNlVmFsdWU6IHRoaXMuZHJvcGRvd25JbnN0YW5jZVNlcnZpY2UgfV0sXG4gICAgICAgICAgICBhY3Rpb24kOiB0aGlzLmRyRHJvcGRvd25BY3Rpb24sXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgZHJEcm9wZG93bkluSG92ZXI6IHRoaXMuZHJEcm9wZG93bkluSG92ZXIsXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHRoaXMuZHJEcm9wZG93blBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGxpc3Q6IHRoaXMuZHJEcm9wZG93bixcbiAgICAgICAgICAgICAgICBjbGFzczogdGhpcy5kckRyb3Bkb3duQ2xhc3MsXG4gICAgICAgICAgICAgICAgZGF0YUFuYWx5dGljczogdGhpcy5kYXRhQW5hbHl0aWNzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25PcGVuZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlZikge1xuICAgICAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcbiAgICAgICAgICAgIHRoaXMucmVmID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25DbG9zZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tkckRyb3Bkb3duQ2hpbGRdJyxcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bkNoaWxkRGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DrDropdownDirective, DrDropdownChildDirective } from './dr-dropdown.directive';
3
+ import { DrDropdownComponent } from './dr-dropdown.component';
4
+ import { CommonModule } from '@angular/common';
5
+ import { DrTooltipModule } from '../dr-tooltip/dr-tooltip.module';
6
+ import { DrDropdownItemShowPipe } from './dr-dropdown-item-show.pipe';
7
+ import { DrDropdownService } from './dr-dropdown.service';
8
+ import { DrDropdownItemComponent } from './dr-dropdown-item/dr-dropdown-item.component';
9
+ import { DrPopoverModule } from '../dr-popover/dr-popover.module';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "../dr-tooltip/dr-tooltip.directive";
13
+ export class DrDropdownModule {
14
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownModule_Factory(t) { return new (t || DrDropdownModule)(); }; }
15
+ /** @nocollapse */ static { this.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: DrDropdownModule }); }
16
+ /** @nocollapse */ static { this.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [DrDropdownService], imports: [CommonModule, DrTooltipModule, DrPopoverModule] }); }
17
+ }
18
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownModule, [{
19
+ type: NgModule,
20
+ args: [{
21
+ imports: [CommonModule, DrTooltipModule, DrPopoverModule],
22
+ declarations: [
23
+ DrDropdownDirective,
24
+ DrDropdownComponent,
25
+ DrDropdownItemShowPipe,
26
+ DrDropdownChildDirective,
27
+ DrDropdownItemComponent,
28
+ ],
29
+ exports: [DrDropdownDirective, DrDropdownComponent, DrDropdownItemShowPipe, DrDropdownItemComponent],
30
+ providers: [DrDropdownService],
31
+ }]
32
+ }], null, null); })();
33
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DrDropdownModule, { declarations: [DrDropdownDirective,
34
+ DrDropdownComponent,
35
+ DrDropdownItemShowPipe,
36
+ DrDropdownChildDirective,
37
+ DrDropdownItemComponent], imports: [CommonModule, DrTooltipModule, DrPopoverModule], exports: [DrDropdownDirective, DrDropdownComponent, DrDropdownItemShowPipe, DrDropdownItemComponent] }); })();
38
+ i0.ɵɵsetComponentScope(DrDropdownComponent, [i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i2.DrTooltipDirective, DrDropdownDirective,
39
+ DrDropdownChildDirective,
40
+ DrDropdownItemComponent], [DrDropdownItemShowPipe]);
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItZHJvcGRvd24vZHItZHJvcGRvd24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7QUFjbEUsTUFBTSxPQUFPLGdCQUFnQjtvR0FBaEIsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7dUdBRmQsQ0FBQyxpQkFBaUIsQ0FBQyxZQVRwQixZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWU7O3VGQVcvQyxnQkFBZ0I7Y0FaNUIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxDQUFDO2dCQUN6RCxZQUFZLEVBQUU7b0JBQ1YsbUJBQW1CO29CQUNuQixtQkFBbUI7b0JBQ25CLHNCQUFzQjtvQkFDdEIsd0JBQXdCO29CQUN4Qix1QkFBdUI7aUJBQzFCO2dCQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLHVCQUF1QixDQUFDO2dCQUNwRyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzthQUNqQzs7d0ZBQ1ksZ0JBQWdCLG1CQVRyQixtQkFBbUI7UUFDbkIsbUJBQW1CO1FBQ25CLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsdUJBQXVCLGFBTmpCLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxhQVE5QyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSx1QkFBdUI7dUJBTC9GLG1CQUFtQixvRUFEbkIsbUJBQW1CO0lBR25CLHdCQUF3QjtJQUN4Qix1QkFBdUIsSUFGdkIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyRHJvcGRvd25EaXJlY3RpdmUsIERyRHJvcGRvd25DaGlsZERpcmVjdGl2ZSB9IGZyb20gJy4vZHItZHJvcGRvd24uZGlyZWN0aXZlJztcbmltcG9ydCB7IERyRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2RyLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRHJUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vZHItdG9vbHRpcC9kci10b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBEckRyb3Bkb3duSXRlbVNob3dQaXBlIH0gZnJvbSAnLi9kci1kcm9wZG93bi1pdGVtLXNob3cucGlwZSc7XG5pbXBvcnQgeyBEckRyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZHItZHJvcGRvd24uc2VydmljZSc7XG5pbXBvcnQgeyBEckRyb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHItZHJvcGRvd24taXRlbS9kci1kcm9wZG93bi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEclBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEclRvb2x0aXBNb2R1bGUsIERyUG9wb3Zlck1vZHVsZV0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIERyRHJvcGRvd25EaXJlY3RpdmUsXG4gICAgICAgIERyRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIERyRHJvcGRvd25JdGVtU2hvd1BpcGUsXG4gICAgICAgIERyRHJvcGRvd25DaGlsZERpcmVjdGl2ZSxcbiAgICAgICAgRHJEcm9wZG93bkl0ZW1Db21wb25lbnQsXG4gICAgXSxcbiAgICBleHBvcnRzOiBbRHJEcm9wZG93bkRpcmVjdGl2ZSwgRHJEcm9wZG93bkNvbXBvbmVudCwgRHJEcm9wZG93bkl0ZW1TaG93UGlwZSwgRHJEcm9wZG93bkl0ZW1Db21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogW0RyRHJvcGRvd25TZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJEcm9wZG93bk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,62 @@
1
+ import { DestroyRef, EventEmitter, inject, Injectable } from '@angular/core';
2
+ import { BehaviorSubject, filter, interval, map, Subject, switchMap, takeUntil } from 'rxjs';
3
+ import { DrDropdownComponent } from './dr-dropdown.component';
4
+ import { DrPopoverService } from '../dr-popover/dr-popover.service';
5
+ import * as i0 from "@angular/core";
6
+ export class DrDropdownService {
7
+ constructor() {
8
+ this.popoverService = inject(DrPopoverService);
9
+ }
10
+ open({ hostRef, options, position = 'left-top', asChild, providers, action$ = new EventEmitter(), }) {
11
+ return this.popoverService.open(DrDropdownComponent, {
12
+ hostRef,
13
+ position,
14
+ contentContext: {
15
+ options,
16
+ asChild,
17
+ onAction: action$,
18
+ },
19
+ overlayConfig: {
20
+ positionOffsetX: 2,
21
+ positionOffsetY: asChild ? -8 : null,
22
+ providers,
23
+ },
24
+ });
25
+ }
26
+ /** @nocollapse */ static { this.ɵfac = function DrDropdownService_Factory(t) { return new (t || DrDropdownService)(); }; }
27
+ /** @nocollapse */ static { this.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: DrDropdownService, factory: DrDropdownService.ɵfac, providedIn: 'root' }); }
28
+ }
29
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDropdownService, [{
30
+ type: Injectable,
31
+ args: [{
32
+ providedIn: 'root',
33
+ }]
34
+ }], null, null); })();
35
+ export class DropdownInstanceService {
36
+ get instances() {
37
+ return this.instances$.getValue();
38
+ }
39
+ constructor(injector) {
40
+ this.instances$ = new BehaviorSubject([]);
41
+ this.destroy$ = new Subject();
42
+ injector.get(DestroyRef).onDestroy(() => {
43
+ this.destroy$.next();
44
+ this.destroy$.complete();
45
+ });
46
+ }
47
+ register(ref) {
48
+ this.instances.push(ref);
49
+ this.instances$.next(this.instances);
50
+ }
51
+ unregister(ref) {
52
+ this.instances.splice(this.instances.indexOf(ref), 1);
53
+ this.instances$.next(this.instances);
54
+ }
55
+ getSequence(ref) {
56
+ return this.instances.slice(this.instances.indexOf(ref));
57
+ }
58
+ inactive(ref) {
59
+ return this.instances$.pipe(map(() => this.getSequence(ref)), filter((value) => !!value.length), switchMap((value) => interval(200).pipe(map(() => value))), filter((emissions) => emissions.every((value) => !value.active())), takeUntil(this.destroy$));
60
+ }
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWRyb3Bkb3duL2RyLWRyb3Bkb3duLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFNcEUsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlxQixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBOEI5RDtJQTVCRyxJQUFJLENBQUMsRUFDRCxPQUFPLEVBQ1AsT0FBTyxFQUNQLFFBQVEsR0FBRyxVQUFVLEVBQ3JCLE9BQU8sRUFDUCxTQUFTLEVBQ1QsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFFLEdBTS9CO1FBQ0csT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUNqRCxPQUFPO1lBQ1AsUUFBUTtZQUNSLGNBQWMsRUFBRTtnQkFDWixPQUFPO2dCQUNQLE9BQU87Z0JBQ1AsUUFBUSxFQUFFLE9BQU87YUFDcEI7WUFDRCxhQUFhLEVBQUU7Z0JBQ1gsZUFBZSxFQUFFLENBQUM7Z0JBQ2xCLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNwQyxTQUFTO2FBQ1o7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO3FHQTlCUSxpQkFBaUI7c0dBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBRmQsTUFBTTs7dUZBRVQsaUJBQWlCO2NBSDdCLFVBQVU7ZUFBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7QUFzQ0QsTUFBTSxPQUFPLHVCQUF1QjtJQUVoQyxJQUFZLFNBQVM7UUFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFJRCxZQUFZLFFBQWtCO1FBUGIsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUs1RCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUc1QyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUF3QjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUF3QjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUF3QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUF3QjtRQUM3QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN2QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNoQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ2pDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUMxRCxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFDbEUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgU3RhdGljUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBpbnRlcnZhbCwgbWFwLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vZHItZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IElEcm9wZG93biwgSURyb3Bkb3duQWN0aW9uLCBJRHJvcGRvd25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2Ryb3Bkb3duJztcbmltcG9ydCB7IERyUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBJRHJQb3BvdmVyQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcG9wb3Zlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIERyRHJvcGRvd25TZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcG92ZXJTZXJ2aWNlID0gaW5qZWN0KERyUG9wb3ZlclNlcnZpY2UpO1xuXG4gICAgb3Blbih7XG4gICAgICAgIGhvc3RSZWYsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHBvc2l0aW9uID0gJ2xlZnQtdG9wJyxcbiAgICAgICAgYXNDaGlsZCxcbiAgICAgICAgcHJvdmlkZXJzLFxuICAgICAgICBhY3Rpb24kID0gbmV3IEV2ZW50RW1pdHRlcigpLFxuICAgIH06IFBpY2s8SURyUG9wb3ZlckNvbXBvbmVudE1vZGVsLCAnaG9zdFJlZicgfCAncG9zaXRpb24nPiAmIHtcbiAgICAgICAgb3B0aW9uczogSURyb3Bkb3duPElEcm9wZG93bkl0ZW08dW5rbm93bj4+O1xuICAgICAgICBhc0NoaWxkPzogYm9vbGVhbjtcbiAgICAgICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXTtcbiAgICAgICAgYWN0aW9uJD86IEV2ZW50RW1pdHRlcjxJRHJvcGRvd25BY3Rpb248dW5rbm93bj4+O1xuICAgIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wb3ZlclNlcnZpY2Uub3BlbihEckRyb3Bkb3duQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBob3N0UmVmLFxuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBjb250ZW50Q29udGV4dDoge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICAgICAgYXNDaGlsZCxcbiAgICAgICAgICAgICAgICBvbkFjdGlvbjogYWN0aW9uJCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdmVybGF5Q29uZmlnOiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb25PZmZzZXRYOiAyLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uT2Zmc2V0WTogYXNDaGlsZCA/IC04IDogbnVsbCxcbiAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25JbnN0YW5jZVJlZiB7XG4gICAgYWN0aXZlKCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBEcm9wZG93bkluc3RhbmNlU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEcm9wZG93bkluc3RhbmNlUmVmW10+KFtdKTtcbiAgICBwcml2YXRlIGdldCBpbnN0YW5jZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlcyQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBpbmplY3Rvci5nZXQoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3RlcihyZWY6IERyb3Bkb3duSW5zdGFuY2VSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMucHVzaChyZWYpO1xuICAgICAgICB0aGlzLmluc3RhbmNlcyQubmV4dCh0aGlzLmluc3RhbmNlcyk7XG4gICAgfVxuXG4gICAgdW5yZWdpc3RlcihyZWY6IERyb3Bkb3duSW5zdGFuY2VSZWYpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMuc3BsaWNlKHRoaXMuaW5zdGFuY2VzLmluZGV4T2YocmVmKSwgMSk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2VzJC5uZXh0KHRoaXMuaW5zdGFuY2VzKTtcbiAgICB9XG5cbiAgICBnZXRTZXF1ZW5jZShyZWY6IERyb3Bkb3duSW5zdGFuY2VSZWYpOiBEcm9wZG93bkluc3RhbmNlUmVmW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZXMuc2xpY2UodGhpcy5pbnN0YW5jZXMuaW5kZXhPZihyZWYpKTtcbiAgICB9XG5cbiAgICBpbmFjdGl2ZShyZWY6IERyb3Bkb3duSW5zdGFuY2VSZWYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2VzJC5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0U2VxdWVuY2UocmVmKSksXG4gICAgICAgICAgICBmaWx0ZXIoKHZhbHVlKSA9PiAhIXZhbHVlLmxlbmd0aCksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PiBpbnRlcnZhbCgyMDApLnBpcGUobWFwKCgpID0+IHZhbHVlKSkpLFxuICAgICAgICAgICAgZmlsdGVyKChlbWlzc2lvbnMpID0+IGVtaXNzaW9ucy5ldmVyeSgodmFsdWUpID0+ICF2YWx1ZS5hY3RpdmUoKSkpLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==