@leanix/components 0.2.229 → 0.2.232

Sign up to get free protection for your applications and to get access to all the features.
Files changed (347) hide show
  1. package/esm2020/index.mjs +119 -0
  2. package/esm2020/leanix-components.mjs +5 -0
  3. package/esm2020/lib/core-ui/annotations/required.mjs +33 -0
  4. package/esm2020/lib/core-ui/components/badge/badge.component.mjs +25 -0
  5. package/esm2020/lib/core-ui/components/button/button.component.mjs +72 -0
  6. package/esm2020/lib/core-ui/components/button-group/button-group.component.mjs +28 -0
  7. package/esm2020/lib/core-ui/components/card/card.component.mjs +19 -0
  8. package/esm2020/lib/core-ui/components/collapsible/collapsible.component.mjs +53 -0
  9. package/esm2020/lib/core-ui/components/colored-label/colored-label.component.mjs +34 -0
  10. package/esm2020/lib/core-ui/components/ellipsis/ellipsis.component.mjs +70 -0
  11. package/esm2020/lib/core-ui/components/icon-scale/icon-scale.component.mjs +40 -0
  12. package/esm2020/lib/core-ui/components/spinner/spinner.component.mjs +26 -0
  13. package/esm2020/lib/core-ui/components/table/table-header/table-header.component.mjs +55 -0
  14. package/esm2020/lib/core-ui/components/table/table.component.mjs +69 -0
  15. package/esm2020/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +11 -0
  16. package/esm2020/lib/core-ui/core-ui.constants.mjs +13 -0
  17. package/esm2020/lib/core-ui/core-ui.module.mjs +177 -0
  18. package/esm2020/lib/core-ui/directives/after-view-init.directive.mjs +30 -0
  19. package/esm2020/lib/core-ui/directives/autoclose-group.service.mjs +38 -0
  20. package/esm2020/lib/core-ui/directives/autoclose.directive.mjs +40 -0
  21. package/esm2020/lib/core-ui/directives/autofocus.directive.mjs +27 -0
  22. package/esm2020/lib/core-ui/directives/html.directive.mjs +29 -0
  23. package/esm2020/lib/core-ui/functions/core-css.helpers.mjs +35 -0
  24. package/esm2020/lib/core-ui/pipes/br.pipe.mjs +23 -0
  25. package/esm2020/lib/core-ui/pipes/contrast-color.pipe.mjs +20 -0
  26. package/esm2020/lib/core-ui/pipes/custom-date.pipe.mjs +27 -0
  27. package/esm2020/lib/core-ui/pipes/highlight-range.pipe.mjs +21 -0
  28. package/esm2020/lib/core-ui/pipes/highlight-term.pipe.mjs +38 -0
  29. package/esm2020/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +21 -0
  30. package/esm2020/lib/core-ui/pipes/lx-time-ago.pipe.mjs +25 -0
  31. package/esm2020/lib/core-ui/pipes/lx-translate.pipe.mjs +45 -0
  32. package/esm2020/lib/core-ui/pipes/markdown.pipe.mjs +29 -0
  33. package/esm2020/lib/core-ui/pipes/nbsp.pipe.mjs +14 -0
  34. package/esm2020/lib/core-ui/pipes/sort.pipe.mjs +52 -0
  35. package/esm2020/lib/core-ui/pipes/translation-after.pipe.mjs +28 -0
  36. package/esm2020/lib/core-ui/pipes/translation-before.pipe.mjs +53 -0
  37. package/esm2020/lib/core-ui/pipes/translation-between.pipe.mjs +67 -0
  38. package/esm2020/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +16 -0
  39. package/esm2020/lib/core-ui/tooltip/to-cdk-position.function.mjs +74 -0
  40. package/esm2020/lib/core-ui/tooltip/tooltip-position.interface.mjs +7 -0
  41. package/esm2020/lib/core-ui/tooltip/tooltip.component.mjs +26 -0
  42. package/esm2020/lib/core-ui/tooltip/tooltip.directive.mjs +102 -0
  43. package/esm2020/lib/core-ui/tooltip/tooltip.module.mjs +21 -0
  44. package/esm2020/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +103 -0
  45. package/esm2020/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +33 -0
  46. package/esm2020/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +216 -0
  47. package/esm2020/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +136 -0
  48. package/esm2020/lib/forms-ui/components/currency/currency-input.component.mjs +141 -0
  49. package/esm2020/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +105 -0
  50. package/esm2020/lib/forms-ui/components/currency/currency-symbol.component.mjs +25 -0
  51. package/esm2020/lib/forms-ui/components/date-input/date-input.component.mjs +270 -0
  52. package/esm2020/lib/forms-ui/components/drag-and-drop-list/constants.mjs +5 -0
  53. package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +49 -0
  54. package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +102 -0
  55. package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +25 -0
  56. package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +133 -0
  57. package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +37 -0
  58. package/esm2020/lib/forms-ui/components/error-message/error-message.component.mjs +24 -0
  59. package/esm2020/lib/forms-ui/components/form-error/form-error.component.mjs +40 -0
  60. package/esm2020/lib/forms-ui/components/icon/icon.component.mjs +44 -0
  61. package/esm2020/lib/forms-ui/components/input/input.component.mjs +44 -0
  62. package/esm2020/lib/forms-ui/components/keyboard-select.directive.mjs +116 -0
  63. package/esm2020/lib/forms-ui/components/multi-select/multi-select.component.mjs +251 -0
  64. package/esm2020/lib/forms-ui/components/option/option.component.mjs +81 -0
  65. package/esm2020/lib/forms-ui/components/option-group/option-group.component.mjs +29 -0
  66. package/esm2020/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +100 -0
  67. package/esm2020/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +163 -0
  68. package/esm2020/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +92 -0
  69. package/esm2020/lib/forms-ui/components/picker/picker-trigger.directive.mjs +36 -0
  70. package/esm2020/lib/forms-ui/components/picker/picker.component.mjs +201 -0
  71. package/esm2020/lib/forms-ui/components/picker-option/picker-option.component.mjs +118 -0
  72. package/esm2020/lib/forms-ui/components/pill-item/pill-item.component.mjs +33 -0
  73. package/esm2020/lib/forms-ui/components/pill-list/pill-list.component.mjs +59 -0
  74. package/esm2020/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +97 -0
  75. package/esm2020/lib/forms-ui/components/single-select/single-select.component.mjs +274 -0
  76. package/esm2020/lib/forms-ui/components/slider-toggle/slider-toggle.component.mjs +42 -0
  77. package/esm2020/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +52 -0
  78. package/esm2020/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +21 -0
  79. package/esm2020/lib/forms-ui/directives/form-error.directive.mjs +109 -0
  80. package/esm2020/lib/forms-ui/directives/form-submit.directive.mjs +28 -0
  81. package/esm2020/lib/forms-ui/directives/keyboard-action-source.directive.mjs +53 -0
  82. package/esm2020/lib/forms-ui/directives/mark-invalid.directive.mjs +38 -0
  83. package/esm2020/lib/forms-ui/directives/select-dropdown.directive.mjs +31 -0
  84. package/esm2020/lib/forms-ui/directives/selectable-item.directive.mjs +33 -0
  85. package/esm2020/lib/forms-ui/directives/selected-option.directive.mjs +26 -0
  86. package/esm2020/lib/forms-ui/forms-ui.module.mjs +236 -0
  87. package/esm2020/lib/forms-ui/helpers/key-codes.constants.mjs +11 -0
  88. package/esm2020/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +38 -0
  89. package/esm2020/lib/forms-ui/models/base-select.directive.mjs +148 -0
  90. package/esm2020/lib/forms-ui/models/dropdown-item.interface.mjs +2 -0
  91. package/esm2020/lib/forms-ui/models/single-select-padding.interface.mjs +2 -0
  92. package/esm2020/lib/forms-ui/models/sorting.interface.mjs +7 -0
  93. package/esm2020/lib/forms-ui/pipes/filter-selection.pipe.mjs +30 -0
  94. package/esm2020/lib/forms-ui/pipes/filter-term.pipe.mjs +26 -0
  95. package/esm2020/lib/forms-ui/pipes/format-number.pipe.mjs +65 -0
  96. package/esm2020/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +26 -0
  97. package/esm2020/lib/modal-ui/components/modal/modal.component.mjs +205 -0
  98. package/esm2020/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +11 -0
  99. package/esm2020/lib/modal-ui/components/modal-header/modal-header.component.mjs +23 -0
  100. package/esm2020/lib/modal-ui/directives/modal-content.directive.mjs +13 -0
  101. package/esm2020/lib/modal-ui/modal.constants.mjs +3 -0
  102. package/esm2020/lib/modal-ui/modal.module.mjs +26 -0
  103. package/esm2020/lib/popover-ui/components/popover/popover.component.mjs +199 -0
  104. package/esm2020/lib/popover-ui/directives/popover-click.directive.mjs +51 -0
  105. package/esm2020/lib/popover-ui/directives/popover-content.directive.mjs +16 -0
  106. package/esm2020/lib/popover-ui/directives/popover-hover.directive.mjs +87 -0
  107. package/esm2020/lib/popover-ui/popover-ui.module.mjs +22 -0
  108. package/esm2020/lib/shared/date-helpers.mjs +35 -0
  109. package/esm2020/lib/shared/misc-helpers.mjs +34 -0
  110. package/esm2020/lib/shared/observe.mjs +40 -0
  111. package/esm2020/lib/tab-ui/components/tab/tab.component.mjs +70 -0
  112. package/esm2020/lib/tab-ui/components/tab-group/tab-group.component.mjs +71 -0
  113. package/esm2020/lib/tab-ui/tab-ui.module.mjs +22 -0
  114. package/fesm2015/{leanix-components.js → leanix-components.mjs} +436 -633
  115. package/fesm2015/leanix-components.mjs.map +1 -0
  116. package/fesm2020/leanix-components.mjs +6207 -0
  117. package/fesm2020/leanix-components.mjs.map +1 -0
  118. package/package.json +23 -9
  119. package/bundles/leanix-components.umd.js +0 -7364
  120. package/bundles/leanix-components.umd.js.map +0 -1
  121. package/esm2015/index.js +0 -119
  122. package/esm2015/index.js.map +0 -1
  123. package/esm2015/leanix-components.js +0 -5
  124. package/esm2015/leanix-components.js.map +0 -1
  125. package/esm2015/lib/core-ui/annotations/required.js +0 -33
  126. package/esm2015/lib/core-ui/annotations/required.js.map +0 -1
  127. package/esm2015/lib/core-ui/components/badge/badge.component.js +0 -29
  128. package/esm2015/lib/core-ui/components/badge/badge.component.js.map +0 -1
  129. package/esm2015/lib/core-ui/components/button/button.component.js +0 -78
  130. package/esm2015/lib/core-ui/components/button/button.component.js.map +0 -1
  131. package/esm2015/lib/core-ui/components/button-group/button-group.component.js +0 -32
  132. package/esm2015/lib/core-ui/components/button-group/button-group.component.js.map +0 -1
  133. package/esm2015/lib/core-ui/components/card/card.component.js +0 -23
  134. package/esm2015/lib/core-ui/components/card/card.component.js.map +0 -1
  135. package/esm2015/lib/core-ui/components/collapsible/collapsible.component.js +0 -58
  136. package/esm2015/lib/core-ui/components/collapsible/collapsible.component.js.map +0 -1
  137. package/esm2015/lib/core-ui/components/colored-label/colored-label.component.js +0 -39
  138. package/esm2015/lib/core-ui/components/colored-label/colored-label.component.js.map +0 -1
  139. package/esm2015/lib/core-ui/components/ellipsis/ellipsis.component.js +0 -74
  140. package/esm2015/lib/core-ui/components/ellipsis/ellipsis.component.js.map +0 -1
  141. package/esm2015/lib/core-ui/components/icon-scale/icon-scale.component.js +0 -46
  142. package/esm2015/lib/core-ui/components/icon-scale/icon-scale.component.js.map +0 -1
  143. package/esm2015/lib/core-ui/components/spinner/spinner.component.js +0 -30
  144. package/esm2015/lib/core-ui/components/spinner/spinner.component.js.map +0 -1
  145. package/esm2015/lib/core-ui/components/table/table-header/table-header.component.js +0 -60
  146. package/esm2015/lib/core-ui/components/table/table-header/table-header.component.js.map +0 -1
  147. package/esm2015/lib/core-ui/components/table/table.component.js +0 -70
  148. package/esm2015/lib/core-ui/components/table/table.component.js.map +0 -1
  149. package/esm2015/lib/core-ui/components/tiny-spinner/tiny-spinner.component.js +0 -14
  150. package/esm2015/lib/core-ui/components/tiny-spinner/tiny-spinner.component.js.map +0 -1
  151. package/esm2015/lib/core-ui/core-ui.constants.js +0 -13
  152. package/esm2015/lib/core-ui/core-ui.constants.js.map +0 -1
  153. package/esm2015/lib/core-ui/core-ui.module.js +0 -177
  154. package/esm2015/lib/core-ui/core-ui.module.js.map +0 -1
  155. package/esm2015/lib/core-ui/directives/after-view-init.directive.js +0 -30
  156. package/esm2015/lib/core-ui/directives/after-view-init.directive.js.map +0 -1
  157. package/esm2015/lib/core-ui/directives/autoclose-group.service.js +0 -38
  158. package/esm2015/lib/core-ui/directives/autoclose-group.service.js.map +0 -1
  159. package/esm2015/lib/core-ui/directives/autoclose.directive.js +0 -40
  160. package/esm2015/lib/core-ui/directives/autoclose.directive.js.map +0 -1
  161. package/esm2015/lib/core-ui/directives/autofocus.directive.js +0 -27
  162. package/esm2015/lib/core-ui/directives/autofocus.directive.js.map +0 -1
  163. package/esm2015/lib/core-ui/directives/html.directive.js +0 -30
  164. package/esm2015/lib/core-ui/directives/html.directive.js.map +0 -1
  165. package/esm2015/lib/core-ui/functions/core-css.helpers.js +0 -35
  166. package/esm2015/lib/core-ui/functions/core-css.helpers.js.map +0 -1
  167. package/esm2015/lib/core-ui/pipes/br.pipe.js +0 -23
  168. package/esm2015/lib/core-ui/pipes/br.pipe.js.map +0 -1
  169. package/esm2015/lib/core-ui/pipes/contrast-color.pipe.js +0 -20
  170. package/esm2015/lib/core-ui/pipes/contrast-color.pipe.js.map +0 -1
  171. package/esm2015/lib/core-ui/pipes/custom-date.pipe.js +0 -27
  172. package/esm2015/lib/core-ui/pipes/custom-date.pipe.js.map +0 -1
  173. package/esm2015/lib/core-ui/pipes/highlight-range.pipe.js +0 -21
  174. package/esm2015/lib/core-ui/pipes/highlight-range.pipe.js.map +0 -1
  175. package/esm2015/lib/core-ui/pipes/highlight-term.pipe.js +0 -38
  176. package/esm2015/lib/core-ui/pipes/highlight-term.pipe.js.map +0 -1
  177. package/esm2015/lib/core-ui/pipes/lx-is-uuid.pipe.js +0 -21
  178. package/esm2015/lib/core-ui/pipes/lx-is-uuid.pipe.js.map +0 -1
  179. package/esm2015/lib/core-ui/pipes/lx-time-ago.pipe.js +0 -25
  180. package/esm2015/lib/core-ui/pipes/lx-time-ago.pipe.js.map +0 -1
  181. package/esm2015/lib/core-ui/pipes/lx-translate.pipe.js +0 -46
  182. package/esm2015/lib/core-ui/pipes/lx-translate.pipe.js.map +0 -1
  183. package/esm2015/lib/core-ui/pipes/markdown.pipe.js +0 -29
  184. package/esm2015/lib/core-ui/pipes/markdown.pipe.js.map +0 -1
  185. package/esm2015/lib/core-ui/pipes/nbsp.pipe.js +0 -14
  186. package/esm2015/lib/core-ui/pipes/nbsp.pipe.js.map +0 -1
  187. package/esm2015/lib/core-ui/pipes/sort.pipe.js +0 -52
  188. package/esm2015/lib/core-ui/pipes/sort.pipe.js.map +0 -1
  189. package/esm2015/lib/core-ui/pipes/translation-after.pipe.js +0 -28
  190. package/esm2015/lib/core-ui/pipes/translation-after.pipe.js.map +0 -1
  191. package/esm2015/lib/core-ui/pipes/translation-before.pipe.js +0 -53
  192. package/esm2015/lib/core-ui/pipes/translation-before.pipe.js.map +0 -1
  193. package/esm2015/lib/core-ui/pipes/translation-between.pipe.js +0 -67
  194. package/esm2015/lib/core-ui/pipes/translation-between.pipe.js.map +0 -1
  195. package/esm2015/lib/core-ui/pipes/unescape-curly-braces.pipe.js +0 -16
  196. package/esm2015/lib/core-ui/pipes/unescape-curly-braces.pipe.js.map +0 -1
  197. package/esm2015/lib/core-ui/tooltip/to-cdk-position.function.js +0 -74
  198. package/esm2015/lib/core-ui/tooltip/to-cdk-position.function.js.map +0 -1
  199. package/esm2015/lib/core-ui/tooltip/tooltip-position.interface.js +0 -7
  200. package/esm2015/lib/core-ui/tooltip/tooltip-position.interface.js.map +0 -1
  201. package/esm2015/lib/core-ui/tooltip/tooltip.component.js +0 -30
  202. package/esm2015/lib/core-ui/tooltip/tooltip.component.js.map +0 -1
  203. package/esm2015/lib/core-ui/tooltip/tooltip.directive.js +0 -107
  204. package/esm2015/lib/core-ui/tooltip/tooltip.directive.js.map +0 -1
  205. package/esm2015/lib/core-ui/tooltip/tooltip.module.js +0 -21
  206. package/esm2015/lib/core-ui/tooltip/tooltip.module.js.map +0 -1
  207. package/esm2015/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.js +0 -108
  208. package/esm2015/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.js.map +0 -1
  209. package/esm2015/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.js +0 -38
  210. package/esm2015/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.js.map +0 -1
  211. package/esm2015/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.js +0 -223
  212. package/esm2015/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.js.map +0 -1
  213. package/esm2015/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.js +0 -140
  214. package/esm2015/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.js.map +0 -1
  215. package/esm2015/lib/forms-ui/components/currency/currency-input.component.js +0 -147
  216. package/esm2015/lib/forms-ui/components/currency/currency-input.component.js.map +0 -1
  217. package/esm2015/lib/forms-ui/components/currency/currency-symbol-map.constant.js +0 -105
  218. package/esm2015/lib/forms-ui/components/currency/currency-symbol-map.constant.js.map +0 -1
  219. package/esm2015/lib/forms-ui/components/currency/currency-symbol.component.js +0 -28
  220. package/esm2015/lib/forms-ui/components/currency/currency-symbol.component.js.map +0 -1
  221. package/esm2015/lib/forms-ui/components/date-input/date-input.component.js +0 -276
  222. package/esm2015/lib/forms-ui/components/date-input/date-input.component.js.map +0 -1
  223. package/esm2015/lib/forms-ui/components/drag-and-drop-list/constants.js +0 -5
  224. package/esm2015/lib/forms-ui/components/drag-and-drop-list/constants.js.map +0 -1
  225. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.js +0 -54
  226. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.js.map +0 -1
  227. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.js +0 -107
  228. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.js.map +0 -1
  229. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.js +0 -25
  230. package/esm2015/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.js.map +0 -1
  231. package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.js +0 -133
  232. package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.js.map +0 -1
  233. package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.js +0 -37
  234. package/esm2015/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.js.map +0 -1
  235. package/esm2015/lib/forms-ui/components/error-message/error-message.component.js +0 -29
  236. package/esm2015/lib/forms-ui/components/error-message/error-message.component.js.map +0 -1
  237. package/esm2015/lib/forms-ui/components/form-error/form-error.component.js +0 -44
  238. package/esm2015/lib/forms-ui/components/form-error/form-error.component.js.map +0 -1
  239. package/esm2015/lib/forms-ui/components/icon/icon.component.js +0 -49
  240. package/esm2015/lib/forms-ui/components/icon/icon.component.js.map +0 -1
  241. package/esm2015/lib/forms-ui/components/input/input.component.js +0 -51
  242. package/esm2015/lib/forms-ui/components/input/input.component.js.map +0 -1
  243. package/esm2015/lib/forms-ui/components/keyboard-select.directive.js +0 -117
  244. package/esm2015/lib/forms-ui/components/keyboard-select.directive.js.map +0 -1
  245. package/esm2015/lib/forms-ui/components/multi-select/multi-select.component.js +0 -257
  246. package/esm2015/lib/forms-ui/components/multi-select/multi-select.component.js.map +0 -1
  247. package/esm2015/lib/forms-ui/components/option/option.component.js +0 -85
  248. package/esm2015/lib/forms-ui/components/option/option.component.js.map +0 -1
  249. package/esm2015/lib/forms-ui/components/option-group/option-group.component.js +0 -34
  250. package/esm2015/lib/forms-ui/components/option-group/option-group.component.js.map +0 -1
  251. package/esm2015/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.js +0 -105
  252. package/esm2015/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.js.map +0 -1
  253. package/esm2015/lib/forms-ui/components/options-dropdown/options-dropdown.component.js +0 -169
  254. package/esm2015/lib/forms-ui/components/options-dropdown/options-dropdown.component.js.map +0 -1
  255. package/esm2015/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.js +0 -96
  256. package/esm2015/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.js.map +0 -1
  257. package/esm2015/lib/forms-ui/components/picker/picker-trigger.directive.js +0 -36
  258. package/esm2015/lib/forms-ui/components/picker/picker-trigger.directive.js.map +0 -1
  259. package/esm2015/lib/forms-ui/components/picker/picker.component.js +0 -210
  260. package/esm2015/lib/forms-ui/components/picker/picker.component.js.map +0 -1
  261. package/esm2015/lib/forms-ui/components/picker-option/picker-option.component.js +0 -124
  262. package/esm2015/lib/forms-ui/components/picker-option/picker-option.component.js.map +0 -1
  263. package/esm2015/lib/forms-ui/components/pill-item/pill-item.component.js +0 -37
  264. package/esm2015/lib/forms-ui/components/pill-item/pill-item.component.js.map +0 -1
  265. package/esm2015/lib/forms-ui/components/pill-list/pill-list.component.js +0 -64
  266. package/esm2015/lib/forms-ui/components/pill-list/pill-list.component.js.map +0 -1
  267. package/esm2015/lib/forms-ui/components/responsive-input/responsive-input.component.js +0 -104
  268. package/esm2015/lib/forms-ui/components/responsive-input/responsive-input.component.js.map +0 -1
  269. package/esm2015/lib/forms-ui/components/single-select/single-select.component.js +0 -279
  270. package/esm2015/lib/forms-ui/components/single-select/single-select.component.js.map +0 -1
  271. package/esm2015/lib/forms-ui/components/slider-toggle/slider-toggle.component.js +0 -47
  272. package/esm2015/lib/forms-ui/components/slider-toggle/slider-toggle.component.js.map +0 -1
  273. package/esm2015/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.js +0 -56
  274. package/esm2015/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.js.map +0 -1
  275. package/esm2015/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.js +0 -25
  276. package/esm2015/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.js.map +0 -1
  277. package/esm2015/lib/forms-ui/directives/form-error.directive.js +0 -111
  278. package/esm2015/lib/forms-ui/directives/form-error.directive.js.map +0 -1
  279. package/esm2015/lib/forms-ui/directives/form-submit.directive.js +0 -28
  280. package/esm2015/lib/forms-ui/directives/form-submit.directive.js.map +0 -1
  281. package/esm2015/lib/forms-ui/directives/keyboard-action-source.directive.js +0 -53
  282. package/esm2015/lib/forms-ui/directives/keyboard-action-source.directive.js.map +0 -1
  283. package/esm2015/lib/forms-ui/directives/mark-invalid.directive.js +0 -38
  284. package/esm2015/lib/forms-ui/directives/mark-invalid.directive.js.map +0 -1
  285. package/esm2015/lib/forms-ui/directives/select-dropdown.directive.js +0 -31
  286. package/esm2015/lib/forms-ui/directives/select-dropdown.directive.js.map +0 -1
  287. package/esm2015/lib/forms-ui/directives/selectable-item.directive.js +0 -33
  288. package/esm2015/lib/forms-ui/directives/selectable-item.directive.js.map +0 -1
  289. package/esm2015/lib/forms-ui/directives/selected-option.directive.js +0 -26
  290. package/esm2015/lib/forms-ui/directives/selected-option.directive.js.map +0 -1
  291. package/esm2015/lib/forms-ui/forms-ui.module.js +0 -236
  292. package/esm2015/lib/forms-ui/forms-ui.module.js.map +0 -1
  293. package/esm2015/lib/forms-ui/helpers/key-codes.constants.js +0 -11
  294. package/esm2015/lib/forms-ui/helpers/key-codes.constants.js.map +0 -1
  295. package/esm2015/lib/forms-ui/helpers/keyboard-navigation.helpers.js +0 -38
  296. package/esm2015/lib/forms-ui/helpers/keyboard-navigation.helpers.js.map +0 -1
  297. package/esm2015/lib/forms-ui/models/base-select.directive.js +0 -148
  298. package/esm2015/lib/forms-ui/models/base-select.directive.js.map +0 -1
  299. package/esm2015/lib/forms-ui/models/dropdown-item.interface.js +0 -2
  300. package/esm2015/lib/forms-ui/models/dropdown-item.interface.js.map +0 -1
  301. package/esm2015/lib/forms-ui/models/single-select-padding.interface.js +0 -2
  302. package/esm2015/lib/forms-ui/models/single-select-padding.interface.js.map +0 -1
  303. package/esm2015/lib/forms-ui/models/sorting.interface.js +0 -7
  304. package/esm2015/lib/forms-ui/models/sorting.interface.js.map +0 -1
  305. package/esm2015/lib/forms-ui/pipes/filter-selection.pipe.js +0 -30
  306. package/esm2015/lib/forms-ui/pipes/filter-selection.pipe.js.map +0 -1
  307. package/esm2015/lib/forms-ui/pipes/filter-term.pipe.js +0 -26
  308. package/esm2015/lib/forms-ui/pipes/filter-term.pipe.js.map +0 -1
  309. package/esm2015/lib/forms-ui/pipes/format-number.pipe.js +0 -65
  310. package/esm2015/lib/forms-ui/pipes/format-number.pipe.js.map +0 -1
  311. package/esm2015/lib/forms-ui/validators/date-in-foreseeable-future.validator.js +0 -26
  312. package/esm2015/lib/forms-ui/validators/date-in-foreseeable-future.validator.js.map +0 -1
  313. package/esm2015/lib/modal-ui/components/modal/modal.component.js +0 -214
  314. package/esm2015/lib/modal-ui/components/modal/modal.component.js.map +0 -1
  315. package/esm2015/lib/modal-ui/components/modal-footer/modal-footer.component.js +0 -15
  316. package/esm2015/lib/modal-ui/components/modal-footer/modal-footer.component.js.map +0 -1
  317. package/esm2015/lib/modal-ui/components/modal-header/modal-header.component.js +0 -27
  318. package/esm2015/lib/modal-ui/components/modal-header/modal-header.component.js.map +0 -1
  319. package/esm2015/lib/modal-ui/directives/modal-content.directive.js +0 -13
  320. package/esm2015/lib/modal-ui/directives/modal-content.directive.js.map +0 -1
  321. package/esm2015/lib/modal-ui/modal.constants.js +0 -3
  322. package/esm2015/lib/modal-ui/modal.constants.js.map +0 -1
  323. package/esm2015/lib/modal-ui/modal.module.js +0 -26
  324. package/esm2015/lib/modal-ui/modal.module.js.map +0 -1
  325. package/esm2015/lib/popover-ui/components/popover/popover.component.js +0 -203
  326. package/esm2015/lib/popover-ui/components/popover/popover.component.js.map +0 -1
  327. package/esm2015/lib/popover-ui/directives/popover-click.directive.js +0 -51
  328. package/esm2015/lib/popover-ui/directives/popover-click.directive.js.map +0 -1
  329. package/esm2015/lib/popover-ui/directives/popover-content.directive.js +0 -16
  330. package/esm2015/lib/popover-ui/directives/popover-content.directive.js.map +0 -1
  331. package/esm2015/lib/popover-ui/directives/popover-hover.directive.js +0 -87
  332. package/esm2015/lib/popover-ui/directives/popover-hover.directive.js.map +0 -1
  333. package/esm2015/lib/popover-ui/popover-ui.module.js +0 -22
  334. package/esm2015/lib/popover-ui/popover-ui.module.js.map +0 -1
  335. package/esm2015/lib/shared/date-helpers.js +0 -35
  336. package/esm2015/lib/shared/date-helpers.js.map +0 -1
  337. package/esm2015/lib/shared/misc-helpers.js +0 -34
  338. package/esm2015/lib/shared/misc-helpers.js.map +0 -1
  339. package/esm2015/lib/shared/observe.js +0 -40
  340. package/esm2015/lib/shared/observe.js.map +0 -1
  341. package/esm2015/lib/tab-ui/components/tab/tab.component.js +0 -75
  342. package/esm2015/lib/tab-ui/components/tab/tab.component.js.map +0 -1
  343. package/esm2015/lib/tab-ui/components/tab-group/tab-group.component.js +0 -78
  344. package/esm2015/lib/tab-ui/components/tab-group/tab-group.component.js.map +0 -1
  345. package/esm2015/lib/tab-ui/tab-ui.module.js +0 -22
  346. package/esm2015/lib/tab-ui/tab-ui.module.js.map +0 -1
  347. package/fesm2015/leanix-components.js.map +0 -1
