@clr/angular 17.5.0 → 17.7.0

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 (562) hide show
  1. package/button/button-group/button.d.ts +6 -3
  2. package/clarity.api.md +616 -217
  3. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +13 -4
  4. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +5 -4
  5. package/data/datagrid/providers/columns.service.d.ts +1 -0
  6. package/data/datagrid/render/main-renderer.d.ts +4 -3
  7. package/data/datagrid/wrapped-cell.d.ts +1 -3
  8. package/data/datagrid/wrapped-column.d.ts +1 -3
  9. package/data/datagrid/wrapped-row.d.ts +1 -3
  10. package/esm2020/accordion/accordion-content.mjs +2 -2
  11. package/esm2020/accordion/accordion-description.mjs +2 -2
  12. package/esm2020/accordion/accordion-panel.mjs +2 -2
  13. package/esm2020/accordion/accordion-title.mjs +2 -2
  14. package/esm2020/accordion/accordion.mjs +2 -2
  15. package/esm2020/accordion/accordion.module.mjs +2 -2
  16. package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +2 -2
  17. package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +2 -2
  18. package/esm2020/accordion/enums/accordion-status.enum.mjs +2 -2
  19. package/esm2020/accordion/enums/accordion-strategy.enum.mjs +2 -2
  20. package/esm2020/accordion/index.mjs +2 -2
  21. package/esm2020/accordion/models/accordion.model.mjs +2 -2
  22. package/esm2020/accordion/providers/accordion.service.mjs +2 -2
  23. package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +2 -2
  24. package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +2 -2
  25. package/esm2020/accordion/stepper/index.mjs +2 -2
  26. package/esm2020/accordion/stepper/models/stepper.model.mjs +2 -2
  27. package/esm2020/accordion/stepper/providers/stepper.service.mjs +2 -2
  28. package/esm2020/accordion/stepper/step-button.mjs +2 -2
  29. package/esm2020/accordion/stepper/stepper-panel.mjs +2 -2
  30. package/esm2020/accordion/stepper/stepper.mjs +2 -2
  31. package/esm2020/accordion/stepper/stepper.module.mjs +2 -2
  32. package/esm2020/accordion/utils/animation.mjs +2 -2
  33. package/esm2020/button/button-group/button-group.mjs +4 -4
  34. package/esm2020/button/button-group/button-group.module.mjs +2 -2
  35. package/esm2020/button/button-group/button.mjs +17 -10
  36. package/esm2020/button/button-group/index.mjs +2 -2
  37. package/esm2020/button/button-loading/index.mjs +2 -2
  38. package/esm2020/button/button-loading/loading-button.mjs +2 -2
  39. package/esm2020/button/button-loading/loading-button.module.mjs +2 -2
  40. package/esm2020/button/button.module.mjs +2 -2
  41. package/esm2020/button/index.mjs +2 -2
  42. package/esm2020/button/providers/button-group-focus-handler.service.mjs +2 -2
  43. package/esm2020/button/providers/button-group-focus.enum.mjs +2 -2
  44. package/esm2020/button/providers/button-in-group.service.mjs +2 -2
  45. package/esm2020/clr-angular.module.mjs +2 -2
  46. package/esm2020/data/data.module.mjs +2 -2
  47. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +2 -2
  48. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +2 -2
  49. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +19 -18
  50. package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +2 -2
  51. package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +2 -2
  52. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +2 -2
  53. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +64 -29
  54. package/esm2020/data/datagrid/built-in/nested-property.mjs +2 -2
  55. package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +2 -2
  56. package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +2 -2
  57. package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +2 -2
  58. package/esm2020/data/datagrid/datagrid-action-bar.mjs +2 -2
  59. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +2 -2
  60. package/esm2020/data/datagrid/datagrid-cell.mjs +2 -2
  61. package/esm2020/data/datagrid/datagrid-column-separator.mjs +2 -2
  62. package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +2 -2
  63. package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +2 -2
  64. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +5 -4
  65. package/esm2020/data/datagrid/datagrid-column.mjs +3 -3
  66. package/esm2020/data/datagrid/datagrid-detail-body.mjs +2 -2
  67. package/esm2020/data/datagrid/datagrid-detail-header.mjs +2 -2
  68. package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +2 -2
  69. package/esm2020/data/datagrid/datagrid-detail.mjs +2 -2
  70. package/esm2020/data/datagrid/datagrid-filter.mjs +2 -2
  71. package/esm2020/data/datagrid/datagrid-footer.mjs +2 -2
  72. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +2 -2
  73. package/esm2020/data/datagrid/datagrid-if-detail.mjs +2 -2
  74. package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +2 -2
  75. package/esm2020/data/datagrid/datagrid-items.mjs +2 -2
  76. package/esm2020/data/datagrid/datagrid-page-size.mjs +2 -2
  77. package/esm2020/data/datagrid/datagrid-pagination.mjs +2 -2
  78. package/esm2020/data/datagrid/datagrid-placeholder.mjs +2 -2
  79. package/esm2020/data/datagrid/datagrid-row-detail.mjs +2 -2
  80. package/esm2020/data/datagrid/datagrid-row.mjs +2 -2
  81. package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +2 -2
  82. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +14 -12
  83. package/esm2020/data/datagrid/datagrid.mjs +5 -6
  84. package/esm2020/data/datagrid/datagrid.module.mjs +2 -2
  85. package/esm2020/data/datagrid/enums/column-changes.enum.mjs +2 -2
  86. package/esm2020/data/datagrid/enums/display-mode.enum.mjs +2 -2
  87. package/esm2020/data/datagrid/enums/render-step.enum.mjs +2 -2
  88. package/esm2020/data/datagrid/enums/selection-type.mjs +2 -2
  89. package/esm2020/data/datagrid/enums/sort-order.enum.mjs +2 -2
  90. package/esm2020/data/datagrid/index.mjs +2 -2
  91. package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +2 -2
  92. package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +2 -2
  93. package/esm2020/data/datagrid/interfaces/filter.interface.mjs +2 -2
  94. package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +2 -2
  95. package/esm2020/data/datagrid/interfaces/state.interface.mjs +2 -2
  96. package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +2 -2
  97. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +2 -2
  98. package/esm2020/data/datagrid/providers/column-state.provider.mjs +2 -2
  99. package/esm2020/data/datagrid/providers/columns.service.mjs +5 -2
  100. package/esm2020/data/datagrid/providers/custom-filter.mjs +2 -2
  101. package/esm2020/data/datagrid/providers/detail.service.mjs +2 -2
  102. package/esm2020/data/datagrid/providers/display-mode.service.mjs +2 -2
  103. package/esm2020/data/datagrid/providers/filters.mjs +2 -2
  104. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +2 -2
  105. package/esm2020/data/datagrid/providers/items.mjs +2 -2
  106. package/esm2020/data/datagrid/providers/page.mjs +2 -2
  107. package/esm2020/data/datagrid/providers/row-action-service.mjs +2 -2
  108. package/esm2020/data/datagrid/providers/selection.mjs +2 -2
  109. package/esm2020/data/datagrid/providers/sort.mjs +2 -2
  110. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +2 -2
  111. package/esm2020/data/datagrid/providers/state.provider.mjs +2 -2
  112. package/esm2020/data/datagrid/providers/table-size.service.mjs +2 -2
  113. package/esm2020/data/datagrid/render/cell-renderer.mjs +2 -2
  114. package/esm2020/data/datagrid/render/constants.mjs +2 -2
  115. package/esm2020/data/datagrid/render/header-renderer.mjs +2 -2
  116. package/esm2020/data/datagrid/render/main-renderer.mjs +24 -20
  117. package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +2 -2
  118. package/esm2020/data/datagrid/render/render-organizer.mjs +2 -2
  119. package/esm2020/data/datagrid/render/row-renderer.mjs +2 -2
  120. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +2 -2
  121. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +32 -23
  122. package/esm2020/data/datagrid/wrapped-cell.mjs +2 -5
  123. package/esm2020/data/datagrid/wrapped-column.mjs +2 -5
  124. package/esm2020/data/datagrid/wrapped-row.mjs +2 -5
  125. package/esm2020/data/index.mjs +2 -2
  126. package/esm2020/data/stack-view/index.mjs +2 -2
  127. package/esm2020/data/stack-view/stack-block.mjs +2 -2
  128. package/esm2020/data/stack-view/stack-content-input.mjs +2 -2
  129. package/esm2020/data/stack-view/stack-header.mjs +2 -2
  130. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +2 -2
  131. package/esm2020/data/stack-view/stack-view.mjs +2 -2
  132. package/esm2020/data/stack-view/stack-view.module.mjs +2 -2
  133. package/esm2020/data/tree-view/index.mjs +2 -2
  134. package/esm2020/data/tree-view/models/async-array.mjs +2 -2
  135. package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +2 -2
  136. package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +2 -2
  137. package/esm2020/data/tree-view/models/selected-state.enum.mjs +2 -2
  138. package/esm2020/data/tree-view/models/tree-node.model.mjs +2 -2
  139. package/esm2020/data/tree-view/recursive-children.mjs +2 -2
  140. package/esm2020/data/tree-view/recursive-for-of.mjs +2 -2
  141. package/esm2020/data/tree-view/tree-features.service.mjs +2 -2
  142. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +2 -2
  143. package/esm2020/data/tree-view/tree-node-link.mjs +2 -2
  144. package/esm2020/data/tree-view/tree-node.mjs +4 -4
  145. package/esm2020/data/tree-view/tree-view.module.mjs +2 -2
  146. package/esm2020/data/tree-view/tree.mjs +2 -2
  147. package/esm2020/emphasis/alert/alert-item.mjs +2 -2
  148. package/esm2020/emphasis/alert/alert-text.mjs +2 -2
  149. package/esm2020/emphasis/alert/alert.mjs +4 -4
  150. package/esm2020/emphasis/alert/alert.module.mjs +2 -2
  151. package/esm2020/emphasis/alert/alerts-pager.mjs +4 -4
  152. package/esm2020/emphasis/alert/alerts.mjs +4 -4
  153. package/esm2020/emphasis/alert/index.mjs +2 -2
  154. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +2 -2
  155. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +2 -2
  156. package/esm2020/emphasis/alert/utils/alert-info-object.mjs +2 -2
  157. package/esm2020/emphasis/alert/utils/alert-types.mjs +2 -2
  158. package/esm2020/emphasis/emphasis.module.mjs +2 -2
  159. package/esm2020/emphasis/index.mjs +2 -2
  160. package/esm2020/forms/checkbox/checkbox-container.mjs +2 -2
  161. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +2 -6
  162. package/esm2020/forms/checkbox/checkbox.mjs +2 -2
  163. package/esm2020/forms/checkbox/checkbox.module.mjs +2 -2
  164. package/esm2020/forms/checkbox/index.mjs +2 -2
  165. package/esm2020/forms/combobox/combobox-container.mjs +2 -2
  166. package/esm2020/forms/combobox/combobox.mjs +10 -10
  167. package/esm2020/forms/combobox/combobox.module.mjs +2 -2
  168. package/esm2020/forms/combobox/index.mjs +2 -2
  169. package/esm2020/forms/combobox/model/combobox.model.mjs +2 -2
  170. package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +2 -2
  171. package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +2 -2
  172. package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +2 -2
  173. package/esm2020/forms/combobox/option-items.directive.mjs +2 -2
  174. package/esm2020/forms/combobox/option-selected.directive.mjs +2 -2
  175. package/esm2020/forms/combobox/option.mjs +2 -2
  176. package/esm2020/forms/combobox/options.mjs +2 -2
  177. package/esm2020/forms/combobox/providers/combobox-container.service.mjs +2 -2
  178. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +2 -2
  179. package/esm2020/forms/combobox/providers/option-selection.service.mjs +2 -2
  180. package/esm2020/forms/common/abstract-container.mjs +13 -6
  181. package/esm2020/forms/common/abstract-control.mjs +2 -2
  182. package/esm2020/forms/common/common.module.mjs +2 -2
  183. package/esm2020/forms/common/control-container.mjs +2 -2
  184. package/esm2020/forms/common/control.mjs +2 -2
  185. package/esm2020/forms/common/error.mjs +2 -2
  186. package/esm2020/forms/common/form.mjs +2 -2
  187. package/esm2020/forms/common/helper.mjs +2 -2
  188. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +4 -2
  189. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +30 -28
  190. package/esm2020/forms/common/if-control-state/if-error.mjs +10 -6
  191. package/esm2020/forms/common/if-control-state/if-success.mjs +2 -2
  192. package/esm2020/forms/common/index.mjs +2 -2
  193. package/esm2020/forms/common/label.mjs +5 -2
  194. package/esm2020/forms/common/layout.mjs +2 -2
  195. package/esm2020/forms/common/providers/container-id.service.mjs +2 -2
  196. package/esm2020/forms/common/providers/control-class.service.mjs +2 -2
  197. package/esm2020/forms/common/providers/control-id.service.mjs +2 -2
  198. package/esm2020/forms/common/providers/focus.service.mjs +2 -2
  199. package/esm2020/forms/common/providers/layout.service.mjs +2 -2
  200. package/esm2020/forms/common/providers/mark-control.service.mjs +2 -2
  201. package/esm2020/forms/common/providers/ng-control.service.mjs +21 -2
  202. package/esm2020/forms/common/success.mjs +2 -2
  203. package/esm2020/forms/common/wrapped-control.mjs +43 -19
  204. package/esm2020/forms/datalist/datalist-container.mjs +2 -2
  205. package/esm2020/forms/datalist/datalist-input.mjs +2 -2
  206. package/esm2020/forms/datalist/datalist.mjs +2 -2
  207. package/esm2020/forms/datalist/datalist.module.mjs +2 -2
  208. package/esm2020/forms/datalist/index.mjs +2 -2
  209. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +2 -2
  210. package/esm2020/forms/datepicker/calendar.mjs +65 -10
  211. package/esm2020/forms/datepicker/date-container.mjs +103 -10
  212. package/esm2020/forms/datepicker/date-end-input.mjs +60 -0
  213. package/esm2020/forms/datepicker/date-input.mjs +74 -80
  214. package/esm2020/forms/datepicker/date-input.validator.mjs +65 -6
  215. package/esm2020/forms/datepicker/date-single-input.mjs +63 -0
  216. package/esm2020/forms/datepicker/date-start-input.mjs +61 -0
  217. package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +59 -0
  218. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +34 -11
  219. package/esm2020/forms/datepicker/datepicker.module.mjs +30 -8
  220. package/esm2020/forms/datepicker/day.mjs +58 -15
  221. package/esm2020/forms/datepicker/daypicker.mjs +2 -2
  222. package/esm2020/forms/datepicker/index.mjs +6 -2
  223. package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +2 -2
  224. package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +2 -2
  225. package/esm2020/forms/datepicker/model/calendar-view.model.mjs +31 -6
  226. package/esm2020/forms/datepicker/model/calendar.model.mjs +14 -2
  227. package/esm2020/forms/datepicker/model/day-view.model.mjs +5 -3
  228. package/esm2020/forms/datepicker/model/day.model.mjs +18 -2
  229. package/esm2020/forms/datepicker/model/year-range.model.mjs +2 -2
  230. package/esm2020/forms/datepicker/monthpicker.mjs +237 -40
  231. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +2 -2
  232. package/esm2020/forms/datepicker/providers/date-io.service.mjs +21 -2
  233. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +75 -8
  234. package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +2 -2
  235. package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +2 -2
  236. package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +2 -2
  237. package/esm2020/forms/datepicker/providers/view-manager.service.mjs +2 -2
  238. package/esm2020/forms/datepicker/utils/constants.mjs +2 -2
  239. package/esm2020/forms/datepicker/utils/date-utils.mjs +2 -2
  240. package/esm2020/forms/datepicker/yearpicker.mjs +132 -58
  241. package/esm2020/forms/file-input/file-input-container.mjs +102 -14
  242. package/esm2020/forms/file-input/file-input-validator-errors.mjs +8 -0
  243. package/esm2020/forms/file-input/file-input-validator.mjs +15 -23
  244. package/esm2020/forms/file-input/file-input-value-accessor.mjs +2 -2
  245. package/esm2020/forms/file-input/file-input.helpers.mjs +2 -2
  246. package/esm2020/forms/file-input/file-input.mjs +4 -3
  247. package/esm2020/forms/file-input/file-input.module.mjs +36 -5
  248. package/esm2020/forms/file-input/file-list.mjs +160 -0
  249. package/esm2020/forms/file-input/file-messages-template.mjs +26 -0
  250. package/esm2020/forms/file-input/file-messages.mjs +61 -0
  251. package/esm2020/forms/file-input/index.mjs +6 -2
  252. package/esm2020/forms/forms.module.mjs +8 -4
  253. package/esm2020/forms/index.mjs +3 -2
  254. package/esm2020/forms/input/index.mjs +2 -2
  255. package/esm2020/forms/input/input-container.mjs +12 -4
  256. package/esm2020/forms/input/input.mjs +11 -2
  257. package/esm2020/forms/input/input.module.mjs +2 -2
  258. package/esm2020/forms/number-input/index.mjs +10 -0
  259. package/esm2020/forms/number-input/number-input-container.mjs +145 -0
  260. package/esm2020/forms/number-input/number-input.mjs +72 -0
  261. package/esm2020/forms/number-input/number-input.module.mjs +32 -0
  262. package/esm2020/forms/password/index.mjs +2 -2
  263. package/esm2020/forms/password/password-container.mjs +2 -2
  264. package/esm2020/forms/password/password.mjs +2 -2
  265. package/esm2020/forms/password/password.module.mjs +2 -2
  266. package/esm2020/forms/radio/index.mjs +2 -2
  267. package/esm2020/forms/radio/radio-container.mjs +2 -2
  268. package/esm2020/forms/radio/radio-wrapper.mjs +2 -8
  269. package/esm2020/forms/radio/radio.mjs +2 -2
  270. package/esm2020/forms/radio/radio.module.mjs +2 -2
  271. package/esm2020/forms/range/index.mjs +2 -2
  272. package/esm2020/forms/range/range-container.mjs +2 -2
  273. package/esm2020/forms/range/range.mjs +2 -2
  274. package/esm2020/forms/range/range.module.mjs +2 -2
  275. package/esm2020/forms/select/index.mjs +2 -2
  276. package/esm2020/forms/select/select-container.mjs +2 -2
  277. package/esm2020/forms/select/select.mjs +2 -2
  278. package/esm2020/forms/select/select.module.mjs +2 -2
  279. package/esm2020/forms/textarea/index.mjs +2 -2
  280. package/esm2020/forms/textarea/textarea-container.mjs +2 -2
  281. package/esm2020/forms/textarea/textarea.mjs +2 -2
  282. package/esm2020/forms/textarea/textarea.module.mjs +2 -2
  283. package/esm2020/icon/icon.mjs +2 -2
  284. package/esm2020/icon/icon.module.mjs +2 -2
  285. package/esm2020/icon/index.mjs +2 -2
  286. package/esm2020/index.mjs +2 -2
  287. package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +2 -2
  288. package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +2 -2
  289. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +4 -4
  290. package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +2 -2
  291. package/esm2020/layout/breadcrumbs/index.mjs +2 -2
  292. package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +2 -2
  293. package/esm2020/layout/index.mjs +2 -2
  294. package/esm2020/layout/layout.module.mjs +2 -2
  295. package/esm2020/layout/main-container/index.mjs +2 -2
  296. package/esm2020/layout/main-container/main-container.mjs +2 -2
  297. package/esm2020/layout/main-container/main-container.module.mjs +2 -2
  298. package/esm2020/layout/nav/aria-current-link.mjs +2 -2
  299. package/esm2020/layout/nav/chocolate/index.mjs +2 -2
  300. package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +2 -2
  301. package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +2 -2
  302. package/esm2020/layout/nav/header.mjs +2 -2
  303. package/esm2020/layout/nav/index.mjs +2 -2
  304. package/esm2020/layout/nav/nav-level.mjs +2 -2
  305. package/esm2020/layout/nav/navigation.module.mjs +2 -2
  306. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +2 -2
  307. package/esm2020/layout/nav/responsive-nav-codes.mjs +2 -2
  308. package/esm2020/layout/nav/responsive-nav-control-message.mjs +2 -2
  309. package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +2 -2
  310. package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +2 -2
  311. package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +2 -2
  312. package/esm2020/layout/tabs/index.mjs +2 -2
  313. package/esm2020/layout/tabs/providers/tabs.service.mjs +2 -2
  314. package/esm2020/layout/tabs/tab-action.directive.mjs +2 -2
  315. package/esm2020/layout/tabs/tab-content.mjs +2 -2
  316. package/esm2020/layout/tabs/tab-link.directive.mjs +2 -2
  317. package/esm2020/layout/tabs/tab-overflow-content.mjs +2 -2
  318. package/esm2020/layout/tabs/tab.mjs +2 -2
  319. package/esm2020/layout/tabs/tabs-actions.mjs +2 -2
  320. package/esm2020/layout/tabs/tabs-id.provider.mjs +2 -2
  321. package/esm2020/layout/tabs/tabs.mjs +2 -2
  322. package/esm2020/layout/tabs/tabs.module.mjs +2 -2
  323. package/esm2020/layout/vertical-nav/index.mjs +2 -2
  324. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +2 -2
  325. package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +2 -2
  326. package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +2 -2
  327. package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +2 -2
  328. package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +2 -2
  329. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +4 -4
  330. package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +2 -2
  331. package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +2 -2
  332. package/esm2020/layout/vertical-nav/vertical-nav.mjs +10 -5
  333. package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +2 -2
  334. package/esm2020/modal/index.mjs +3 -2
  335. package/esm2020/modal/modal-body.mjs +2 -2
  336. package/esm2020/modal/modal-configuration.service.mjs +2 -2
  337. package/esm2020/modal/modal-host.directive.mjs +20 -0
  338. package/esm2020/modal/modal-stack.service.mjs +2 -2
  339. package/esm2020/modal/modal.mjs +12 -6
  340. package/esm2020/modal/modal.module.mjs +5 -4
  341. package/esm2020/modal/side-panel.mjs +90 -14
  342. package/esm2020/modal/side-panel.module.mjs +5 -5
  343. package/esm2020/popover/common/abstract-popover.mjs +14 -16
  344. package/esm2020/popover/common/popover-host-anchor.token.mjs +2 -2
  345. package/esm2020/popover/common/popover-options.interface.mjs +2 -2
  346. package/esm2020/popover/common/popover.mjs +2 -2
  347. package/esm2020/popover/dropdown/dropdown-item.mjs +2 -2
  348. package/esm2020/popover/dropdown/dropdown-menu.mjs +2 -2
  349. package/esm2020/popover/dropdown/dropdown-trigger.mjs +2 -2
  350. package/esm2020/popover/dropdown/dropdown.mjs +2 -2
  351. package/esm2020/popover/dropdown/dropdown.module.mjs +2 -2
  352. package/esm2020/popover/dropdown/index.mjs +2 -2
  353. package/esm2020/popover/dropdown/menu-positions.mjs +2 -2
  354. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +2 -2
  355. package/esm2020/popover/dropdown/providers/dropdown.service.mjs +2 -2
  356. package/esm2020/popover/index.mjs +2 -2
  357. package/esm2020/popover/popover.module.mjs +2 -2
  358. package/esm2020/popover/signpost/index.mjs +2 -2
  359. package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +2 -2
  360. package/esm2020/popover/signpost/providers/signpost-id.service.mjs +2 -2
  361. package/esm2020/popover/signpost/signpost-content.mjs +2 -2
  362. package/esm2020/popover/signpost/signpost-positions.mjs +2 -2
  363. package/esm2020/popover/signpost/signpost-title.mjs +2 -2
  364. package/esm2020/popover/signpost/signpost-trigger.mjs +2 -2
  365. package/esm2020/popover/signpost/signpost.mjs +2 -2
  366. package/esm2020/popover/signpost/signpost.module.mjs +2 -2
  367. package/esm2020/popover/tooltip/index.mjs +2 -2
  368. package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +2 -2
  369. package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +2 -2
  370. package/esm2020/popover/tooltip/tooltip-content.mjs +2 -2
  371. package/esm2020/popover/tooltip/tooltip-trigger.mjs +2 -2
  372. package/esm2020/popover/tooltip/tooltip.mjs +2 -2
  373. package/esm2020/popover/tooltip/tooltip.module.mjs +2 -2
  374. package/esm2020/progress/progress-bars/index.mjs +2 -2
  375. package/esm2020/progress/progress-bars/progress-bar.mjs +2 -2
  376. package/esm2020/progress/progress-bars/progress-bar.module.mjs +2 -2
  377. package/esm2020/progress/spinner/index.mjs +2 -2
  378. package/esm2020/progress/spinner/spinner.mjs +2 -2
  379. package/esm2020/progress/spinner/spinner.module.mjs +2 -2
  380. package/esm2020/timeline/enums/timeline-layout.enum.mjs +2 -2
  381. package/esm2020/timeline/enums/timeline-step-state.enum.mjs +2 -2
  382. package/esm2020/timeline/index.mjs +2 -2
  383. package/esm2020/timeline/interface/icon-attribute.interface.mjs +2 -2
  384. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +2 -2
  385. package/esm2020/timeline/timeline-step-description.mjs +2 -2
  386. package/esm2020/timeline/timeline-step-header.mjs +2 -2
  387. package/esm2020/timeline/timeline-step-title.mjs +2 -2
  388. package/esm2020/timeline/timeline-step.mjs +2 -2
  389. package/esm2020/timeline/timeline.mjs +2 -2
  390. package/esm2020/timeline/timeline.module.mjs +2 -2
  391. package/esm2020/utils/animations/collapse/collapse.mjs +2 -2
  392. package/esm2020/utils/animations/collapse/index.mjs +2 -2
  393. package/esm2020/utils/animations/constants.mjs +2 -2
  394. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +2 -2
  395. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +2 -2
  396. package/esm2020/utils/animations/expandable-animation/index.mjs +2 -2
  397. package/esm2020/utils/animations/fade/fade.mjs +2 -2
  398. package/esm2020/utils/animations/fade/index.mjs +2 -2
  399. package/esm2020/utils/animations/fade-slide/fade-slide.mjs +2 -2
  400. package/esm2020/utils/animations/fade-slide/index.mjs +2 -2
  401. package/esm2020/utils/animations/index.mjs +2 -2
  402. package/esm2020/utils/animations/slide/index.mjs +2 -2
  403. package/esm2020/utils/animations/slide/slide.mjs +2 -2
  404. package/esm2020/utils/assert/assert.helpers.mjs +2 -2
  405. package/esm2020/utils/breakpoints/breakpoints.mjs +2 -2
  406. package/esm2020/utils/cdk/cdk-drag.module.mjs +1 -1
  407. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +2 -2
  408. package/esm2020/utils/chocolate/oompa-loompa.mjs +2 -2
  409. package/esm2020/utils/chocolate/willy-wonka.mjs +2 -2
  410. package/esm2020/utils/component/is-boolean-attribute-set.mjs +2 -2
  411. package/esm2020/utils/conditional/conditional.module.mjs +2 -2
  412. package/esm2020/utils/conditional/if-active.directive.mjs +2 -2
  413. package/esm2020/utils/conditional/if-active.service.mjs +2 -2
  414. package/esm2020/utils/conditional/if-expanded.directive.mjs +2 -2
  415. package/esm2020/utils/conditional/if-expanded.service.mjs +2 -2
  416. package/esm2020/utils/conditional/if-open.directive.mjs +2 -2
  417. package/esm2020/utils/conditional/index.mjs +2 -2
  418. package/esm2020/utils/destroy/destroy.service.mjs +2 -2
  419. package/esm2020/utils/destroy/index.mjs +2 -2
  420. package/esm2020/utils/dom-adapter/dom-adapter.mjs +2 -2
  421. package/esm2020/utils/enums/keys.enum.mjs +4 -2
  422. package/esm2020/utils/focus/arrow-key-direction.enum.mjs +2 -2
  423. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +2 -2
  424. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +2 -2
  425. package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +2 -2
  426. package/esm2020/utils/focus/focus-on-view-init/index.mjs +2 -2
  427. package/esm2020/utils/focus/focus-trap/index.mjs +2 -2
  428. package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +2 -2
  429. package/esm2020/utils/focus/focus.service.mjs +2 -2
  430. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +2 -2
  431. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +2 -2
  432. package/esm2020/utils/focus/focusable-item/focusable-item.mjs +2 -2
  433. package/esm2020/utils/focus/focusable-item/linkers.mjs +2 -2
  434. package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +2 -2
  435. package/esm2020/utils/focus/key-focus/index.mjs +2 -2
  436. package/esm2020/utils/focus/key-focus/interfaces.mjs +2 -2
  437. package/esm2020/utils/focus/key-focus/key-focus-item.mjs +2 -2
  438. package/esm2020/utils/focus/key-focus/key-focus.mjs +2 -2
  439. package/esm2020/utils/focus/key-focus/key-focus.module.mjs +2 -2
  440. package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +2 -2
  441. package/esm2020/utils/focus/key-focus/util.mjs +2 -2
  442. package/esm2020/utils/focus/wrap-observable.mjs +2 -2
  443. package/esm2020/utils/forms/validation.mjs +2 -2
  444. package/esm2020/utils/host-wrapping/empty-anchor.mjs +2 -2
  445. package/esm2020/utils/host-wrapping/host-wrapper.mjs +2 -4
  446. package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +2 -2
  447. package/esm2020/utils/i18n/common-strings.default.mjs +6 -2
  448. package/esm2020/utils/i18n/common-strings.interface.mjs +2 -2
  449. package/esm2020/utils/i18n/common-strings.service.mjs +2 -2
  450. package/esm2020/utils/i18n/index.mjs +2 -2
  451. package/esm2020/utils/id-generator/id-generator.service.mjs +2 -2
  452. package/esm2020/utils/index.mjs +2 -2
  453. package/esm2020/utils/loading/index.mjs +2 -2
  454. package/esm2020/utils/loading/loading-listener.mjs +2 -2
  455. package/esm2020/utils/loading/loading.mjs +2 -2
  456. package/esm2020/utils/loading/loading.module.mjs +2 -2
  457. package/esm2020/utils/outside-click/index.mjs +2 -2
  458. package/esm2020/utils/outside-click/outside-click.mjs +2 -2
  459. package/esm2020/utils/outside-click/outside-click.module.mjs +2 -2
  460. package/esm2020/utils/popover/enums/alignment.enum.mjs +2 -2
  461. package/esm2020/utils/popover/enums/axis.enum.mjs +2 -2
  462. package/esm2020/utils/popover/enums/positions.enum.mjs +2 -2
  463. package/esm2020/utils/popover/enums/side.enum.mjs +2 -2
  464. package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +2 -2
  465. package/esm2020/utils/popover/index.mjs +2 -2
  466. package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +2 -2
  467. package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +2 -2
  468. package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +2 -2
  469. package/esm2020/utils/popover/popover-anchor.mjs +2 -2
  470. package/esm2020/utils/popover/popover-close-button.mjs +2 -2
  471. package/esm2020/utils/popover/popover-content.mjs +2 -2
  472. package/esm2020/utils/popover/popover-host.directive.mjs +2 -2
  473. package/esm2020/utils/popover/popover-open-close-button.mjs +2 -2
  474. package/esm2020/utils/popover/popover.module.mjs +2 -2
  475. package/esm2020/utils/popover/position-operators.mjs +2 -2
  476. package/esm2020/utils/popover/providers/popover-events.service.mjs +2 -2
  477. package/esm2020/utils/popover/providers/popover-position.service.mjs +2 -2
  478. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +2 -2
  479. package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +2 -2
  480. package/esm2020/utils/scrolling/scrolling-service.mjs +2 -2
  481. package/esm2020/utils/template-ref/index.mjs +2 -2
  482. package/esm2020/utils/template-ref/template-ref-container.mjs +2 -2
  483. package/esm2020/utils/template-ref/template-ref.module.mjs +2 -2
  484. package/esm2020/wizard/heading-level.mjs +2 -2
  485. package/esm2020/wizard/index.mjs +2 -2
  486. package/esm2020/wizard/providers/button-hub.service.mjs +2 -2
  487. package/esm2020/wizard/providers/header-actions.service.mjs +2 -2
  488. package/esm2020/wizard/providers/page-collection.service.mjs +2 -2
  489. package/esm2020/wizard/providers/wizard-navigation.service.mjs +2 -2
  490. package/esm2020/wizard/wizard-button.mjs +2 -2
  491. package/esm2020/wizard/wizard-header-action.mjs +2 -2
  492. package/esm2020/wizard/wizard-page-buttons.mjs +2 -2
  493. package/esm2020/wizard/wizard-page-header-actions.mjs +2 -2
  494. package/esm2020/wizard/wizard-page-navtitle.mjs +2 -2
  495. package/esm2020/wizard/wizard-page-title.mjs +2 -2
  496. package/esm2020/wizard/wizard-page.mjs +2 -2
  497. package/esm2020/wizard/wizard-stepnav-item.mjs +6 -2
  498. package/esm2020/wizard/wizard-stepnav.mjs +2 -2
  499. package/esm2020/wizard/wizard-title.mjs +2 -2
  500. package/esm2020/wizard/wizard.mjs +11 -5
  501. package/esm2020/wizard/wizard.module.mjs +2 -2
  502. package/fesm2015/clr-angular.mjs +14736 -12993
  503. package/fesm2015/clr-angular.mjs.map +1 -1
  504. package/fesm2020/clr-angular.mjs +14416 -12708
  505. package/fesm2020/clr-angular.mjs.map +1 -1
  506. package/forms/checkbox/checkbox-wrapper.d.ts +1 -3
  507. package/forms/common/abstract-container.d.ts +4 -3
  508. package/forms/common/if-control-state/abstract-if-state.d.ts +1 -0
  509. package/forms/common/if-control-state/if-control-state.service.d.ts +4 -7
  510. package/forms/common/providers/ng-control.service.d.ts +8 -0
  511. package/forms/common/wrapped-control.d.ts +7 -4
  512. package/forms/datepicker/calendar.d.ts +10 -1
  513. package/forms/datepicker/date-container.d.ts +16 -3
  514. package/forms/datepicker/date-end-input.d.ts +15 -0
  515. package/forms/datepicker/date-input.d.ts +18 -12
  516. package/forms/datepicker/date-input.validator.d.ts +18 -1
  517. package/forms/datepicker/date-single-input.d.ts +15 -0
  518. package/forms/datepicker/date-start-input.d.ts +15 -0
  519. package/forms/datepicker/datepicker-action-buttons.d.ts +16 -0
  520. package/forms/datepicker/datepicker-view-manager.d.ts +9 -1
  521. package/forms/datepicker/datepicker.module.d.ts +18 -14
  522. package/forms/datepicker/day.d.ts +16 -6
  523. package/forms/datepicker/index.d.ts +4 -0
  524. package/forms/datepicker/interfaces/date-range.interface.d.ts +8 -0
  525. package/forms/datepicker/model/calendar-view.model.d.ts +12 -2
  526. package/forms/datepicker/model/calendar.model.d.ts +8 -0
  527. package/forms/datepicker/model/day-view.model.d.ts +3 -1
  528. package/forms/datepicker/model/day.model.d.ts +8 -0
  529. package/forms/datepicker/monthpicker.d.ts +43 -2
  530. package/forms/datepicker/providers/date-io.service.d.ts +5 -1
  531. package/forms/datepicker/providers/date-navigation.service.d.ts +32 -2
  532. package/forms/datepicker/yearpicker.d.ts +14 -0
  533. package/forms/file-input/file-input-container.d.ts +15 -4
  534. package/forms/file-input/file-input-validator-errors.d.ts +52 -0
  535. package/forms/file-input/file-input.module.d.ts +7 -4
  536. package/forms/file-input/file-list.d.ts +18 -0
  537. package/forms/file-input/file-messages-template.d.ts +19 -0
  538. package/forms/file-input/file-messages.d.ts +17 -0
  539. package/forms/file-input/index.d.ts +4 -0
  540. package/forms/forms.module.d.ts +2 -1
  541. package/forms/index.d.ts +1 -0
  542. package/forms/input/input-container.d.ts +1 -1
  543. package/forms/number-input/index.d.ts +3 -0
  544. package/forms/number-input/number-input-container.d.ts +16 -0
  545. package/forms/number-input/number-input.d.ts +20 -0
  546. package/forms/number-input/number-input.module.d.ts +13 -0
  547. package/forms/radio/radio-wrapper.d.ts +1 -3
  548. package/layout/vertical-nav/vertical-nav.d.ts +3 -1
  549. package/modal/index.d.ts +1 -0
  550. package/modal/modal-host.directive.d.ts +5 -0
  551. package/modal/modal.d.ts +4 -2
  552. package/modal/modal.module.d.ts +5 -4
  553. package/modal/side-panel.d.ts +25 -6
  554. package/modal/side-panel.module.d.ts +1 -1
  555. package/package.json +2 -2
  556. package/popover/common/abstract-popover.d.ts +0 -1
  557. package/utils/enums/keys.enum.d.ts +3 -1
  558. package/utils/host-wrapping/host-wrapper.d.ts +1 -2
  559. package/utils/i18n/common-strings.interface.d.ts +16 -0
  560. package/wizard/wizard.d.ts +2 -1
  561. package/esm2020/utils/host-wrapping/dynamic-wrapper.mjs +0 -8
  562. package/utils/host-wrapping/dynamic-wrapper.d.ts +0 -3
