@acorex/components 5.0.2 → 5.0.4

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 (316) hide show
  1. package/README.md +24 -24
  2. package/acorex-components.d.ts +5 -5
  3. package/bundles/acorex-components.umd.js +6719 -6658
  4. package/bundles/acorex-components.umd.js.map +1 -1
  5. package/esm2015/acorex-components.js +4 -4
  6. package/esm2015/lib/alert/alert-button.component.js +52 -52
  7. package/esm2015/lib/alert/alert-contnet.component.js +21 -21
  8. package/esm2015/lib/alert/alert-footer.component.js +27 -27
  9. package/esm2015/lib/alert/alert-suffix.component.js +27 -27
  10. package/esm2015/lib/alert/alert-title.component.js +23 -23
  11. package/esm2015/lib/alert/alert.component.js +131 -130
  12. package/esm2015/lib/alert/alert.module.js +43 -43
  13. package/esm2015/lib/alert/index.js +8 -8
  14. package/esm2015/lib/avatar/avatar.component.js +55 -55
  15. package/esm2015/lib/avatar/avatar.module.js +21 -21
  16. package/esm2015/lib/avatar/index.js +3 -3
  17. package/esm2015/lib/base/common.module.js +18 -18
  18. package/esm2015/lib/base/custom-cdk-overlay.service.js +47 -47
  19. package/esm2015/lib/base/drawing.class.js +11 -11
  20. package/esm2015/lib/base/events.class.js +53 -47
  21. package/esm2015/lib/base/index.js +7 -7
  22. package/esm2015/lib/base/mixin/base-components.class.js +83 -83
  23. package/esm2015/lib/base/mixin/button-mixin.class.js +129 -129
  24. package/esm2015/lib/base/mixin/clickable-mixin.class.js +24 -24
  25. package/esm2015/lib/base/mixin/constratctor.js +2 -2
  26. package/esm2015/lib/base/mixin/datalist-component.class.js +97 -97
  27. package/esm2015/lib/base/mixin/dropdown-mixin.class.js +36 -36
  28. package/esm2015/lib/base/mixin/index.js +3 -3
  29. package/esm2015/lib/base/mixin/interactive-mixin.class.js +72 -72
  30. package/esm2015/lib/base/mixin/loading-mixin.class.js +18 -18
  31. package/esm2015/lib/base/mixin/mixin.class.js +23 -23
  32. package/esm2015/lib/base/mixin/selection-component.class.js +158 -158
  33. package/esm2015/lib/base/mixin/sizable-mixin.class.js +18 -18
  34. package/esm2015/lib/base/mixin/textbox-mixin.class.js +38 -38
  35. package/esm2015/lib/base/mixin/value-mixin.class.js +190 -190
  36. package/esm2015/lib/base/overlay.service.js +91 -91
  37. package/esm2015/lib/base/responsive.directive.js +34 -34
  38. package/esm2015/lib/base/styles.class.js +4 -4
  39. package/esm2015/lib/button/button-group.component.js +131 -131
  40. package/esm2015/lib/button/button-item.class.js +2 -2
  41. package/esm2015/lib/button/button-item.component.js +81 -81
  42. package/esm2015/lib/button/button.component.js +51 -52
  43. package/esm2015/lib/button/button.module.js +37 -37
  44. package/esm2015/lib/button/dropdown-button.component.js +200 -200
  45. package/esm2015/lib/button/index.js +7 -7
  46. package/esm2015/lib/calendar/calendar.component.js +59 -59
  47. package/esm2015/lib/calendar/calendar.module.js +24 -24
  48. package/esm2015/lib/calendar/index.js +3 -3
  49. package/esm2015/lib/carousel/carousel-arrows.component.js +53 -53
  50. package/esm2015/lib/carousel/carousel-item.component.js +21 -21
  51. package/esm2015/lib/carousel/carousel-pager.component.js +74 -74
  52. package/esm2015/lib/carousel/carousel-splidejs.class.js +82 -82
  53. package/esm2015/lib/carousel/carousel.class.js +10 -10
  54. package/esm2015/lib/carousel/carousel.component.js +246 -246
  55. package/esm2015/lib/carousel/carousel.module.js +24 -24
  56. package/esm2015/lib/carousel/index.js +7 -7
  57. package/esm2015/lib/checkbox/checkbox.component.js +40 -40
  58. package/esm2015/lib/checkbox/checkbox.module.js +20 -20
  59. package/esm2015/lib/checkbox/index.js +3 -3
  60. package/esm2015/lib/datalist/datalist.component.js +81 -81
  61. package/esm2015/lib/datalist/datalist.module.js +22 -22
  62. package/esm2015/lib/datalist/index.js +3 -3
  63. package/esm2015/lib/datepicker/datepicker.component.js +64 -64
  64. package/esm2015/lib/datepicker/datepicker.module.js +23 -23
  65. package/esm2015/lib/datepicker/index.js +3 -3
  66. package/esm2015/lib/decorators/decorators.module.js +22 -22
  67. package/esm2015/lib/decorators/index.js +4 -4
  68. package/esm2015/lib/decorators/prefix.component.js +27 -27
  69. package/esm2015/lib/decorators/suffix.component.js +35 -35
  70. package/esm2015/lib/dialog/dialog.class.js +2 -2
  71. package/esm2015/lib/dialog/dialog.component.js +45 -45
  72. package/esm2015/lib/dialog/dialog.module.js +26 -26
  73. package/esm2015/lib/dialog/dialog.service.js +127 -127
  74. package/esm2015/lib/dialog/index.js +5 -5
  75. package/esm2015/lib/drawer/drawer-container.component.js +73 -73
  76. package/esm2015/lib/drawer/drawer-content.component.js +27 -27
  77. package/esm2015/lib/drawer/drawer.component.js +145 -145
  78. package/esm2015/lib/drawer/drawer.module.js +23 -23
  79. package/esm2015/lib/drawer/index.js +5 -5
  80. package/esm2015/lib/dropdown/dropdown-panel.component.js +194 -191
  81. package/esm2015/lib/dropdown/dropdown.component.js +139 -139
  82. package/esm2015/lib/dropdown/dropdown.module.js +24 -24
  83. package/esm2015/lib/dropdown/index.js +4 -4
  84. package/esm2015/lib/form/form-field.component.js +20 -20
  85. package/esm2015/lib/form/form-field.module.js +21 -21
  86. package/esm2015/lib/form/form-hint.component.js +20 -20
  87. package/esm2015/lib/form/form.component.js +51 -51
  88. package/esm2015/lib/form/index.js +5 -5
  89. package/esm2015/lib/icon/icon.component.js +28 -28
  90. package/esm2015/lib/icon/icon.module.js +21 -21
  91. package/esm2015/lib/icon/index.js +3 -3
  92. package/esm2015/lib/input-mask/index.js +3 -3
  93. package/esm2015/lib/input-mask/input-mask.component.js +42 -42
  94. package/esm2015/lib/input-mask/input-mask.module.js +23 -23
  95. package/esm2015/lib/label/index.js +3 -3
  96. package/esm2015/lib/label/label.component.js +20 -20
  97. package/esm2015/lib/label/label.module.js +21 -21
  98. package/esm2015/lib/loading/index.js +6 -6
  99. package/esm2015/lib/loading/loading-spinner.component.js +32 -32
  100. package/esm2015/lib/loading/loading.component.js +54 -54
  101. package/esm2015/lib/loading/loading.directive.js +67 -67
  102. package/esm2015/lib/loading/loading.module.js +35 -35
  103. package/esm2015/lib/loading/loading.service.js +155 -155
  104. package/esm2015/lib/number-box/index.js +3 -3
  105. package/esm2015/lib/number-box/number-box.component.js +289 -289
  106. package/esm2015/lib/number-box/number-box.module.js +32 -32
  107. package/esm2015/lib/page/base-page.class.js +66 -66
  108. package/esm2015/lib/page/index.js +5 -5
  109. package/esm2015/lib/page/page-footer.component.js +32 -32
  110. package/esm2015/lib/page/page.component.js +33 -33
  111. package/esm2015/lib/page/page.module.js +18 -18
  112. package/esm2015/lib/popover/index.js +3 -3
  113. package/esm2015/lib/popover/popover.component.js +119 -119
  114. package/esm2015/lib/popover/popover.module.js +19 -19
  115. package/esm2015/lib/popup/index.js +4 -4
  116. package/esm2015/lib/popup/popup.component.js +97 -97
  117. package/esm2015/lib/popup/popup.module.js +26 -26
  118. package/esm2015/lib/popup/popup.service.js +94 -94
  119. package/esm2015/lib/range-slider/index.js +3 -0
  120. package/esm2015/lib/range-slider/range-slider.component.js +22 -0
  121. package/esm2015/lib/range-slider/range-slider.module.js +21 -0
  122. package/esm2015/lib/selectbox/index.js +3 -3
  123. package/esm2015/lib/selectbox/selectbox.component.js +193 -193
  124. package/esm2015/lib/selectbox/selectbox.module.js +21 -21
  125. package/esm2015/lib/selection-list/index.js +3 -3
  126. package/esm2015/lib/selection-list/selection-list.component.js +46 -46
  127. package/esm2015/lib/selection-list/selection-list.module.js +21 -21
  128. package/esm2015/lib/side-menu/index.js +3 -3
  129. package/esm2015/lib/side-menu/side-menu.component.js +21 -21
  130. package/esm2015/lib/side-menu/side-menu.module.js +21 -21
  131. package/esm2015/lib/switch/index.js +3 -3
  132. package/esm2015/lib/switch/switch.component.js +30 -30
  133. package/esm2015/lib/switch/switch.module.js +21 -21
  134. package/esm2015/lib/tabs/index.js +6 -6
  135. package/esm2015/lib/tabs/tab-strip.component.js +61 -61
  136. package/esm2015/lib/tabs/tab-view.component.js +46 -46
  137. package/esm2015/lib/tabs/tab.component.js +59 -59
  138. package/esm2015/lib/tabs/tabs.class.js +4 -4
  139. package/esm2015/lib/tabs/tabs.module.js +23 -23
  140. package/esm2015/lib/textbox/index.js +3 -3
  141. package/esm2015/lib/textbox/textbox.component.js +62 -60
  142. package/esm2015/lib/textbox/textbox.module.js +43 -39
  143. package/esm2015/lib/time-box/index.js +3 -3
  144. package/esm2015/lib/time-box/time-box.component.js +134 -134
  145. package/esm2015/lib/time-box/time-box.module.js +32 -32
  146. package/esm2015/lib/toast/index.js +5 -5
  147. package/esm2015/lib/toast/toast.class.js +2 -2
  148. package/esm2015/lib/toast/toast.component.js +50 -50
  149. package/esm2015/lib/toast/toast.module.js +22 -22
  150. package/esm2015/lib/toast/toast.service.js +114 -114
  151. package/esm2015/lib/tooltip/index.js +4 -4
  152. package/esm2015/lib/tooltip/tooltip.component.js +45 -45
  153. package/esm2015/lib/tooltip/tooltip.directive.js +86 -86
  154. package/esm2015/lib/tooltip/tooltip.module.js +23 -23
  155. package/esm2015/lib/validation/index.js +3 -3
  156. package/esm2015/lib/validation/validation-rule.widget.js +113 -113
  157. package/esm2015/lib/validation/validation.class.js +2 -2
  158. package/esm2015/lib/validation/validation.module.js +32 -32
  159. package/esm2015/public-api.js +39 -38
  160. package/fesm2015/acorex-components.js +5811 -5763
  161. package/fesm2015/acorex-components.js.map +1 -1
  162. package/lib/alert/alert-button.component.d.ts +13 -13
  163. package/lib/alert/alert-contnet.component.d.ts +5 -5
  164. package/lib/alert/alert-footer.component.d.ts +5 -5
  165. package/lib/alert/alert-suffix.component.d.ts +5 -5
  166. package/lib/alert/alert-title.component.d.ts +5 -5
  167. package/lib/alert/alert.component.d.ts +46 -46
  168. package/lib/alert/alert.module.d.ts +13 -13
  169. package/lib/alert/index.d.ts +7 -7
  170. package/lib/avatar/avatar.component.d.ts +20 -20
  171. package/lib/avatar/avatar.module.d.ts +8 -8
  172. package/lib/avatar/index.d.ts +2 -2
  173. package/lib/base/common.module.d.ts +7 -7
  174. package/lib/base/custom-cdk-overlay.service.d.ts +19 -19
  175. package/lib/base/drawing.class.d.ts +9 -9
  176. package/lib/base/events.class.d.ts +72 -65
  177. package/lib/base/index.d.ts +6 -6
  178. package/lib/base/mixin/base-components.class.d.ts +84 -84
  179. package/lib/base/mixin/button-mixin.class.d.ts +79 -79
  180. package/lib/base/mixin/clickable-mixin.class.d.ts +42 -42
  181. package/lib/base/mixin/constratctor.d.ts +4 -4
  182. package/lib/base/mixin/datalist-component.class.d.ts +54 -54
  183. package/lib/base/mixin/dropdown-mixin.class.d.ts +47 -47
  184. package/lib/base/mixin/index.d.ts +2 -2
  185. package/lib/base/mixin/interactive-mixin.class.d.ts +60 -63
  186. package/lib/base/mixin/loading-mixin.class.d.ts +46 -48
  187. package/lib/base/mixin/mixin.class.d.ts +814 -814
  188. package/lib/base/mixin/selection-component.class.d.ts +55 -55
  189. package/lib/base/mixin/sizable-mixin.class.d.ts +40 -40
  190. package/lib/base/mixin/textbox-mixin.class.d.ts +59 -61
  191. package/lib/base/mixin/value-mixin.class.d.ts +68 -71
  192. package/lib/base/overlay.service.d.ts +31 -31
  193. package/lib/base/responsive.directive.d.ts +10 -10
  194. package/lib/base/styles.class.d.ts +17 -17
  195. package/lib/button/button-group.component.d.ts +36 -35
  196. package/lib/button/button-item.class.d.ts +22 -22
  197. package/lib/button/button-item.component.d.ts +92 -92
  198. package/lib/button/button.component.d.ts +18 -18
  199. package/lib/button/button.module.d.ts +13 -13
  200. package/lib/button/dropdown-button.component.d.ts +234 -234
  201. package/lib/button/index.d.ts +6 -6
  202. package/lib/calendar/calendar.component.d.ts +16 -16
  203. package/lib/calendar/calendar.module.d.ts +11 -11
  204. package/lib/calendar/index.d.ts +2 -2
  205. package/lib/carousel/carousel-arrows.component.d.ts +14 -14
  206. package/lib/carousel/carousel-item.component.d.ts +8 -8
  207. package/lib/carousel/carousel-pager.component.d.ts +22 -22
  208. package/lib/carousel/carousel-splidejs.class.d.ts +18 -18
  209. package/lib/carousel/carousel.class.d.ts +48 -48
  210. package/lib/carousel/carousel.component.d.ts +62 -62
  211. package/lib/carousel/carousel.module.d.ts +11 -11
  212. package/lib/carousel/index.d.ts +6 -6
  213. package/lib/checkbox/checkbox.component.d.ts +12 -12
  214. package/lib/checkbox/checkbox.module.d.ts +9 -9
  215. package/lib/checkbox/index.d.ts +2 -2
  216. package/lib/datalist/datalist.component.d.ts +25 -25
  217. package/lib/datalist/datalist.module.d.ts +9 -9
  218. package/lib/datalist/index.d.ts +2 -2
  219. package/lib/datepicker/datepicker.component.d.ts +18 -18
  220. package/lib/datepicker/datepicker.module.d.ts +10 -10
  221. package/lib/datepicker/index.d.ts +2 -2
  222. package/lib/decorators/decorators.module.d.ts +9 -9
  223. package/lib/decorators/index.d.ts +3 -3
  224. package/lib/decorators/prefix.component.d.ts +8 -8
  225. package/lib/decorators/suffix.component.d.ts +8 -8
  226. package/lib/dialog/dialog.class.d.ts +12 -12
  227. package/lib/dialog/dialog.component.d.ts +15 -15
  228. package/lib/dialog/dialog.module.d.ts +13 -13
  229. package/lib/dialog/dialog.service.d.ts +18 -18
  230. package/lib/dialog/index.d.ts +4 -4
  231. package/lib/drawer/drawer-container.component.d.ts +13 -13
  232. package/lib/drawer/drawer-content.component.d.ts +8 -8
  233. package/lib/drawer/drawer.component.d.ts +30 -30
  234. package/lib/drawer/drawer.module.d.ts +10 -10
  235. package/lib/drawer/index.d.ts +4 -4
  236. package/lib/dropdown/dropdown-panel.component.d.ts +117 -116
  237. package/lib/dropdown/dropdown.component.d.ts +31 -31
  238. package/lib/dropdown/dropdown.module.d.ts +13 -13
  239. package/lib/dropdown/index.d.ts +3 -3
  240. package/lib/form/form-field.component.d.ts +8 -8
  241. package/lib/form/form-field.module.d.ts +10 -10
  242. package/lib/form/form-hint.component.d.ts +8 -8
  243. package/lib/form/form.component.d.ts +13 -13
  244. package/lib/form/index.d.ts +4 -4
  245. package/lib/icon/icon.component.d.ts +10 -10
  246. package/lib/icon/icon.module.d.ts +8 -8
  247. package/lib/icon/index.d.ts +2 -2
  248. package/lib/input-mask/index.d.ts +2 -2
  249. package/lib/input-mask/input-mask.component.d.ts +14 -14
  250. package/lib/input-mask/input-mask.module.d.ts +9 -9
  251. package/lib/label/index.d.ts +2 -2
  252. package/lib/label/label.component.d.ts +8 -8
  253. package/lib/label/label.module.d.ts +8 -8
  254. package/lib/loading/index.d.ts +5 -5
  255. package/lib/loading/loading-spinner.component.d.ts +5 -5
  256. package/lib/loading/loading.component.d.ts +19 -19
  257. package/lib/loading/loading.directive.d.ts +22 -22
  258. package/lib/loading/loading.module.d.ts +13 -13
  259. package/lib/loading/loading.service.d.ts +48 -48
  260. package/lib/number-box/index.d.ts +2 -2
  261. package/lib/number-box/number-box.component.d.ts +69 -69
  262. package/lib/number-box/number-box.module.d.ts +11 -11
  263. package/lib/page/base-page.class.d.ts +37 -37
  264. package/lib/page/index.d.ts +4 -4
  265. package/lib/page/page-footer.component.d.ts +7 -7
  266. package/lib/page/page.component.d.ts +13 -13
  267. package/lib/page/page.module.d.ts +7 -7
  268. package/lib/popover/index.d.ts +2 -2
  269. package/lib/popover/popover.component.d.ts +30 -30
  270. package/lib/popover/popover.module.d.ts +8 -8
  271. package/lib/popup/index.d.ts +3 -3
  272. package/lib/popup/popup.component.d.ts +33 -33
  273. package/lib/popup/popup.module.d.ts +12 -12
  274. package/lib/popup/popup.service.d.ts +37 -37
  275. package/lib/range-slider/index.d.ts +2 -0
  276. package/lib/range-slider/range-slider.component.d.ts +8 -0
  277. package/lib/range-slider/range-slider.module.d.ts +8 -0
  278. package/lib/selectbox/index.d.ts +2 -2
  279. package/lib/selectbox/selectbox.component.d.ts +28 -28
  280. package/lib/selectbox/selectbox.module.d.ts +10 -10
  281. package/lib/selection-list/index.d.ts +2 -2
  282. package/lib/selection-list/selection-list.component.d.ts +10 -10
  283. package/lib/selection-list/selection-list.module.d.ts +10 -10
  284. package/lib/side-menu/index.d.ts +2 -2
  285. package/lib/side-menu/side-menu.component.d.ts +8 -8
  286. package/lib/side-menu/side-menu.module.d.ts +8 -8
  287. package/lib/switch/index.d.ts +2 -2
  288. package/lib/switch/switch.component.d.ts +9 -9
  289. package/lib/switch/switch.module.d.ts +9 -9
  290. package/lib/tabs/index.d.ts +5 -5
  291. package/lib/tabs/tab-strip.component.d.ts +17 -17
  292. package/lib/tabs/tab-view.component.d.ts +14 -14
  293. package/lib/tabs/tab.component.d.ts +18 -18
  294. package/lib/tabs/tabs.class.d.ts +18 -18
  295. package/lib/tabs/tabs.module.d.ts +10 -10
  296. package/lib/textbox/index.d.ts +2 -2
  297. package/lib/textbox/textbox.component.d.ts +19 -19
  298. package/lib/textbox/textbox.module.d.ts +13 -12
  299. package/lib/time-box/index.d.ts +2 -2
  300. package/lib/time-box/time-box.component.d.ts +29 -29
  301. package/lib/time-box/time-box.module.d.ts +11 -11
  302. package/lib/toast/index.d.ts +4 -4
  303. package/lib/toast/toast.class.d.ts +14 -14
  304. package/lib/toast/toast.component.d.ts +16 -16
  305. package/lib/toast/toast.module.d.ts +9 -9
  306. package/lib/toast/toast.service.d.ts +18 -18
  307. package/lib/tooltip/index.d.ts +3 -3
  308. package/lib/tooltip/tooltip.component.d.ts +10 -10
  309. package/lib/tooltip/tooltip.directive.d.ts +18 -18
  310. package/lib/tooltip/tooltip.module.d.ts +10 -10
  311. package/lib/validation/index.d.ts +2 -2
  312. package/lib/validation/validation-rule.widget.d.ts +25 -25
  313. package/lib/validation/validation.class.d.ts +17 -17
  314. package/lib/validation/validation.module.d.ts +9 -9
  315. package/package.json +18 -18
  316. package/public-api.d.ts +37 -36
