@leanix/components 0.4.21 → 0.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/{esm2020 → esm2022}/lib/core-ui/components/badge/badge.component.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/core-ui/components/button/button.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/core-ui/components/button-group/button-group.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/core-ui/components/card/card.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/core-ui/components/collapsible/collapsible.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/core-ui/components/colored-label/colored-label.component.mjs +4 -4
  7. package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +139 -0
  8. package/{esm2020 → esm2022}/lib/core-ui/components/file-download-button/file-download-button.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/core-ui/components/icon-scale/icon-scale.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/core-ui/components/spinner/spinner.component.mjs +4 -4
  11. package/{esm2020 → esm2022}/lib/core-ui/components/table/table-header/table-header.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/core-ui/components/table/table.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/core-ui/core-ui.module.mjs +72 -72
  15. package/{esm2020 → esm2022}/lib/core-ui/directives/after-view-init.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/core-ui/directives/autoclose-group.service.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/core-ui/directives/autoclose.directive.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/core-ui/directives/autofocus.directive.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/core-ui/directives/html.directive.mjs +4 -4
  20. package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +144 -0
  21. package/{esm2020 → esm2022}/lib/core-ui/linkify/unlinkify.pipe.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/core-ui/pipes/br.pipe.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/core-ui/pipes/contrast-color.pipe.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/core-ui/pipes/custom-date.pipe.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/core-ui/pipes/highlight-range.pipe.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/core-ui/pipes/highlight-term.pipe.mjs +4 -4
  27. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-time-ago.pipe.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/core-ui/pipes/lx-translate.pipe.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/core-ui/pipes/markdown.pipe.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/core-ui/pipes/nbsp.pipe.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/core-ui/pipes/sort.pipe.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-after.pipe.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-before.pipe.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/core-ui/pipes/translation-between.pipe.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +4 -4
  37. package/{esm2020 → esm2022}/lib/core-ui/services/resize-observer.service.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip.component.mjs +4 -4
  39. package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +105 -0
  40. package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip.module.mjs +5 -5
  41. package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +120 -0
  42. package/{esm2020 → esm2022}/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +4 -4
  44. package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +216 -0
  45. package/{esm2020 → esm2022}/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/forms-ui/components/copy-button/copy-button.component.mjs +4 -4
  47. package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +145 -0
  48. package/{esm2020 → esm2022}/lib/forms-ui/components/currency/currency-symbol.component.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/forms-ui/components/date-input/date-input.component.mjs +7 -7
  50. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +6 -6
  51. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +27 -0
  52. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +205 -0
  53. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +6 -6
  55. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +6 -6
  56. package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +6 -6
  57. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +49 -0
  58. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +5 -5
  60. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +134 -0
  61. package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/forms-ui/components/error-message/error-message.component.mjs +7 -7
  63. package/{esm2020 → esm2022}/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/forms-ui/components/form-error/form-error.component.mjs +4 -4
  65. package/{esm2020 → esm2022}/lib/forms-ui/components/icon/icon.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/forms-ui/components/input/input.component.mjs +4 -4
  67. package/{esm2020 → esm2022}/lib/forms-ui/components/keyboard-select.directive.mjs +4 -4
  68. package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +255 -0
  69. package/esm2022/lib/forms-ui/components/option/option.component.mjs +84 -0
  70. package/{esm2020 → esm2022}/lib/forms-ui/components/option-group/option-group.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +4 -4
  72. package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +185 -0
  73. package/{esm2020 → esm2022}/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/forms-ui/components/picker/picker-trigger.directive.mjs +7 -7
  75. package/{esm2020 → esm2022}/lib/forms-ui/components/picker/picker.component.mjs +19 -19
  76. package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +118 -0
  77. package/{esm2020 → esm2022}/lib/forms-ui/components/pill-item/pill-item.component.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/forms-ui/components/pill-list/pill-list.component.mjs +4 -4
  79. package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +100 -0
  80. package/{esm2020 → esm2022}/lib/forms-ui/components/select-list/select-list.component.mjs +4 -4
  81. package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +279 -0
  82. package/{esm2020 → esm2022}/lib/forms-ui/components/slider-toggle/slider-toggle.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +4 -4
  85. package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +129 -0
  86. package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +109 -0
  87. package/{esm2020 → esm2022}/lib/forms-ui/directives/form-submit.directive.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/forms-ui/directives/keyboard-action-source.directive.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/forms-ui/directives/mark-invalid.directive.mjs +4 -4
  90. package/{esm2020 → esm2022}/lib/forms-ui/directives/select-dropdown.directive.mjs +4 -4
  91. package/{esm2020 → esm2022}/lib/forms-ui/directives/selectable-item.directive.mjs +7 -7
  92. package/{esm2020 → esm2022}/lib/forms-ui/directives/selected-option.directive.mjs +4 -4
  93. package/{esm2020 → esm2022}/lib/forms-ui/forms-ui.module.mjs +102 -102
  94. package/{esm2020 → esm2022}/lib/forms-ui/models/base-select.directive.mjs +4 -4
  95. package/{esm2020 → esm2022}/lib/forms-ui/pipes/filter-selection.pipe.mjs +4 -4
  96. package/{esm2020 → esm2022}/lib/forms-ui/pipes/filter-term.pipe.mjs +4 -4
  97. package/{esm2020 → esm2022}/lib/forms-ui/pipes/format-number.pipe.mjs +4 -4
  98. package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +213 -0
  99. package/{esm2020 → esm2022}/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/lib/modal-ui/components/modal-header/modal-header.component.mjs +4 -4
  101. package/{esm2020 → esm2022}/lib/modal-ui/directives/modal-content.directive.mjs +4 -4
  102. package/{esm2020 → esm2022}/lib/modal-ui/modal.module.mjs +5 -5
  103. package/{esm2020 → esm2022}/lib/popover-ui/components/popover/popover.component.mjs +4 -4
  104. package/{esm2020 → esm2022}/lib/popover-ui/directives/popover-click.directive.mjs +4 -4
  105. package/{esm2020 → esm2022}/lib/popover-ui/directives/popover-content.directive.mjs +4 -4
  106. package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +87 -0
  107. package/{esm2020 → esm2022}/lib/popover-ui/popover-ui.module.mjs +5 -5
  108. package/{esm2020 → esm2022}/lib/tab-ui/components/tab/tab.component.mjs +14 -14
  109. package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +71 -0
  110. package/{esm2020 → esm2022}/lib/tab-ui/tab-ui.module.mjs +5 -5
  111. package/{fesm2020 → fesm2022}/leanix-components.mjs +767 -768
  112. package/fesm2022/leanix-components.mjs.map +1 -0
  113. package/lib/core-ui/components/badge/badge.component.d.ts +1 -1
  114. package/lib/core-ui/components/button/button.component.d.ts +1 -1
  115. package/lib/core-ui/components/button-group/button-group.component.d.ts +1 -1
  116. package/lib/core-ui/components/card/card.component.d.ts +1 -1
  117. package/lib/core-ui/components/collapsible/collapsible.component.d.ts +1 -1
  118. package/lib/core-ui/components/colored-label/colored-label.component.d.ts +1 -1
  119. package/lib/core-ui/components/ellipsis/ellipsis.component.d.ts +1 -1
  120. package/lib/core-ui/components/file-download-button/file-download-button.component.d.ts +1 -1
  121. package/lib/core-ui/components/icon-scale/icon-scale.component.d.ts +1 -1
  122. package/lib/core-ui/components/spinner/spinner.component.d.ts +1 -1
  123. package/lib/core-ui/components/table/table-header/table-header.component.d.ts +1 -1
  124. package/lib/core-ui/components/table/table.component.d.ts +1 -1
  125. package/lib/core-ui/directives/autoclose.directive.d.ts +1 -1
  126. package/lib/core-ui/directives/autofocus.directive.d.ts +1 -1
  127. package/lib/core-ui/directives/html.directive.d.ts +1 -1
  128. package/lib/core-ui/pipes/sort.pipe.d.ts +1 -1
  129. package/lib/core-ui/services/resize-observer.service.d.ts +1 -1
  130. package/lib/core-ui/tooltip/tooltip.component.d.ts +1 -1
  131. package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
  132. package/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.d.ts +1 -1
  133. package/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.d.ts +1 -1
  134. package/lib/forms-ui/components/breadcrumb/breadcrumb.component.d.ts +2 -2
  135. package/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.d.ts +1 -1
  136. package/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.d.ts +1 -1
  137. package/lib/forms-ui/components/copy-button/copy-button.component.d.ts +1 -1
  138. package/lib/forms-ui/components/currency/currency-input.component.d.ts +4 -4
  139. package/lib/forms-ui/components/currency/currency-symbol.component.d.ts +1 -1
  140. package/lib/forms-ui/components/date-input/date-input.component.d.ts +2 -2
  141. package/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.d.ts +1 -1
  142. package/lib/forms-ui/components/date-picker-ui/datepicker.component.d.ts +1 -1
  143. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.d.ts +1 -1
  144. package/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.d.ts +1 -1
  145. package/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.d.ts +1 -1
  146. package/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.d.ts +1 -1
  147. package/lib/forms-ui/components/error-message/error-message.component.d.ts +1 -1
  148. package/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.d.ts +1 -1
  149. package/lib/forms-ui/components/form-error/form-error.component.d.ts +1 -1
  150. package/lib/forms-ui/components/icon/icon.component.d.ts +2 -2
  151. package/lib/forms-ui/components/input/input.component.d.ts +1 -1
  152. package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
  153. package/lib/forms-ui/components/multi-select/multi-select.component.d.ts +3 -3
  154. package/lib/forms-ui/components/option/option.component.d.ts +1 -1
  155. package/lib/forms-ui/components/option-group/option-group.component.d.ts +1 -1
  156. package/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.d.ts +3 -3
  157. package/lib/forms-ui/components/options-dropdown/options-dropdown.component.d.ts +1 -1
  158. package/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.d.ts +1 -1
  159. package/lib/forms-ui/components/picker/picker.component.d.ts +1 -1
  160. package/lib/forms-ui/components/picker-option/picker-option.component.d.ts +1 -1
  161. package/lib/forms-ui/components/pill-item/pill-item.component.d.ts +1 -1
  162. package/lib/forms-ui/components/pill-list/pill-list.component.d.ts +1 -1
  163. package/lib/forms-ui/components/select-list/select-list.component.d.ts +1 -1
  164. package/lib/forms-ui/components/single-select/single-select.component.d.ts +2 -2
  165. package/lib/forms-ui/components/slider-toggle/slider-toggle.component.d.ts +1 -1
  166. package/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.d.ts +1 -1
  167. package/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.d.ts +1 -1
  168. package/lib/forms-ui/directives/contenteditable.directive.d.ts +2 -2
  169. package/lib/forms-ui/directives/form-error.directive.d.ts +2 -2
  170. package/lib/forms-ui/directives/mark-invalid.directive.d.ts +1 -1
  171. package/lib/forms-ui/directives/selectable-item.directive.d.ts +1 -1
  172. package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
  173. package/lib/forms-ui/models/single-select-padding.interface.d.ts +1 -1
  174. package/lib/forms-ui/models/sorting.interface.d.ts +1 -1
  175. package/lib/modal-ui/components/modal/modal.component.d.ts +1 -1
  176. package/lib/modal-ui/components/modal-footer/modal-footer.component.d.ts +1 -1
  177. package/lib/modal-ui/components/modal-header/modal-header.component.d.ts +1 -1
  178. package/lib/popover-ui/components/popover/popover.component.d.ts +1 -1
  179. package/lib/popover-ui/directives/popover-click.directive.d.ts +1 -1
  180. package/lib/popover-ui/directives/popover-hover.directive.d.ts +1 -1
  181. package/lib/tab-ui/components/tab/tab.component.d.ts +1 -1
  182. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
  183. package/package.json +13 -19
  184. package/esm2020/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -139
  185. package/esm2020/lib/core-ui/linkify/linkify.pipe.mjs +0 -144
  186. package/esm2020/lib/core-ui/tooltip/tooltip.directive.mjs +0 -105
  187. package/esm2020/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -120
  188. package/esm2020/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -216
  189. package/esm2020/lib/forms-ui/components/currency/currency-input.component.mjs +0 -145
  190. package/esm2020/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -28
  191. package/esm2020/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -205
  192. package/esm2020/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
  193. package/esm2020/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -134
  194. package/esm2020/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -255
  195. package/esm2020/lib/forms-ui/components/option/option.component.mjs +0 -84
  196. package/esm2020/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -185
  197. package/esm2020/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
  198. package/esm2020/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -100
  199. package/esm2020/lib/forms-ui/components/single-select/single-select.component.mjs +0 -279
  200. package/esm2020/lib/forms-ui/directives/contenteditable.directive.mjs +0 -129
  201. package/esm2020/lib/forms-ui/directives/form-error.directive.mjs +0 -109
  202. package/esm2020/lib/modal-ui/components/modal/modal.component.mjs +0 -213
  203. package/esm2020/lib/popover-ui/directives/popover-hover.directive.mjs +0 -87
  204. package/esm2020/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -71
  205. package/fesm2015/leanix-components.mjs +0 -8448
  206. package/fesm2015/leanix-components.mjs.map +0 -1
  207. package/fesm2020/leanix-components.mjs.map +0 -1
  208. package/src/lib/forms-ui/components/date-picker-ui/README.md +0 -8
  209. /package/{esm2020 → esm2022}/index.mjs +0 -0
  210. /package/{esm2020 → esm2022}/leanix-components.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/core-ui/annotations/required.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/core-ui/core-ui.constants.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/core-ui/functions/core-css.helpers.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/forms-ui/helpers/key-codes.constants.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/forms-ui/models/dropdown-item.interface.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/forms-ui/models/single-select-padding.interface.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/forms-ui/models/sorting.interface.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/modal-ui/modal.constants.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/shared/date-helpers.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/shared/html-helpers.function.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/shared/misc-helpers.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/shared/observe.mjs +0 -0