@@ -1,10 +1,10 @@
1
1
  /*
2
- * Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
2
+ * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
3
3
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4
4
  * This software is released under MIT license.
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
6
6
  */
7
- import { Component, Input, Optional, ViewChild } from '@angular/core';
7
+ import { Component, ContentChild, Input, Optional, ViewChild, } from '@angular/core';
8
8
  import { startWith } from 'rxjs/operators';
9
9
  import { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';
10
10
  import { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';
@@ -14,6 +14,9 @@ import { ControlClassService } from '../common/providers/control-class.service';
14
14
  import { ControlIdService } from '../common/providers/control-id.service';
15
15
  import { FocusService } from '../common/providers/focus.service';
16
16
  import { NgControlService } from '../common/providers/ng-control.service';
17
+ import { ClrEndDateInput } from './date-end-input';
18
+ import { ClrDateInput } from './date-single-input';
19
+ import { ClrStartDateInput } from './date-start-input';
17
20
  import { DateFormControlService } from './providers/date-form-control.service';
18
21
  import { DateIOService } from './providers/date-io.service';
19
22
  import { DateNavigationService } from './providers/date-navigation.service';
@@ -43,9 +46,10 @@ import * as i19 from "../../icon/icon";
43
46
  import * as i20 from "../common/label";
44
47
  import * as i21 from "./datepicker-view-manager";
45
48
  export class ClrDateContainer extends ClrAbstractContainer {
46
- constructor(renderer, toggleService, dateNavigationService, datepickerEnabledService, dateFormControlService, dateIOService, commonStrings, focusService, viewManagerService, controlClassService, layoutService, ngControlService, ifControlStateService) {
49
+ constructor(renderer, elem, toggleService, dateNavigationService, datepickerEnabledService, dateFormControlService, dateIOService, commonStrings, focusService, viewManagerService, controlClassService, layoutService, ngControlService, ifControlStateService) {
47
50
  super(ifControlStateService, layoutService, controlClassService, ngControlService);
48
51
  this.renderer = renderer;
52
+ this.elem = elem;
49
53
  this.toggleService = toggleService;
50
54
  this.dateNavigationService = dateNavigationService;
51
55
  this.datepickerEnabledService = datepickerEnabledService;
@@ -64,12 +68,51 @@ export class ClrDateContainer extends ClrAbstractContainer {
64
68
  this.subscriptions.push(toggleService.openChange.subscribe(() => {
65
69
  dateFormControlService.markAsTouched();
66
70
  }));
71
+ if (dateNavigationService) {
72
+ const tagName = elem.nativeElement.tagName.toLowerCase();
73
+ dateNavigationService.hasActionButtons = dateNavigationService.isRangePicker =
74
+ tagName === 'clr-date-range-container';
75
+ }
76
+ }
77
+ /**
78
+ * For date range picker actions buttons are shown by default
79
+ */
80
+ set showActionButtons(flag) {
81
+ if (this.dateNavigationService.isRangePicker && !flag) {
82
+ console.error('Error! The date range picker requires action buttons, [showActionButtons] cannot be turned off.');
83
+ }
84
+ else {
85
+ this.dateNavigationService.hasActionButtons = flag;
86
+ }
67
87
  }
68
88
  set clrPosition(position) {
69
89
  if (position && ClrPopoverPositions[position]) {
70
90
  this.viewManagerService.position = ClrPopoverPositions[position];
71
91
  }
72
92
  }
93
+ set rangeOptions(rangeOptions) {
94
+ this.dateIOService.setRangeOptions(rangeOptions);
95
+ }
96
+ set min(dateString) {
97
+ if (this.dateNavigationService.isRangePicker) {
98
+ this.dateIOService.setMinDate(dateString);
99
+ this.clrStartDateInput?.triggerControlInputValidation();
100
+ this.clrEndDateInput?.triggerControlInputValidation();
101
+ }
102
+ else {
103
+ console.error('Error! The date container [min] input only works for date range pickers. Use the native `min` attribute/property for single-date inputs.');
104
+ }
105
+ }
106
+ set max(dateString) {
107
+ if (this.dateNavigationService.isRangePicker) {
108
+ this.dateIOService.setMaxDate(dateString);
109
+ this.clrStartDateInput?.triggerControlInputValidation();
110
+ this.clrEndDateInput?.triggerControlInputValidation();
111
+ }
112
+ else {
113
+ console.error('Error! The date container [max] input only works for date range pickers. Use the native `max` attribute/property for single-date inputs.');
114
+ }
115
+ }
73
116
  set actionButton(button) {
74
117
  this.toggleButton = button;
75
118
  }
@@ -92,13 +135,18 @@ export class ClrDateContainer extends ClrAbstractContainer {
92
135
  /* clrForm wrapper or without clrForm */
93
136
  return ((this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled));
94
137
  }
138
+ get isRangePicker() {
139
+ return this.dateNavigationService.isRangePicker;
140
+ }
95
141
  ngAfterViewInit() {
142
+ this.dateRangeStructuralChecks();
96
143
  this.subscriptions.push(this.toggleService.openChange.subscribe(open => {
97
144
  if (open) {
98
145
  this.initializeCalendar();
99
146
  }
100
147
  else {
101
148
  this.toggleButton.nativeElement.focus();
149
+ this.dateNavigationService.resetSelectedDay();
102
150
  }
103
151
  }));
104
152
  this.subscriptions.push(this.listenForDateChanges());
@@ -137,9 +185,22 @@ export class ClrDateContainer extends ClrAbstractContainer {
137
185
  initializeCalendar() {
138
186
  this.dateNavigationService.initializeCalendar();
139
187
  }
188
+ dateRangeStructuralChecks() {
189
+ if (this.dateNavigationService.isRangePicker) {
190
+ if (this.clrDateInput) {
191
+ console.error('Error! clr-date-range-container must contain clrStartDate and clrEndDate inputs');
192
+ }
193
+ if (!this.clrStartDateInput) {
194
+ console.error('Error! clr-date-range-container must contain clrStartDate input');
195
+ }
196
+ if (!this.clrEndDateInput) {
197
+ console.error('Error! clr-date-range-container must contain clrEndDate input');
198
+ }
199
+ }
200
+ }
140
201
  }
141
- ClrDateContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDateContainer, deps: [{ token: i0.Renderer2 }, { token: i1.ClrPopoverToggleService }, { token: i2.DateNavigationService }, { token: i3.DatepickerEnabledService }, { token: i4.DateFormControlService }, { token: i5.DateIOService }, { token: i6.ClrCommonStringsService }, { token: i7.FocusService }, { token: i8.ViewManagerService }, { token: i9.ControlClassService }, { token: i10.LayoutService, optional: true }, { token: i11.NgControlService }, { token: i12.IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
142
- ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDateContainer, selector: "clr-date-container", inputs: { clrPosition: "clrPosition" }, host: { properties: { "class.clr-date-container": "true", "class.clr-form-control-disabled": "isInputDateDisabled", "class.clr-form-control": "true", "class.clr-row": "addGrid()" } }, providers: [
202
+ ClrDateContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDateContainer, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.ClrPopoverToggleService }, { token: i2.DateNavigationService }, { token: i3.DatepickerEnabledService }, { token: i4.DateFormControlService }, { token: i5.DateIOService }, { token: i6.ClrCommonStringsService }, { token: i7.FocusService }, { token: i8.ViewManagerService }, { token: i9.ControlClassService }, { token: i10.LayoutService, optional: true }, { token: i11.NgControlService }, { token: i12.IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
203
+ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDateContainer, selector: "clr-date-container, clr-date-range-container", inputs: { showActionButtons: "showActionButtons", clrPosition: "clrPosition", rangeOptions: "rangeOptions", min: "min", max: "max" }, host: { properties: { "class.clr-date-container": "true", "class.clr-form-control-disabled": "isInputDateDisabled", "class.clr-form-control": "true", "class.clr-row": "addGrid()" } }, providers: [
143
204
  ControlIdService,
144
205
  LocaleHelperService,
145
206
  ControlClassService,
@@ -151,12 +212,19 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
151
212
  DateFormControlService,
152
213
  ViewManagerService,
153
214
  IfControlStateService,
154
- ], viewQueries: [{ propertyName: "actionButton", first: true, predicate: ["actionButton"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i13.ClrPopoverHostDirective }], ngImport: i0, template: `
215
+ ], queries: [{ propertyName: "clrDateInput", first: true, predicate: ClrDateInput, descendants: true }, { propertyName: "clrStartDateInput", first: true, predicate: ClrStartDateInput, descendants: true }, { propertyName: "clrEndDateInput", first: true, predicate: ClrEndDateInput, descendants: true }], viewQueries: [{ propertyName: "actionButton", first: true, predicate: ["actionButton"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i13.ClrPopoverHostDirective }], ngImport: i0, template: `
155
216
  <ng-content select="label"></ng-content>
156
217
  <label *ngIf="!label && addGrid()"></label>
157
218
  <div class="clr-control-container" [ngClass]="controlClass()">
158
219
  <div class="clr-input-wrapper" clrPopoverAnchor>
159
220
  <div class="clr-input-group" [class.clr-focus]="focus">
221
+ <!-- render range inputs only if using clr-date-range-container -->
222
+ <ng-container *ngIf="isRangePicker">
223
+ <ng-content select="[clrStartDate]"></ng-content>
224
+ <span class="date-range-separator">-</span>
225
+ <ng-content select="[clrEndDate]"></ng-content>
226
+ </ng-container>
227
+ <!-- no *ngIf for the singe-date input because it breaks the "auto-wrapped" date picker -->
160
228
  <ng-content select="[clrDate]"></ng-content>
161
229
  <button
162
230
  #actionButton
@@ -196,13 +264,20 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
196
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDateContainer, decorators: [{
197
265
  type: Component,
198
266
  args: [{
199
- selector: 'clr-date-container',
267
+ selector: 'clr-date-container, clr-date-range-container',
200
268
  template: `
201
269
  <ng-content select="label"></ng-content>
202
270
  <label *ngIf="!label && addGrid()"></label>
203
271
  <div class="clr-control-container" [ngClass]="controlClass()">
204
272
  <div class="clr-input-wrapper" clrPopoverAnchor>
205
273
  <div class="clr-input-group" [class.clr-focus]="focus">
274
+ <!-- render range inputs only if using clr-date-range-container -->
275
+ <ng-container *ngIf="isRangePicker">
276
+ <ng-content select="[clrStartDate]"></ng-content>
277
+ <span class="date-range-separator">-</span>
278
+ <ng-content select="[clrEndDate]"></ng-content>
279
+ </ng-container>
280
+ <!-- no *ngIf for the singe-date input because it breaks the "auto-wrapped" date picker -->
206
281
  <ng-content select="[clrDate]"></ng-content>
207
282
  <button
208
283
  #actionButton
@@ -260,13 +335,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
260
335
  '[class.clr-row]': 'addGrid()',
261
336
  },
262
337
  }]
263
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i1.ClrPopoverToggleService }, { type: i2.DateNavigationService }, { type: i3.DatepickerEnabledService }, { type: i4.DateFormControlService }, { type: i5.DateIOService }, { type: i6.ClrCommonStringsService }, { type: i7.FocusService }, { type: i8.ViewManagerService }, { type: i9.ControlClassService }, { type: i10.LayoutService, decorators: [{
338
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.ClrPopoverToggleService }, { type: i2.DateNavigationService }, { type: i3.DatepickerEnabledService }, { type: i4.DateFormControlService }, { type: i5.DateIOService }, { type: i6.ClrCommonStringsService }, { type: i7.FocusService }, { type: i8.ViewManagerService }, { type: i9.ControlClassService }, { type: i10.LayoutService, decorators: [{
264
339
  type: Optional
265
- }] }, { type: i11.NgControlService }, { type: i12.IfControlStateService }]; }, propDecorators: { clrPosition: [{
340
+ }] }, { type: i11.NgControlService }, { type: i12.IfControlStateService }]; }, propDecorators: { clrDateInput: [{
341
+ type: ContentChild,
342
+ args: [ClrDateInput]
343
+ }], clrStartDateInput: [{
344
+ type: ContentChild,
345
+ args: [ClrStartDateInput]
346
+ }], clrEndDateInput: [{
347
+ type: ContentChild,
348
+ args: [ClrEndDateInput]
349
+ }], showActionButtons: [{
350
+ type: Input,
351
+ args: ['showActionButtons']
352
+ }], clrPosition: [{
266
353
  type: Input,
267
354
  args: ['clrPosition']
355
+ }], rangeOptions: [{
356
+ type: Input
357
+ }], min: [{
358
+ type: Input
359
+ }], max: [{
360
+ type: Input
268
361
  }], actionButton: [{
269
362
  type: ViewChild,
270
363
  args: ['actionButton']
271
364
  }] } });
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9kYXRlcGlja2VyL2RhdGUtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFpQixTQUFTLEVBQWMsS0FBSyxFQUFFLFFBQVEsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFF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QUFZO3NCQURmLFNBQVM7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT3B0aW9uYWwsIFJlbmRlcmVyMiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscy9wb3BvdmVyL2VudW1zL3Bvc2l0aW9ucy5lbnVtJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVySG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcG9wb3Zlci1ob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcHJvdmlkZXJzL3BvcG92ZXItdG9nZ2xlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQWJzdHJhY3RDb250YWluZXIgfSBmcm9tICcuLi9jb21tb24vYWJzdHJhY3QtY29udGFpbmVyJztcbmltcG9ydCB7IElmQ29udHJvbFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9pZi1jb250cm9sLXN0YXRlL2lmLWNvbnRyb2wtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWNsYXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udHJvbElkU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvY3VzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9wcm92aWRlcnMvZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9uZy1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL21vZGVsL2RheS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1mb3JtLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlSU9TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1pby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGUtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVwaWNrZXJFbmFibGVkU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGVwaWNrZXItZW5hYmxlZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9sb2NhbGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvdmlldy1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGF0ZS1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuICAgIDxsYWJlbCAqbmdJZj1cIiFsYWJlbCAmJiBhZGRHcmlkKClcIj48L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItY29udHJvbC1jb250YWluZXJcIiBbbmdDbGFzc109XCJjb250cm9sQ2xhc3MoKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNsci1pbnB1dC13cmFwcGVyXCIgY2xyUG9wb3ZlckFuY2hvcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsci1pbnB1dC1ncm91cFwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNcIj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2xyRGF0ZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2FjdGlvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnB1dERhdGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAqbmdJZj1cImlzRW5hYmxlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNkcy1pY29uIHN0YXR1cz1cImluZm9cIiBzaGFwZT1cImNhbGVuZGFyXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8Y2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyXG4gICAgICAgICAgICAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuOyBhdDogcG9wb3ZlclBvc2l0aW9uOyBvdXRzaWRlQ2xpY2tUb0Nsb3NlOiB0cnVlOyBzY3JvbGxUb0Nsb3NlOiB0cnVlXCJcbiAgICAgICAgICAgIGNka1RyYXBGb2N1c1xuICAgICAgICAgID48L2Nsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0ludmFsaWRcIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLXZhbGlkYXRlLWljb25cIlxuICAgICAgICAgIHNoYXBlPVwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgICBzdGF0dXM9XCJkYW5nZXJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L2Nkcy1pY29uPlxuICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAqbmdJZj1cInNob3dWYWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc2hhcGU9XCJjaGVjay1jaXJjbGVcIlxuICAgICAgICAgIHN0YXR1cz1cInN1Y2Nlc3NcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L2Nkcy1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1oZWxwZXJcIiAqbmdJZj1cInNob3dIZWxwZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1lcnJvclwiICpuZ0lmPVwic2hvd0ludmFsaWRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1zdWNjZXNzXCIgKm5nSWY9XCJzaG93VmFsaWRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gICAgTG9jYWxlSGVscGVyU2VydmljZSxcbiAgICBDb250cm9sQ2xhc3NTZXJ2aWNlLFxuICAgIEZvY3VzU2VydmljZSxcbiAgICBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIERhdGVJT1NlcnZpY2UsXG4gICAgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIERhdGVwaWNrZXJFbmFibGVkU2VydmljZSxcbiAgICBEYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLFxuICAgIFZpZXdNYW5hZ2VyU2VydmljZSxcbiAgICBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ2xyUG9wb3Zlckhvc3REaXJlY3RpdmVdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItZGF0ZS1jb250YWluZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZF0nOiAnaXNJbnB1dERhdGVEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBmb2N1cyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdG9nZ2xlQnV0dG9uOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZU5hdmlnYXRpb25TZXJ2aWNlOiBEYXRlTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U6IERhdGVwaWNrZXJFbmFibGVkU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVGb3JtQ29udHJvbFNlcnZpY2U6IERhdGVGb3JtQ29udHJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlSU9TZXJ2aWNlOiBEYXRlSU9TZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBmb2N1c1NlcnZpY2U6IEZvY3VzU2VydmljZSxcbiAgICBwcml2YXRlIHZpZXdNYW5hZ2VyU2VydmljZTogVmlld01hbmFnZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBjb250cm9sQ2xhc3NTZXJ2aWNlOiBDb250cm9sQ2xhc3NTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBvdmVycmlkZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBuZ0NvbnRyb2xTZXJ2aWNlOiBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBpZkNvbnRyb2xTdGF0ZVNlcnZpY2U6IElmQ29udHJvbFN0YXRlU2VydmljZVxuICApIHtcbiAgICBzdXBlcihpZkNvbnRyb2xTdGF0ZVNlcnZpY2UsIGxheW91dFNlcnZpY2UsIGNvbnRyb2xDbGFzc1NlcnZpY2UsIG5nQ29udHJvbFNlcnZpY2UpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBmb2N1c1NlcnZpY2UuZm9jdXNDaGFuZ2Uuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgdGhpcy5mb2N1cyA9IHN0YXRlO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgZGF0ZUZvcm1Db250cm9sU2VydmljZS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoJ2NsclBvc2l0aW9uJylcbiAgc2V0IGNsclBvc2l0aW9uKHBvc2l0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAocG9zaXRpb24gJiYgKENsclBvcG92ZXJQb3NpdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcG9zaXRpb25dKSB7XG4gICAgICB0aGlzLnZpZXdNYW5hZ2VyU2VydmljZS5wb3NpdGlvbiA9IChDbHJQb3BvdmVyUG9zaXRpb25zIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Bvc2l0aW9uXTtcbiAgICB9XG4gIH1cblxuICBAVmlld0NoaWxkKCdhY3Rpb25CdXR0b24nKVxuICBzZXQgYWN0aW9uQnV0dG9uKGJ1dHRvbjogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD4pIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbiA9IGJ1dHRvbjtcbiAgfVxuXG4gIGdldCBwb3BvdmVyUG9zaXRpb24oKTogQ2xyUG9wb3ZlclBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy52aWV3TWFuYWdlclNlcnZpY2UucG9zaXRpb247XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBpZiB0aGUgRGF0ZXBpY2tlciBpcyBlbmFibGVkIG9yIG5vdC4gSWYgZGlzYWJsZWQsIGhpZGVzIHRoZSBkYXRlcGlja2VyIHRyaWdnZXIuXG4gICAqL1xuICBnZXQgaXNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVwaWNrZXJFbmFibGVkU2VydmljZS5pc0VuYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGlmIERhdGVwaWNrZXIgaXMgZGlhYmxlZCBvciBub3QgYXMgRm9ybSBDb250cm9sXG4gICAqL1xuICBnZXQgaXNJbnB1dERhdGVEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAvKiBjbHJGb3JtIHdyYXBwZXIgb3Igd2l0aG91dCBjbHJGb3JtICovXG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRpc2FibGVkKSB8fCAodGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlICYmIHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZS5kaXNhYmxlZClcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNhbGVuZGFyKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmxpc3RlbkZvckRhdGVDaGFuZ2VzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGFiZWwgZm9yIHRoZSB0b2dnbGUgYnV0dG9uLlxuICAgKiBJZiB0aGVyZSdzIGEgc2VsZWN0ZWQgZGF0ZSwgdGhlIGRhdGUgaXMgaW5jbHVkZWQgaW4gdGhlIGxhYmVsLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUb2dnbGVCdXR0b25MYWJlbChkYXk6IERheU1vZGVsKTogc3RyaW5nIHtcbiAgICBpZiAoZGF5KSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWREYXRlID0gdGhpcy5kYXRlSU9TZXJ2aWNlLnRvTG9jYWxlRGlzcGxheUZvcm1hdFN0cmluZyhkYXkudG9EYXRlKCkpO1xuXG4gICAgICByZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLnBhcnNlKHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWwsIHtcbiAgICAgICAgU0VMRUNURURfREFURTogZm9ybWF0dGVkRGF0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNob29zZURhdGVMYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yRGF0ZUNoYW5nZXMoKSB7XG4gICAgLy8gYmVjYXVzZSBkYXRlLWlucHV0LnRzIGluaXRpYWxpemVzIHRoZSBpbnB1dCBpbiBuZ0FmdGVyVmlld0luaXQsXG4gICAgLy8gdXNpbmcgYSBkYXRhYm91bmQgYXR0cmlidXRlIHRvIGNoYW5nZSB0aGUgYnV0dG9uIGxhYmVscyByZXN1bHRzIGluIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgLy8gc28gaW5zdGVhZCwgdXBkYXRlIHRoZSBhdHRyaWJ1dGUgZGlyZWN0bHkgb24gdGhlIGVsZW1lbnRcbiAgICByZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlDaGFuZ2VcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSkpXG4gICAgICAuc3Vic2NyaWJlKGRheSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCkge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRUb2dnbGVCdXR0b25MYWJlbChkYXkpO1xuICAgICAgICAgIGNvbnN0IHRvZ2dsZUVsID0gdGhpcy50b2dnbGVCdXR0b24ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0b2dnbGVFbCwgJ2FyaWEtbGFiZWwnLCBsYWJlbCk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodG9nZ2xlRWwsICd0aXRsZScsIGxhYmVsKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIHRoZSB1c2VyIGlucHV0IGFuZCBJbml0aWFsaXplcyB0aGUgQ2FsZW5kYXIgZXZlcnl0aW1lIHRoZSBkYXRlcGlja2VyIHBvcG92ZXIgaXMgb3Blbi5cbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNhbGVuZGFyKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmluaXRpYWxpemVDYWxlbmRhcigpO1xuICB9XG59XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9kYXRlcGlja2VyL2RhdGUtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBRVosS0FBSyxFQUNMLFFBQVEsRUFFUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFC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QixpQkFBaUI7c0JBRHBCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVV0QixXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFRaEIsWUFBWTtzQkFEZixLQUFLO2dCQU1GLEdBQUc7c0JBRE4sS0FBSztnQkFjRixHQUFHO3NCQUROLEtBQUs7Z0JBY0YsWUFBWTtzQkFEZixTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvcG9zaXRpb25zLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9pbnRlcmZhY2VzL3BvcG92ZXItcG9zaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wb3BvdmVyLWhvc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJBYnN0cmFjdENvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9hYnN0cmFjdC1jb250YWluZXInO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xDbGFzc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2NvbnRyb2wtY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJFbmREYXRlSW5wdXQgfSBmcm9tICcuL2RhdGUtZW5kLWlucHV0JztcbmltcG9ydCB7IENsckRhdGVJbnB1dCB9IGZyb20gJy4vZGF0ZS1zaW5nbGUtaW5wdXQnO1xuaW1wb3J0IHsgQ2xyU3RhcnREYXRlSW5wdXQgfSBmcm9tICcuL2RhdGUtc3RhcnQtaW5wdXQnO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL21vZGVsL2RheS5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1mb3JtLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRlSU9TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1pby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGUtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVwaWNrZXJFbmFibGVkU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGVwaWNrZXItZW5hYmxlZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsZUhlbHBlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9sb2NhbGUtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvdmlldy1tYW5hZ2VyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItZGF0ZS1jb250YWluZXIsIGNsci1kYXRlLXJhbmdlLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPGxhYmVsICpuZ0lmPVwiIWxhYmVsICYmIGFkZEdyaWQoKVwiPjwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzcygpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LXdyYXBwZXJcIiBjbHJQb3BvdmVyQW5jaG9yPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwXCIgW2NsYXNzLmNsci1mb2N1c109XCJmb2N1c1wiPlxuICAgICAgICAgIDwhLS0gcmVuZGVyIHJhbmdlIGlucHV0cyBvbmx5IGlmIHVzaW5nIGNsci1kYXRlLXJhbmdlLWNvbnRhaW5lciAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSYW5nZVBpY2tlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NsclN0YXJ0RGF0ZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtcmFuZ2Utc2VwYXJhdG9yXCI+LTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJFbmREYXRlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIG5vICpuZ0lmIGZvciB0aGUgc2luZ2UtZGF0ZSBpbnB1dCBiZWNhdXNlIGl0IGJyZWFrcyB0aGUgXCJhdXRvLXdyYXBwZWRcIiBkYXRlIHBpY2tlciAtLT5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2xyRGF0ZV1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2FjdGlvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbHJQb3BvdmVyT3BlbkNsb3NlQnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImNsci1pbnB1dC1ncm91cC1pY29uLWFjdGlvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJbnB1dERhdGVEaXNhYmxlZFwiXG4gICAgICAgICAgICAqbmdJZj1cImlzRW5hYmxlZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNkcy1pY29uIHN0YXR1cz1cImluZm9cIiBzaGFwZT1cImNhbGVuZGFyXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8Y2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyXG4gICAgICAgICAgICAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuOyBhdDogcG9wb3ZlclBvc2l0aW9uOyBvdXRzaWRlQ2xpY2tUb0Nsb3NlOiB0cnVlOyBzY3JvbGxUb0Nsb3NlOiB0cnVlXCJcbiAgICAgICAgICAgIGNka1RyYXBGb2N1c1xuICAgICAgICAgID48L2Nsci1kYXRlcGlja2VyLXZpZXctbWFuYWdlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0ludmFsaWRcIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLXZhbGlkYXRlLWljb25cIlxuICAgICAgICAgIHNoYXBlPVwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgICBzdGF0dXM9XCJkYW5nZXJcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L2Nkcy1pY29uPlxuICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAqbmdJZj1cInNob3dWYWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc2hhcGU9XCJjaGVjay1jaXJjbGVcIlxuICAgICAgICAgIHN0YXR1cz1cInN1Y2Nlc3NcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L2Nkcy1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1oZWxwZXJcIiAqbmdJZj1cInNob3dIZWxwZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1lcnJvclwiICpuZ0lmPVwic2hvd0ludmFsaWRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1zdWNjZXNzXCIgKm5nSWY9XCJzaG93VmFsaWRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW1xuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gICAgTG9jYWxlSGVscGVyU2VydmljZSxcbiAgICBDb250cm9sQ2xhc3NTZXJ2aWNlLFxuICAgIEZvY3VzU2VydmljZSxcbiAgICBOZ0NvbnRyb2xTZXJ2aWNlLFxuICAgIERhdGVJT1NlcnZpY2UsXG4gICAgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIERhdGVwaWNrZXJFbmFibGVkU2VydmljZSxcbiAgICBEYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLFxuICAgIFZpZXdNYW5hZ2VyU2VydmljZSxcbiAgICBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ2xyUG9wb3Zlckhvc3REaXJlY3RpdmVdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItZGF0ZS1jb250YWluZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZF0nOiAnaXNJbnB1dERhdGVEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBmb2N1cyA9IGZhbHNlO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyRGF0ZUlucHV0KSBwcml2YXRlIHJlYWRvbmx5IGNsckRhdGVJbnB1dDogQ2xyRGF0ZUlucHV0O1xuICBAQ29udGVudENoaWxkKENsclN0YXJ0RGF0ZUlucHV0KSBwcml2YXRlIHJlYWRvbmx5IGNsclN0YXJ0RGF0ZUlucHV0OiBDbHJTdGFydERhdGVJbnB1dDtcbiAgQENvbnRlbnRDaGlsZChDbHJFbmREYXRlSW5wdXQpIHByaXZhdGUgcmVhZG9ubHkgY2xyRW5kRGF0ZUlucHV0OiBDbHJFbmREYXRlSW5wdXQ7XG5cbiAgcHJpdmF0ZSB0b2dnbGVCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCBlbGVtOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlTmF2aWdhdGlvblNlcnZpY2U6IERhdGVOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVwaWNrZXJFbmFibGVkU2VydmljZTogRGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZUZvcm1Db250cm9sU2VydmljZTogRGF0ZUZvcm1Db250cm9sU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVJT1NlcnZpY2U6IERhdGVJT1NlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIGZvY3VzU2VydmljZTogRm9jdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld01hbmFnZXJTZXJ2aWNlOiBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIG92ZXJyaWRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlmQ29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGlmQ29udHJvbFN0YXRlU2VydmljZSwgbGF5b3V0U2VydmljZSwgY29udHJvbENsYXNzU2VydmljZSwgbmdDb250cm9sU2VydmljZSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGZvY3VzU2VydmljZS5mb2N1c0NoYW5nZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzID0gc3RhdGU7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBkYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmIChkYXRlTmF2aWdhdGlvblNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IHRhZ05hbWUgPSBlbGVtLm5hdGl2ZUVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmhhc0FjdGlvbkJ1dHRvbnMgPSBkYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciA9XG4gICAgICAgIHRhZ05hbWUgPT09ICdjbHItZGF0ZS1yYW5nZS1jb250YWluZXInO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgZGF0ZSByYW5nZSBwaWNrZXIgYWN0aW9ucyBidXR0b25zIGFyZSBzaG93biBieSBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoJ3Nob3dBY3Rpb25CdXR0b25zJylcbiAgc2V0IHNob3dBY3Rpb25CdXR0b25zKGZsYWc6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlciAmJiAhZmxhZykge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IhIFRoZSBkYXRlIHJhbmdlIHBpY2tlciByZXF1aXJlcyBhY3Rpb24gYnV0dG9ucywgW3Nob3dBY3Rpb25CdXR0b25zXSBjYW5ub3QgYmUgdHVybmVkIG9mZi4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaGFzQWN0aW9uQnV0dG9ucyA9IGZsYWc7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdjbHJQb3NpdGlvbicpXG4gIHNldCBjbHJQb3NpdGlvbihwb3NpdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKHBvc2l0aW9uICYmIChDbHJQb3BvdmVyUG9zaXRpb25zIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Bvc2l0aW9uXSkge1xuICAgICAgdGhpcy52aWV3TWFuYWdlclNlcnZpY2UucG9zaXRpb24gPSAoQ2xyUG9wb3ZlclBvc2l0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwb3NpdGlvbl07XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJhbmdlT3B0aW9ucyhyYW5nZU9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGVJT1NlcnZpY2Uuc2V0UmFuZ2VPcHRpb25zKHJhbmdlT3B0aW9ucyk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbWluKGRhdGVTdHJpbmc6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pc1JhbmdlUGlja2VyKSB7XG4gICAgICB0aGlzLmRhdGVJT1NlcnZpY2Uuc2V0TWluRGF0ZShkYXRlU3RyaW5nKTtcbiAgICAgIHRoaXMuY2xyU3RhcnREYXRlSW5wdXQ/LnRyaWdnZXJDb250cm9sSW5wdXRWYWxpZGF0aW9uKCk7XG4gICAgICB0aGlzLmNsckVuZERhdGVJbnB1dD8udHJpZ2dlckNvbnRyb2xJbnB1dFZhbGlkYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ0Vycm9yISBUaGUgZGF0ZSBjb250YWluZXIgW21pbl0gaW5wdXQgb25seSB3b3JrcyBmb3IgZGF0ZSByYW5nZSBwaWNrZXJzLiBVc2UgdGhlIG5hdGl2ZSBgbWluYCBhdHRyaWJ1dGUvcHJvcGVydHkgZm9yIHNpbmdsZS1kYXRlIGlucHV0cy4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtYXgoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXIpIHtcbiAgICAgIHRoaXMuZGF0ZUlPU2VydmljZS5zZXRNYXhEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgdGhpcy5jbHJTdGFydERhdGVJbnB1dD8udHJpZ2dlckNvbnRyb2xJbnB1dFZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMuY2xyRW5kRGF0ZUlucHV0Py50cmlnZ2VyQ29udHJvbElucHV0VmFsaWRhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnRXJyb3IhIFRoZSBkYXRlIGNvbnRhaW5lciBbbWF4XSBpbnB1dCBvbmx5IHdvcmtzIGZvciBkYXRlIHJhbmdlIHBpY2tlcnMuIFVzZSB0aGUgbmF0aXZlIGBtYXhgIGF0dHJpYnV0ZS9wcm9wZXJ0eSBmb3Igc2luZ2xlLWRhdGUgaW5wdXRzLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgnYWN0aW9uQnV0dG9uJylcbiAgc2V0IGFjdGlvbkJ1dHRvbihidXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KSB7XG4gICAgdGhpcy50b2dnbGVCdXR0b24gPSBidXR0b247XG4gIH1cblxuICBnZXQgcG9wb3ZlclBvc2l0aW9uKCk6IENsclBvcG92ZXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgaWYgdGhlIERhdGVwaWNrZXIgaXMgZW5hYmxlZCBvciBub3QuIElmIGRpc2FibGVkLCBoaWRlcyB0aGUgZGF0ZXBpY2tlciB0cmlnZ2VyLlxuICAgKi9cbiAgZ2V0IGlzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UuaXNFbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBpZiBEYXRlcGlja2VyIGlzIGRpYWJsZWQgb3Igbm90IGFzIEZvcm0gQ29udHJvbFxuICAgKi9cbiAgZ2V0IGlzSW5wdXREYXRlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLyogY2xyRm9ybSB3cmFwcGVyIG9yIHdpdGhvdXQgY2xyRm9ybSAqL1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5kaXNhYmxlZCkgfHwgKHRoaXMuZGF0ZUZvcm1Db250cm9sU2VydmljZSAmJiB0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UuZGlzYWJsZWQpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNSYW5nZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaXNSYW5nZVBpY2tlcjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVSYW5nZVN0cnVjdHVyYWxDaGVja3MoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDYWxlbmRhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5yZXNldFNlbGVjdGVkRGF5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMubGlzdGVuRm9yRGF0ZUNoYW5nZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsYWJlbCBmb3IgdGhlIHRvZ2dsZSBidXR0b24uXG4gICAqIElmIHRoZXJlJ3MgYSBzZWxlY3RlZCBkYXRlLCB0aGUgZGF0ZSBpcyBpbmNsdWRlZCBpbiB0aGUgbGFiZWwuXG4gICAqL1xuICBwcml2YXRlIGdldFRvZ2dsZUJ1dHRvbkxhYmVsKGRheTogRGF5TW9kZWwpOiBzdHJpbmcge1xuICAgIGlmIChkYXkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGRheS50b0RhdGUoKSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbW1vblN0cmluZ3MucGFyc2UodGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZUNoYW5nZURhdGVMYWJlbCwge1xuICAgICAgICBTRUxFQ1RFRF9EQVRFOiBmb3JtYXR0ZWREYXRlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hvb3NlRGF0ZUxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JEYXRlQ2hhbmdlcygpIHtcbiAgICAvLyBiZWNhdXNlIGRhdGUtaW5wdXQudHMgaW5pdGlhbGl6ZXMgdGhlIGlucHV0IGluIG5nQWZ0ZXJWaWV3SW5pdCxcbiAgICAvLyB1c2luZyBhIGRhdGFib3VuZCBhdHRyaWJ1dGUgdG8gY2hhbmdlIHRoZSBidXR0b24gbGFiZWxzIHJlc3VsdHMgaW4gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvci5cbiAgICAvLyBzbyBpbnN0ZWFkLCB1cGRhdGUgdGhlIGF0dHJpYnV0ZSBkaXJlY3RseSBvbiB0aGUgZWxlbWVudFxuICAgIHJldHVybiB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheUNoYW5nZVxuICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRGF5KSlcbiAgICAgIC5zdWJzY3JpYmUoZGF5ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbmFibGVkKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLmdldFRvZ2dsZUJ1dHRvbkxhYmVsKGRheSk7XG4gICAgICAgICAgY29uc3QgdG9nZ2xlRWwgPSB0aGlzLnRvZ2dsZUJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRvZ2dsZUVsLCAnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0b2dnbGVFbCwgJ3RpdGxlJywgbGFiZWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgdGhlIHVzZXIgaW5wdXQgYW5kIEluaXRpYWxpemVzIHRoZSBDYWxlbmRhciBldmVyeXRpbWUgdGhlIGRhdGVwaWNrZXIgcG9wb3ZlciBpcyBvcGVuLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwcml2YXRlIGRhdGVSYW5nZVN0cnVjdHVyYWxDaGVja3MoKSB7XG4gICAgaWYgKHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLmlzUmFuZ2VQaWNrZXIpIHtcbiAgICAgIGlmICh0aGlzLmNsckRhdGVJbnB1dCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciEgY2xyLWRhdGUtcmFuZ2UtY29udGFpbmVyIG11c3QgY29udGFpbiBjbHJTdGFydERhdGUgYW5kIGNsckVuZERhdGUgaW5wdXRzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuY2xyU3RhcnREYXRlSW5wdXQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IhIGNsci1kYXRlLXJhbmdlLWNvbnRhaW5lciBtdXN0IGNvbnRhaW4gY2xyU3RhcnREYXRlIGlucHV0Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuY2xyRW5kRGF0ZUlucHV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yISBjbHItZGF0ZS1yYW5nZS1jb250YWluZXIgbXVzdCBjb250YWluIGNsckVuZERhdGUgaW5wdXQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
3
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4
+ * This software is released under MIT license.
5
+ * The full license information can be found in LICENSE in the root directory of this project.
6
+ */
7
+ import { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';
8
+ import { ClrDateInputBase } from './date-input';
9
+ import { DatepickerFocusService } from './providers/datepicker-focus.service';
10
+ import * as i0 from "@angular/core";
11
+ export class ClrEndDateInput extends ClrDateInputBase {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.dateChange = new EventEmitter(false);
15
+ this.inputWidth = 13;
16
+ }
17
+ set date(date) {
18
+ this.setDate(date);
19
+ }
20
+ get inputSize() {
21
+ return this.inputWidth;
22
+ }
23
+ get userSelectedDayChange() {
24
+ return this.dateNavigationService.selectedEndDayChange;
25
+ }
26
+ triggerControlInputValidation() {
27
+ if (this.datepickerHasFormControl()) {
28
+ this.control.control?.updateValueAndValidity({ emitEvent: false });
29
+ this.control.control?.setErrors(this.control.control.errors);
30
+ }
31
+ }
32
+ updateDayModel(dayModel) {
33
+ this.dateNavigationService.persistedEndDate = this.dateNavigationService.selectedEndDay = dayModel;
34
+ }
35
+ }
36
+ ClrEndDateInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrEndDateInput, deps: null, target: i0.ɵɵFactoryTarget.Directive });
37
+ ClrEndDateInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrEndDateInput, selector: "[clrEndDate]", inputs: { inputWidth: "inputWidth", date: ["clrEndDate", "date"] }, outputs: { dateChange: "clrEndDateChange" }, host: { properties: { "class.clr-input": "true", "attr.size": "this.inputSize" } }, providers: [DatepickerFocusService], usesInheritance: true, ngImport: i0 });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrEndDateInput, decorators: [{
39
+ type: Directive,
40
+ args: [{
41
+ selector: '[clrEndDate]',
42
+ host: {
43
+ '[class.clr-input]': 'true',
44
+ },
45
+ providers: [DatepickerFocusService],
46
+ }]
47
+ }], propDecorators: { dateChange: [{
48
+ type: Output,
49
+ args: ['clrEndDateChange']
50
+ }], inputWidth: [{
51
+ type: Input,
52
+ args: ['inputWidth']
53
+ }], date: [{
54
+ type: Input,
55
+ args: ['clrEndDate']
56
+ }], inputSize: [{
57
+ type: HostBinding,
58
+ args: ['attr.size']
59
+ }] } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1lbmQtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9kYXRlcGlja2VyL2RhdGUtZW5kLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQVM5RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxnQkFBZ0I7SUFQckQ7O1FBUXVDLGVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBTyxLQUFLLENBQUMsQ0FBQztRQUUzRCxlQUFVLEdBQUcsRUFBRSxDQUFDO0tBMEJ0QztJQXhCQyxJQUNJLElBQUksQ0FBQyxJQUFtQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQXVCLHFCQUFxQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztJQUN6RCxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDOUQ7SUFDSCxDQUFDO0lBRWtCLGNBQWMsQ0FBQyxRQUFrQjtRQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFDckcsQ0FBQzs7NEdBNUJVLGVBQWU7Z0dBQWYsZUFBZSw0T0FGZixDQUFDLHNCQUFzQixDQUFDOzJGQUV4QixlQUFlO2tCQVAzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUU7d0JBQ0osbUJBQW1CLEVBQUUsTUFBTTtxQkFDNUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVzQyxVQUFVO3NCQUE5QyxNQUFNO3VCQUFDLGtCQUFrQjtnQkFFTCxVQUFVO3NCQUE5QixLQUFLO3VCQUFDLFlBQVk7Z0JBR2YsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLFlBQVk7Z0JBTWYsU0FBUztzQkFEWixXQUFXO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDbHJEYXRlSW5wdXRCYXNlIH0gZnJvbSAnLi9kYXRlLWlucHV0JztcbmltcG9ydCB7IERheU1vZGVsIH0gZnJvbSAnLi9tb2RlbC9kYXkubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckZvY3VzU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2RhdGVwaWNrZXItZm9jdXMuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJFbmREYXRlXScsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmNsci1pbnB1dF0nOiAndHJ1ZScsXG4gIH0sXG4gIHByb3ZpZGVyczogW0RhdGVwaWNrZXJGb2N1c1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJFbmREYXRlSW5wdXQgZXh0ZW5kcyBDbHJEYXRlSW5wdXRCYXNlIHtcbiAgQE91dHB1dCgnY2xyRW5kRGF0ZUNoYW5nZScpIG92ZXJyaWRlIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KGZhbHNlKTtcblxuICBASW5wdXQoJ2lucHV0V2lkdGgnKSBpbnB1dFdpZHRoID0gMTM7XG5cbiAgQElucHV0KCdjbHJFbmREYXRlJylcbiAgc2V0IGRhdGUoZGF0ZTogRGF0ZSB8IHN0cmluZykge1xuICAgIHRoaXMuc2V0RGF0ZShkYXRlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5zaXplJylcbiAgZ2V0IGlucHV0U2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldCB1c2VyU2VsZWN0ZWREYXlDaGFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5Q2hhbmdlO1xuICB9XG5cbiAgdHJpZ2dlckNvbnRyb2xJbnB1dFZhbGlkYXRpb24oKSB7XG4gICAgaWYgKHRoaXMuZGF0ZXBpY2tlckhhc0Zvcm1Db250cm9sKCkpIHtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuY29udHJvbC5jb250cm9sPy5zZXRFcnJvcnModGhpcy5jb250cm9sLmNvbnRyb2wuZXJyb3JzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlRGF5TW9kZWwoZGF5TW9kZWw6IERheU1vZGVsKSB7XG4gICAgdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2UucGVyc2lzdGVkRW5kRGF0ZSA9IHRoaXMuZGF0ZU5hdmlnYXRpb25TZXJ2aWNlLnNlbGVjdGVkRW5kRGF5ID0gZGF5TW9kZWw7XG4gIH1cbn1cbiJdfQ==