@@ -1,191 +1,194 @@
1
- import { TemplatePortal } from '@angular/cdk/portal';
2
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ViewChildren, EventEmitter, Output, Input, ViewChild, HostListener, Optional } from '@angular/core';
3
- import { AXBaseComponent } from '../base';
4
- import { _DropdownComponenetMixin } from '../base/mixin/dropdown-mixin.class';
5
- import { _InteractiveComponenetMixin } from '../base/mixin/interactive-mixin.class';
6
- import { AXButtonItemComponent } from '../button';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/cdk/overlay";
9
- import * as i2 from "@acorex/core";
10
- import * as i3 from "../button";
11
- import * as i4 from "../button/button-item.component";
12
- import * as i5 from "../decorators/prefix.component";
13
- import * as i6 from "../icon/icon.component";
14
- import * as i7 from "@angular/common";
15
- export const AXBaseDropdownMenuMixin = _InteractiveComponenetMixin(_DropdownComponenetMixin((AXBaseComponent)));
16
- export class AXDropdownPanelComponent extends AXBaseDropdownMenuMixin {
17
- constructor(elementRef, cdr, _overlay, _platform, _viewContainerRef, _parent) {
18
- super(elementRef, cdr);
19
- this._overlay = _overlay;
20
- this._platform = _platform;
21
- this._viewContainerRef = _viewContainerRef;
22
- this._parent = _parent;
23
- this.onItemClick = new EventEmitter();
24
- this._subs = [];
25
- if (_parent) {
26
- this.target = _parent;
27
- this._subs.push(_parent.onClick.subscribe(this.toggle.bind(this)));
28
- }
29
- }
30
- get items() {
31
- return this._items || [];
32
- }
33
- set items(v) {
34
- this._items = v;
35
- this._cdr.markForCheck();
36
- }
37
- _getAllButtons() {
38
- return [...Array.from(this._viewButtons), ...Array.from(this._contentButtons)];
39
- }
40
- onViewInit() {
41
- this._getAllButtons().forEach(c => {
42
- this._subs.push(c.onClick.subscribe(this._handleOnItemClick.bind(this)));
43
- });
44
- }
45
- onDestroy() {
46
- var _a, _b;
47
- (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
48
- (_b = this._overlayRef) === null || _b === void 0 ? void 0 : _b.dispose();
49
- this._subs.forEach(s => {
50
- s === null || s === void 0 ? void 0 : s.unsubscribe();
51
- });
52
- }
53
- _handleKeydownHandler(e) {
54
- if (e.key === 'Enter' && e.type === 'keydown') {
55
- this.toggle();
56
- }
57
- if (e.key === 'Escape') {
58
- if (this.isOpen) {
59
- this.close();
60
- e.stopPropagation();
61
- }
62
- }
63
- }
64
- _handleArrowClickEvent(e) {
65
- this.toggle();
66
- }
67
- _emitOnItemClickEvent(e, item) {
68
- this.onItemClick.emit({
69
- component: this,
70
- htmlElement: this._getHostElement(),
71
- nativeEvent: e.nativeEvent,
72
- name: item.name,
73
- data: item.data,
74
- });
75
- this.close();
76
- }
77
- _handleOnItemClick(e) {
78
- this.close();
79
- this._emitOnItemClickEvent(e, e.component);
80
- }
81
- toggle() {
82
- if (this.disabled !== true) {
83
- this.isOpen ? this.close() : this.open();
84
- }
85
- }
86
- close() {
87
- var _a, _b;
88
- if (!this.isOpen) {
89
- return;
90
- }
91
- (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
92
- (_b = this._subs[1]) === null || _b === void 0 ? void 0 : _b.unsubscribe();
93
- this._emitOnClosedEvent();
94
- }
95
- open() {
96
- if (this.isOpen) {
97
- return;
98
- }
99
- this._ensureOverlayCreated();
100
- this._overlayRef.attach(this._templatePortal);
101
- this._emitOnOpenedEvent();
102
- }
103
- _ensureOverlayCreated() {
104
- let baseSize = Number(getComputedStyle(document.documentElement).getPropertyValue('--ax-base-size').replace('px', ''));
105
- const targetRef = this.target._getInnerElement();
106
- if (!this._overlayRef) {
107
- const positionStrategy = this._overlay.position()
108
- .flexibleConnectedTo(targetRef)
109
- .withPositions([
110
- {
111
- originX: 'start',
112
- originY: 'bottom',
113
- overlayX: 'start',
114
- overlayY: 'top',
115
- offsetY: baseSize
116
- },
117
- {
118
- originX: 'start',
119
- originY: 'top',
120
- overlayX: 'start',
121
- overlayY: 'bottom'
122
- }
123
- ])
124
- .withPush(false);
125
- this._overlayRef = this._overlay.create({
126
- positionStrategy,
127
- scrollStrategy: this._overlay.scrollStrategies.close(),
128
- panelClass: ['animate__animated', 'animate__fadeIn', 'animate__faster'],
129
- hasBackdrop: false,
130
- backdropClass: ['cdk-overlay-transparent-backdrop']
131
- });
132
- this._subs[0] = this._overlayRef._outsidePointerEvents.subscribe(c => {
133
- const target = c.target;
134
- const comElem = targetRef;
135
- if (!(comElem.contains(target))) {
136
- this.close();
137
- }
138
- });
139
- this._subs[1] = this._overlayRef.attachments().subscribe(() => {
140
- if (this.fitParent === true) {
141
- this._dropdownWidth = targetRef.offsetWidth;
142
- }
143
- else {
144
- this._dropdownWidth = targetRef.offsetWidth * 1.5;
145
- }
146
- this._subs[2] = this._platform.scroll.subscribe(c => {
147
- if (!c.nativeEvent.target.closest('.ax-overlay-pane'))
148
- this.close();
149
- });
150
- });
151
- }
152
- if (!this._templatePortal) {
153
- this._templatePortal = new TemplatePortal(this._baseTemplate, this._viewContainerRef);
154
- }
155
- }
156
- get isOpen() {
157
- return this._overlayRef ? this._overlayRef.hasAttached() : false;
158
- }
159
- }
160
- AXDropdownPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i2.AXPlatform }, { token: i0.ViewContainerRef }, { token: i3.AXButtonComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
161
- AXDropdownPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: { target: "target", items: "items" }, outputs: { onItemClick: "onItemClick" }, host: { listeners: { "keydown": "_handleKeydownHandler($event)" } }, queries: [{ propertyName: "_contentButtons", predicate: AXButtonItemComponent }], viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }, { propertyName: "_viewButtons", predicate: AXButtonItemComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\n <div class=\"ax-overlay-pane ax-dropdown-list\" [style.min-width.px]=\"_dropdownWidth\">\n <ng-container *ngIf=\"items && items.length;else panelTpl\">\n <ax-button-item [text]=\"item.text\" [color]=\"item.color\" *ngFor=\"let item of items\">\n <ax-prefix *ngIf=\"item.iconClass\">\n <ax-icon [icon]=\"item.iconClass\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n <ng-template #panelTpl>\n <ng-content select=\"ng-container[panel],ax-button-item\">\n </ng-content>\n </ng-template>\n </div>\n</ng-template>", components: [{ type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["text", "tooltip", "selected", "seperated", "name", "data", "color"] }, { type: i5.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i6.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, decorators: [{
163
- type: Component,
164
- args: [{
165
- selector: 'ax-dropdown-panel',
166
- templateUrl: './dropdown-panel.component.html',
167
- changeDetection: ChangeDetectionStrategy.OnPush,
168
- encapsulation: ViewEncapsulation.None,
169
- }]
170
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i2.AXPlatform }, { type: i0.ViewContainerRef }, { type: i3.AXButtonComponent, decorators: [{
171
- type: Optional
172
- }] }]; }, propDecorators: { _contentButtons: [{
173
- type: ContentChildren,
174
- args: [AXButtonItemComponent]
175
- }], _viewButtons: [{
176
- type: ViewChildren,
177
- args: [AXButtonItemComponent]
178
- }], onItemClick: [{
179
- type: Output
180
- }], target: [{
181
- type: Input
182
- }], items: [{
183
- type: Input
184
- }], _baseTemplate: [{
185
- type: ViewChild,
186
- args: ['baseTemplate']
187
- }], _handleKeydownHandler: [{
188
- type: HostListener,
189
- args: ['keydown', ['$event']]
190
- }] } });
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFHdkIsZUFBZSxFQUNmLFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFvQyxNQUFNLFNBQVMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQW1DLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFHbkYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQ2hDLDJCQUEyQixDQUN2Qix3QkFBd0IsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUN6QyxDQUNKLENBQUE7QUFTTCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsdUJBQXVCO0lBRWpFLFlBQ0ksVUFBc0IsRUFDdEIsR0FBc0IsRUFDZCxRQUFpQixFQUNqQixTQUFxQixFQUNyQixpQkFBbUMsRUFFbkMsT0FBMEI7UUFFbEMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FB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UUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN4Qzs7MEJBU1EsUUFBUTs0Q0FVMkIsZUFBZTtzQkFBdEQsZUFBZTt1QkFBQyxxQkFBcUI7Z0JBQ0QsWUFBWTtzQkFBaEQsWUFBWTt1QkFBQyxxQkFBcUI7Z0JBR25DLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxNQUFNO3NCQURMLEtBQUs7Z0JBU0ssS0FBSztzQkFEZixLQUFLO2dCQVlOLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxjQUFjO2dCQTZCekIscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUGxhdGZvcm0gfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIFZpZXdDaGlsZHJlbixcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIE91dHB1dCxcclxuICAgIElucHV0LFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgSW5qZWN0LFxyXG4gICAgT3B0aW9uYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCwgQVhCdXR0b25DbGlja0V2ZW50LCBBWENsaWNrRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgX0Ryb3Bkb3duQ29tcG9uZW5ldE1peGluIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9kcm9wZG93bi1taXhpbi5jbGFzcyc7XHJcbmltcG9ydCB7IF9JbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vaW50ZXJhY3RpdmUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBBWEJ1dHRvbkNvbXBvbmVudCwgQVhCdXR0b25JdGVtLCBBWEJ1dHRvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9idXR0b24nO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBBWEJhc2VEcm9wZG93bk1lbnVNaXhpbiA9XHJcbiAgICBfSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4oXHJcbiAgICAgICAgX0Ryb3Bkb3duQ29tcG9uZW5ldE1peGluKChBWEJhc2VDb21wb25lbnQpXHJcbiAgICAgICAgKVxyXG4gICAgKVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdheC1kcm9wZG93bi1wYW5lbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24tcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhEcm9wZG93blBhbmVsQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlRHJvcGRvd25NZW51TWl4aW4ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgICAgIHByaXZhdGUgX3BsYXRmb3JtOiBBWFBsYXRmb3JtLFxyXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgQE9wdGlvbmFsKClcclxuICAgICAgICBwcml2YXRlIF9wYXJlbnQ6IEFYQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcclxuICAgICAgICBpZiAoX3BhcmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhcmdldCA9IF9wYXJlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuX3N1YnMucHVzaChfcGFyZW50Lm9uQ2xpY2suc3Vic2NyaWJlKHRoaXMudG9nZ2xlLmJpbmQodGhpcykpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihBWEJ1dHRvbkl0ZW1Db21wb25lbnQpIF9jb250ZW50QnV0dG9uczogUXVlcnlMaXN0PEFYQnV0dG9uSXRlbUNvbXBvbmVudD47XHJcbiAgICBAVmlld0NoaWxkcmVuKEFYQnV0dG9uSXRlbUNvbXBvbmVudCkgX3ZpZXdCdXR0b25zOiBRdWVyeUxpc3Q8QVhCdXR0b25JdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhCdXR0b25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhCdXR0b25DbGlja0V2ZW50PigpO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgdGFyZ2V0OiBBWEJhc2VDb21wb25lbnRcclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFYQnV0dG9uSXRlbVtdO1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgaXRlbXMoKTogQVhCdXR0b25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcyB8fCBbXTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgaXRlbXModjogQVhCdXR0b25JdGVtW10pIHtcclxuICAgICAgICB0aGlzLl9pdGVtcyA9IHY7XHJcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYmFzZVRlbXBsYXRlJylcclxuICAgIF9iYXNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcclxuICAgIF90ZW1wbGF0ZVBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XHJcblxyXG4gICAgX2Ryb3Bkb3duV2lkdGg6IG51bWJlcjtcclxuICAgIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIHByaXZhdGUgX2dldEFsbEJ1dHRvbnMoKTogQVhCdXR0b25JdGVtQ29tcG9uZW50W10ge1xyXG4gICAgICAgIHJldHVybiBbLi4uQXJyYXkuZnJvbSh0aGlzLl92aWV3QnV0dG9ucyksIC4uLkFycmF5LmZyb20odGhpcy5fY29udGVudEJ1dHRvbnMpXTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb25WaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9nZXRBbGxCdXR0b25zKCkuZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3Vicy5wdXNoKGMub25DbGljay5zdWJzY3JpYmUodGhpcy5faGFuZGxlT25JdGVtQ2xpY2suYmluZCh0aGlzKSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcclxuICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICAgICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICBzPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIF9oYW5kbGVLZXlkb3duSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgX2hhbmRsZUFycm93Q2xpY2tFdmVudChlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBfZW1pdE9uSXRlbUNsaWNrRXZlbnQoZTogQVhDbGlja0V2ZW50LCBpdGVtOiBBWEJ1dHRvbkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLFxyXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZS5uYXRpdmVFdmVudCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGEsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX2hhbmRsZU9uSXRlbUNsaWNrKGU6IEFYQ2xpY2tFdmVudCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLl9lbWl0T25JdGVtQ2xpY2tFdmVudChlLCBlLmNvbXBvbmVudCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0b2dnbGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgIT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gICAgICAgIHRoaXMuX3N1YnNbMV0/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5fZW1pdE9uQ2xvc2VkRXZlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2Vuc3VyZU92ZXJsYXlDcmVhdGVkKCk7XHJcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fdGVtcGxhdGVQb3J0YWwpO1xyXG4gICAgICAgIHRoaXMuX2VtaXRPbk9wZW5lZEV2ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZW5zdXJlT3ZlcmxheUNyZWF0ZWQoKSB7XHJcbiAgICAgICAgbGV0IGJhc2VTaXplID0gTnVtYmVyKGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LWJhc2Utc2l6ZScpLnJlcGxhY2UoJ3B4JywgJycpKTtcclxuICAgICAgICBjb25zdCB0YXJnZXRSZWYgPSB0aGlzLnRhcmdldC5fZ2V0SW5uZXJFbGVtZW50KCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXHJcbiAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogYmFzZVNpemVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCksXHJcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ2FuaW1hdGVfX2FuaW1hdGVkJywgJ2FuaW1hdGVfX2ZhZGVJbicsICdhbmltYXRlX19mYXN0ZXInXSxcclxuICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fc3Vic1swXSA9IHRoaXMuX292ZXJsYXlSZWYuX291dHNpZGVQb2ludGVyRXZlbnRzLnN1YnNjcmliZShjID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGMudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tRWxlbSA9IHRhcmdldFJlZjtcclxuICAgICAgICAgICAgICAgIGlmICghKGNvbUVsZW0uY29udGFpbnModGFyZ2V0KSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLl9zdWJzWzFdID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2htZW50cygpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maXRQYXJlbnQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kcm9wZG93bldpZHRoID0gdGFyZ2V0UmVmLm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kcm9wZG93bldpZHRoID0gdGFyZ2V0UmVmLm9mZnNldFdpZHRoICogMS41O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3Vic1syXSA9IHRoaXMuX3BsYXRmb3JtLnNjcm9sbC5zdWJzY3JpYmUoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYy5uYXRpdmVFdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1vdmVybGF5LXBhbmUnKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuX3RlbXBsYXRlUG9ydGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX2Jhc2VUZW1wbGF0ZSwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWYgPyB0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkgOiBmYWxzZTtcclxuICAgIH1cclxuXHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNiYXNlVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZSBheC1kcm9wZG93bi1saXN0XCIgW3N0eWxlLm1pbi13aWR0aC5weF09XCJfZHJvcGRvd25XaWR0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoO2Vsc2UgcGFuZWxUcGxcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbdGV4dF09XCJpdGVtLnRleHRcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8YXgtcHJlZml4ICpuZ0lmPVwiaXRlbS5pY29uQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwiaXRlbS5pY29uQ2xhc3NcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwYW5lbFRwbD5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm5nLWNvbnRhaW5lcltwYW5lbF0sYXgtYnV0dG9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19
1
+ import { TemplatePortal } from '@angular/cdk/portal';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ViewChildren, EventEmitter, Output, Input, ViewChild, HostListener, Optional } from '@angular/core';
3
+ import { AXBaseComponent } from '../base';
4
+ import { _DropdownComponenetMixin } from '../base/mixin/dropdown-mixin.class';
5
+ import { _InteractiveComponenetMixin } from '../base/mixin/interactive-mixin.class';
6
+ import { AXButtonItemComponent } from '../button';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ import * as i2 from "@acorex/core";
10
+ import * as i3 from "../button";
11
+ import * as i4 from "../button/button-item.component";
12
+ import * as i5 from "../decorators/prefix.component";
13
+ import * as i6 from "../icon/icon.component";
14
+ import * as i7 from "@angular/common";
15
+ export const AXBaseDropdownMenuMixin = _InteractiveComponenetMixin(_DropdownComponenetMixin((AXBaseComponent)));
16
+ export class AXDropdownPanelComponent extends AXBaseDropdownMenuMixin {
17
+ constructor(elementRef, cdr, _overlay, _platform, _viewContainerRef, _parent) {
18
+ super(elementRef, cdr);
19
+ this._overlay = _overlay;
20
+ this._platform = _platform;
21
+ this._viewContainerRef = _viewContainerRef;
22
+ this._parent = _parent;
23
+ this.onItemClick = new EventEmitter();
24
+ this._needBorder = false;
25
+ this._subs = [];
26
+ if (_parent) {
27
+ this.target = _parent;
28
+ this._subs.push(_parent.onClick.subscribe(this.toggle.bind(this)));
29
+ }
30
+ }
31
+ get items() {
32
+ return this._items || [];
33
+ }
34
+ set items(v) {
35
+ this._items = v;
36
+ this._cdr.markForCheck();
37
+ }
38
+ _getAllButtons() {
39
+ return [...Array.from(this._viewButtons), ...Array.from(this._contentButtons)];
40
+ }
41
+ onViewInit() {
42
+ this._getAllButtons().forEach(c => {
43
+ this._needBorder = true;
44
+ this._subs.push(c.onClick.subscribe(this._handleOnItemClick.bind(this)));
45
+ });
46
+ }
47
+ onDestroy() {
48
+ var _a, _b;
49
+ (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
50
+ (_b = this._overlayRef) === null || _b === void 0 ? void 0 : _b.dispose();
51
+ this._subs.forEach(s => {
52
+ s === null || s === void 0 ? void 0 : s.unsubscribe();
53
+ });
54
+ }
55
+ _handleKeydownHandler(e) {
56
+ if (e.key === 'Enter' && e.type === 'keydown') {
57
+ this.toggle();
58
+ }
59
+ if (e.key === 'Escape') {
60
+ if (this.isOpen) {
61
+ this.close();
62
+ e.stopPropagation();
63
+ }
64
+ }
65
+ }
66
+ _handleArrowClickEvent(e) {
67
+ this.toggle();
68
+ }
69
+ _emitOnItemClickEvent(e, item) {
70
+ this.onItemClick.emit({
71
+ component: this,
72
+ htmlElement: this._getHostElement(),
73
+ nativeEvent: e.nativeEvent,
74
+ name: item.name,
75
+ data: item.data,
76
+ });
77
+ this.close();
78
+ }
79
+ _handleOnItemClick(e) {
80
+ this.close();
81
+ this._emitOnItemClickEvent(e, e.component);
82
+ }
83
+ toggle() {
84
+ if (this.disabled !== true) {
85
+ this.isOpen ? this.close() : this.open();
86
+ }
87
+ }
88
+ close() {
89
+ var _a, _b;
90
+ if (!this.isOpen) {
91
+ return;
92
+ }
93
+ (_a = this._overlayRef) === null || _a === void 0 ? void 0 : _a.detach();
94
+ (_b = this._subs[1]) === null || _b === void 0 ? void 0 : _b.unsubscribe();
95
+ this._emitOnClosedEvent();
96
+ }
97
+ open() {
98
+ if (this.isOpen) {
99
+ return;
100
+ }
101
+ this._ensureOverlayCreated();
102
+ this._overlayRef.attach(this._templatePortal);
103
+ this._emitOnOpenedEvent();
104
+ }
105
+ _ensureOverlayCreated() {
106
+ let baseSize = Number(getComputedStyle(document.documentElement).getPropertyValue('--ax-base-size').replace('px', ''));
107
+ const targetRef = this.target._getInnerElement();
108
+ if (!this._overlayRef) {
109
+ const positionStrategy = this._overlay.position()
110
+ .flexibleConnectedTo(targetRef)
111
+ .withPositions([
112
+ {
113
+ originX: 'start',
114
+ originY: 'bottom',
115
+ overlayX: 'start',
116
+ overlayY: 'top',
117
+ offsetY: baseSize
118
+ },
119
+ {
120
+ originX: 'start',
121
+ originY: 'top',
122
+ overlayX: 'start',
123
+ overlayY: 'bottom'
124
+ }
125
+ ])
126
+ .withPush(false);
127
+ this._overlayRef = this._overlay.create({
128
+ positionStrategy,
129
+ scrollStrategy: this._overlay.scrollStrategies.close(),
130
+ //panelClass: ['animate__animated', 'animate__fadeIn', 'animate__faster'],
131
+ panelClass: ['ax-animate-fade-in'],
132
+ hasBackdrop: false,
133
+ backdropClass: ['cdk-overlay-transparent-backdrop']
134
+ });
135
+ this._subs[0] = this._overlayRef._outsidePointerEvents.subscribe(c => {
136
+ const target = c.target;
137
+ const comElem = targetRef;
138
+ if (!(comElem.contains(target))) {
139
+ this.close();
140
+ }
141
+ });
142
+ this._subs[1] = this._overlayRef.attachments().subscribe(() => {
143
+ if (this.fitParent === true) {
144
+ this._dropdownWidth = targetRef.offsetWidth;
145
+ }
146
+ else {
147
+ this._dropdownWidth = targetRef.offsetWidth * 1.5;
148
+ }
149
+ this._subs[2] = this._platform.scroll.subscribe(c => {
150
+ if (!c.nativeEvent.target.closest('.ax-overlay-pane'))
151
+ this.close();
152
+ });
153
+ });
154
+ }
155
+ if (!this._templatePortal) {
156
+ this._templatePortal = new TemplatePortal(this._baseTemplate, this._viewContainerRef);
157
+ }
158
+ }
159
+ get isOpen() {
160
+ return this._overlayRef ? this._overlayRef.hasAttached() : false;
161
+ }
162
+ }
163
+ AXDropdownPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i2.AXPlatform }, { token: i0.ViewContainerRef }, { token: i3.AXButtonComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
164
+ AXDropdownPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: { target: "target", items: "items" }, outputs: { onItemClick: "onItemClick" }, host: { listeners: { "keydown": "_handleKeydownHandler($event)" } }, queries: [{ propertyName: "_contentButtons", predicate: AXButtonItemComponent }], viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }, { propertyName: "_viewButtons", predicate: AXButtonItemComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\n <div class=\"ax-overlay-pane\" [class.ax-dropdown-list]=\"_needBorder\" [style.min-width.px]=\"_dropdownWidth\">\n <ng-container *ngIf=\"items && items.length;else panelTpl\">\n <ax-button-item [text]=\"item.text\" [color]=\"item.color\" *ngFor=\"let item of items\">\n <ax-prefix *ngIf=\"item.iconClass\">\n <ax-icon [icon]=\"item.iconClass\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n <ng-template #panelTpl>\n <ng-content select=\"[panel],ax-button-item\">\n </ng-content>\n </ng-template>\n </div>\n</ng-template>", components: [{ type: i4.AXButtonItemComponent, selector: "ax-button-item", inputs: ["text", "tooltip", "selected", "seperated", "name", "data", "color"] }, { type: i5.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i6.AXIconComponent, selector: "ax-icon", inputs: ["icon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDropdownPanelComponent, decorators: [{
166
+ type: Component,
167
+ args: [{
168
+ selector: 'ax-dropdown-panel',
169
+ templateUrl: './dropdown-panel.component.html',
170
+ changeDetection: ChangeDetectionStrategy.OnPush,
171
+ encapsulation: ViewEncapsulation.None,
172
+ }]
173
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i2.AXPlatform }, { type: i0.ViewContainerRef }, { type: i3.AXButtonComponent, decorators: [{
174
+ type: Optional
175
+ }] }]; }, propDecorators: { _contentButtons: [{
176
+ type: ContentChildren,
177
+ args: [AXButtonItemComponent]
178
+ }], _viewButtons: [{
179
+ type: ViewChildren,
180
+ args: [AXButtonItemComponent]
181
+ }], onItemClick: [{
182
+ type: Output
183
+ }], target: [{
184
+ type: Input
185
+ }], items: [{
186
+ type: Input
187
+ }], _baseTemplate: [{
188
+ type: ViewChild,
189
+ args: ['baseTemplate']
190
+ }], _handleKeydownHandler: [{
191
+ type: HostListener,
192
+ args: ['keydown', ['$event']]
193
+ }] } });
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0gsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFHdkIsZUFBZSxFQUNmLFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUdaLFFBQVEsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFvQyxNQUFNLFNBQVMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNwRixPQUFPLEVBQW1DLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7QUFHbkYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQ2hDLDJCQUEyQixDQUN2Qix3QkFBd0IsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUN6QyxDQUNKLENBQUE7QUFTTCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsdUJBQXVCO0lBRWpFLFlBQ0ksVUFBc0IsRUFDdEIsR0FBc0IsRUFDZCxRQUFpQixFQUNqQixTQUFxQixFQUNyQixpQkFBbUMsRUFFbkMsT0FBMEI7UUFFbEMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FB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dUVDN0R2QywyckJBY2M7MkZENEJELHdCQUF3QjtrQkFOcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3hDOzswQkFTUSxRQUFROzRDQVUyQixlQUFlO3NCQUF0RCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFDRCxZQUFZO3NCQUFoRCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFHbkMsV0FBVztzQkFEVixNQUFNO2dCQUtQLE1BQU07c0JBREwsS0FBSztnQkFTSyxLQUFLO3NCQURmLEtBQUs7Z0JBWU4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGNBQWM7Z0JBK0J6QixxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQbGF0Zm9ybSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE91dHB1dCxcbiAgICBJbnB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9wdGlvbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWEJhc2VDb21wb25lbnQsIEFYQnV0dG9uQ2xpY2tFdmVudCwgQVhDbGlja0V2ZW50IH0gZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBfRHJvcGRvd25Db21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlL21peGluL2Ryb3Bkb3duLW1peGluLmNsYXNzJztcbmltcG9ydCB7IF9JbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vaW50ZXJhY3RpdmUtbWl4aW4uY2xhc3MnO1xuaW1wb3J0IHsgQVhCdXR0b25Db21wb25lbnQsIEFYQnV0dG9uSXRlbSwgQVhCdXR0b25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uJztcblxuXG5leHBvcnQgY29uc3QgQVhCYXNlRHJvcGRvd25NZW51TWl4aW4gPVxuICAgIF9JbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbihcbiAgICAgICAgX0Ryb3Bkb3duQ29tcG9uZW5ldE1peGluKChBWEJhc2VDb21wb25lbnQpXG4gICAgICAgIClcbiAgICApXG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdheC1kcm9wZG93bi1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWERyb3Bkb3duUGFuZWxDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VEcm9wZG93bk1lbnVNaXhpbiB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IEFYUGxhdGZvcm0sXG4gICAgICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHByaXZhdGUgX3BhcmVudDogQVhCdXR0b25Db21wb25lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XG4gICAgICAgIGlmIChfcGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldCA9IF9wYXJlbnQ7XG4gICAgICAgICAgICB0aGlzLl9zdWJzLnB1c2goX3BhcmVudC5vbkNsaWNrLnN1YnNjcmliZSh0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEFYQnV0dG9uSXRlbUNvbXBvbmVudCkgX2NvbnRlbnRCdXR0b25zOiBRdWVyeUxpc3Q8QVhCdXR0b25JdGVtQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKEFYQnV0dG9uSXRlbUNvbXBvbmVudCkgX3ZpZXdCdXR0b25zOiBRdWVyeUxpc3Q8QVhCdXR0b25JdGVtQ29tcG9uZW50PjtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhCdXR0b25DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhCdXR0b25DbGlja0V2ZW50PigpO1xuXG5cbiAgICBASW5wdXQoKVxuICAgIHRhcmdldDogQVhCYXNlQ29tcG9uZW50XG5cblxuXG5cblxuICAgIHByaXZhdGUgX2l0ZW1zOiBBWEJ1dHRvbkl0ZW1bXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgaXRlbXMoKTogQVhCdXR0b25JdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMgfHwgW107XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXRlbXModjogQVhCdXR0b25JdGVtW10pIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB2O1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG5cblxuICAgIEBWaWV3Q2hpbGQoJ2Jhc2VUZW1wbGF0ZScpXG4gICAgX2Jhc2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgICBfdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xuXG4gICAgX2Ryb3Bkb3duV2lkdGg6IG51bWJlcjtcbiAgICBfbmVlZEJvcmRlcjogYm9vbGVhbj1mYWxzZTtcbiAgICBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIHByaXZhdGUgX2dldEFsbEJ1dHRvbnMoKTogQVhCdXR0b25JdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gWy4uLkFycmF5LmZyb20odGhpcy5fdmlld0J1dHRvbnMpLCAuLi5BcnJheS5mcm9tKHRoaXMuX2NvbnRlbnRCdXR0b25zKV07XG4gICAgfVxuXG5cbiAgICBvblZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLl9nZXRBbGxCdXR0b25zKCkuZm9yRWFjaChjID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25lZWRCb3JkZXI9dHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnMucHVzaChjLm9uQ2xpY2suc3Vic2NyaWJlKHRoaXMuX2hhbmRsZU9uSXRlbUNsaWNrLmJpbmQodGhpcykpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5fb3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiB7XG4gICAgICAgICAgICBzPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIF9oYW5kbGVLZXlkb3duSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG5cbiAgICBfaGFuZGxlQXJyb3dDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG5cbiAgICBfZW1pdE9uSXRlbUNsaWNrRXZlbnQoZTogQVhDbGlja0V2ZW50LCBpdGVtOiBBWEJ1dHRvbkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljay5lbWl0KHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGUubmF0aXZlRXZlbnQsXG4gICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaGFuZGxlT25JdGVtQ2xpY2soZTogQVhDbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5fZW1pdE9uSXRlbUNsaWNrRXZlbnQoZSwgZS5jb21wb25lbnQpO1xuXG4gICAgfVxuXG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICE9PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICAgICAgdGhpcy5fc3Vic1sxXT8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZW1pdE9uQ2xvc2VkRXZlbnQoKTtcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbnN1cmVPdmVybGF5Q3JlYXRlZCgpO1xuICAgICAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaCh0aGlzLl90ZW1wbGF0ZVBvcnRhbCk7XG4gICAgICAgIHRoaXMuX2VtaXRPbk9wZW5lZEV2ZW50KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZW5zdXJlT3ZlcmxheUNyZWF0ZWQoKSB7XG4gICAgICAgIGxldCBiYXNlU2l6ZSA9IE51bWJlcihnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1heC1iYXNlLXNpemUnKS5yZXBsYWNlKCdweCcsICcnKSk7XG4gICAgICAgIGNvbnN0IHRhcmdldFJlZiA9IHRoaXMudGFyZ2V0Ll9nZXRJbm5lckVsZW1lbnQoKTtcblxuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcbiAgICAgICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXG4gICAgICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IGJhc2VTaXplXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIC53aXRoUHVzaChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpLFxuICAgICAgICAgICAgICAgIC8vcGFuZWxDbGFzczogWydhbmltYXRlX19hbmltYXRlZCcsICdhbmltYXRlX19mYWRlSW4nLCAnYW5pbWF0ZV9fZmFzdGVyJ10sXG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWZhZGUtaW4nXSxcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogWydjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCddXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNbMF0gPSB0aGlzLl9vdmVybGF5UmVmLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYy50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tRWxlbSA9IHRhcmdldFJlZjtcbiAgICAgICAgICAgICAgICBpZiAoIShjb21FbGVtLmNvbnRhaW5zKHRhcmdldCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNbMV0gPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maXRQYXJlbnQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHJvcGRvd25XaWR0aCA9IHRhcmdldFJlZi5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kcm9wZG93bldpZHRoID0gdGFyZ2V0UmVmLm9mZnNldFdpZHRoICogMS41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9zdWJzWzJdID0gdGhpcy5fcGxhdGZvcm0uc2Nyb2xsLnN1YnNjcmliZShjID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoYy5uYXRpdmVFdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1vdmVybGF5LXBhbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fdGVtcGxhdGVQb3J0YWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuX2Jhc2VUZW1wbGF0ZSwgdGhpcy5fdmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcmxheVJlZiA/IHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSA6IGZhbHNlO1xuICAgIH1cblxufVxuIiwiPG5nLXRlbXBsYXRlICNiYXNlVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZVwiIFtjbGFzcy5heC1kcm9wZG93bi1saXN0XT1cIl9uZWVkQm9yZGVyXCIgW3N0eWxlLm1pbi13aWR0aC5weF09XCJfZHJvcGRvd25XaWR0aFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMgJiYgaXRlbXMubGVuZ3RoO2Vsc2UgcGFuZWxUcGxcIj5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBbdGV4dF09XCJpdGVtLnRleHRcIiBbY29sb3JdPVwiaXRlbS5jb2xvclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPGF4LXByZWZpeCAqbmdJZj1cIml0ZW0uaWNvbkNsYXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cIml0ZW0uaWNvbkNsYXNzXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjcGFuZWxUcGw+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcGFuZWxdLGF4LWJ1dHRvbi1pdGVtXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==