@@ -1,109 +0,0 @@
1
- import { Directive, Host, Inject, InjectionToken, Input, Optional, Self } from '@angular/core';
2
- import { curry } from 'lodash-es';
3
- import { combineLatest, of } from 'rxjs';
4
- import { map, startWith } from 'rxjs/operators';
5
- import { ErrorMessageComponent } from '../components/error-message/error-message.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "./form-submit.directive";
9
- export const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken('FORM_CONTROL_ERROR_NAMESPACE');
10
- export const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken('FORM_CONTROL_ERROR_DISPLAY_STRATEGY');
11
- export const provideFormControlErrorNamespace = (namespace) => ({
12
- provide: FORM_CONTROL_ERROR_NAMESPACE,
13
- useValue: namespace
14
- });
15
- export const provideFormControlErrorDisplayStrategy = (fn) => ({
16
- provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,
17
- useValue: fn
18
- });
19
- export class FormErrorDirective {
20
- constructor(viewContainer, componentFactoryResolver, ngControl, formSubmitDirective, namespace, strategy) {
21
- this.viewContainer = viewContainer;
22
- this.componentFactoryResolver = componentFactoryResolver;
23
- this.ngControl = ngControl;
24
- this.formSubmitDirective = formSubmitDirective;
25
- this.namespace = namespace;
26
- this.strategy = strategy;
27
- }
28
- get control() {
29
- return this.ngControl?.control || this.ctrl || null;
30
- }
31
- get name() {
32
- return this.ngControl?.name || this.controlName;
33
- }
34
- get formSubmitted() {
35
- return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);
36
- }
37
- ngOnInit() {
38
- const control = this.control;
39
- if (isAbstractControl(control)) {
40
- this.subscritpion = combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])
41
- .pipe(map(([, submitted]) => submitted), map(resolveStrategy(this.strategy, control)))
42
- .subscribe((display) => {
43
- const { errors } = control;
44
- if (errors && display) {
45
- const firstErrorKey = Object.keys(errors)[0];
46
- const translationKey = this.buildTranslationKey(firstErrorKey);
47
- this.setError(translationKey);
48
- }
49
- else if (this.ref) {
50
- this.setError();
51
- }
52
- });
53
- }
54
- }
55
- buildTranslationKey(errorKey) {
56
- if (this.control) {
57
- return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;
58
- }
59
- else {
60
- return '';
61
- }
62
- }
63
- setError(key) {
64
- if (!this.ref) {
65
- const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);
66
- this.ref = this.viewContainer.createComponent(factory);
67
- }
68
- this.ref.instance.key = key;
69
- }
70
- ngOnDestroy() {
71
- if (this.subscritpion) {
72
- this.subscritpion.unsubscribe();
73
- }
74
- }
75
- }
76
- FormErrorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FormErrorDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i1.NgControl, optional: true, self: true }, { token: i2.FormSubmitDirective, host: true, optional: true }, { token: FORM_CONTROL_ERROR_NAMESPACE, optional: true }, { token: FORM_CONTROL_ERROR_DISPLAY_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
77
- FormErrorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: FormErrorDirective, selector: "[lxFormError]", inputs: { ctrl: ["lxFormError", "ctrl"], controlName: "controlName" }, ngImport: i0 });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FormErrorDirective, decorators: [{
79
- type: Directive,
80
- args: [{
81
- selector: '[lxFormError]'
82
- }]
83
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i1.NgControl, decorators: [{
84
- type: Optional
85
- }, {
86
- type: Self
87
- }] }, { type: i2.FormSubmitDirective, decorators: [{
88
- type: Optional
89
- }, {
90
- type: Host
91
- }] }, { type: undefined, decorators: [{
92
- type: Optional
93
- }, {
94
- type: Inject,
95
- args: [FORM_CONTROL_ERROR_NAMESPACE]
96
- }] }, { type: undefined, decorators: [{
97
- type: Optional
98
- }, {
99
- type: Inject,
100
- args: [FORM_CONTROL_ERROR_DISPLAY_STRATEGY]
101
- }] }]; }, propDecorators: { ctrl: [{
102
- type: Input,
103
- args: ['lxFormError']
104
- }], controlName: [{
105
- type: Input
106
- }] } });
107
- const isAbstractControl = (ctrl) => !!ctrl;
108
- const resolveStrategy = curry((strategy, control, submitted) => strategy ? strategy({ control, submitted }) : true);
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9kaXJlY3RpdmVzL2Zvcm0tZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEVBRUwsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7OztBQUs1RixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBUyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ3ZHLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHLElBQUksY0FBYyxDQUNuRSxxQ0FBcUMsQ0FDdEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RSxPQUFPLEVBQUUsNEJBQTRCO0lBQ3JDLFFBQVEsRUFBRSxTQUFTO0NBQ3BCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQUMsRUFBbUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RixPQUFPLEVBQUUsbUNBQW1DO0lBQzVDLFFBQVEsRUFBRSxFQUFFO0NBQ2IsQ0FBQyxDQUFDO0FBS0gsTUFBTSxPQUFPLGtCQUFrQjtJQWtCN0IsWUFDVSxhQUErQixF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QyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDOzsrR0FwRVUsa0JBQWtCLDhNQXVCUCw0QkFBNEIsNkJBQzVCLG1DQUFtQzttR0F4QjlDLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUg5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs7MEJBc0JJLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNoQixRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7OzBCQUMvQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1DQUFtQzs0Q0F2Qm5DLElBQUk7c0JBQXpCLEtBQUs7dUJBQUMsYUFBYTtnQkFDWCxXQUFXO3NCQUFuQixLQUFLOztBQXFFUixNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBd0MsRUFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDeEcsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUMzQixDQUFDLFFBQXFELEVBQUUsT0FBd0IsRUFBRSxTQUE4QixFQUFFLEVBQUUsQ0FDbEgsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSG9zdCxcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY3VycnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Vycm9yLW1lc3NhZ2UvZXJyb3ItbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybVN1Ym1pdERpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybS1zdWJtaXQuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgRm9ybUNvbnRyb2xFcnJvckRpc3BsYXlTdHJhdGVneSA9IChvYmo6IHsgY29udHJvbDogQWJzdHJhY3RDb250cm9sOyBzdWJtaXR0ZWQ/OiBib29sZWFuIH0pID0+IGJvb2xlYW47XG5cbmV4cG9ydCBjb25zdCBGT1JNX0NPTlRST0xfRVJST1JfTkFNRVNQQUNFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ZPUk1fQ09OVFJPTF9FUlJPUl9OQU1FU1BBQ0UnKTtcbmV4cG9ydCBjb25zdCBGT1JNX0NPTlRST0xfRVJST1JfRElTUExBWV9TVFJBVEVHWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtQ29udHJvbEVycm9yRGlzcGxheVN0cmF0ZWd5PihcbiAgJ0ZPUk1fQ09OVFJPTF9FUlJPUl9ESVNQTEFZX1NUUkFURUdZJ1xuKTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVGb3JtQ29udHJvbEVycm9yTmFtZXNwYWNlID0gKG5hbWVzcGFjZTogc3RyaW5nKSA9PiAoe1xuICBwcm92aWRlOiBGT1JNX0NPTlRST0xfRVJST1JfTkFNRVNQQUNFLFxuICB1c2VWYWx1ZTogbmFtZXNwYWNlXG59KTtcblxuZXhwb3J0IGNvbnN0IHByb3ZpZGVGb3JtQ29udHJvbEVycm9yRGlzcGxheVN0cmF0ZWd5ID0gKGZuOiBGb3JtQ29udHJvbEVycm9yRGlzcGxheVN0cmF0ZWd5KSA9PiAoe1xuICBwcm92aWRlOiBGT1JNX0NPTlRST0xfRVJST1JfRElTUExBWV9TVFJBVEVHWSxcbiAgdXNlVmFsdWU6IGZuXG59KTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2x4Rm9ybUVycm9yXSdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUVycm9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoJ2x4Rm9ybUVycm9yJykgY3RybD86IEFic3RyYWN0Q29udHJvbCB8ICcnO1xuICBASW5wdXQoKSBjb250cm9sTmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSBzdWJzY3JpdHBpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVmPzogQ29tcG9uZW50UmVmPEVycm9yTWVzc2FnZUNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBnZXQgY29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgfHwgdGhpcy5jdHJsIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldCBuYW1lKCk6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8ubmFtZSB8fCB0aGlzLmNvbnRyb2xOYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZm9ybVN1Ym1pdHRlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtU3VibWl0RGlyZWN0aXZlID8gdGhpcy5mb3JtU3VibWl0RGlyZWN0aXZlLnN1Ym1pdHRlZCQgOiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIG5nQ29udHJvbD86IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHByaXZhdGUgZm9ybVN1Ym1pdERpcmVjdGl2ZT86IEZvcm1TdWJtaXREaXJlY3RpdmUsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGT1JNX0NPTlRST0xfRVJST1JfTkFNRVNQQUNFKSBwcml2YXRlIG5hbWVzcGFjZT86IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZPUk1fQ09OVFJPTF9FUlJPUl9ESVNQTEFZX1NUUkFURUdZKSBwcml2YXRlIHN0cmF0ZWd5PzogRm9ybUNvbnRyb2xFcnJvckRpc3BsYXlTdHJhdGVneVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbDtcbiAgICBpZiAoaXNBYnN0cmFjdENvbnRyb2woY29udHJvbCkpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXRwaW9uID0gY29tYmluZUxhdGVzdChbY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpLCB0aGlzLmZvcm1TdWJtaXR0ZWRdKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKFssIHN1Ym1pdHRlZF0pID0+IHN1Ym1pdHRlZCksXG4gICAgICAgICAgbWFwKHJlc29sdmVTdHJhdGVneSh0aGlzLnN0cmF0ZWd5LCBjb250cm9sKSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChkaXNwbGF5KSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBlcnJvcnMgfSA9IGNvbnRyb2w7XG4gICAgICAgICAgaWYgKGVycm9ycyAmJiBkaXNwbGF5KSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdEVycm9yS2V5ID0gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gdGhpcy5idWlsZFRyYW5zbGF0aW9uS2V5KGZpcnN0RXJyb3JLZXkhKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IodHJhbnNsYXRpb25LZXkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRUcmFuc2xhdGlvbktleShlcnJvcktleTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMubmFtZXNwYWNlIHx8ICdmb3JtJ30uZXJyb3JzLiR7dGhpcy5uYW1lID8gYCR7dGhpcy5uYW1lfS5gIDogJyd9JHtlcnJvcktleX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRFcnJvcihrZXk/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMucmVmKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRXJyb3JNZXNzYWdlQ29tcG9uZW50KTtcbiAgICAgIHRoaXMucmVmID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICB9XG4gICAgdGhpcy5yZWYuaW5zdGFuY2Uua2V5ID0ga2V5O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXRwaW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcml0cGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBpc0Fic3RyYWN0Q29udHJvbCA9IChjdHJsOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsIHwgdW5kZWZpbmVkKTogY3RybCBpcyBBYnN0cmFjdENvbnRyb2wgPT4gISFjdHJsO1xuY29uc3QgcmVzb2x2ZVN0cmF0ZWd5ID0gY3VycnkoXG4gIChzdHJhdGVneTogRm9ybUNvbnRyb2xFcnJvckRpc3BsYXlTdHJhdGVneSB8IHVuZGVmaW5lZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBzdWJtaXR0ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+XG4gICAgc3RyYXRlZ3kgPyBzdHJhdGVneSh7IGNvbnRyb2wsIHN1Ym1pdHRlZCB9KSA6IHRydWVcbik7XG4iXX0=
@@ -1,213 +0,0 @@
1
- import { animate, style, transition, trigger } from '@angular/animations';
2
- import { CdkPortal } from '@angular/cdk/portal';
3
- import { Component, ContentChild, EventEmitter, HostListener, Inject, Input, Optional, Output, TemplateRef, ViewChild } from '@angular/core';
4
- import { Subject, timer } from 'rxjs';
5
- import { takeUntil } from 'rxjs/operators';
6
- import { ModalContentDirective } from '../../directives/modal-content.directive';
7
- import { MODAL_CLOSE, ModalCloseClickLocation } from '../../modal.constants';
8
- import { ModalFooterComponent } from '../modal-footer/modal-footer.component';
9
- import { ModalHeaderComponent } from '../modal-header/modal-header.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/cdk/overlay";
12
- import * as i2 from "@angular/cdk/a11y";
13
- import * as i3 from "@angular/common";
14
- import * as i4 from "@angular/cdk/portal";
15
- import * as i5 from "@ngx-translate/core";
16
- import * as i6 from "rxjs";
17
- /**
18
- *
19
- * ATTENTION - SCROLLABLE DIALOG:
20
- * The <lx-modal> component when used as "dialog" is not designed to work with a
21
- * scrollable body (via "overflow: auto | scroll") in combination with dropdowns.
22
- * The overflow on the body will also clip the dropdowns, which is expected.
23
- *
24
- * Reasoning:
25
- * The contents within the dialog should be just a few elements which fit and
26
- * justify the usage of a dialog. If the content is larger than the dialog, and thus
27
- * requires scrolling, we should discuss whether to put it into a dialog at all
28
- * and rather think about putting the content on a separate route or
29
- * using the fullscreen version of the modal.
30
- *
31
- */
32
- export class ModalComponent {
33
- constructor(overlay, renderer, closeModal$, focusTrap) {
34
- this.overlay = overlay;
35
- this.renderer = renderer;
36
- this.closeModal$ = closeModal$;
37
- this.focusTrap = focusTrap;
38
- this.NAME = 'ModalComponent';
39
- this.open = false;
40
- this.showCloseButton = true;
41
- this.showBackButton = false;
42
- /*
43
- * If true, then the content area scrolls vertically instead of expanding its height.
44
- * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.
45
- */
46
- this.verticalScroll = false;
47
- this.size = 'fullscreen';
48
- this.minWidth = '600px'; // NB: Some modal implementations rely on this minWidth being 600px
49
- this.isFocusTrap = false;
50
- this.close = new EventEmitter();
51
- this.back = new EventEmitter();
52
- this.closeLocation = ModalCloseClickLocation;
53
- this.destroyed$ = new Subject();
54
- }
55
- get content() {
56
- return this.explicitContent || this.implicitContent;
57
- }
58
- onEscape() {
59
- if (this.showCloseButton) {
60
- this.closeModal(ModalCloseClickLocation.Escape);
61
- }
62
- }
63
- ngOnInit() {
64
- this.closeModal$
65
- ?.pipe(takeUntil(this.destroyed$))
66
- .subscribe((closeLocation) => this.closeModal(closeLocation));
67
- if (this.size === 'fullscreen') {
68
- this.overlayRef = this.overlay.create({
69
- panelClass: this.size,
70
- width: '100%',
71
- height: '100vh'
72
- });
73
- }
74
- else if (this.size === 'dialog-large') {
75
- const positionStrategy = this.overlay.position().global().top('4vh').centerHorizontally();
76
- this.overlayRef = this.overlay.create({
77
- panelClass: this.size,
78
- positionStrategy,
79
- hasBackdrop: true,
80
- width: '90%',
81
- height: '90vh'
82
- });
83
- }
84
- else {
85
- // size 'dialog'
86
- const positionStrategy = this.overlay.position().global().top('8vh').centerHorizontally();
87
- this.overlayRef = this.overlay.create({
88
- panelClass: this.size,
89
- minWidth: this.minWidth,
90
- positionStrategy,
91
- hasBackdrop: true,
92
- scrollStrategy: this.overlay.scrollStrategies.block()
93
- });
94
- }
95
- if (this.size !== 'fullscreen') {
96
- this.overlayRef
97
- .backdropClick()
98
- .pipe(takeUntil(this.destroyed$))
99
- .subscribe(() => this.closeModal(ModalCloseClickLocation.OutsideClick));
100
- }
101
- }
102
- ngOnChanges() {
103
- if (this.open && this.overlayRef && !this.overlayRef.hasAttached()) {
104
- this.openModal();
105
- }
106
- if (!this.open && this.overlayRef && this.overlayRef.hasAttached()) {
107
- this.closeModal(ModalCloseClickLocation.Other);
108
- }
109
- if (this.open && this.overlayRef && this.overlayRef.hasAttached() && this.isFocusTrap) {
110
- this.trapFocusInModal(this.overlayRef.hostElement);
111
- }
112
- }
113
- ngAfterViewInit() {
114
- if (this.open) {
115
- timer(0)
116
- .pipe(takeUntil(this.destroyed$))
117
- .subscribe(() => this.openModal());
118
- }
119
- }
120
- openModal() {
121
- this.oldOverflow = document.documentElement.style.overflowY;
122
- if (this.size === 'fullscreen') {
123
- this.renderer.setStyle(document.documentElement, 'overflowY', 'hidden');
124
- }
125
- this.overlayRef.attach(this.cdkPortal);
126
- this.trapFocusInModal(this.overlayRef.hostElement);
127
- }
128
- emitBack() {
129
- this.back.emit();
130
- }
131
- ngOnDestroy() {
132
- this.destroyed$.next();
133
- if (this.size === 'fullscreen') {
134
- this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);
135
- }
136
- if (this.overlayRef) {
137
- this.overlayRef.dispose();
138
- }
139
- }
140
- async closeModal(closeLocation) {
141
- if (!this.canModalBeClosed || (await this.canModalBeClosed())) {
142
- this.open = false;
143
- this.overlayRef.detach();
144
- if (this.size === 'fullscreen') {
145
- this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);
146
- }
147
- this.close.emit(typeof closeLocation === 'boolean' ? ModalCloseClickLocation.Other : closeLocation);
148
- }
149
- }
150
- trapFocusInModal(hostElement) {
151
- this.focusTrap.create(hostElement);
152
- }
153
- }
154
- ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ModalComponent, deps: [{ token: i1.Overlay }, { token: i0.Renderer2 }, { token: MODAL_CLOSE, optional: true }, { token: i2.ConfigurableFocusTrapFactory }], target: i0.ɵɵFactoryTarget.Component });
155
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: ModalComponent, selector: "lx-modal", inputs: { open: "open", showCloseButton: "showCloseButton", showBackButton: "showBackButton", verticalScroll: "verticalScroll", size: "size", minWidth: "minWidth", isFocusTrap: "isFocusTrap", canModalBeClosed: "canModalBeClosed" }, outputs: { close: "close", back: "back" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, queries: [{ propertyName: "header", first: true, predicate: ModalHeaderComponent, descendants: true }, { propertyName: "footer", first: true, predicate: ModalFooterComponent, descendants: true }, { propertyName: "explicitContent", first: true, predicate: ModalContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "cdkPortal", first: true, predicate: CdkPortal, descendants: true, static: true }, { propertyName: "implicitContent", first: true, predicate: ["implicitContent"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto;padding:16px}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;width:48px;height:48px;line-height:48px;right:36px;top:12px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;width:48px;height:48px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;height:32px;width:32px;z-index:999;right:10px;top:20px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog .modalContentContainer{padding:16px 16px 0}.lxmodal--dialog.lxmodal--verticalScroll .modalContentContainer{padding:16px;max-height:calc(84vh - 136px)}.lxmodal--dialog-large .modalContentContainer{padding:16px;height:calc(100% - 136px)}.modalContentContainer{flex:1}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], animations: [
156
- trigger('modal', [
157
- transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
158
- transition(':leave', animate('0.15s', style({ opacity: 0 })))
159
- ])
160
- ] });
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ModalComponent, decorators: [{
162
- type: Component,
163
- args: [{ selector: 'lx-modal', animations: [
164
- trigger('modal', [
165
- transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),
166
- transition(':leave', animate('0.15s', style({ opacity: 0 })))
167
- ])
168
- ], template: "<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: ["@keyframes subtleScaleUpKeyFrames{0%{transform:scale(.95);opacity:0}}.lxmodal{background:#fff;width:100%}.lxmodal--withFooter.lxmodal--fullscreen .modalContentContainer{bottom:70px;overflow:hidden}.lxmodal--verticalScroll .modalContentContainer{overflow-y:auto;padding:16px}.lxmodal--fullscreen{height:100%;display:flex;flex-direction:column}.lxmodal--fullscreen .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;width:48px;height:48px;line-height:48px;right:36px;top:12px;z-index:1}.lxmodal--fullscreen .closeButton:before{cursor:pointer}.lxmodal--fullscreen .closeButton:hover,.lxmodal--fullscreen .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .closeButton:focus{outline:0}.lxmodal--fullscreen .fa-long-arrow-left{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;width:48px;height:48px;line-height:48px;left:36px;top:16px}.lxmodal--fullscreen .fa-long-arrow-left:before{cursor:pointer}.lxmodal--fullscreen .fa-long-arrow-left:hover,.lxmodal--fullscreen .fa-long-arrow-left:focus{color:#526179;background-color:#eaedf1}.lxmodal--fullscreen .fa-long-arrow-left:focus{outline:0}.lxmodal--dialog,.lxmodal--dialog-large{display:block;position:relative;border-radius:6px;box-shadow:0 8px 20px #0000003d}.lxmodal--dialog .modalContentContainer,.lxmodal--dialog-large .modalContentContainer{position:relative}.lxmodal--dialog .closeButton,.lxmodal--dialog-large .closeButton{border:0;background:transparent;position:absolute;text-align:center;transition:color,background-color .18s;transition-delay:.1s;transition-timing-function:ease;border-radius:50%;color:#c2c9d6;font-size:24px;height:32px;width:32px;z-index:999;right:10px;top:20px}.lxmodal--dialog .closeButton:before,.lxmodal--dialog-large .closeButton:before{cursor:pointer}.lxmodal--dialog .closeButton:hover,.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:hover,.lxmodal--dialog-large .closeButton:focus{color:#526179;background-color:#eaedf1}.lxmodal--dialog .closeButton:focus,.lxmodal--dialog-large .closeButton:focus{outline:0}.lxmodal--dialog .modalContentContainer{padding:16px 16px 0}.lxmodal--dialog.lxmodal--verticalScroll .modalContentContainer{padding:16px;max-height:calc(84vh - 136px)}.lxmodal--dialog-large .modalContentContainer{padding:16px;height:calc(100% - 136px)}.modalContentContainer{flex:1}\n"] }]
169
- }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.Renderer2 }, { type: i6.Observable, decorators: [{
170
- type: Optional
171
- }, {
172
- type: Inject,
173
- args: [MODAL_CLOSE]
174
- }] }, { type: i2.ConfigurableFocusTrapFactory }]; }, propDecorators: { open: [{
175
- type: Input
176
- }], showCloseButton: [{
177
- type: Input
178
- }], showBackButton: [{
179
- type: Input
180
- }], verticalScroll: [{
181
- type: Input
182
- }], size: [{
183
- type: Input
184
- }], minWidth: [{
185
- type: Input
186
- }], isFocusTrap: [{
187
- type: Input
188
- }], canModalBeClosed: [{
189
- type: Input
190
- }], close: [{
191
- type: Output
192
- }], back: [{
193
- type: Output
194
- }], header: [{
195
- type: ContentChild,
196
- args: [ModalHeaderComponent]
197
- }], footer: [{
198
- type: ContentChild,
199
- args: [ModalFooterComponent]
200
- }], cdkPortal: [{
201
- type: ViewChild,
202
- args: [CdkPortal, { static: true }]
203
- }], implicitContent: [{
204
- type: ViewChild,
205
- args: ['implicitContent', { static: true }]
206
- }], explicitContent: [{
207
- type: ContentChild,
208
- args: [ModalContentDirective, { read: TemplateRef, static: true }]
209
- }], onEscape: [{
210
- type: HostListener,
211
- args: ['document:keydown.escape']
212
- }] } });
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvbW9kYWwtdWkvY29tcG9uZW50cy9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9tb2RhbC11aS9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUcxRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7OztBQUU5RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQVlILE1BQU0sT0FBTyxjQUFjO0lBd0N6QixZQUNVLE9BQWdCLEVBQ2hCLFFBQW1CLEVBQ2Ms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Q0FBQyxDQUFDOzRCQUN0RixVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDOUQsQ0FBQztxQkFDSDs7MEJBNkNFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsV0FBVzt1RkF6Q3hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csSUFBSTtzQkFBYixNQUFNO2dCQUU2QixNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDRSxNQUFNO3NCQUF6QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT1UsZUFBZTtzQkFBOUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRTRCLGVBQWU7c0JBQXhGLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBTS9CLFFBQVE7c0JBQWhELFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbmZpZ3VyYWJsZUZvY3VzVHJhcEZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2RrUG9ydGFsLCBQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1vZGFsQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvbW9kYWwtY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTU9EQUxfQ0xPU0UsIE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uIH0gZnJvbSAnLi4vLi4vbW9kYWwuY29uc3RhbnRzJztcbmltcG9ydCB7IE1vZGFsRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtZm9vdGVyL21vZGFsLWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC1oZWFkZXIvbW9kYWwtaGVhZGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICpcbiAqIEFUVEVOVElPTiAtIFNDUk9MTEFCTEUgRElBTE9HOlxuICogVGhlIDxseC1tb2RhbD4gY29tcG9uZW50IHdoZW4gdXNlZCBhcyBcImRpYWxvZ1wiIGlzIG5vdCBkZXNpZ25lZCB0byB3b3JrIHdpdGggYVxuICogc2Nyb2xsYWJsZSBib2R5ICh2aWEgXCJvdmVyZmxvdzogYXV0byB8IHNjcm9sbFwiKSBpbiBjb21iaW5hdGlvbiB3aXRoIGRyb3Bkb3ducy5cbiAqIFRoZSBvdmVyZmxvdyBvbiB0aGUgYm9keSB3aWxsIGFsc28gY2xpcCB0aGUgZHJvcGRvd25zLCB3aGljaCBpcyBleHBlY3RlZC5cbiAqXG4gKiBSZWFzb25pbmc6XG4gKiBUaGUgY29udGVudHMgd2l0aGluIHRoZSBkaWFsb2cgc2hvdWxkIGJlIGp1c3QgYSBmZXcgZWxlbWVudHMgd2hpY2ggZml0IGFuZFxuICoganVzdGlmeSB0aGUgdXNhZ2Ugb2YgYSBkaWFsb2cuIElmIHRoZSBjb250ZW50IGlzIGxhcmdlciB0aGFuIHRoZSBkaWFsb2csIGFuZCB0aHVzXG4gKiByZXF1aXJlcyBzY3JvbGxpbmcsIHdlIHNob3VsZCBkaXNjdXNzIHdoZXRoZXIgdG8gcHV0IGl0IGludG8gYSBkaWFsb2cgYXQgYWxsXG4gKiBhbmQgcmF0aGVyIHRoaW5rIGFib3V0IHB1dHRpbmcgdGhlIGNvbnRlbnQgb24gYSBzZXBhcmF0ZSByb3V0ZSBvclxuICogdXNpbmcgdGhlIGZ1bGxzY3JlZW4gdmVyc2lvbiBvZiB0aGUgbW9kYWwuXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdseC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ21vZGFsJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCB9KSwgYW5pbWF0ZSgnMC4xNXMnLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBhbmltYXRlKCcwLjE1cycsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSkpXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICByZWFkb25seSBOQU1FID0gJ01vZGFsQ29tcG9uZW50JztcbiAgQElucHV0KCkgb3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xvc2VCdXR0b24gPSB0cnVlO1xuICBASW5wdXQoKSBzaG93QmFja0J1dHRvbiA9IGZhbHNlO1xuICAvKlxuICAgKiBJZiB0cnVlLCB0aGVuIHRoZSBjb250ZW50IGFyZWEgc2Nyb2xscyB2ZXJ0aWNhbGx5IGluc3RlYWQgb2YgZXhwYW5kaW5nIGl0cyBoZWlnaHQuXG4gICAqIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSBpZiB0aGUgY29udGVudCBoYXMgZHJvcGRvd25zIG9yIGRhdGUgaW5wdXRzLCBidXQgY2FuIGJlIGdvb2QgaWYgdGhlIGNvbnRlbnQgaGFzIGEgaHVnZSBhbW91bnQgb2YgdGV4dC5cbiAgICovXG4gIEBJbnB1dCgpIHZlcnRpY2FsU2Nyb2xsID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNpemU6ICdmdWxsc2NyZWVuJyB8ICdkaWFsb2ctbGFyZ2UnIHwgJ2RpYWxvZycgPSAnZnVsbHNjcmVlbic7XG4gIEBJbnB1dCgpIG1pbldpZHRoOiBzdHJpbmcgPSAnNjAwcHgnOyAvLyBOQjogU29tZSBtb2RhbCBpbXBsZW1lbnRhdGlvbnMgcmVseSBvbiB0aGlzIG1pbldpZHRoIGJlaW5nIDYwMHB4XG4gIEBJbnB1dCgpIGlzRm9jdXNUcmFwOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbk1vZGFsQmVDbG9zZWQ/OiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uPigpO1xuICBAT3V0cHV0KCkgYmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAQ29udGVudENoaWxkKE1vZGFsSGVhZGVyQ29tcG9uZW50KSBoZWFkZXI/OiBNb2RhbEhlYWRlckNvbXBvbmVudDtcbiAgQENvbnRlbnRDaGlsZChNb2RhbEZvb3RlckNvbXBvbmVudCkgZm9vdGVyPzogTW9kYWxGb290ZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoQ2RrUG9ydGFsLCB7IHN0YXRpYzogdHJ1ZSB9KSBjZGtQb3J0YWwhOiBQb3J0YWw8Q2RrUG9ydGFsPjtcbiAgcHJpdmF0ZSBvdmVybGF5UmVmITogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBvbGRPdmVyZmxvdz86IHN0cmluZztcbiAgY2xvc2VMb2NhdGlvbiA9IE1vZGFsQ2xvc2VDbGlja0xvY2F0aW9uO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ltcGxpY2l0Q29udGVudCcsIHsgc3RhdGljOiB0cnVlIH0pIGltcGxpY2l0Q29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChNb2RhbENvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KSBleHBsaWNpdENvbnRlbnQ/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBjb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4cGxpY2l0Q29udGVudCB8fCB0aGlzLmltcGxpY2l0Q29udGVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJykgb25Fc2NhcGUoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0Nsb3NlQnV0dG9uKSB7XG4gICAgICB0aGlzLmNsb3NlTW9kYWwoTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uRXNjYXBlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTU9EQUxfQ0xPU0UpIHByaXZhdGUgY2xvc2VNb2RhbCQ6IE9ic2VydmFibGU8TW9kYWxDbG9zZUNsaWNrTG9jYXRpb24gfCBib29sZWFuPixcbiAgICBwcml2YXRlIGZvY3VzVHJhcDogQ29uZmlndXJhYmxlRm9jdXNUcmFwRmFjdG9yeVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jbG9zZU1vZGFsJFxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgoY2xvc2VMb2NhdGlvbjogTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24gfCBib29sZWFuKSA9PiB0aGlzLmNsb3NlTW9kYWwoY2xvc2VMb2NhdGlvbikpO1xuXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6ICcxMDB2aCdcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zaXplID09PSAnZGlhbG9nLWxhcmdlJykge1xuICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLnRvcCgnNHZoJykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgcGFuZWxDbGFzczogdGhpcy5zaXplLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgd2lkdGg6ICc5MCUnLFxuICAgICAgICBoZWlnaHQ6ICc5MHZoJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNpemUgJ2RpYWxvZydcbiAgICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS50b3AoJzh2aCcpLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgIHBhbmVsQ2xhc3M6IHRoaXMuc2l6ZSxcbiAgICAgICAgbWluV2lkdGg6IHRoaXMubWluV2lkdGgsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2l6ZSAhPT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZcbiAgICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlTW9kYWwoTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uT3V0c2lkZUNsaWNrKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgIXRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpKSB7XG4gICAgICB0aGlzLm9wZW5Nb2RhbCgpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3BlbiAmJiB0aGlzLm92ZXJsYXlSZWYgJiYgdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMuY2xvc2VNb2RhbChNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbi5PdGhlcik7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW4gJiYgdGhpcy5vdmVybGF5UmVmICYmIHRoaXMub3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpICYmIHRoaXMuaXNGb2N1c1RyYXApIHtcbiAgICAgIHRoaXMudHJhcEZvY3VzSW5Nb2RhbCh0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aW1lcigwKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9wZW5Nb2RhbCgpKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTW9kYWwoKSB7XG4gICAgdGhpcy5vbGRPdmVyZmxvdyA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5vdmVyZmxvd1k7XG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsICdoaWRkZW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMuY2RrUG9ydGFsKTtcbiAgICB0aGlzLnRyYXBGb2N1c0luTW9kYWwodGhpcy5vdmVybGF5UmVmLmhvc3RFbGVtZW50KTtcbiAgfVxuXG4gIGVtaXRCYWNrKCkge1xuICAgIHRoaXMuYmFjay5lbWl0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuXG4gICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ292ZXJmbG93WScsIHRoaXMub2xkT3ZlcmZsb3cpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2VNb2RhbChjbG9zZUxvY2F0aW9uOiBNb2RhbENsb3NlQ2xpY2tMb2NhdGlvbiB8IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuY2FuTW9kYWxCZUNsb3NlZCB8fCAoYXdhaXQgdGhpcy5jYW5Nb2RhbEJlQ2xvc2VkKCkpKSB7XG4gICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcblxuICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnb3ZlcmZsb3dZJywgdGhpcy5vbGRPdmVyZmxvdyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2xvc2UuZW1pdCh0eXBlb2YgY2xvc2VMb2NhdGlvbiA9PT0gJ2Jvb2xlYW4nID8gTW9kYWxDbG9zZUNsaWNrTG9jYXRpb24uT3RoZXIgOiBjbG9zZUxvY2F0aW9uKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyYXBGb2N1c0luTW9kYWwoaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuY3JlYXRlKGhvc3RFbGVtZW50KTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIGNka1BvcnRhbD5cbiAgPGRpdlxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgY2xhc3M9XCJseG1vZGFsXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tZnVsbHNjcmVlbl09XCJzaXplID09PSAnZnVsbHNjcmVlbidcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ddPVwic2l6ZSA9PT0gJ2RpYWxvZydcIlxuICAgIFtjbGFzcy5seG1vZGFsLS1kaWFsb2ctbGFyZ2VdPVwic2l6ZSA9PT0gJ2RpYWxvZy1sYXJnZSdcIlxuICAgIFtjbGFzcy5seG1vZGFsLS13aXRoRm9vdGVyXT1cIiEhZm9vdGVyXCJcbiAgICBbY2xhc3MubHhtb2RhbC0tdmVydGljYWxTY3JvbGxdPVwidmVydGljYWxTY3JvbGxcIlxuICAgIEBtb2RhbFxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaXplID09PSAnZnVsbHNjcmVlbicgJiYgc2hvd0JhY2tCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImVtaXRCYWNrKClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cImVtaXRCYWNrKClcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtbG9uZy1hcnJvdy1sZWZ0XCJcbiAgICA+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgICAgKGNsaWNrKT1cImNsb3NlTW9kYWwoY2xvc2VMb2NhdGlvbi5DbG9zZUJ1dHRvbilcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJOQU1FICsgJy5jbG9zZScgfCB0cmFuc2xhdGVcIlxuICAgICAgY2xhc3M9XCJmYWwgZmEtdGltZXMgY2xvc2VCdXR0b25cIlxuICAgID48L2J1dHRvbj5cbiAgICA8bmctY29udGVudCAqbmdJZj1cImhlYWRlclwiIHNlbGVjdD1cImx4LW1vZGFsLWhlYWRlclwiPjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxDb250ZW50Q29udGFpbmVyXCIgW2NsYXNzLmx4VGhpblNjcm9sbGJhcl09XCJ2ZXJ0aWNhbFNjcm9sbFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAqbmdJZj1cImZvb3RlclwiIHNlbGVjdD1cImx4LW1vZGFsLWZvb3RlclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNpbXBsaWNpdENvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,87 +0,0 @@
1
- import { coerceNumberProperty } from '@angular/cdk/coercion';
2
- import { Directive, HostListener, Input } from '@angular/core';
3
- import { of, Subject } from 'rxjs';
4
- import { delay, switchMap, takeUntil } from 'rxjs/operators';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@ncstate/sat-popover";
7
- /**
8
- * @see PopoverComponent for usage documentation.
9
- */
10
- export class PopoverHoverDirective {
11
- constructor(anchor) {
12
- this.anchor = anchor;
13
- /**
14
- * Relevant for tooltip style.
15
- */
16
- this.skipCloseDelay = false;
17
- /** Emits when the user's mouse enters the element. */
18
- this.onMouseEnter = new Subject();
19
- /** Emits when the user's mouse leaves the element. */
20
- this.onMouseLeave = new Subject();
21
- this.destroyed$ = new Subject();
22
- }
23
- /**
24
- * Amount of time to delay (ms) after hovering starts before
25
- * the popover opens.
26
- */
27
- get lxPopoverHover() {
28
- return this._lxPopoverHover;
29
- }
30
- set lxPopoverHover(val) {
31
- this._lxPopoverHover = coerceNumberProperty(val, 200);
32
- }
33
- ngAfterViewInit() {
34
- // Whenever the user hovers this host element, delay the configured
35
- // amount of time and open the popover. Terminate if the mouse leaves
36
- // the host element before the delay is complete.
37
- this.onMouseEnter
38
- .pipe(switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : this._lxPopoverHover), takeUntil(this.onMouseLeave))), takeUntil(this.destroyed$))
39
- .subscribe(() => this.anchor.popover.open());
40
- // Whenever the user leaves this host element, delay the closing of the popover by the configured delay.
41
- // Abort closing if during this delay another mouseEnter event occurs, for example by the popover itself.
42
- this.onMouseLeave
43
- .pipe(switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : 300), takeUntil(this.onMouseEnter))), takeUntil(this.destroyed$))
44
- .subscribe(() => {
45
- if (this.anchor.popover.isOpen()) {
46
- // This is the default case: the popover was shown, now we want to close it.
47
- this.anchor.popover.close();
48
- }
49
- else {
50
- // This can happen if we have delayed the opening of the popover, but the mouse left the anchor before
51
- // the popover was shown. In this case, this.anchor.popover.close() would not generate a closed event,
52
- // which is why we generate it manually here. This behavior supports cases where a "dummy" anchor is
53
- // dynamically created, like the Fact Sheet detail popover in Reporting or the relations diagram.
54
- this.anchor.popover.closed.emit();
55
- }
56
- });
57
- }
58
- ngOnDestroy() {
59
- this.destroyed$.next();
60
- }
61
- showPopover(skipDelay = false) {
62
- this.onMouseEnter.next({ skipDelay });
63
- }
64
- closePopover(skipDelay = this.skipCloseDelay) {
65
- this.onMouseLeave.next({ skipDelay });
66
- }
67
- }
68
- PopoverHoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: PopoverHoverDirective, deps: [{ token: i1.SatPopoverAnchor }], target: i0.ɵɵFactoryTarget.Directive });
69
- PopoverHoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: PopoverHoverDirective, selector: "[lxPopoverHover]", inputs: { lxPopoverHover: "lxPopoverHover", skipCloseDelay: "skipCloseDelay" }, host: { listeners: { "mouseenter": "showPopover()", "mouseleave": "closePopover()" } }, exportAs: ["hoverAnchor"], ngImport: i0 });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: PopoverHoverDirective, decorators: [{
71
- type: Directive,
72
- args: [{
73
- exportAs: 'hoverAnchor',
74
- selector: '[lxPopoverHover]'
75
- }]
76
- }], ctorParameters: function () { return [{ type: i1.SatPopoverAnchor }]; }, propDecorators: { lxPopoverHover: [{
77
- type: Input
78
- }], skipCloseDelay: [{
79
- type: Input
80
- }], showPopover: [{
81
- type: HostListener,
82
- args: ['mouseenter']
83
- }], closePopover: [{
84
- type: HostListener,
85
- args: ['mouseleave']
86
- }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci1ob3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9wb3BvdmVyLXVpL2RpcmVjdGl2ZXMvcG9wb3Zlci1ob3Zlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFpQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUTdEOztHQUVHO0FBS0gsTUFBTSxPQUFPLHFCQUFxQjtJQTRCaEMsWUFBbUIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFkM0M7O1dBRUc7UUFFSCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixzREFBc0Q7UUFDOUMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUU3RCxzREFBc0Q7UUFDOUMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBMEIsQ0FBQztRQUVwRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVJLENBQUM7SUEzQi9DOzs7T0FHRztJQUNILElBQ0ksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEdBQVk7UUFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQW1CRCxlQUFlO1FBQ2IsbUVBQW1FO1FBQ25FLHFFQUFxRTtRQUNyRSxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDdEgsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDM0I7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvQyx3R0FBd0c7UUFDeEcseUdBQXlHO1FBQ3pHLElBQUksQ0FBQyxZQUFZO2FBQ2QsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDckcsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDM0I7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDaEMsNEVBQTRFO2dCQUM1RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxzR0FBc0c7Z0JBQ3RHLHNHQUFzRztnQkFDdEcsb0dBQW9HO2dCQUNwRyxpR0FBaUc7Z0JBQ2pHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxXQUFXLENBQUMsU0FBUyxHQUFHLEtBQUs7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFHRCxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDOztrSEExRVUscUJBQXFCO3NHQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7dUdBT0ssY0FBYztzQkFEakIsS0FBSztnQkFhTixjQUFjO3NCQURiLEtBQUs7Z0JBa0ROLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxZQUFZO2dCQU0xQixZQUFZO3NCQURYLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYXRQb3BvdmVyQW5jaG9yIH0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xuaW1wb3J0IHsgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlbGF5LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3BvdmVyVHJpZ2dlckRpcmVjdGl2ZSB7XG4gIGFuY2hvcjogU2F0UG9wb3ZlckFuY2hvcjtcbiAgc2hvd1BvcG92ZXIoc2tpcERlbGF5PzogYm9vbGVhbik6IHZvaWQ7XG4gIGNsb3NlUG9wb3Zlcihza2lwRGVsYXk/OiBib29sZWFuKTogdm9pZDtcbn1cblxuLyoqXG4gKiBAc2VlIFBvcG92ZXJDb21wb25lbnQgZm9yIHVzYWdlIGRvY3VtZW50YXRpb24uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBleHBvcnRBczogJ2hvdmVyQW5jaG9yJyxcbiAgc2VsZWN0b3I6ICdbbHhQb3BvdmVySG92ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBQb3BvdmVySG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogQW1vdW50IG9mIHRpbWUgdG8gZGVsYXkgKG1zKSBhZnRlciBob3ZlcmluZyBzdGFydHMgYmVmb3JlXG4gICAqIHRoZSBwb3BvdmVyIG9wZW5zLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGx4UG9wb3ZlckhvdmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9seFBvcG92ZXJIb3ZlcjtcbiAgfVxuICBzZXQgbHhQb3BvdmVySG92ZXIodmFsOiB1bmtub3duKSB7XG4gICAgdGhpcy5fbHhQb3BvdmVySG92ZXIgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWwsIDIwMCk7XG4gIH1cbiAgcHJpdmF0ZSBfbHhQb3BvdmVySG92ZXIhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFJlbGV2YW50IGZvciB0b29sdGlwIHN0eWxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2tpcENsb3NlRGVsYXkgPSBmYWxzZTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgdXNlcidzIG1vdXNlIGVudGVycyB0aGUgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBvbk1vdXNlRW50ZXIgPSBuZXcgU3ViamVjdDx7IHNraXBEZWxheTogYm9vbGVhbiB9PigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB1c2VyJ3MgbW91c2UgbGVhdmVzIHRoZSBlbGVtZW50LiAqL1xuICBwcml2YXRlIG9uTW91c2VMZWF2ZSA9IG5ldyBTdWJqZWN0PHsgc2tpcERlbGF5OiBib29sZWFuIH0+KCk7XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGFuY2hvcjogU2F0UG9wb3ZlckFuY2hvcikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gV2hlbmV2ZXIgdGhlIHVzZXIgaG92ZXJzIHRoaXMgaG9zdCBlbGVtZW50LCBkZWxheSB0aGUgY29uZmlndXJlZFxuICAgIC8vIGFtb3VudCBvZiB0aW1lIGFuZCBvcGVuIHRoZSBwb3BvdmVyLiBUZXJtaW5hdGUgaWYgdGhlIG1vdXNlIGxlYXZlc1xuICAgIC8vIHRoZSBob3N0IGVsZW1lbnQgYmVmb3JlIHRoZSBkZWxheSBpcyBjb21wbGV0ZS5cbiAgICB0aGlzLm9uTW91c2VFbnRlclxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoeyBza2lwRGVsYXkgfSkgPT4gb2YobnVsbCkucGlwZShkZWxheShza2lwRGVsYXkgPyAwIDogdGhpcy5fbHhQb3BvdmVySG92ZXIpLCB0YWtlVW50aWwodGhpcy5vbk1vdXNlTGVhdmUpKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuYW5jaG9yLnBvcG92ZXIub3BlbigpKTtcblxuICAgIC8vIFdoZW5ldmVyIHRoZSB1c2VyIGxlYXZlcyB0aGlzIGhvc3QgZWxlbWVudCwgZGVsYXkgdGhlIGNsb3Npbmcgb2YgdGhlIHBvcG92ZXIgYnkgdGhlIGNvbmZpZ3VyZWQgZGVsYXkuXG4gICAgLy8gQWJvcnQgY2xvc2luZyBpZiBkdXJpbmcgdGhpcyBkZWxheSBhbm90aGVyIG1vdXNlRW50ZXIgZXZlbnQgb2NjdXJzLCBmb3IgZXhhbXBsZSBieSB0aGUgcG9wb3ZlciBpdHNlbGYuXG4gICAgdGhpcy5vbk1vdXNlTGVhdmVcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHsgc2tpcERlbGF5IH0pID0+IG9mKG51bGwpLnBpcGUoZGVsYXkoc2tpcERlbGF5ID8gMCA6IDMwMCksIHRha2VVbnRpbCh0aGlzLm9uTW91c2VFbnRlcikpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5hbmNob3IucG9wb3Zlci5pc09wZW4oKSkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2FzZTogdGhlIHBvcG92ZXIgd2FzIHNob3duLCBub3cgd2Ugd2FudCB0byBjbG9zZSBpdC5cbiAgICAgICAgICB0aGlzLmFuY2hvci5wb3BvdmVyLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHdlIGhhdmUgZGVsYXllZCB0aGUgb3BlbmluZyBvZiB0aGUgcG9wb3ZlciwgYnV0IHRoZSBtb3VzZSBsZWZ0IHRoZSBhbmNob3IgYmVmb3JlXG4gICAgICAgICAgLy8gdGhlIHBvcG92ZXIgd2FzIHNob3duLiBJbiB0aGlzIGNhc2UsIHRoaXMuYW5jaG9yLnBvcG92ZXIuY2xvc2UoKSB3b3VsZCBub3QgZ2VuZXJhdGUgYSBjbG9zZWQgZXZlbnQsXG4gICAgICAgICAgLy8gd2hpY2ggaXMgd2h5IHdlIGdlbmVyYXRlIGl0IG1hbnVhbGx5IGhlcmUuIFRoaXMgYmVoYXZpb3Igc3VwcG9ydHMgY2FzZXMgd2hlcmUgYSBcImR1bW15XCIgYW5jaG9yIGlzXG4gICAgICAgICAgLy8gZHluYW1pY2FsbHkgY3JlYXRlZCwgbGlrZSB0aGUgRmFjdCBTaGVldCBkZXRhaWwgcG9wb3ZlciBpbiBSZXBvcnRpbmcgb3IgdGhlIHJlbGF0aW9ucyBkaWFncmFtLlxuICAgICAgICAgIHRoaXMuYW5jaG9yLnBvcG92ZXIuY2xvc2VkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpXG4gIHNob3dQb3BvdmVyKHNraXBEZWxheSA9IGZhbHNlKSB7XG4gICAgdGhpcy5vbk1vdXNlRW50ZXIubmV4dCh7IHNraXBEZWxheSB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBjbG9zZVBvcG92ZXIoc2tpcERlbGF5ID0gdGhpcy5za2lwQ2xvc2VEZWxheSkge1xuICAgIHRoaXMub25Nb3VzZUxlYXZlLm5leHQoeyBza2lwRGVsYXkgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,71 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
2
- import { merge, Subject } from 'rxjs';
3
- import { map, startWith, switchMap, takeUntil } from 'rxjs/operators';
4
- import { TabComponent } from '../tab/tab.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/portal";
7
- export class TabGroupComponent {
8
- constructor(cd) {
9
- this.cd = cd;
10
- this.isCentered = false;
11
- this.selectedIndex = 0;
12
- this.indexChange = new EventEmitter();
13
- this.destroyed$ = new Subject();
14
- }
15
- get tabs() {
16
- return this.tabsQueryList?.toArray() || [];
17
- }
18
- get activeTabPortal() {
19
- return this.tabs[this.selectedIndex]?.content;
20
- }
21
- ngOnChanges(changes) {
22
- const tab = this.tabs[this.selectedIndex];
23
- if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {
24
- this.switchTo(tab);
25
- }
26
- }
27
- ngAfterContentInit() {
28
- if (this.tabs[0]) {
29
- this.tabs[0].noLeftMarginForFirstTab = true;
30
- }
31
- const tab = this.tabs[this.selectedIndex];
32
- if (tab) {
33
- this.switchTo(tab);
34
- }
35
- const listenToTabsSwitch = (tabs) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));
36
- this.tabsQueryList?.changes
37
- .pipe(startWith(null), switchMap(() => listenToTabsSwitch(this.tabs)), takeUntil(this.destroyed$))
38
- .subscribe((tab) => {
39
- this.switchTo(tab);
40
- });
41
- }
42
- ngOnDestroy() {
43
- this.destroyed$.next();
44
- }
45
- switchTo(tab) {
46
- this.tabsQueryList?.forEach((t, index) => {
47
- t.isActive = t === tab;
48
- if (t.isActive) {
49
- this.selectedIndex = index;
50
- this.indexChange.emit(index);
51
- }
52
- });
53
- this.cd.markForCheck();
54
- }
55
- }
56
- TabGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TabGroupComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
57
- TabGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: TabGroupComponent, selector: "lx-tab-group", inputs: { isCentered: "isCentered", selectedIndex: "selectedIndex" }, outputs: { indexChange: "indexChange" }, queries: [{ propertyName: "tabsQueryList", predicate: TabComponent }], usesOnChanges: true, ngImport: i0, template: "<ul class=\"tabs\" role=\"tablist\" [class.centered]=\"isCentered\">\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n", styles: [".tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0}.tabs.centered{text-align:center}\n"], dependencies: [{ kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: TabGroupComponent, decorators: [{
59
- type: Component,
60
- args: [{ selector: 'lx-tab-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ul class=\"tabs\" role=\"tablist\" [class.centered]=\"isCentered\">\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n", styles: [".tabs{display:inline-block;list-style:none;border-bottom:solid 1px #cfd5df;width:100%;margin:0;padding:0}.tabs.centered{text-align:center}\n"] }]
61
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { isCentered: [{
62
- type: Input
63
- }], selectedIndex: [{
64
- type: Input
65
- }], indexChange: [{
66
- type: Output
67
- }], tabsQueryList: [{
68
- type: ContentChildren,
69
- args: [TabComponent]
70
- }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi1ncm91cC90YWItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBUXBELE1BQU0sT0FBTyxpQkFBaUI7SUFpQjVCLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBaEJoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBQ3pCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQVkxQyxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVFLENBQUM7SUFWN0MsSUFBWSxJQUFJO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ2hELENBQUM7SUFNRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsYUFBYSxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztTQUM3QztRQUNELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwQjtRQUVELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakksSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPO2FBQ3hCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUM5QyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUMzQjthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFpQjtRQUN4QixJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUN2QyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO2dCQUNkLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs4R0E3RFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsaU1BS1gsWUFBWSxrREM3Qi9CLGlMQUtBOzJGRG1CYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNO3dHQUd0QyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFd0IsYUFBYTtzQkFBM0MsZUFBZTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi90YWIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGFiLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICd0YWItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsndGFiLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRhYkdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBpc0NlbnRlcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IDA7XG4gIEBPdXRwdXQoKSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiQ29tcG9uZW50KSB0YWJzUXVlcnlMaXN0PzogUXVlcnlMaXN0PFRhYkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBnZXQgdGFicygpOiBUYWJDb21wb25lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMudGFic1F1ZXJ5TGlzdD8udG9BcnJheSgpIHx8IFtdO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVRhYlBvcnRhbCgpIHtcbiAgICByZXR1cm4gdGhpcy50YWJzW3RoaXMuc2VsZWN0ZWRJbmRleF0/LmNvbnRlbnQ7XG4gIH1cblxuICByZWFkb25seSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkSW5kZXgnXSAmJiAhY2hhbmdlc1snc2VsZWN0ZWRJbmRleCddLmlzRmlyc3RDaGFuZ2UoKSAmJiB0YWIpIHtcbiAgICAgIHRoaXMuc3dpdGNoVG8odGFiKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMudGFic1swXSkge1xuICAgICAgdGhpcy50YWJzWzBdLm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW3RoaXMuc2VsZWN0ZWRJbmRleF07XG4gICAgaWYgKHRhYikge1xuICAgICAgdGhpcy5zd2l0Y2hUbyh0YWIpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3RlblRvVGFic1N3aXRjaCA9ICh0YWJzOiBUYWJDb21wb25lbnRbXSkgPT4gbWVyZ2UoLi4udGFicy5tYXAoKHRhYikgPT4gdGFiLnN3aXRjaC5hc09ic2VydmFibGUoKS5waXBlKG1hcCgoKSA9PiB0YWIpKSkpO1xuXG4gICAgdGhpcy50YWJzUXVlcnlMaXN0Py5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gbGlzdGVuVG9UYWJzU3dpdGNoKHRoaXMudGFicykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodGFiKSA9PiB7XG4gICAgICAgIHRoaXMuc3dpdGNoVG8odGFiKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxuXG4gIHN3aXRjaFRvKHRhYjogVGFiQ29tcG9uZW50KSB7XG4gICAgdGhpcy50YWJzUXVlcnlMaXN0Py5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xuICAgICAgdC5pc0FjdGl2ZSA9IHQgPT09IHRhYjtcbiAgICAgIGlmICh0LmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjx1bCBjbGFzcz1cInRhYnNcIiByb2xlPVwidGFibGlzdFwiIFtjbGFzcy5jZW50ZXJlZF09XCJpc0NlbnRlcmVkXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cImFjdGl2ZVRhYlBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4iXX0=