@@ -0,0 +1,274 @@
1
+ import { Component, ContentChild, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { get, includes, isEqual } from 'lodash/fp';
4
+ import { fromEvent, Subject } from 'rxjs';
5
+ import { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';
6
+ import { SelectDropdownDirective } from '../../directives/select-dropdown.directive';
7
+ import { SelectedOptionDirective } from '../../directives/selected-option.directive';
8
+ import { ARROW_LEFT, ARROW_RIGHT, BACKSPACE, ESCAPE, TAB } from '../../helpers/key-codes.constants';
9
+ import { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';
10
+ import { BaseSelectDirective } from '../../models/base-select.directive';
11
+ import { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';
12
+ import { KeyboardSelectAction } from '../keyboard-select.directive';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "@angular/common";
15
+ import * as i2 from "../../directives/mark-invalid.directive";
16
+ import * as i3 from "@angular/forms";
17
+ export class SingleSelectComponent extends BaseSelectDirective {
18
+ constructor(cd) {
19
+ super();
20
+ this.cd = cd;
21
+ this.selectionBackground = 'white';
22
+ this.size = 'default';
23
+ this.dropdownWidthScale = '1x';
24
+ this.padding = 'default';
25
+ this.selectionChange = new EventEmitter();
26
+ this.blur = new EventEmitter();
27
+ this.allowClear = true;
28
+ this.tabIndex = 0;
29
+ this.markInvalid = false;
30
+ this.destroyed$ = new Subject();
31
+ }
32
+ static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition, keyCode) {
33
+ switch (keyCode) {
34
+ case ARROW_LEFT:
35
+ cursorPosition--;
36
+ break;
37
+ case ARROW_RIGHT:
38
+ cursorPosition++;
39
+ break;
40
+ }
41
+ return cursorPosition;
42
+ }
43
+ static getKeyboardSelectAction(cursorPosition, keyCode) {
44
+ if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {
45
+ return KeyboardSelectAction.NEXT;
46
+ }
47
+ if (cursorPosition === -1 && keyCode === ARROW_LEFT) {
48
+ return KeyboardSelectAction.LAST;
49
+ }
50
+ if (cursorPosition < -1 && keyCode === ARROW_LEFT) {
51
+ return KeyboardSelectAction.PREV;
52
+ }
53
+ if (cursorPosition <= -1 && keyCode === BACKSPACE) {
54
+ return KeyboardSelectAction.EXECUTE;
55
+ }
56
+ return undefined;
57
+ }
58
+ get selectedOptionTmpl() {
59
+ return this.explicitSelectedOption || this.implicitSelectedOption;
60
+ }
61
+ get dropdownTmpl() {
62
+ return this.explicitDropdown || this.implicitDropdown;
63
+ }
64
+ get cursorStyle() {
65
+ if (this.disabled) {
66
+ return 'default';
67
+ }
68
+ else if (this.allowQuery) {
69
+ return 'text';
70
+ }
71
+ else {
72
+ return 'pointer';
73
+ }
74
+ }
75
+ get dropdownWidth() {
76
+ switch (this.dropdownWidthScale) {
77
+ case '1x':
78
+ return undefined;
79
+ case '1.5x':
80
+ return '150%';
81
+ case '2x':
82
+ return '200%';
83
+ }
84
+ }
85
+ resetInput() {
86
+ this.queryControl.reset('', { emitEvent: false });
87
+ }
88
+ focus() {
89
+ this.queryInput.nativeElement.focus();
90
+ }
91
+ focusAndOpen() {
92
+ this.queryInput.nativeElement.focus();
93
+ this.open.next(true);
94
+ }
95
+ ngOnDestroy() {
96
+ super.ngOnDestroy();
97
+ this.destroyed$.next();
98
+ }
99
+ ngAfterViewInit() {
100
+ super.ngAfterViewInit();
101
+ this.open
102
+ .pipe(distinctUntilChanged(), filter((open) => open && !!this.dropdownComponent), map(() => this.selection), takeUntil(this.destroyed$))
103
+ .subscribe((selection) => {
104
+ if (selection) {
105
+ const index = this.determineHighlightIndex(this.dropdownComponent.options, selection, this.dropdownComponent.itemKey);
106
+ if (index > -1) {
107
+ this.dropdownComponent.select(index);
108
+ }
109
+ else {
110
+ this.selectFirstOption();
111
+ }
112
+ }
113
+ else {
114
+ this.selectFirstOption();
115
+ }
116
+ });
117
+ // keyboard event handling
118
+ const sourceElement = this.queryInput.nativeElement;
119
+ // handle keyboard navigation for the selection
120
+ fromEvent(sourceElement, 'keydown')
121
+ .pipe(map((event) => this.mapToEventSet(event, sourceElement, this.virtualCursorPosition)), tap((eventSet) => {
122
+ if (!this.allowQuery && eventSet.event.keyCode !== BACKSPACE) {
123
+ if (eventSet.event.keyCode !== TAB) {
124
+ // if querying is disabled, only the tab key press event will be propagated, so that you can still defocus.
125
+ eventSet.event.preventDefault();
126
+ }
127
+ return;
128
+ }
129
+ if (eventSet.virtualCursorPosition === 0 &&
130
+ eventSet.inputCursorPosition === 0 &&
131
+ eventSet.event.keyCode === BACKSPACE &&
132
+ this.selection &&
133
+ this.allowClear) {
134
+ this.removeSelection();
135
+ eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream
136
+ }
137
+ if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {
138
+ this.virtualCursorPosition = 0;
139
+ }
140
+ else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {
141
+ eventSet.event.preventDefault();
142
+ this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);
143
+ this.virtualCursorPosition = 0;
144
+ eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream
145
+ }
146
+ }), filter((eventSet) => this.allowQuery && eventSet.inputCursorPosition === 0), map((eventSet) => eventSet.event), filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])), map((event) => {
147
+ this.virtualCursorPosition = SingleSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(this.virtualCursorPosition, event.keyCode);
148
+ return {
149
+ cursorPosition: this.virtualCursorPosition,
150
+ event
151
+ };
152
+ }), map((positionSet) => {
153
+ const action = SingleSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);
154
+ if (action === KeyboardSelectAction.NEXT) {
155
+ // prevent cursor from moving in the input field, while we are still in the selection items
156
+ positionSet.event.preventDefault();
157
+ }
158
+ return action;
159
+ }), takeUntil(this.destroyed$))
160
+ .subscribe(this.selectionKeyboardSelectAction$);
161
+ const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);
162
+ keyboardEvents.verticalNavigation$.subscribe((event) => {
163
+ event.preventDefault();
164
+ });
165
+ keyboardEvents.close$.subscribe((event) => {
166
+ if (event.keyCode === ESCAPE && this.dropdownOpen) {
167
+ event.preventDefault();
168
+ event.stopImmediatePropagation();
169
+ }
170
+ this.open.next(false);
171
+ });
172
+ keyboardEvents.dropdownKeyboardEvent$.subscribe(this.optionsKeyboardSelectAction$);
173
+ keyboardEvents.enter$.subscribe(() => this.open.next(!this.dropdownOpen));
174
+ keyboardEvents.space$.pipe(filter(() => !this.allowQuery)).subscribe(() => {
175
+ if (this.dropdownOpen) {
176
+ this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.EXECUTE);
177
+ }
178
+ this.open.next(!this.dropdownOpen);
179
+ });
180
+ keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));
181
+ }
182
+ selectOption(option) {
183
+ this.selection = option;
184
+ this.selectionChange.emit(option);
185
+ this.propagateChange(option);
186
+ this.resetSelectState();
187
+ // This timeout makes sure that the dropdown will be closed at the end
188
+ // of all the callbacks in the open subscriptions.
189
+ setTimeout(() => {
190
+ this.open.next(false);
191
+ });
192
+ }
193
+ removeSelection() {
194
+ this.selection = null;
195
+ this.cd.markForCheck();
196
+ this.cd.detectChanges();
197
+ this.selectionChange.emit(this.selection);
198
+ this.propagateChange(this.selection);
199
+ this.resetSelectState();
200
+ }
201
+ propagateChange(_value) { }
202
+ writeValue(newSelection) {
203
+ this.selection = newSelection;
204
+ }
205
+ setDisabledState(isDisabled) {
206
+ this.disabled = isDisabled;
207
+ }
208
+ registerOnChange(fn) {
209
+ this.propagateChange = fn;
210
+ }
211
+ registerOnTouched(_fn) { }
212
+ determineHighlightIndex(options, selection, itemKey) {
213
+ return itemKey
214
+ ? options.findIndex((option) => isEqual(get(itemKey, selection), get(itemKey, option)) || isEqual(selection, get(itemKey, option)))
215
+ : options.findIndex((option) => isEqual(selection, option));
216
+ }
217
+ }
218
+ SingleSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SingleSelectComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
219
+ SingleSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SingleSelectComponent, selector: "lx-single-select", inputs: { selection: "selection", selectionBackground: "selectionBackground", size: "size", dropdownWidthScale: "dropdownWidthScale", padding: "padding", allowClear: "allowClear", tabIndex: "tabIndex", markInvalid: "markInvalid" }, outputs: { selectionChange: "selectionChange", blur: "blur" }, providers: [
220
+ {
221
+ provide: NG_VALUE_ACCESSOR,
222
+ multi: true,
223
+ useExisting: forwardRef(() => SingleSelectComponent)
224
+ }
225
+ ], queries: [{ propertyName: "explicitDropdown", first: true, predicate: SelectDropdownDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "explicitSelectedOption", first: true, predicate: SelectedOptionDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "dropdownComponent", first: true, predicate: BasicDropdownComponent, descendants: true }], viewQueries: [{ propertyName: "implicitSelectedOption", first: true, predicate: ["selectedOption"], descendants: true, static: true }, { propertyName: "implicitDropdown", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "queryInput", first: true, predicate: ["queryInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\"></ng-container>\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; blur.emit()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"selection && allowClear\" class=\"far fa-times\" (click)=\"!disabled && removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n", styles: [":host ::ng-deep .selectedOption{overflow:hidden;text-overflow:ellipsis}.selectContainer{position:relative;height:auto;padding:0;box-sizing:border-box;background:#fff;border:1px solid #99a5bb;box-shadow:inset 0 1px 1px #00000012;border-radius:3px}.selectContainer.grayBackground{background:#eaedf1;border-color:#eaedf1;box-shadow:none}.selectContainer.open{z-index:1052;background:#fff;border:1px solid #e1e5eb}.selectContainer.open.bottom{box-shadow:0 6px 6px #21252933;border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0}.selectContainer.open.bottom .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 6px 6px #21252933;top:100%;border-top:0;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top{box-shadow:0 -4px 6px #21252933;border-top:0;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 -4px 6px #21252933;margin-bottom:0;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;top:none;bottom:100%}.selectContainer:not(.open).focused{outline:0;border:1px solid #5599ff}.selectContainer.disabled{background-color:#eaedf1;cursor:not-allowed!important}.selectContainer.defaultPadding .selectionContainer{padding-left:12px}.selectContainer.narrowPadding .selectionContainer{padding-left:4px}.selectContainer .lightgrayColor{color:#8594ad}.selectionContainer{display:flex}.inputContainer{flex:1;position:relative;white-space:nowrap}.queryInput{width:100%;-webkit-appearance:none;appearance:none;border:0;padding-left:0;background:transparent;position:relative;cursor:inherit}.queryInput::-ms-clear{display:none}.queryInput:focus{outline:0}.queryInput.isHidden{opacity:0}.placeholder{position:absolute;width:100%;text-align:left;color:#8594ad;overflow:hidden;word-break:break-all;white-space:nowrap;text-overflow:ellipsis}.iconContainer{display:flex;align-items:center;text-align:center}.iconContainer .far,.iconContainer .fas{width:10px;cursor:pointer}.disabled .iconContainer .far,.disabled .iconContainer .fas{cursor:inherit}.iconContainer .fa-angle-down{margin:0 12px}.iconContainer .fa-times{margin-left:4px}.selection{width:100%;position:absolute;display:flex;align-items:center}.selection.lowerOpacity{opacity:.7}.backdrop{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1051}.optionsContainer{position:absolute;left:-1px;right:-1px;padding:0;border-radius:3px;background:#fff;z-index:1001}.defaultSize .inputContainer,.defaultSize .queryInput,.defaultSize .selection,.defaultSize .iconContainer{height:29px}.defaultSize .inputContainer{line-height:29px}.defaultSize .selectionContainer{min-height:29px}.smallSize .inputContainer,.smallSize .queryInput,.smallSize .selection,.smallSize .iconContainer{height:22px}.smallSize .inputContainer{line-height:22px}.smallSize .selectionContainer{min-height:22px}.select2Size .inputContainer,.select2Size .queryInput,.select2Size .selection,.select2Size .iconContainer{height:26px}.select2Size .inputContainer{line-height:26px}.select2Size .selectionContainer{min-height:26px}.largeSize .inputContainer,.largeSize .queryInput,.largeSize .selection,.largeSize .iconContainer{height:40px}.largeSize .inputContainer{line-height:40px}.largeSize .selectionContainer{min-height:40px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MarkInvalidDirective, selector: "[lxMarkInvalid]", inputs: ["lxMarkInvalid"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i1.AsyncPipe } });
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SingleSelectComponent, decorators: [{
227
+ type: Component,
228
+ args: [{ selector: 'lx-single-select', providers: [
229
+ {
230
+ provide: NG_VALUE_ACCESSOR,
231
+ multi: true,
232
+ useExisting: forwardRef(() => SingleSelectComponent)
233
+ }
234
+ ], template: "<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\"></ng-container>\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; blur.emit()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"selection && allowClear\" class=\"far fa-times\" (click)=\"!disabled && removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n", styles: [":host ::ng-deep .selectedOption{overflow:hidden;text-overflow:ellipsis}.selectContainer{position:relative;height:auto;padding:0;box-sizing:border-box;background:#fff;border:1px solid #99a5bb;box-shadow:inset 0 1px 1px #00000012;border-radius:3px}.selectContainer.grayBackground{background:#eaedf1;border-color:#eaedf1;box-shadow:none}.selectContainer.open{z-index:1052;background:#fff;border:1px solid #e1e5eb}.selectContainer.open.bottom{box-shadow:0 6px 6px #21252933;border-bottom-color:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0}.selectContainer.open.bottom .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 6px 6px #21252933;top:100%;border-top:0;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top{box-shadow:0 -4px 6px #21252933;border-top:0;border-top-left-radius:0;border-top-right-radius:0}.selectContainer.open.top .optionsContainer{border-bottom:solid 1px #e1e5eb;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;box-shadow:0 -4px 6px #21252933;margin-bottom:0;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;top:none;bottom:100%}.selectContainer:not(.open).focused{outline:0;border:1px solid #5599ff}.selectContainer.disabled{background-color:#eaedf1;cursor:not-allowed!important}.selectContainer.defaultPadding .selectionContainer{padding-left:12px}.selectContainer.narrowPadding .selectionContainer{padding-left:4px}.selectContainer .lightgrayColor{color:#8594ad}.selectionContainer{display:flex}.inputContainer{flex:1;position:relative;white-space:nowrap}.queryInput{width:100%;-webkit-appearance:none;appearance:none;border:0;padding-left:0;background:transparent;position:relative;cursor:inherit}.queryInput::-ms-clear{display:none}.queryInput:focus{outline:0}.queryInput.isHidden{opacity:0}.placeholder{position:absolute;width:100%;text-align:left;color:#8594ad;overflow:hidden;word-break:break-all;white-space:nowrap;text-overflow:ellipsis}.iconContainer{display:flex;align-items:center;text-align:center}.iconContainer .far,.iconContainer .fas{width:10px;cursor:pointer}.disabled .iconContainer .far,.disabled .iconContainer .fas{cursor:inherit}.iconContainer .fa-angle-down{margin:0 12px}.iconContainer .fa-times{margin-left:4px}.selection{width:100%;position:absolute;display:flex;align-items:center}.selection.lowerOpacity{opacity:.7}.backdrop{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1051}.optionsContainer{position:absolute;left:-1px;right:-1px;padding:0;border-radius:3px;background:#fff;z-index:1001}.defaultSize .inputContainer,.defaultSize .queryInput,.defaultSize .selection,.defaultSize .iconContainer{height:29px}.defaultSize .inputContainer{line-height:29px}.defaultSize .selectionContainer{min-height:29px}.smallSize .inputContainer,.smallSize .queryInput,.smallSize .selection,.smallSize .iconContainer{height:22px}.smallSize .inputContainer{line-height:22px}.smallSize .selectionContainer{min-height:22px}.select2Size .inputContainer,.select2Size .queryInput,.select2Size .selection,.select2Size .iconContainer{height:26px}.select2Size .inputContainer{line-height:26px}.select2Size .selectionContainer{min-height:26px}.largeSize .inputContainer,.largeSize .queryInput,.largeSize .selection,.largeSize .iconContainer{height:40px}.largeSize .inputContainer{line-height:40px}.largeSize .selectionContainer{min-height:40px}\n"] }]
235
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selection: [{
236
+ type: Input
237
+ }], selectionBackground: [{
238
+ type: Input
239
+ }], size: [{
240
+ type: Input
241
+ }], dropdownWidthScale: [{
242
+ type: Input
243
+ }], padding: [{
244
+ type: Input
245
+ }], selectionChange: [{
246
+ type: Output
247
+ }], blur: [{
248
+ type: Output
249
+ }], explicitDropdown: [{
250
+ type: ContentChild,
251
+ args: [SelectDropdownDirective, { read: TemplateRef, static: true }]
252
+ }], explicitSelectedOption: [{
253
+ type: ContentChild,
254
+ args: [SelectedOptionDirective, { read: TemplateRef, static: true }]
255
+ }], dropdownComponent: [{
256
+ type: ContentChild,
257
+ args: [BasicDropdownComponent, { static: false }]
258
+ }], implicitSelectedOption: [{
259
+ type: ViewChild,
260
+ args: ['selectedOption', { static: true }]
261
+ }], implicitDropdown: [{
262
+ type: ViewChild,
263
+ args: ['dropdown', { static: true }]
264
+ }], allowClear: [{
265
+ type: Input
266
+ }], tabIndex: [{
267
+ type: Input
268
+ }], markInvalid: [{
269
+ type: Input
270
+ }], queryInput: [{
271
+ type: ViewChild,
272
+ args: ['queryInput', { static: true }]
273
+ }] } });
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NpbmdsZS1zZWxlY3Qvc2luZ2xlLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3hG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WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0LCBpbmNsdWRlcywgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWRyb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTZWxlY3RlZE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0ZWQtb3B0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBUlJPV19MRUZULCBBUlJPV19SSUdIVCwgQkFDS1NQQUNFLCBFU0NBUEUsIFRBQiB9IGZyb20gJy4uLy4uL2hlbHBlcnMva2V5LWNvZGVzLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRLZXlib2FyZE5hdmlnYXRpb25FdmVudHMgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2tleWJvYXJkLW5hdmlnYXRpb24uaGVscGVycyc7XG5pbXBvcnQgeyBCYXNlU2VsZWN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Jhc2Utc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTaW5nbGVTZWxlY3RQYWRkaW5nIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NpbmdsZS1zZWxlY3QtcGFkZGluZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzaWNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2ljLWRyb3Bkb3duL2Jhc2ljLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlib2FyZFNlbGVjdEFjdGlvbiB9IGZyb20gJy4uL2tleWJvYXJkLXNlbGVjdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVTZWxlY3RTaXplID0gJ2RlZmF1bHQnIHwgJ3NtYWxsJyB8ICdzZWxlY3QyJyB8ICdsYXJnZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXNpbmdsZS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJ3NpbmdsZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc2luZ2xlLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2luZ2xlU2VsZWN0Q29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaW5nbGVTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlU2VsZWN0RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHB1YmxpYyBzdGF0aWMgY2FsY3VsYXRlTmV3Q3Vyc29yUG9zdGlvbk9uS2V5Ym9hcmROYXZpZ2F0aW9uKGN1cnNvclBvc2l0aW9uOiBudW1iZXIsIGtleUNvZGU6IG51bWJlcikge1xuICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgY2FzZSBBUlJPV19MRUZUOlxuICAgICAgICBjdXJzb3JQb3NpdGlvbi0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQVJST1dfUklHSFQ6XG4gICAgICAgIGN1cnNvclBvc2l0aW9uKys7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yUG9zaXRpb247XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEtleWJvYXJkU2VsZWN0QWN0aW9uKGN1cnNvclBvc2l0aW9uOiBudW1iZXIsIGtleUNvZGU6IG51bWJlcik6IEtleWJvYXJkU2VsZWN0QWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY3Vyc29yUG9zaXRpb24gPD0gLTEgJiYga2V5Q29kZSA9PT0gQVJST1dfUklHSFQpIHtcbiAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5ORVhUO1xuICAgIH1cbiAgICBpZiAoY3Vyc29yUG9zaXRpb24gPT09IC0xICYmIGtleUNvZGUgPT09IEFSUk9XX0xFRlQpIHtcbiAgICAgIHJldHVybiBLZXlib2FyZFNlbGVjdEFjdGlvbi5MQVNUO1xuICAgIH1cbiAgICBpZiAoY3Vyc29yUG9zaXRpb24gPCAtMSAmJiBrZXlDb2RlID09PSBBUlJPV19MRUZUKSB7XG4gICAgICByZXR1cm4gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uUFJFVjtcbiAgICB9XG4gICAgaWYgKGN1cnNvclBvc2l0aW9uIDw9IC0xICYmIGtleUNvZGUgPT09IEJBQ0tTUEFDRSkge1xuICAgICAgcmV0dXJuIEtleWJvYXJkU2VsZWN0QWN0aW9uLkVYRUNVVEU7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBASW5wdXQoKSBzZWxlY3Rpb246IGFueTtcbiAgQElucHV0KCkgc2VsZWN0aW9uQmFja2dyb3VuZDogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSc7XG4gIEBJbnB1dCgpIHNpemU6IFNpbmdsZVNlbGVjdFNpemUgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duV2lkdGhTY2FsZTogJzF4JyB8ICcxLjV4JyB8ICcyeCcgPSAnMXgnO1xuICBASW5wdXQoKSBwYWRkaW5nPzogU2luZ2xlU2VsZWN0UGFkZGluZyA9ICdkZWZhdWx0JztcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBDb250ZW50Q2hpbGQoU2VsZWN0RHJvcGRvd25EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdERyb3Bkb3duPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChTZWxlY3RlZE9wdGlvbkRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pIGV4cGxpY2l0U2VsZWN0ZWRPcHRpb24/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKEJhc2ljRHJvcGRvd25Db21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50PzogQmFzaWNEcm9wZG93bkNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdzZWxlY3RlZE9wdGlvbicsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0U2VsZWN0ZWRPcHRpb24hOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdkcm9wZG93bicsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0RHJvcGRvd24hOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBzZWxlY3RlZE9wdGlvblRtcGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwbGljaXRTZWxlY3RlZE9wdGlvbiB8fCB0aGlzLmltcGxpY2l0U2VsZWN0ZWRPcHRpb247XG4gIH1cblxuICBnZXQgZHJvcGRvd25UbXBsKCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0RHJvcGRvd24gfHwgdGhpcy5pbXBsaWNpdERyb3Bkb3duO1xuICB9XG5cbiAgQElucHV0KCkgYWxsb3dDbGVhciA9IHRydWU7XG4gIEBJbnB1dCgpIHRhYkluZGV4OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBtYXJrSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ3F1ZXJ5SW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBxdWVyeUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgY3Vyc29yU3R5bGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAnZGVmYXVsdCc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFsbG93UXVlcnkpIHtcbiAgICAgIHJldHVybiAndGV4dCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAncG9pbnRlcic7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRyb3Bkb3duV2lkdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHRoaXMuZHJvcGRvd25XaWR0aFNjYWxlKSB7XG4gICAgICBjYXNlICcxeCc6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBjYXNlICcxLjV4JzpcbiAgICAgICAgcmV0dXJuICcxNTAlJztcbiAgICAgIGNhc2UgJzJ4JzpcbiAgICAgICAgcmV0dXJuICcyMDAlJztcbiAgICB9XG4gIH1cblxuICByZXNldElucHV0KCkge1xuICAgIHRoaXMucXVlcnlDb250cm9sLnJlc2V0KCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnF1ZXJ5SW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNBbmRPcGVuKCkge1xuICAgIHRoaXMucXVlcnlJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgdGhpcy5vcGVuLm5leHQodHJ1ZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5vcGVuXG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZmlsdGVyKChvcGVuKSA9PiBvcGVuICYmICEhdGhpcy5kcm9wZG93bkNvbXBvbmVudCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLnNlbGVjdGlvbiksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZWxlY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kZXRlcm1pbmVIaWdobGlnaHRJbmRleCh0aGlzLmRyb3Bkb3duQ29tcG9uZW50IS5vcHRpb25zLCBzZWxlY3Rpb24sIHRoaXMuZHJvcGRvd25Db21wb25lbnQhLml0ZW1LZXkpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50IS5zZWxlY3QoaW5kZXgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0T3B0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RPcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAvLyBrZXlib2FyZCBldmVudCBoYW5kbGluZ1xuICAgIGNvbnN0IHNvdXJjZUVsZW1lbnQgPSB0aGlzLnF1ZXJ5SW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICAvLyBoYW5kbGUga2V5Ym9hcmQgbmF2aWdhdGlvbiBmb3IgdGhlIHNlbGVjdGlvblxuICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihzb3VyY2VFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldmVudCkgPT4gdGhpcy5tYXBUb0V2ZW50U2V0KGV2ZW50LCBzb3VyY2VFbGVtZW50LCB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbikpLFxuICAgICAgICB0YXAoKGV2ZW50U2V0KSA9PiB7XG4gICAgICAgICAgaWYgKCF0aGlzLmFsbG93UXVlcnkgJiYgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSAhPT0gQkFDS1NQQUNFKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnRTZXQuZXZlbnQua2V5Q29kZSAhPT0gVEFCKSB7XG4gICAgICAgICAgICAgIC8vIGlmIHF1ZXJ5aW5nIGlzIGRpc2FibGVkLCBvbmx5IHRoZSB0YWIga2V5IHByZXNzIGV2ZW50IHdpbGwgYmUgcHJvcGFnYXRlZCwgc28gdGhhdCB5b3UgY2FuIHN0aWxsIGRlZm9jdXMuXG4gICAgICAgICAgICAgIGV2ZW50U2V0LmV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGV2ZW50U2V0LnZpcnR1YWxDdXJzb3JQb3NpdGlvbiA9PT0gMCAmJlxuICAgICAgICAgICAgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9PT0gMCAmJlxuICAgICAgICAgICAgZXZlbnRTZXQuZXZlbnQua2V5Q29kZSA9PT0gQkFDS1NQQUNFICYmXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgdGhpcy5hbGxvd0NsZWFyXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGlvbigpO1xuICAgICAgICAgICAgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9IHVuZGVmaW5lZDsgLy8gc2V0IHRvIG51bGwgdG8gcHJldmVudCBjb250aW51aW5nIGluIHRoZSBzdHJlYW1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiBldmVudFNldC5pbnB1dEN1cnNvclBvc2l0aW9uID09PSAnbnVtYmVyJyAmJiBldmVudFNldC5pbnB1dEN1cnNvclBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsQ3Vyc29yUG9zaXRpb24gPSAwO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRTZXQudmlydHVhbEN1cnNvclBvc2l0aW9uID09PSAtMSAmJiBldmVudFNldC5ldmVudC5rZXlDb2RlID09PSBBUlJPV19SSUdIVCkge1xuICAgICAgICAgICAgZXZlbnRTZXQuZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uS2V5Ym9hcmRTZWxlY3RBY3Rpb24kLm5leHQoS2V5Ym9hcmRTZWxlY3RBY3Rpb24uVU5TRUxFQ1QpO1xuICAgICAgICAgICAgdGhpcy52aXJ0dWFsQ3Vyc29yUG9zaXRpb24gPSAwO1xuICAgICAgICAgICAgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9IHVuZGVmaW5lZDsgLy8gc2V0IHRvIG51bGwgdG8gcHJldmVudCBjb250aW51aW5nIGluIHRoZSBzdHJlYW1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKGV2ZW50U2V0KSA9PiB0aGlzLmFsbG93UXVlcnkgJiYgZXZlbnRTZXQuaW5wdXRDdXJzb3JQb3NpdGlvbiA9PT0gMCksXG4gICAgICAgIG1hcCgoZXZlbnRTZXQpID0+IGV2ZW50U2V0LmV2ZW50KSxcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gaW5jbHVkZXMoZXZlbnQua2V5Q29kZSwgW0FSUk9XX1JJR0hULCBBUlJPV19MRUZULCBCQUNLU1BBQ0VdKSksXG4gICAgICAgIG1hcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbiA9IFNpbmdsZVNlbGVjdENvbXBvbmVudC5jYWxjdWxhdGVOZXdDdXJzb3JQb3N0aW9uT25LZXlib2FyZE5hdmlnYXRpb24oXG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxDdXJzb3JQb3NpdGlvbixcbiAgICAgICAgICAgIGV2ZW50LmtleUNvZGVcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJzb3JQb3NpdGlvbjogdGhpcy52aXJ0dWFsQ3Vyc29yUG9zaXRpb24sXG4gICAgICAgICAgICBldmVudFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHBvc2l0aW9uU2V0KSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uID0gU2luZ2xlU2VsZWN0Q29tcG9uZW50LmdldEtleWJvYXJkU2VsZWN0QWN0aW9uKHBvc2l0aW9uU2V0LmN1cnNvclBvc2l0aW9uLCBwb3NpdGlvblNldC5ldmVudC5rZXlDb2RlKTtcbiAgICAgICAgICBpZiAoYWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5ORVhUKSB7XG4gICAgICAgICAgICAvLyBwcmV2ZW50IGN1cnNvciBmcm9tIG1vdmluZyBpbiB0aGUgaW5wdXQgZmllbGQsIHdoaWxlIHdlIGFyZSBzdGlsbCBpbiB0aGUgc2VsZWN0aW9uIGl0ZW1zXG4gICAgICAgICAgICBwb3NpdGlvblNldC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5zZWxlY3Rpb25LZXlib2FyZFNlbGVjdEFjdGlvbiQpO1xuXG4gICAgY29uc3Qga2V5Ym9hcmRFdmVudHMgPSBnZXRLZXlib2FyZE5hdmlnYXRpb25FdmVudHMoc291cmNlRWxlbWVudCwgdGhpcy5kZXN0cm95ZWQkKTtcblxuICAgIGtleWJvYXJkRXZlbnRzLnZlcnRpY2FsTmF2aWdhdGlvbiQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIGtleWJvYXJkRXZlbnRzLmNsb3NlJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmIHRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICAgdGhpcy5vcGVuLm5leHQoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAga2V5Ym9hcmRFdmVudHMuZHJvcGRvd25LZXlib2FyZEV2ZW50JC5zdWJzY3JpYmUodGhpcy5vcHRpb25zS2V5Ym9hcmRTZWxlY3RBY3Rpb24kKTtcblxuICAgIGtleWJvYXJkRXZlbnRzLmVudGVyJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vcGVuLm5leHQoIXRoaXMuZHJvcGRvd25PcGVuKSk7XG4gICAga2V5Ym9hcmRFdmVudHMuc3BhY2UkLnBpcGUoZmlsdGVyKCgpID0+ICF0aGlzLmFsbG93UXVlcnkpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc0tleWJvYXJkU2VsZWN0QWN0aW9uJC5uZXh0KEtleWJvYXJkU2VsZWN0QWN0aW9uLkVYRUNVVEUpO1xuICAgICAgfVxuICAgICAgdGhpcy5vcGVuLm5leHQoIXRoaXMuZHJvcGRvd25PcGVuKTtcbiAgICB9KTtcblxuICAgIGtleWJvYXJkRXZlbnRzLm9wZW5PbkFycm93RG93biQuc3Vic2NyaWJlKCgpID0+IHRoaXMub3Blbi5uZXh0KHRydWUpKTtcbiAgfVxuXG4gIHNlbGVjdE9wdGlvbihvcHRpb246IGFueSkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gb3B0aW9uO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChvcHRpb24pO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG9wdGlvbik7XG5cbiAgICB0aGlzLnJlc2V0U2VsZWN0U3RhdGUoKTtcblxuICAgIC8vIFRoaXMgdGltZW91dCBtYWtlcyBzdXJlIHRoYXQgdGhlIGRyb3Bkb3duIHdpbGwgYmUgY2xvc2VkIGF0IHRoZSBlbmRcbiAgICAvLyBvZiBhbGwgdGhlIGNhbGxiYWNrcyBpbiB0aGUgb3BlbiBzdWJzY3JpcHRpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcGVuLm5leHQoZmFsc2UpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGlvbik7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3Rpb24pO1xuXG4gICAgdGhpcy5yZXNldFNlbGVjdFN0YXRlKCk7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UoX3ZhbHVlOiBhbnkpIHt9XG5cbiAgd3JpdGVWYWx1ZShuZXdTZWxlY3Rpb246IGFueSkge1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3U2VsZWN0aW9uO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoX2ZuOiBhbnkpIHt9XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVIaWdobGlnaHRJbmRleChvcHRpb25zOiBhbnlbXSwgc2VsZWN0aW9uOiBhbnksIGl0ZW1LZXk/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXRlbUtleVxuICAgICAgPyBvcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBpc0VxdWFsKGdldChpdGVtS2V5LCBzZWxlY3Rpb24pLCBnZXQoaXRlbUtleSwgb3B0aW9uKSkgfHwgaXNFcXVhbChzZWxlY3Rpb24sIGdldChpdGVtS2V5LCBvcHRpb24pKSlcbiAgICAgIDogb3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gaXNFcXVhbChzZWxlY3Rpb24sIG9wdGlvbikpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZHJvcGRvd25PcGVuXCIgY2xhc3M9XCJiYWNrZHJvcFwiIChjbGljayk9XCJoYW5kbGVCYWNrZHJvcENsaWNrKCRldmVudClcIj48L2Rpdj5cbjxkaXZcbiAgW2x4TWFya0ludmFsaWRdPVwibWFya0ludmFsaWRcIlxuICBjbGFzcz1cInNlbGVjdENvbnRhaW5lciB7eyBwYWRkaW5nIH19UGFkZGluZ1wiXG4gIFtjbGFzcy5vcGVuXT1cImRyb3Bkb3duT3BlblwiXG4gIFtjbGFzcy50b3BdPVwiKGRyb3Bkb3duRGlyZWN0aW9uJCB8IGFzeW5jKSA9PT0gJ1RPUCdcIlxuICBbY2xhc3MuYm90dG9tXT1cIihkcm9wZG93bkRpcmVjdGlvbiQgfCBhc3luYykgPT09ICdCT1RUT00nXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLmdyYXlCYWNrZ3JvdW5kXT1cInNlbGVjdGlvbkJhY2tncm91bmQgPT09ICdncmF5J1wiXG4gIFtjbGFzcy5kZWZhdWx0U2l6ZV09XCJzaXplID09PSAnZGVmYXVsdCdcIlxuICBbY2xhc3Muc21hbGxTaXplXT1cInNpemUgPT09ICdzbWFsbCdcIlxuICBbY2xhc3Muc2VsZWN0MlNpemVdPVwic2l6ZSA9PT0gJ3NlbGVjdDInXCJcbiAgW2NsYXNzLmxhcmdlU2l6ZV09XCJzaXplID09PSAnbGFyZ2UnXCJcbiAgW3N0eWxlLmN1cnNvcl09XCJjdXJzb3JTdHlsZVwiXG4gIFtjbGFzcy5mb2N1c2VkXT1cImlzSW5wdXRGb2N1c2VkXCJcbiAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudC50YXJnZXQgPT09IHRvZ2dsZSlcIlxuPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uQ29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0Q29udGFpbmVyXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGlvbiAmJiAhcXVlcnlJbnB1dD8udmFsdWVcIiBjbGFzcz1cInBsYWNlaG9sZGVyXCIgW2F0dHIudGl0bGVdPVwicGxhY2Vob2xkZXJcIj5cbiAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiFhbGxvd1F1ZXJ5IHx8ICFxdWVyeUlucHV0Py52YWx1ZVwiXG4gICAgICAgIGNsYXNzPVwic2VsZWN0aW9uXCJcbiAgICAgICAgW2NsYXNzLmxvd2VyT3BhY2l0eV09XCJhbGxvd1F1ZXJ5ICYmICFxdWVyeUlucHV0Py52YWx1ZSAmJiBkcm9wZG93bk9wZW5cIlxuICAgICAgICBbY2xhc3MubGlnaHRncmF5Q29sb3JdPVwiIWFsbG93UXVlcnkgJiYgZHJvcGRvd25PcGVuXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgZm9jdXMoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZE9wdGlvblRtcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgICNxdWVyeUlucHV0XG4gICAgICAgIGNsYXNzPVwicXVlcnlJbnB1dFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW2NsYXNzLmlzSGlkZGVuXT1cIiFhbGxvd1F1ZXJ5XCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAoZm9jdXMpPVwiaXNJbnB1dEZvY3VzZWQgPSB0cnVlXCJcbiAgICAgICAgKGJsdXIpPVwiaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTsgYmx1ci5lbWl0KClcIlxuICAgICAgICBbdGFiSW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4XCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cInF1ZXJ5Q29udHJvbFwiXG4gICAgICAgIFtyZWFkT25seV09XCIhYWxsb3dRdWVyeVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpY29uQ29udGFpbmVyXCI+XG4gICAgICA8aSAqbmdJZj1cInNlbGVjdGlvbiAmJiBhbGxvd0NsZWFyXCIgY2xhc3M9XCJmYXIgZmEtdGltZXNcIiAoY2xpY2spPVwiIWRpc2FibGVkICYmIHJlbW92ZVNlbGVjdGlvbigpXCI+PC9pPlxuICAgICAgPGkgI3RvZ2dsZSBjbGFzcz1cImZhcyBmYS1hbmdsZS1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm9wdGlvbnNDb250YWluZXJcIiBbc3R5bGUud2lkdGhdPVwiZHJvcGRvd25XaWR0aFwiICNvcHRpb25zQ29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcm9wZG93bk9wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blRtcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3RlZE9wdGlvbj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnNlbGVjdGVkT3B0aW9uXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd24+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIi5kcm9wZG93bkNvbXBvbmVudFwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ export class SliderToggleComponent {
5
+ constructor() {
6
+ this.size = 'small';
7
+ this.disabled = false;
8
+ this.labelInFront = true;
9
+ this.toggle = new EventEmitter();
10
+ }
11
+ onToggle() {
12
+ this.toggle.emit(!this.value);
13
+ }
14
+ get id() {
15
+ return this.elementId ? `tour${this.elementId}` : null;
16
+ }
17
+ focus(checkbox) {
18
+ // without a delay the checkbox will not be focused again
19
+ setTimeout(() => checkbox.focus(), 150);
20
+ }
21
+ }
22
+ SliderToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SliderToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ SliderToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SliderToggleComponent, selector: "lx-slider-toggle", inputs: { value: "value", size: "size", disabled: "disabled", label: "label", labelInFront: "labelInFront", elementId: "elementId" }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n", styles: [":host{display:block}.wrapper{display:inline-block}.wrapper.withLabel{display:block}.wrapper.withLabel .checkbox{float:right;margin-top:1px}.wrapper.withLabelBehind .checkbox{float:left;margin-right:2px}.disabled{opacity:.5}.disabled .slider{cursor:default}.checkbox{position:relative;display:inline-block;margin:0}.labelText{color:#2a303d}.labelText.off{color:#526179}input{opacity:0;width:0;height:0;margin:0;padding:0}.small.checkbox{width:22px;height:14px}.small.wrapper:not(.withLabel){height:14px}.small .labelText{font-size:12px}.small .slider{border-radius:7px}.small .slider:before{height:12px;width:12px;left:1px;bottom:1px}.small input:checked+.slider:before{transform:translate(8px)}input:focus+.slider:before{box-shadow:0 0 0 6px #0003;transition:box-shadow .2s ease}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#b2bccc;transition:transform .2s}.slider:before{position:absolute;content:\"\";border-radius:50%;background-color:#fff;transition:transform .2s}input:checked+.slider{background-color:#33cc58}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SliderToggleComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'lx-slider-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n", styles: [":host{display:block}.wrapper{display:inline-block}.wrapper.withLabel{display:block}.wrapper.withLabel .checkbox{float:right;margin-top:1px}.wrapper.withLabelBehind .checkbox{float:left;margin-right:2px}.disabled{opacity:.5}.disabled .slider{cursor:default}.checkbox{position:relative;display:inline-block;margin:0}.labelText{color:#2a303d}.labelText.off{color:#526179}input{opacity:0;width:0;height:0;margin:0;padding:0}.small.checkbox{width:22px;height:14px}.small.wrapper:not(.withLabel){height:14px}.small .labelText{font-size:12px}.small .slider{border-radius:7px}.small .slider:before{height:12px;width:12px;left:1px;bottom:1px}.small input:checked+.slider:before{transform:translate(8px)}input:focus+.slider:before{box-shadow:0 0 0 6px #0003;transition:box-shadow .2s ease}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#b2bccc;transition:transform .2s}.slider:before{position:absolute;content:\"\";border-radius:50%;background-color:#fff;transition:transform .2s}input:checked+.slider{background-color:#33cc58}\n"] }]
27
+ }], propDecorators: { value: [{
28
+ type: Input
29
+ }], size: [{
30
+ type: Input
31
+ }], disabled: [{
32
+ type: Input
33
+ }], label: [{
34
+ type: Input
35
+ }], labelInFront: [{
36
+ type: Input
37
+ }], elementId: [{
38
+ type: Input
39
+ }], toggle: [{
40
+ type: Output
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NsaWRlci10b2dnbGUvc2xpZGVyLXRvZ2dsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NsaWRlci10b2dnbGUvc2xpZGVyLXRvZ2dsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRaEcsTUFBTSxPQUFPLHFCQUFxQjtJQU5sQztRQVFrQixTQUFJLEdBQVksT0FBTyxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFbkIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FjdkQ7SUFaQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQTBCO1FBQzlCLHlEQUF5RDtRQUN6RCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7O2tIQXBCVSxxQkFBcUI7c0dBQXJCLHFCQUFxQiw2TkNSbEMsMnFCQXVCQTsyRkRmYSxxQkFBcUI7a0JBTmpDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07OEJBRy9CLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNXLE1BQU07c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc2xpZGVyLXRvZ2dsZScsXG4gIHRlbXBsYXRlVXJsOiAnc2xpZGVyLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NsaWRlci10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyVG9nZ2xlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHZhbHVlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbWFsbCcgPSAnc21hbGwnO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWxJbkZyb250ID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGVsZW1lbnRJZD86IHN0cmluZztcbiAgQE91dHB1dCgpIHB1YmxpYyB0b2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgb25Ub2dnbGUoKSB7XG4gICAgdGhpcy50b2dnbGUuZW1pdCghdGhpcy52YWx1ZSk7XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudElkID8gYHRvdXIke3RoaXMuZWxlbWVudElkfWAgOiBudWxsO1xuICB9XG5cbiAgZm9jdXMoY2hlY2tib3g6IEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAvLyB3aXRob3V0IGEgZGVsYXkgdGhlIGNoZWNrYm94IHdpbGwgbm90IGJlIGZvY3VzZWQgYWdhaW5cbiAgICBzZXRUaW1lb3V0KCgpID0+IGNoZWNrYm94LmZvY3VzKCksIDE1MCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ3cmFwcGVyXCJcbiAgW2NsYXNzLndpdGhMYWJlbF09XCJsYWJlbFwiXG4gIFtjbGFzcy53aXRoTGFiZWxCZWhpbmRdPVwibGFiZWwgJiYgIWxhYmVsSW5Gcm9udFwiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLmlkXT1cImlkXCJcbiAgW2NsYXNzLnNtYWxsXT1cInNpemUgPT09ICdzbWFsbCdcIlxuPlxuICA8c3BhbiAqbmdJZj1cImxhYmVsXCIgY2xhc3M9XCJsYWJlbFRleHRcIiBbY2xhc3Mub2ZmXT1cIiF2YWx1ZVwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveFwiIFtjbGFzcy5zbWFsbF09XCJzaXplID09PSAnc21hbGwnXCI+XG4gICAgPGlucHV0XG4gICAgICAjaW5wdXRSZWZcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICBbY2hlY2tlZF09XCJ2YWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cImlucHV0UmVmLmJsdXIoKVwiXG4gICAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlKClcIlxuICAgICAgKGtleWRvd24uc3BhY2UpPVwiZm9jdXMoaW5wdXRSZWYpXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uVG9nZ2xlKClcIlxuICAgIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJzbGlkZXJcIj48L3NwYW4+XG4gIDwvbGFiZWw+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../options-dropdown/options-dropdown.component";
4
+ import * as i2 from "../sorting-dropdown-trigger/sorting-dropdown-trigger.component";
5
+ import * as i3 from "../option-group/option-group.component";
6
+ import * as i4 from "../option/option.component";
7
+ import * as i5 from "@angular/common";
8
+ import * as i6 from "../../directives/keyboard-action-source.directive";
9
+ import * as i7 from "@ngx-translate/core";
10
+ export class SortingDropdownComponent {
11
+ constructor() {
12
+ this.sortingOptions = [];
13
+ this.apply = new EventEmitter();
14
+ this.NAME = 'SortingDropdownComponent';
15
+ this.sortingDirections = ['asc', 'desc'];
16
+ }
17
+ ngOnInit() {
18
+ if (!this.currentSorting) {
19
+ this.currentSorting = this.sortingOptions[0] ? { key: this.sortingOptions[0].key, order: this.sortingOptions[0].order } : null;
20
+ }
21
+ }
22
+ applySortingMode(sort) {
23
+ this.apply.emit({
24
+ key: sort.key,
25
+ order: sort.order
26
+ });
27
+ }
28
+ applySortingDirection(sortDirection) {
29
+ if (this.currentSorting) {
30
+ this.apply.emit({
31
+ key: this.currentSorting.key,
32
+ order: sortDirection
33
+ });
34
+ }
35
+ }
36
+ getSortLabel(key) {
37
+ return key ? `sorting.${key}.label` : '';
38
+ }
39
+ }
40
+ SortingDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SortingDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ SortingDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SortingDropdownComponent, selector: "lx-sorting-dropdown", inputs: { currentSorting: "currentSorting", sortingOptions: "sortingOptions" }, outputs: { apply: "apply" }, ngImport: i0, template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting?.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting?.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting?.order\">\n {{ 'sorting.' + currentSorting?.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""], components: [{ type: i1.OptionsDropdownComponent, selector: "lx-options-dropdown", inputs: ["align", "closeOnScroll", "disabled", "maxHeight", "closeOnSelect"] }, { type: i2.SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: ["label", "currentSortingLabel", "disabled"] }, { type: i3.OptionGroupComponent, selector: "lx-option-group", inputs: ["hasSelectedState", "label"], outputs: ["select"] }, { type: i4.OptionComponent, selector: "lx-option", inputs: ["selected", "isHighlighted", "disabled", "value", "hasSelectedState"], outputs: ["select", "highlight", "selectedClick"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.KeyboardActionSourceDirective, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe } });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SortingDropdownComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: 'lx-sorting-dropdown', template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting?.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting?.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting?.order\">\n {{ 'sorting.' + currentSorting?.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""] }]
45
+ }], propDecorators: { currentSorting: [{
46
+ type: Input
47
+ }], sortingOptions: [{
48
+ type: Input
49
+ }], apply: [{
50
+ type: Output
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFRL0UsTUFBTSxPQUFPLHdCQUF3QjtJQUxyQztRQU9XLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQ3ZCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVDLFNBQUksR0FBRywwQkFBMEIsQ0FBQztRQUNsQyxzQkFBaUIsR0FBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0EyQjlEO0lBekJDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDaEk7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBYTtRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNkLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUJBQXFCLENBQUMsYUFBMkI7UUFDL0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNkLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7Z0JBQzVCLEtBQUssRUFBRSxhQUFhO2FBQ3JCLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUF1QjtRQUNsQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7O3FIQS9CVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix3S0NSckMsdzRCQWtCQTsyRkRWYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUt0QixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ1csS0FBSztzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvcnRpbmcsIFNvcnRpbmdPcmRlciB9IGZyb20gJy4uLy4uL21vZGVscy9zb3J0aW5nLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LXNvcnRpbmctZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJ3NvcnRpbmctZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRpbmdEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRTb3J0aW5nITogU29ydGluZyB8IG51bGw7XG4gIEBJbnB1dCgpIHNvcnRpbmdPcHRpb25zOiBTb3J0aW5nW10gPSBbXTtcbiAgQE91dHB1dCgpIHB1YmxpYyBhcHBseSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydGluZz4oKTtcbiAgcmVhZG9ubHkgTkFNRSA9ICdTb3J0aW5nRHJvcGRvd25Db21wb25lbnQnO1xuICByZWFkb25seSBzb3J0aW5nRGlyZWN0aW9uczogU29ydGluZ09yZGVyW10gPSBbJ2FzYycsICdkZXNjJ107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0aW5nID0gdGhpcy5zb3J0aW5nT3B0aW9uc1swXSA/IHsga2V5OiB0aGlzLnNvcnRpbmdPcHRpb25zWzBdLmtleSwgb3JkZXI6IHRoaXMuc29ydGluZ09wdGlvbnNbMF0ub3JkZXIgfSA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTb3J0aW5nTW9kZShzb3J0OiBTb3J0aW5nKSB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHtcbiAgICAgIGtleTogc29ydC5rZXksXG4gICAgICBvcmRlcjogc29ydC5vcmRlclxuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlTb3J0aW5nRGlyZWN0aW9uKHNvcnREaXJlY3Rpb246IFNvcnRpbmdPcmRlcikge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmFwcGx5LmVtaXQoe1xuICAgICAgICBrZXk6IHRoaXMuY3VycmVudFNvcnRpbmcua2V5LFxuICAgICAgICBvcmRlcjogc29ydERpcmVjdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U29ydExhYmVsKGtleTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGtleSA/IGBzb3J0aW5nLiR7a2V5fS5sYWJlbGAgOiAnJztcbiAgfVxufVxuIiwiPGx4LW9wdGlvbnMtZHJvcGRvd24gKm5nSWY9XCJjdXJyZW50U29ydGluZ1wiPlxuICA8bHgtc29ydGluZy1kcm9wZG93bi10cmlnZ2VyXG4gICAgbHhLZXlib2FyZEFjdGlvblNvdXJjZVxuICAgIFtsYWJlbF09XCJOQU1FICsgJy5zb3J0QnknIHwgdHJhbnNsYXRlXCJcbiAgICBbY3VycmVudFNvcnRpbmdMYWJlbF09XCJnZXRTb3J0TGFiZWwoY3VycmVudFNvcnRpbmc/LmtleSkgfCB0cmFuc2xhdGVcIlxuICA+XG4gIDwvbHgtc29ydGluZy1kcm9wZG93bi10cmlnZ2VyPlxuICA8bHgtb3B0aW9uLWdyb3VwIChzZWxlY3QpPVwiYXBwbHlTb3J0aW5nTW9kZSgkZXZlbnQpXCI+XG4gICAgPGx4LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHNvcnRpbmdPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvblwiIFtzZWxlY3RlZF09XCJvcHRpb24ua2V5ID09PSBjdXJyZW50U29ydGluZz8ua2V5XCI+XG4gICAgICB7eyBnZXRTb3J0TGFiZWwob3B0aW9uPy5rZXkpIHwgdHJhbnNsYXRlIH19XG4gICAgPC9seC1vcHRpb24+XG4gIDwvbHgtb3B0aW9uLWdyb3VwPlxuICA8bHgtb3B0aW9uLWdyb3VwIChzZWxlY3QpPVwiYXBwbHlTb3J0aW5nRGlyZWN0aW9uKCRldmVudClcIj5cbiAgICA8bHgtb3B0aW9uICpuZ0Zvcj1cImxldCBzb3J0RGlyZWN0aW9uIG9mIHNvcnRpbmdEaXJlY3Rpb25zXCIgW3ZhbHVlXT1cInNvcnREaXJlY3Rpb25cIiBbc2VsZWN0ZWRdPVwic29ydERpcmVjdGlvbiA9PT0gY3VycmVudFNvcnRpbmc/Lm9yZGVyXCI+XG4gICAgICB7eyAnc29ydGluZy4nICsgY3VycmVudFNvcnRpbmc/LmtleSArICcuJyArIHNvcnREaXJlY3Rpb24gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2x4LW9wdGlvbj5cbiAgPC9seC1vcHRpb24tZ3JvdXA+XG48L2x4LW9wdGlvbnMtZHJvcGRvd24+XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../core-ui/components/button/button.component";
4
+ export class SortingDropdownTriggerComponent {
5
+ constructor() {
6
+ this.disabled = false;
7
+ }
8
+ }
9
+ SortingDropdownTriggerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SortingDropdownTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ SortingDropdownTriggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.5", type: SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: { label: "label", currentSortingLabel: "currentSortingLabel", disabled: "disabled" }, ngImport: i0, template: "<button lx-button mode=\"link\" [disabled]=\"disabled\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}<i class=\"far fa-angle-down lx-margin-left\"></i>\n</button>\n", styles: [""], components: [{ type: i1.ButtonComponent, selector: "button[lx-button]", inputs: ["size", "color", "mode", "pressed", "selected", "square", "circle", "disabled", "showSpinner"] }] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImport: i0, type: SortingDropdownTriggerComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'lx-sorting-dropdown-trigger', template: "<button lx-button mode=\"link\" [disabled]=\"disabled\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}<i class=\"far fa-angle-down lx-margin-left\"></i>\n</button>\n", styles: [""] }]
14
+ }], propDecorators: { label: [{
15
+ type: Input
16
+ }], currentSortingLabel: [{
17
+ type: Input
18
+ }], disabled: [{
19
+ type: Input
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy1kcm9wZG93bi10cmlnZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvc29ydGluZy1kcm9wZG93bi10cmlnZ2VyL3NvcnRpbmctZHJvcGRvd24tdHJpZ2dlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24tdHJpZ2dlci9zb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU9qRCxNQUFNLE9BQU8sK0JBQStCO0lBTDVDO1FBUVcsYUFBUSxHQUFZLEtBQUssQ0FBQztLQUNwQzs7NEhBSlksK0JBQStCO2dIQUEvQiwrQkFBK0IsaUtDUDVDLHFMQUdBOzJGRElhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSw2QkFBNkI7OEJBSzlCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc29ydGluZy1kcm9wZG93bi10cmlnZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdzb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc29ydGluZy1kcm9wZG93bi10cmlnZ2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU29ydGluZ0Ryb3Bkb3duVHJpZ2dlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBjdXJyZW50U29ydGluZ0xhYmVsITogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xufVxuIiwiPGJ1dHRvbiBseC1idXR0b24gbW9kZT1cImxpbmtcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAge3sgbGFiZWwgPyBsYWJlbCArICc6ICcgOiAnJyB9fXt7IGN1cnJlbnRTb3J0aW5nTGFiZWwgfX08aSBjbGFzcz1cImZhciBmYS1hbmdsZS1kb3duIGx4LW1hcmdpbi1sZWZ0XCI+PC9pPlxuPC9idXR0b24+XG4iXX0=