@energycap/components 0.41.1-ECAP-26841-date-input-features.20250108-1012 → 0.42.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 (353) hide show
  1. package/{esm2020 → esm2022}/energycap-components.mjs +4 -4
  2. package/esm2022/lib/components.module.mjs +418 -0
  3. package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2022/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/{esm2020 → esm2022}/lib/controls/button/copy-button.directive.mjs +28 -28
  7. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +59 -0
  9. package/esm2022/lib/controls/calendar/calendar.component.mjs +200 -0
  10. package/esm2022/lib/controls/calendar/calendar.types.mjs +4 -0
  11. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/{esm2020 → esm2022}/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -38
  13. package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2022/lib/controls/date-input/date-input.component.mjs +256 -0
  15. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
  16. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
  17. package/esm2022/lib/controls/form-control/form-control.component.mjs +104 -0
  18. package/esm2022/lib/controls/form-control-base.mjs +151 -0
  19. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  20. package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
  21. package/{esm2020 → esm2022}/lib/controls/help-popover/help-popover.component.mjs +31 -31
  22. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
  23. package/{esm2020 → esm2022}/lib/controls/link-button/link-button.component.mjs +11 -11
  24. package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
  25. package/{esm2020 → esm2022}/lib/controls/navigation/link-item.mjs +1 -1
  26. package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
  27. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  28. package/{esm2020 → esm2022}/lib/controls/navigation/nav-item.mjs +1 -1
  29. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
  30. package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
  31. package/{esm2020 → esm2022}/lib/controls/radio-button/radio-button-option.mjs +2 -2
  32. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
  33. package/esm2022/lib/controls/select/select.component.mjs +88 -0
  34. package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
  35. package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
  36. package/esm2022/lib/core/cache.service.mjs +105 -0
  37. package/esm2022/lib/core/custom-validators.mjs +29 -0
  38. package/esm2022/lib/core/date-time-helper.mjs +220 -0
  39. package/esm2022/lib/core/error.service.mjs +61 -0
  40. package/esm2022/lib/core/router-helper.service.mjs +111 -0
  41. package/esm2022/lib/core/scroll.service.mjs +89 -0
  42. package/{esm2020 → esm2022}/lib/core/telemetry-tracker.service.mjs +16 -16
  43. package/{esm2020 → esm2022}/lib/core/telemetry.service.mjs +38 -38
  44. package/esm2022/lib/core/validation-message.service.mjs +185 -0
  45. package/{esm2020 → esm2022}/lib/core/validation-patterns.mjs +30 -30
  46. package/esm2022/lib/core/window.service.mjs +186 -0
  47. package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
  48. package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
  49. package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
  50. package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
  51. package/{esm2020 → esm2022}/lib/display/dialog/dialog-content.mjs +1 -1
  52. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  53. package/{esm2020 → esm2022}/lib/display/dialog/dialog-types.mjs +76 -76
  54. package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
  55. package/{esm2020 → esm2022}/lib/display/dialog/dialog.service.mjs +71 -71
  56. package/{esm2020 → esm2022}/lib/display/help/help-types.mjs +1 -1
  57. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  58. package/{esm2020 → esm2022}/lib/display/hierarchy/hierarchy-mocks.spec.mjs +53 -53
  59. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  60. package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
  61. package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
  62. package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
  63. package/{esm2020 → esm2022}/lib/display/resizable/resizable.component.mjs +52 -52
  64. package/{esm2020 → esm2022}/lib/display/spinner/spinner.component.mjs +12 -12
  65. package/esm2022/lib/display/splash/splash.component.mjs +42 -0
  66. package/{esm2020 → esm2022}/lib/display/splash/splash.service.mjs +35 -35
  67. package/{esm2020 → esm2022}/lib/display/table/resizable-column.component.mjs +20 -20
  68. package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
  69. package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
  70. package/{esm2020 → esm2022}/lib/display/table/table-detail-row.component.mjs +19 -19
  71. package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
  72. package/{esm2020 → esm2022}/lib/display/table/table-master-header-row.component.mjs +14 -14
  73. package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
  74. package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
  75. package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
  76. package/esm2022/lib/display/table/table.component.mjs +249 -0
  77. package/esm2022/lib/display/tags/tag.mjs +18 -0
  78. package/esm2022/lib/display/tags/tags.component.mjs +77 -0
  79. package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
  80. package/{esm2020 → esm2022}/lib/display/toast/toast-types.mjs +7 -7
  81. package/{esm2020 → esm2022}/lib/display/toast/toast.service.mjs +35 -35
  82. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
  83. package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.component.mjs +28 -28
  84. package/{esm2020 → esm2022}/lib/display/tooltip/tooltip.service.mjs +78 -78
  85. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  86. package/{esm2020 → esm2022}/lib/display/tour/tour-types.mjs +33 -33
  87. package/esm2022/lib/display/tour/tour.component.mjs +398 -0
  88. package/esm2022/lib/display/tour/tour.service.mjs +75 -0
  89. package/esm2022/lib/display/tree/tree.component.mjs +135 -0
  90. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  91. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  92. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  93. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
  94. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  95. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  96. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  97. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  98. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  99. package/esm2022/lib/shared/display.mjs +6 -0
  100. package/esm2022/lib/shared/form-group.helper.mjs +67 -0
  101. package/esm2022/lib/shared/json-helper.mjs +19 -0
  102. package/esm2022/lib/shared/lodash-helper.mjs +52 -0
  103. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
  104. package/{esm2020 → esm2022}/lib/shared/page/page-statuses.mjs +22 -22
  105. package/{esm2020 → esm2022}/lib/shared/page/page-title/page-title.component.mjs +23 -23
  106. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
  107. package/{esm2020 → esm2022}/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +16 -16
  108. package/{esm2020 → esm2022}/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +16 -16
  109. package/{esm2020 → esm2022}/lib/shared/testing/page-base-component-test-helper.spec.mjs +37 -37
  110. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  111. package/{esm2020 → esm2022}/lib/shared/testing/public-mocks.spec.mjs +148 -148
  112. package/{esm2020 → esm2022}/lib/shared/testing/spy-factory.spec.mjs +39 -39
  113. package/{esm2020 → esm2022}/lib/shared/testing/translation-mocks.spec.mjs +56 -56
  114. package/{esm2020 → esm2022}/lib/shared/user-preference.service.mjs +17 -17
  115. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  116. package/{esm2020 → esm2022}/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -68
  117. package/{esm2020 → esm2022}/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -18
  118. package/esm2022/public-api.mjs +115 -0
  119. package/{fesm2020 → fesm2022}/energycap-components.mjs +11819 -12972
  120. package/fesm2022/energycap-components.mjs.map +1 -0
  121. package/index.d.ts +5 -5
  122. package/lib/components.module.d.ts +91 -92
  123. package/lib/controls/banner/banner.component.d.ts +50 -50
  124. package/lib/controls/button/button.component.d.ts +78 -78
  125. package/lib/controls/button/copy-button-base.directive.d.ts +20 -20
  126. package/lib/controls/button/copy-button.directive.d.ts +14 -14
  127. package/lib/controls/button/copy-table-button.directive.d.ts +19 -19
  128. package/lib/controls/calendar/calendar-item.component.d.ts +17 -22
  129. package/lib/controls/calendar/calendar.component.d.ts +54 -52
  130. package/lib/controls/calendar/calendar.types.d.ts +7 -11
  131. package/lib/controls/checkbox/checkbox.component.d.ts +65 -65
  132. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -25
  133. package/lib/controls/combobox/combobox.component.d.ts +418 -418
  134. package/lib/controls/date-input/date-input.component.d.ts +80 -115
  135. package/lib/controls/dropdown/dropdown.component.d.ts +161 -161
  136. package/lib/controls/file-upload/file-upload.component.d.ts +124 -124
  137. package/lib/controls/form-control/form-control.component.d.ts +30 -28
  138. package/lib/controls/form-control-base.d.ts +110 -110
  139. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -73
  140. package/lib/controls/form-group/form-group.component.d.ts +105 -105
  141. package/lib/controls/help-popover/help-popover.component.d.ts +11 -11
  142. package/lib/controls/item-picker/item-picker.component.d.ts +164 -164
  143. package/lib/controls/link-button/link-button.component.d.ts +5 -5
  144. package/lib/controls/menu/menu.component.d.ts +255 -255
  145. package/lib/controls/navigation/link-item.d.ts +32 -32
  146. package/lib/controls/navigation/nav-group.d.ts +18 -18
  147. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -42
  148. package/lib/controls/navigation/nav-item.d.ts +31 -31
  149. package/lib/controls/numericbox/numericbox.component.d.ts +148 -148
  150. package/lib/controls/popover/popover.component.d.ts +51 -51
  151. package/lib/controls/radio-button/radio-button-option.d.ts +19 -19
  152. package/lib/controls/radio-button/radio-button.component.d.ts +53 -53
  153. package/lib/controls/select/select.component.d.ts +44 -44
  154. package/lib/controls/tabs/tabs.component.d.ts +30 -30
  155. package/lib/controls/textbox/textbox.component.d.ts +107 -107
  156. package/lib/core/cache.service.d.ts +33 -33
  157. package/lib/core/custom-validators.d.ts +20 -20
  158. package/lib/core/date-time-helper.d.ts +101 -101
  159. package/lib/core/error.service.d.ts +20 -20
  160. package/lib/core/router-helper.service.d.ts +48 -48
  161. package/lib/core/scroll.service.d.ts +36 -36
  162. package/lib/core/telemetry-tracker.service.d.ts +13 -13
  163. package/lib/core/telemetry.service.d.ts +31 -31
  164. package/lib/core/validation-message.service.d.ts +26 -26
  165. package/lib/core/validation-patterns.d.ts +22 -22
  166. package/lib/core/window.service.d.ts +116 -116
  167. package/lib/display/app-bar/app-bar.component.d.ts +20 -20
  168. package/lib/display/avatar/avatar.component.d.ts +35 -35
  169. package/lib/display/avatar/avatar.service.d.ts +24 -24
  170. package/lib/display/confirm/confirm.component.d.ts +123 -123
  171. package/lib/display/dialog/dialog-content.d.ts +19 -19
  172. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -32
  173. package/lib/display/dialog/dialog-types.d.ts +130 -130
  174. package/lib/display/dialog/dialog.component.d.ts +120 -120
  175. package/lib/display/dialog/dialog.service.d.ts +48 -48
  176. package/lib/display/help/help-types.d.ts +33 -33
  177. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -97
  178. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -53
  179. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -34
  180. package/lib/display/item-display/item-display.component.d.ts +43 -43
  181. package/lib/display/json-display/json-display.component.d.ts +16 -16
  182. package/lib/display/resizable/resizable-base.d.ts +67 -67
  183. package/lib/display/resizable/resizable.component.d.ts +31 -31
  184. package/lib/display/spinner/spinner.component.d.ts +5 -5
  185. package/lib/display/splash/splash.component.d.ts +16 -16
  186. package/lib/display/splash/splash.service.d.ts +22 -22
  187. package/lib/display/table/resizable-column.component.d.ts +10 -10
  188. package/lib/display/table/resizable-table.directive.d.ts +93 -93
  189. package/lib/display/table/searchable-table.component.d.ts +206 -206
  190. package/lib/display/table/table-detail-row.component.d.ts +8 -8
  191. package/lib/display/table/table-locked-column.component.d.ts +20 -20
  192. package/lib/display/table/table-master-header-row.component.d.ts +9 -9
  193. package/lib/display/table/table-master-row.component.d.ts +113 -113
  194. package/lib/display/table/table-pagination.component.d.ts +91 -91
  195. package/lib/display/table/table-selectable-row.component.d.ts +102 -102
  196. package/lib/display/table/table.component.d.ts +121 -121
  197. package/lib/display/tags/tag.d.ts +18 -18
  198. package/lib/display/tags/tags.component.d.ts +48 -48
  199. package/lib/display/toast/toast/toast.component.d.ts +23 -23
  200. package/lib/display/toast/toast-types.d.ts +24 -24
  201. package/lib/display/toast/toast.service.d.ts +20 -20
  202. package/lib/display/toast/toaster/toaster.component.d.ts +35 -35
  203. package/lib/display/tooltip/tooltip.component.d.ts +70 -70
  204. package/lib/display/tooltip/tooltip.service.d.ts +16 -16
  205. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -44
  206. package/lib/display/tour/tour-types.d.ts +70 -70
  207. package/lib/display/tour/tour.component.d.ts +147 -147
  208. package/lib/display/tour/tour.service.d.ts +38 -38
  209. package/lib/display/tree/tree.component.d.ts +75 -75
  210. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -38
  211. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -14
  212. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -60
  213. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -101
  214. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -21
  215. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -9
  216. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -36
  217. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -23
  218. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -18
  219. package/lib/shared/display.d.ts +42 -42
  220. package/lib/shared/form-group.helper.d.ts +31 -31
  221. package/lib/shared/json-helper.d.ts +7 -7
  222. package/lib/shared/lodash-helper.d.ts +18 -18
  223. package/lib/shared/page/page-base/page-base.component.d.ts +259 -259
  224. package/lib/shared/page/page-statuses.d.ts +13 -13
  225. package/lib/shared/page/page-title/page-title.component.d.ts +9 -9
  226. package/lib/shared/page/page-view/page-view.component.d.ts +102 -102
  227. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -4
  228. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -4
  229. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -30
  230. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -28
  231. package/lib/shared/testing/public-mocks.spec.d.ts +90 -90
  232. package/lib/shared/testing/spy-factory.spec.d.ts +27 -27
  233. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -30
  234. package/lib/shared/user-preference.service.d.ts +13 -13
  235. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -134
  236. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -27
  237. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -10
  238. package/package.json +12 -18
  239. package/public-api.d.ts +111 -113
  240. package/schematics/rxjs-7-upgrade/index.d.ts +3 -3
  241. package/schematics/rxjs-7-upgrade/index.js +67 -67
  242. package/schematics/rxjs-7-upgrade/index.js.map +1 -1
  243. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -4
  244. package/schematics/rxjs-7-upgrade/schema.js +2 -2
  245. package/schematics/utilities/typescript.d.ts +7 -7
  246. package/schematics/utilities/typescript.js +41 -41
  247. package/schematics/utilities/workspace.d.ts +8 -8
  248. package/schematics/utilities/workspace.js +71 -71
  249. package/schematics/utilities/workspace.js.map +1 -1
  250. package/src/assets/locales/en_US.json +1 -9
  251. package/esm2020/lib/components.module.mjs +0 -423
  252. package/esm2020/lib/controls/banner/banner.component.mjs +0 -109
  253. package/esm2020/lib/controls/button/button.component.mjs +0 -106
  254. package/esm2020/lib/controls/button/copy-button-base.directive.mjs +0 -67
  255. package/esm2020/lib/controls/button/copy-table-button.directive.mjs +0 -43
  256. package/esm2020/lib/controls/calendar/calendar-item.component.mjs +0 -91
  257. package/esm2020/lib/controls/calendar/calendar.component.mjs +0 -248
  258. package/esm2020/lib/controls/calendar/calendar.types.mjs +0 -2
  259. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +0 -140
  260. package/esm2020/lib/controls/combobox/combobox.component.mjs +0 -879
  261. package/esm2020/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +0 -57
  262. package/esm2020/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +0 -62
  263. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +0 -100
  264. package/esm2020/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +0 -101
  265. package/esm2020/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +0 -76
  266. package/esm2020/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +0 -79
  267. package/esm2020/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +0 -210
  268. package/esm2020/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +0 -81
  269. package/esm2020/lib/controls/date-input/date-input.component.mjs +0 -463
  270. package/esm2020/lib/controls/date-input/date-input.types.mjs +0 -44
  271. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +0 -243
  272. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +0 -261
  273. package/esm2020/lib/controls/form-control/form-control.component.mjs +0 -98
  274. package/esm2020/lib/controls/form-control-base.mjs +0 -151
  275. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +0 -136
  276. package/esm2020/lib/controls/form-group/form-group.component.mjs +0 -261
  277. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +0 -329
  278. package/esm2020/lib/controls/menu/menu.component.mjs +0 -485
  279. package/esm2020/lib/controls/navigation/nav-group.mjs +0 -39
  280. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +0 -92
  281. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +0 -372
  282. package/esm2020/lib/controls/popover/popover.component.mjs +0 -117
  283. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +0 -82
  284. package/esm2020/lib/controls/select/select.component.mjs +0 -88
  285. package/esm2020/lib/controls/tabs/tabs.component.mjs +0 -47
  286. package/esm2020/lib/controls/textbox/textbox.component.mjs +0 -155
  287. package/esm2020/lib/core/cache.service.mjs +0 -105
  288. package/esm2020/lib/core/custom-validators.mjs +0 -29
  289. package/esm2020/lib/core/date-time-helper.mjs +0 -228
  290. package/esm2020/lib/core/error.service.mjs +0 -61
  291. package/esm2020/lib/core/router-helper.service.mjs +0 -111
  292. package/esm2020/lib/core/scroll.service.mjs +0 -89
  293. package/esm2020/lib/core/validation-message.service.mjs +0 -185
  294. package/esm2020/lib/core/window.service.mjs +0 -186
  295. package/esm2020/lib/display/app-bar/app-bar.component.mjs +0 -46
  296. package/esm2020/lib/display/avatar/avatar.component.mjs +0 -67
  297. package/esm2020/lib/display/avatar/avatar.service.mjs +0 -64
  298. package/esm2020/lib/display/confirm/confirm.component.mjs +0 -168
  299. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +0 -63
  300. package/esm2020/lib/display/dialog/dialog.component.mjs +0 -281
  301. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +0 -111
  302. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +0 -61
  303. package/esm2020/lib/display/item-display/item-display.component.mjs +0 -81
  304. package/esm2020/lib/display/json-display/json-display.component.mjs +0 -47
  305. package/esm2020/lib/display/resizable/resizable-base.mjs +0 -120
  306. package/esm2020/lib/display/splash/splash.component.mjs +0 -42
  307. package/esm2020/lib/display/table/resizable-table.directive.mjs +0 -227
  308. package/esm2020/lib/display/table/searchable-table.component.mjs +0 -342
  309. package/esm2020/lib/display/table/table-locked-column.component.mjs +0 -58
  310. package/esm2020/lib/display/table/table-master-row.component.mjs +0 -163
  311. package/esm2020/lib/display/table/table-pagination.component.mjs +0 -155
  312. package/esm2020/lib/display/table/table-selectable-row.component.mjs +0 -235
  313. package/esm2020/lib/display/table/table.component.mjs +0 -249
  314. package/esm2020/lib/display/tags/tag.mjs +0 -18
  315. package/esm2020/lib/display/tags/tags.component.mjs +0 -77
  316. package/esm2020/lib/display/toast/toast/toast.component.mjs +0 -77
  317. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +0 -114
  318. package/esm2020/lib/display/tooltip-directive/tooltip.directive.mjs +0 -173
  319. package/esm2020/lib/display/tour/tour.component.mjs +0 -398
  320. package/esm2020/lib/display/tour/tour.service.mjs +0 -75
  321. package/esm2020/lib/display/tree/tree.component.mjs +0 -135
  322. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +0 -58
  323. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +0 -32
  324. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +0 -111
  325. package/esm2020/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +0 -100
  326. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +0 -163
  327. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +0 -50
  328. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +0 -30
  329. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +0 -62
  330. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +0 -48
  331. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +0 -41
  332. package/esm2020/lib/shared/display.mjs +0 -6
  333. package/esm2020/lib/shared/form-group.helper.mjs +0 -67
  334. package/esm2020/lib/shared/json-helper.mjs +0 -19
  335. package/esm2020/lib/shared/lodash-helper.mjs +0 -51
  336. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +0 -387
  337. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +0 -147
  338. package/esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +0 -98
  339. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +0 -246
  340. package/esm2020/public-api.mjs +0 -117
  341. package/fesm2015/energycap-components.mjs +0 -13371
  342. package/fesm2015/energycap-components.mjs.map +0 -1
  343. package/fesm2020/energycap-components.mjs.map +0 -1
  344. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +0 -42
  345. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +0 -21
  346. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +0 -21
  347. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +0 -21
  348. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +0 -18
  349. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +0 -18
  350. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +0 -21
  351. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +0 -20
  352. package/lib/controls/date-input/date-input.types.d.ts +0 -62
  353. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +0 -23
@@ -1,248 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
- import { range } from 'lodash';
3
- import moment from 'moment';
4
- import { DateTimeHelper } from '../../core/date-time-helper';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "./calendar-item.component";
8
- export class CalendarComponent {
9
- constructor() {
10
- this.id = 'calendar';
11
- this.selection = null;
12
- this.selectionMode = 'day';
13
- this.minDate = DateTimeHelper.minDatePickerDate;
14
- this.maxDate = DateTimeHelper.maxDatePickerDate;
15
- this.dateSelected = new EventEmitter();
16
- /** Determines the current view of the calendar. */
17
- this.view = { mode: 'day', date: new Date() };
18
- this.viewChange = new EventEmitter();
19
- /** Array of calendar item rows to display in the calendar. */
20
- this.calendarItems = [];
21
- /** Weekday labels to show at the top of the calendar in day view. */
22
- this.weekDays = moment.weekdaysShort().map(d => d.slice(0, 1));
23
- this.disablePreviousButton = false;
24
- this.disableNextButton = false;
25
- // Trackby functions for ngFor loops. These reduce the number of DOM elements that need to be updated when the calendar is re-drawn.
26
- // Without these there are some change-detection issues on the first-time rendering of the calendar.
27
- this.trackByDateRow = (index, row) => `${row[0].date.toISOString()}-${row[row.length - 1].date.toISOString()}`;
28
- this.trackByDate = (index, item) => item.date.toISOString();
29
- }
30
- ngOnChanges(changes) {
31
- if (changes.view) {
32
- this.drawCalendar(this.view);
33
- }
34
- if (changes.minDate || changes.maxDate) {
35
- this.updateNextPreviousStates();
36
- }
37
- }
38
- ngOnInit() {
39
- if (!this.calendarItems.length) {
40
- this.drawCalendar(this.view);
41
- }
42
- }
43
- onNextClick() {
44
- // If we're in day view, we're incrementing by month
45
- // In month, quarter, and year views we're incrementing by year\
46
- const unit = this.view.mode === 'day' ? 'month' : 'year';
47
- // In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
48
- const count = this.view.mode === 'year' ? 16 : 1;
49
- const goToDate = moment(this.view.date).add(count, unit).toDate();
50
- this.drawCalendar({ mode: this.view.mode, date: goToDate });
51
- }
52
- onPreviousClick() {
53
- // If we're in day view, we're incrementing by month
54
- // In month, quarter, and year views we're incrementing by year
55
- const unit = this.view.mode === 'day' ? 'month' : 'year';
56
- // In year view, we're moving by 16 years at a time. Otherwise we're just moving by 1 month/year.
57
- const count = this.view.mode === 'year' ? 16 : 1;
58
- const goToDate = moment(this.view.date).subtract(count, unit).toDate();
59
- this.drawCalendar({ mode: this.view.mode, date: goToDate });
60
- }
61
- /** Switches the calendar to month view. */
62
- onMonthClick() {
63
- this.drawCalendar({ mode: 'month', date: this.view.date });
64
- }
65
- /** Switches the calendar to year view. */
66
- onYearClick() {
67
- this.drawCalendar({ mode: 'year', date: this.view.date });
68
- }
69
- onItemSelected(item) {
70
- switch (this.view.mode) {
71
- case 'day':
72
- this.onDaySelected(item);
73
- break;
74
- case 'month':
75
- this.onMonthSelected(item);
76
- break;
77
- case 'quarter':
78
- this.onQuarterSelected(item);
79
- break;
80
- case 'year':
81
- this.onYearSelected(item);
82
- break;
83
- }
84
- }
85
- onYearSelected(item) {
86
- // If in year selection mode, emit the calendar item so the date picker can update the selection.
87
- if (this.selectionMode === 'year') {
88
- this.dateSelected.emit(item.date);
89
- // If we're in quarter selection mode, draw the quarter view.
90
- }
91
- else if (this.selectionMode === 'quarter') {
92
- this.drawCalendar({ mode: 'quarter', date: item.date });
93
- // All other selection modes should zoom in to the month view when a year is selected.
94
- }
95
- else {
96
- this.drawCalendar({ mode: 'month', date: item.date });
97
- }
98
- }
99
- onQuarterSelected(item) {
100
- // Quarter view is only accessible when in quarter selection mode,
101
- // so there's no other views to draw from here. Just emit the selected item.
102
- this.dateSelected.emit(item.date);
103
- }
104
- onMonthSelected(item) {
105
- // When in month selection mode, emit the selected month item and don't change the view.
106
- if (this.selectionMode === 'month') {
107
- this.dateSelected.emit(item.date);
108
- // Month view is only accessible from day, last7days, last28days, month, and range selection modes.
109
- // If we're not in month selection mode, we need to zoom in to the day view.
110
- }
111
- else {
112
- this.drawCalendar({ mode: 'day', date: item.date });
113
- }
114
- }
115
- onDaySelected(item) {
116
- // No further views other than day mode. Just emit the selected item.
117
- this.dateSelected.emit(item.date);
118
- }
119
- drawCalendar(view) {
120
- // If the view has changed, emit the new view.
121
- if (view.date !== this.view.date || view.mode !== this.view.mode) {
122
- this.view = view;
123
- this.viewChange.emit(view);
124
- }
125
- this.month = moment(this.view.date).format('MMM');
126
- this.year = moment(this.view.date).format('YYYY');
127
- this.calendarItems = this.getCalendarItems(this.view);
128
- const startYear = this.calendarItems[0][0].date < this.minDate ? this.minDate : this.calendarItems[0][0].date;
129
- const lastItem = this.getLastItem();
130
- const endYear = lastItem.date > this.maxDate ? this.maxDate : lastItem.date;
131
- this.yearRange = `${moment(startYear).format('YYYY')}&ndash;${moment(endYear).format('YYYY')}`;
132
- this.updateNextPreviousStates();
133
- }
134
- getCalendarItems(view) {
135
- switch (view.mode) {
136
- case 'day': return this.getDayViewItems(view.date);
137
- case 'month': return this.getMonthViewItems(view.date);
138
- case 'quarter': return this.getQuarterViewItems(view.date);
139
- case 'year': return this.getYearViewItems(view.date);
140
- }
141
- }
142
- getDayViewItems(activeDate) {
143
- // 6 rows of 7 days = 42 days
144
- return range(0, 6).map(r => {
145
- return range(0, 7).map(d => {
146
- // Use the start of the week of the first day of the month.
147
- // This pads out the first week with any days from the previous month.
148
- const date = moment(activeDate).startOf('month').startOf('week').add(r * 7 + d, 'day');
149
- return {
150
- date: date.toDate(),
151
- label: date.format('D')
152
- };
153
- });
154
- });
155
- }
156
- getMonthViewItems(activeDate) {
157
- // 4 rows of 3 months = 12 months
158
- return range(0, 4).map(r => {
159
- return range(0, 3).map(m => {
160
- const date = moment(activeDate).startOf('year').add(r * 3 + m, 'month');
161
- return {
162
- date: date.toDate(),
163
- label: date.format('MMM')
164
- };
165
- });
166
- });
167
- }
168
- getQuarterViewItems(activeDate) {
169
- // 2 rows of 2 quarters = 4 quarters
170
- return range(0, 2).map(r => {
171
- return range(0, 2).map(q => {
172
- const date = moment(activeDate).startOf('year').add(r * 2 + q, 'quarter');
173
- const endDate = moment(date).endOf('quarter');
174
- return {
175
- date: date.toDate(),
176
- label: `${date.format('MMM')}&ndash;${endDate.format('MMM')}`
177
- };
178
- });
179
- });
180
- }
181
- getYearViewItems(activeDate) {
182
- // 4 rows of 4 years = 16 years
183
- return range(0, 4).map(r => {
184
- return range(0, 4).map(y => {
185
- // Subtracting 8 years to put the current active year at the beginning of the 3rd row.
186
- const date = moment(activeDate).startOf('year').subtract(8, 'years').add(r * 4 + y, 'year');
187
- return {
188
- date: date.toDate(),
189
- label: date.format('YYYY')
190
- };
191
- });
192
- });
193
- }
194
- updateNextPreviousStates() {
195
- // We change the granularity of the min and max date checks based on the current view mode.
196
- // We don't want to disable the next/previous buttons if the min or max date is within the
197
- // next or previous view
198
- const unit = this.view.mode === 'day' ? 'month' : 'year';
199
- // When in year view, we need to subtract 9 years to determine if we're past the min date.
200
- // The year view is 16 years long, and the current date is the 9th year in the view.
201
- const subCount = this.view.mode === 'year' ? 9 : 1;
202
- if (moment(this.view.date).subtract(subCount, unit).isBefore(this.minDate, unit)) {
203
- this.disablePreviousButton = true;
204
- }
205
- else {
206
- this.disablePreviousButton = false;
207
- }
208
- // When in year view, we need to add 8 years to determine if we're past the max date.
209
- // The year view is 16 years long, and the current date is the 9th year in the view.
210
- const addCount = this.view.mode === 'year' ? 8 : 1;
211
- if (moment(this.view.date).add(addCount, unit).isAfter(this.maxDate, unit)) {
212
- this.disableNextButton = true;
213
- }
214
- else {
215
- this.disableNextButton = false;
216
- }
217
- }
218
- getLastItem() {
219
- const lastRow = this.calendarItems[this.calendarItems.length - 1];
220
- return lastRow[lastRow.length - 1];
221
- }
222
- }
223
- CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CalendarComponent, selector: "ec-calendar", inputs: { id: "id", selection: "selection", selectionMode: "selectionMode", minDate: "minDate", maxDate: "maxDate", view: "view" }, outputs: { dateSelected: "dateSelected", viewChange: "viewChange" }, host: { properties: { "attr.id": "this.id" } }, usesOnChanges: true, ngImport: i0, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view.mode === 'day'\"\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view.mode !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view.mode === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n</header>\r\n\r\n<div *ngIf=\"view.mode === 'day'\"\r\n class=\"mb-1 px-2 d-flex\">\r\n <h3 *ngFor=\"let day of weekDays\"\r\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\r\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\r\n</div>\r\n\r\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\r\n class=\"px-2 d-flex {{view.mode}}-view\"\r\n [class.mb-1]=\"!isLast\"\r\n [class.mb-2]=\"isLast\">\r\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\r\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n [item]=\"item\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [innerHTML]=\"item.label\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\">\r\n </button>\r\n</div>\r\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+ .is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.CalendarItemComponent, selector: "button[ec-calendar-item]", inputs: ["item", "selection", "view", "minDate", "maxDate"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CalendarComponent, decorators: [{
226
- type: Component,
227
- args: [{ selector: 'ec-calendar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"d-flex align-items-center mt-1 mb-2 px-1\">\r\n <button id=\"{{id}}_prev_button\"\r\n class=\"mr-auto\"\r\n (click)=\"onPreviousClick()\"\r\n [disabled]=\"disablePreviousButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-90\"></i>\r\n </button>\r\n\r\n <button *ngIf=\"view.mode === 'day'\"\r\n id=\"{{id}}_month_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onMonthClick()\">\r\n {{month}}\r\n </button>\r\n\r\n <button *ngIf=\"view.mode !== 'year'\"\r\n id=\"{{id}}_year_button\"\r\n class=\"text-body-1 font-weight-bold\"\r\n (click)=\"onYearClick()\">\r\n {{year}}\r\n </button>\r\n\r\n <div id=\"{{id}}_year_range\"\r\n *ngIf=\"view.mode === 'year'\"\r\n class=\"text-body-1 font-weight-bold\"\r\n [innerHTML]=\"yearRange\">\r\n </div>\r\n\r\n <button id=\"{{id}}_next_button\"\r\n class=\"ml-auto\"\r\n (click)=\"onNextClick()\"\r\n [disabled]=\"disableNextButton\">\r\n <i class=\"ec-icon icon-angle-down rotate-270\"></i>\r\n </button>\r\n</header>\r\n\r\n<div *ngIf=\"view.mode === 'day'\"\r\n class=\"mb-1 px-2 d-flex\">\r\n <h3 *ngFor=\"let day of weekDays\"\r\n class=\"text-heading-3 d-flex justify-content-center align-items-center\"\r\n style=\"width: 2rem; height: 1.75rem;\">{{day}}</h3>\r\n</div>\r\n\r\n<div *ngFor=\"let row of calendarItems; last as isLast; trackBy: trackByDateRow\"\r\n class=\"px-2 d-flex {{view.mode}}-view\"\r\n [class.mb-1]=\"!isLast\"\r\n [class.mb-2]=\"isLast\">\r\n <button *ngFor=\"let item of row; trackBy: trackByDate\"\r\n id=\"{{id}}_item_{{item.date | date:'MM_dd_yyyy'}}\"\r\n ec-calendar-item\r\n [item]=\"item\"\r\n [selection]=\"selection\"\r\n [view]=\"view\"\r\n (click)=\"onItemSelected(item)\"\r\n [innerHTML]=\"item.label\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\">\r\n </button>\r\n</div>\r\n", styles: [":host{display:inline-block}button{font-size:var(--ec-font-size-action);height:2rem;line-height:1.25rem;padding:.3125rem .5rem;border:0;border-radius:var(--ec-border-radius);display:flex;align-items:center;justify-content:center;cursor:pointer;background-color:transparent}button .label{display:flex;align-items:center;justify-content:center;white-space:nowrap;flex:auto}button .ec-icon{flex:none}button .ec-icon+.label{flex:none;margin-left:.25rem}button.has-badge{padding-right:.0625rem}button:focus{outline:none;position:relative;z-index:1}button:disabled{background-color:var(--ec-background-color-disabled);border:1px solid var(--ec-form-control-border-color-disabled);color:var(--ec-color-disabled-dark);opacity:var(--ec-form-control-opacity-disabled);cursor:default}button:disabled{background-color:transparent;border-color:transparent;color:var(--ec-color-hint-dark);--ec-color-icon: var(--ec-color-hint-dark)}button:hover:not(:disabled){background-color:var(--ec-background-color-hover)}button:active:not(:disabled){background-color:var(--ec-background-color-selected);font-weight:700}button:focus:not(:disabled){box-shadow:var(--ec-button-box-shadow-active, 0 0 0 2px var(--ec-border-color-focus))}button.is-selected{background-color:var(--ec-background-color-selected);font-weight:700}.day-view button{width:2rem;height:1.75rem}.month-view button{width:4.67rem;height:3.25rem}.quarter-view button{width:7rem;height:6.75rem}.year-view button{width:3.5rem;height:3.25rem}.is-selected:has(+ .is-selected:not(:disabled)){border-top-right-radius:0;border-bottom-right-radius:0}.is-selected:not(:disabled)+.is-selected{border-top-left-radius:0;border-bottom-left-radius:0}\n"] }]
228
- }], propDecorators: { id: [{
229
- type: HostBinding,
230
- args: ['attr.id']
231
- }, {
232
- type: Input
233
- }], selection: [{
234
- type: Input
235
- }], selectionMode: [{
236
- type: Input
237
- }], minDate: [{
238
- type: Input
239
- }], maxDate: [{
240
- type: Input
241
- }], dateSelected: [{
242
- type: Output
243
- }], view: [{
244
- type: Input
245
- }], viewChange: [{
246
- type: Output
247
- }] } });
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQy9JLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQVU3RCxNQUFNLE9BQU8saUJBQWlCO0lBTjlCO1FBU2tCLE9BQUUsR0FBVyxVQUFVLENBQUM7UUFFL0IsY0FBUyxHQUErQixJQUFJLENBQUM7UUFDN0Msa0JBQWEsR0FBNEIsS0FBSyxDQUFDO1FBRS9DLFlBQU8sR0FBUyxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFDakQsWUFBTyxHQUFTLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztRQUVoRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEQsbURBQW1EO1FBQ25DLFNBQUksR0FBa0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7UUFDdkQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBV2hFLDhEQUE4RDtRQUN2RCxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFFN0MscUVBQXFFO1FBQzlELGFBQVEs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R1MsSUFBSTtzQkFBbkIsS0FBSztnQkFDVyxVQUFVO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgcmFuZ2UgfSBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCB7IERhdGVUaW1lSGVscGVyIH0gZnJvbSAnLi4vLi4vY29yZS9kYXRlLXRpbWUtaGVscGVyJztcclxuaW1wb3J0IHsgRGF0ZUlucHV0IH0gZnJvbSAnLi4vZGF0ZS1pbnB1dC9kYXRlLWlucHV0LnR5cGVzJztcclxuaW1wb3J0IHsgQ2FsZW5kYXIgfSBmcm9tICcuL2NhbGVuZGFyLnR5cGVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtY2FsZW5kYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXHJcbiAgQElucHV0KCkgcHVibGljIGlkOiBzdHJpbmcgPSAnY2FsZW5kYXInO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3Rpb246IERhdGVJbnB1dC5TZWxlY3Rpb24gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBEYXRlSW5wdXQuU2VsZWN0aW9uTW9kZSA9ICdkYXknO1xyXG5cclxuICBASW5wdXQoKSBtaW5EYXRlOiBEYXRlID0gRGF0ZVRpbWVIZWxwZXIubWluRGF0ZVBpY2tlckRhdGU7XHJcbiAgQElucHV0KCkgbWF4RGF0ZTogRGF0ZSA9IERhdGVUaW1lSGVscGVyLm1heERhdGVQaWNrZXJEYXRlO1xyXG5cclxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICAvKiogRGV0ZXJtaW5lcyB0aGUgY3VycmVudCB2aWV3IG9mIHRoZSBjYWxlbmRhci4gKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdmlldzogQ2FsZW5kYXIuVmlldyA9IHsgbW9kZTogJ2RheScsIGRhdGU6IG5ldyBEYXRlKCkgfTtcclxuICBAT3V0cHV0KCkgcHVibGljIHZpZXdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENhbGVuZGFyLlZpZXc+KCk7XHJcblxyXG4gIC8qKiBNb250aCBvZiB0aGUgYWN0aXZlIGRhdGUgZGlzcGxheWVkIGluIHRoZSBoZWFkZXIgYnV0dG9ucy4gKi9cclxuICBwdWJsaWMgbW9udGg/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBZZWFyIG9mIHRoZSBhY3RpdmUgZGF0ZSBkaXNwbGF5ZWQgaW4gdGhlIGhlYWRlciBidXR0b25zLiAqL1xyXG4gIHB1YmxpYyB5ZWFyPzogc3RyaW5nO1xyXG5cclxuICAvKiogUmFuZ2Ugb2YgeWVhcnMgdG8gZGlzcGxheSBpbiB0aGUgeWVhciB2aWV3LiAqL1xyXG4gIHB1YmxpYyB5ZWFyUmFuZ2U/OiBzdHJpbmc7XHJcblxyXG4gIC8qKiBBcnJheSBvZiBjYWxlbmRhciBpdGVtIHJvd3MgdG8gZGlzcGxheSBpbiB0aGUgY2FsZW5kYXIuICovXHJcbiAgcHVibGljIGNhbGVuZGFySXRlbXM6IENhbGVuZGFyLkl0ZW1bXVtdID0gW107XHJcblxyXG4gIC8qKiBXZWVrZGF5IGxhYmVscyB0byBzaG93IGF0IHRoZSB0b3Agb2YgdGhlIGNhbGVuZGFyIGluIGRheSB2aWV3LiAqL1xyXG4gIHB1YmxpYyB3ZWVrRGF5cyA9IG1vbWVudC53ZWVrZGF5c1Nob3J0KCkubWFwKGQgPT4gZC5zbGljZSgwLCAxKSk7XHJcblxyXG4gIHB1YmxpYyBkaXNhYmxlUHJldmlvdXNCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgZGlzYWJsZU5leHRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gVHJhY2tieSBmdW5jdGlvbnMgZm9yIG5nRm9yIGxvb3BzLiBUaGVzZSByZWR1Y2UgdGhlIG51bWJlciBvZiBET00gZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgY2FsZW5kYXIgaXMgcmUtZHJhd24uXHJcbiAgLy8gV2l0aG91dCB0aGVzZSB0aGVyZSBhcmUgc29tZSBjaGFuZ2UtZGV0ZWN0aW9uIGlzc3VlcyBvbiB0aGUgZmlyc3QtdGltZSByZW5kZXJpbmcgb2YgdGhlIGNhbGVuZGFyLlxyXG4gIHB1YmxpYyB0cmFja0J5RGF0ZVJvdyA9IChpbmRleDogbnVtYmVyLCByb3c6IENhbGVuZGFyLkl0ZW1bXSkgPT4gYCR7cm93WzBdLmRhdGUudG9JU09TdHJpbmcoKX0tJHtyb3dbcm93Lmxlbmd0aCAtIDFdLmRhdGUudG9JU09TdHJpbmcoKX1gO1xyXG4gIHB1YmxpYyB0cmFja0J5RGF0ZSA9IChpbmRleDogbnVtYmVyLCBpdGVtOiBDYWxlbmRhci5JdGVtKSA9PiBpdGVtLmRhdGUudG9JU09TdHJpbmcoKTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMudmlldykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih0aGlzLnZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLm1pbkRhdGUgfHwgY2hhbmdlcy5tYXhEYXRlKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlTmV4dFByZXZpb3VzU3RhdGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jYWxlbmRhckl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih0aGlzLnZpZXcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmV4dENsaWNrKCk6IHZvaWQge1xyXG4gICAgLy8gSWYgd2UncmUgaW4gZGF5IHZpZXcsIHdlJ3JlIGluY3JlbWVudGluZyBieSBtb250aFxyXG4gICAgLy8gSW4gbW9udGgsIHF1YXJ0ZXIsIGFuZCB5ZWFyIHZpZXdzIHdlJ3JlIGluY3JlbWVudGluZyBieSB5ZWFyXFxcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lLiBPdGhlcndpc2Ugd2UncmUganVzdCBtb3ZpbmcgYnkgMSBtb250aC95ZWFyLlxyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gMTYgOiAxO1xyXG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLmFkZChjb3VudCwgdW5pdCkudG9EYXRlKCk7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6IHRoaXMudmlldy5tb2RlLCBkYXRlOiBnb1RvRGF0ZSB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblByZXZpb3VzQ2xpY2soKTogdm9pZCB7XHJcbiAgICAvLyBJZiB3ZSdyZSBpbiBkYXkgdmlldywgd2UncmUgaW5jcmVtZW50aW5nIGJ5IG1vbnRoXHJcbiAgICAvLyBJbiBtb250aCwgcXVhcnRlciwgYW5kIHllYXIgdmlld3Mgd2UncmUgaW5jcmVtZW50aW5nIGJ5IHllYXJcclxuICAgIGNvbnN0IHVuaXQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInO1xyXG4gICAgLy8gSW4geWVhciB2aWV3LCB3ZSdyZSBtb3ZpbmcgYnkgMTYgeWVhcnMgYXQgYSB0aW1lLiBPdGhlcndpc2Ugd2UncmUganVzdCBtb3ZpbmcgYnkgMSBtb250aC95ZWFyLlxyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gMTYgOiAxO1xyXG4gICAgY29uc3QgZ29Ub0RhdGUgPSBtb21lbnQodGhpcy52aWV3LmRhdGUpLnN1YnRyYWN0KGNvdW50LCB1bml0KS50b0RhdGUoKTtcclxuICAgIHRoaXMuZHJhd0NhbGVuZGFyKHsgbW9kZTogdGhpcy52aWV3Lm1vZGUsIGRhdGU6IGdvVG9EYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byBtb250aCB2aWV3LiAqL1xyXG4gIHB1YmxpYyBvbk1vbnRoQ2xpY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdtb250aCcsIGRhdGU6IHRoaXMudmlldy5kYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIFN3aXRjaGVzIHRoZSBjYWxlbmRhciB0byB5ZWFyIHZpZXcuICovXHJcbiAgcHVibGljIG9uWWVhckNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kcmF3Q2FsZW5kYXIoeyBtb2RlOiAneWVhcicsIGRhdGU6IHRoaXMudmlldy5kYXRlIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSXRlbVNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcclxuICAgIHN3aXRjaCh0aGlzLnZpZXcubW9kZSkge1xyXG4gICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgIHRoaXMub25EYXlTZWxlY3RlZChpdGVtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgIHRoaXMub25Nb250aFNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdxdWFydGVyJzpcclxuICAgICAgICB0aGlzLm9uUXVhcnRlclNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd5ZWFyJzpcclxuICAgICAgICB0aGlzLm9uWWVhclNlbGVjdGVkKGl0ZW0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblllYXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XHJcbiAgICAvLyBJZiBpbiB5ZWFyIHNlbGVjdGlvbiBtb2RlLCBlbWl0IHRoZSBjYWxlbmRhciBpdGVtIHNvIHRoZSBkYXRlIHBpY2tlciBjYW4gdXBkYXRlIHRoZSBzZWxlY3Rpb24uXHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAneWVhcicpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xyXG4gICAgLy8gSWYgd2UncmUgaW4gcXVhcnRlciBzZWxlY3Rpb24gbW9kZSwgZHJhdyB0aGUgcXVhcnRlciB2aWV3LlxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdxdWFydGVyJykge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdxdWFydGVyJywgZGF0ZTogaXRlbS5kYXRlIH0pO1xyXG4gICAgLy8gQWxsIG90aGVyIHNlbGVjdGlvbiBtb2RlcyBzaG91bGQgem9vbSBpbiB0byB0aGUgbW9udGggdmlldyB3aGVuIGEgeWVhciBpcyBzZWxlY3RlZC5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHJhd0NhbGVuZGFyKHsgbW9kZTogJ21vbnRoJywgZGF0ZTogaXRlbS5kYXRlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvblF1YXJ0ZXJTZWxlY3RlZChpdGVtOiBDYWxlbmRhci5JdGVtKTogdm9pZCB7XHJcbiAgICAvLyBRdWFydGVyIHZpZXcgaXMgb25seSBhY2Nlc3NpYmxlIHdoZW4gaW4gcXVhcnRlciBzZWxlY3Rpb24gbW9kZSxcclxuICAgIC8vIHNvIHRoZXJlJ3Mgbm8gb3RoZXIgdmlld3MgdG8gZHJhdyBmcm9tIGhlcmUuIEp1c3QgZW1pdCB0aGUgc2VsZWN0ZWQgaXRlbS5cclxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQoaXRlbS5kYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Nb250aFNlbGVjdGVkKGl0ZW06IENhbGVuZGFyLkl0ZW0pOiB2b2lkIHtcclxuICAgIC8vIFdoZW4gaW4gbW9udGggc2VsZWN0aW9uIG1vZGUsIGVtaXQgdGhlIHNlbGVjdGVkIG1vbnRoIGl0ZW0gYW5kIGRvbid0IGNoYW5nZSB0aGUgdmlldy5cclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtb250aCcpIHtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChpdGVtLmRhdGUpO1xyXG4gICAgLy8gTW9udGggdmlldyBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSBkYXksIGxhc3Q3ZGF5cywgbGFzdDI4ZGF5cywgbW9udGgsIGFuZCByYW5nZSBzZWxlY3Rpb24gbW9kZXMuXHJcbiAgICAvLyBJZiB3ZSdyZSBub3QgaW4gbW9udGggc2VsZWN0aW9uIG1vZGUsIHdlIG5lZWQgdG8gem9vbSBpbiB0byB0aGUgZGF5IHZpZXcuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYXdDYWxlbmRhcih7IG1vZGU6ICdkYXknLCBkYXRlOiBpdGVtLmRhdGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uRGF5U2VsZWN0ZWQoaXRlbTogQ2FsZW5kYXIuSXRlbSk6IHZvaWQge1xyXG4gICAgLy8gTm8gZnVydGhlciB2aWV3cyBvdGhlciB0aGFuIGRheSBtb2RlLiBKdXN0IGVtaXQgdGhlIHNlbGVjdGVkIGl0ZW0uXHJcbiAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KGl0ZW0uZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdDYWxlbmRhcih2aWV3OiBDYWxlbmRhci5WaWV3KTogdm9pZCB7XHJcbiAgICAvLyBJZiB0aGUgdmlldyBoYXMgY2hhbmdlZCwgZW1pdCB0aGUgbmV3IHZpZXcuXHJcbiAgICBpZiAodmlldy5kYXRlICE9PSB0aGlzLnZpZXcuZGF0ZSB8fCB2aWV3Lm1vZGUgIT09IHRoaXMudmlldy5tb2RlKSB7XHJcbiAgICAgIHRoaXMudmlldyA9IHZpZXc7XHJcbiAgICAgIHRoaXMudmlld0NoYW5nZS5lbWl0KHZpZXcpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLm1vbnRoID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5mb3JtYXQoJ01NTScpO1xyXG4gICAgdGhpcy55ZWFyID0gbW9tZW50KHRoaXMudmlldy5kYXRlKS5mb3JtYXQoJ1lZWVknKTtcclxuICAgIHRoaXMuY2FsZW5kYXJJdGVtcyA9IHRoaXMuZ2V0Q2FsZW5kYXJJdGVtcyh0aGlzLnZpZXcpO1xyXG5cclxuICAgIGNvbnN0IHN0YXJ0WWVhciA9IHRoaXMuY2FsZW5kYXJJdGVtc1swXVswXS5kYXRlIDwgdGhpcy5taW5EYXRlID8gdGhpcy5taW5EYXRlIDogdGhpcy5jYWxlbmRhckl0ZW1zWzBdWzBdLmRhdGU7XHJcbiAgICBjb25zdCBsYXN0SXRlbSA9IHRoaXMuZ2V0TGFzdEl0ZW0oKTtcclxuICAgIGNvbnN0IGVuZFllYXIgPSBsYXN0SXRlbS5kYXRlID4gdGhpcy5tYXhEYXRlID8gdGhpcy5tYXhEYXRlIDogbGFzdEl0ZW0uZGF0ZTtcclxuICAgIHRoaXMueWVhclJhbmdlID0gYCR7bW9tZW50KHN0YXJ0WWVhcikuZm9ybWF0KCdZWVlZJyl9Jm5kYXNoOyR7bW9tZW50KGVuZFllYXIpLmZvcm1hdCgnWVlZWScpfWA7XHJcblxyXG4gICAgdGhpcy51cGRhdGVOZXh0UHJldmlvdXNTdGF0ZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2FsZW5kYXJJdGVtcyh2aWV3OiBDYWxlbmRhci5WaWV3KTogQ2FsZW5kYXIuSXRlbVtdW10ge1xyXG4gICAgc3dpdGNoICh2aWV3Lm1vZGUpIHtcclxuICAgICAgY2FzZSAnZGF5JzogcmV0dXJuIHRoaXMuZ2V0RGF5Vmlld0l0ZW1zKHZpZXcuZGF0ZSk7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuIHRoaXMuZ2V0TW9udGhWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgICAgY2FzZSAncXVhcnRlcic6IHJldHVybiB0aGlzLmdldFF1YXJ0ZXJWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgICAgY2FzZSAneWVhcic6IHJldHVybiB0aGlzLmdldFllYXJWaWV3SXRlbXModmlldy5kYXRlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RGF5Vmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XHJcbiAgICAvLyA2IHJvd3Mgb2YgNyBkYXlzID0gNDIgZGF5c1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDYpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDcpLm1hcChkID0+IHtcclxuICAgICAgICAvLyBVc2UgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLlxyXG4gICAgICAgIC8vIFRoaXMgcGFkcyBvdXQgdGhlIGZpcnN0IHdlZWsgd2l0aCBhbnkgZGF5cyBmcm9tIHRoZSBwcmV2aW91cyBtb250aC5cclxuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ21vbnRoJykuc3RhcnRPZignd2VlaycpLmFkZChyICogNyArIGQsICdkYXknKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnRCcpXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TW9udGhWaWV3SXRlbXMoYWN0aXZlRGF0ZTogRGF0ZSk6IENhbGVuZGFyLkl0ZW1bXVtdIHtcclxuICAgIC8vIDQgcm93cyBvZiAzIG1vbnRocyA9IDEyIG1vbnRoc1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDMpLm1hcChtID0+IHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50KGFjdGl2ZURhdGUpLnN0YXJ0T2YoJ3llYXInKS5hZGQociAqIDMgKyBtLCAnbW9udGgnKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZGF0ZTogZGF0ZS50b0RhdGUoKSxcclxuICAgICAgICAgIGxhYmVsOiBkYXRlLmZvcm1hdCgnTU1NJylcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRRdWFydGVyVmlld0l0ZW1zKGFjdGl2ZURhdGU6IERhdGUpOiBDYWxlbmRhci5JdGVtW11bXSB7XHJcbiAgICAvLyAyIHJvd3Mgb2YgMiBxdWFydGVycyA9IDQgcXVhcnRlcnNcclxuICAgIHJldHVybiByYW5nZSgwLCAyKS5tYXAociA9PiB7XHJcbiAgICAgIHJldHVybiByYW5nZSgwLCAyKS5tYXAocSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG1vbWVudChhY3RpdmVEYXRlKS5zdGFydE9mKCd5ZWFyJykuYWRkKHIgKiAyICsgcSwgJ3F1YXJ0ZXInKTtcclxuICAgICAgICBjb25zdCBlbmREYXRlID0gbW9tZW50KGRhdGUpLmVuZE9mKCdxdWFydGVyJyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgICBsYWJlbDogYCR7ZGF0ZS5mb3JtYXQoJ01NTScpfSZuZGFzaDske2VuZERhdGUuZm9ybWF0KCdNTU0nKX1gXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0WWVhclZpZXdJdGVtcyhhY3RpdmVEYXRlOiBEYXRlKTogQ2FsZW5kYXIuSXRlbVtdW10ge1xyXG4gICAgLy8gNCByb3dzIG9mIDQgeWVhcnMgPSAxNiB5ZWFyc1xyXG4gICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcChyID0+IHtcclxuICAgICAgcmV0dXJuIHJhbmdlKDAsIDQpLm1hcCh5ID0+IHtcclxuICAgICAgICAvLyBTdWJ0cmFjdGluZyA4IHllYXJzIHRvIHB1dCB0aGUgY3VycmVudCBhY3RpdmUgeWVhciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAzcmQgcm93LlxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnQoYWN0aXZlRGF0ZSkuc3RhcnRPZigneWVhcicpLnN1YnRyYWN0KDgsICd5ZWFycycpLmFkZChyICogNCArIHksICd5ZWFyJyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGU6IGRhdGUudG9EYXRlKCksXHJcbiAgICAgICAgICBsYWJlbDogZGF0ZS5mb3JtYXQoJ1lZWVknKVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5leHRQcmV2aW91c1N0YXRlcygpOiB2b2lkIHtcclxuICAgIC8vIFdlIGNoYW5nZSB0aGUgZ3JhbnVsYXJpdHkgb2YgdGhlIG1pbiBhbmQgbWF4IGRhdGUgY2hlY2tzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZpZXcgbW9kZS5cclxuICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzYWJsZSB0aGUgbmV4dC9wcmV2aW91cyBidXR0b25zIGlmIHRoZSBtaW4gb3IgbWF4IGRhdGUgaXMgd2l0aGluIHRoZVxyXG4gICAgLy8gbmV4dCBvciBwcmV2aW91cyB2aWV3XHJcbiAgICBjb25zdCB1bml0ID0gdGhpcy52aWV3Lm1vZGUgPT09ICdkYXknID8gJ21vbnRoJyA6ICd5ZWFyJztcclxuXHJcbiAgICAvLyBXaGVuIGluIHllYXIgdmlldywgd2UgbmVlZCB0byBzdWJ0cmFjdCA5IHllYXJzIHRvIGRldGVybWluZSBpZiB3ZSdyZSBwYXN0IHRoZSBtaW4gZGF0ZS5cclxuICAgIC8vIFRoZSB5ZWFyIHZpZXcgaXMgMTYgeWVhcnMgbG9uZywgYW5kIHRoZSBjdXJyZW50IGRhdGUgaXMgdGhlIDl0aCB5ZWFyIGluIHRoZSB2aWV3LlxyXG4gICAgY29uc3Qgc3ViQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOSA6IDE7XHJcbiAgICBpZiAobW9tZW50KHRoaXMudmlldy5kYXRlKS5zdWJ0cmFjdChzdWJDb3VudCwgdW5pdCkuaXNCZWZvcmUodGhpcy5taW5EYXRlLCB1bml0KSkge1xyXG4gICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRpc2FibGVQcmV2aW91c0J1dHRvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdoZW4gaW4geWVhciB2aWV3LCB3ZSBuZWVkIHRvIGFkZCA4IHllYXJzIHRvIGRldGVybWluZSBpZiB3ZSdyZSBwYXN0IHRoZSBtYXggZGF0ZS5cclxuICAgIC8vIFRoZSB5ZWFyIHZpZXcgaXMgMTYgeWVhcnMgbG9uZywgYW5kIHRoZSBjdXJyZW50IGRhdGUgaXMgdGhlIDl0aCB5ZWFyIGluIHRoZSB2aWV3LlxyXG4gICAgY29uc3QgYWRkQ291bnQgPSB0aGlzLnZpZXcubW9kZSA9PT0gJ3llYXInID8gOCA6IDE7XHJcbiAgICBpZiAobW9tZW50KHRoaXMudmlldy5kYXRlKS5hZGQoYWRkQ291bnQsIHVuaXQpLmlzQWZ0ZXIodGhpcy5tYXhEYXRlLCB1bml0KSkge1xyXG4gICAgICB0aGlzLmRpc2FibGVOZXh0QnV0dG9uID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZU5leHRCdXR0b24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TGFzdEl0ZW0oKTogQ2FsZW5kYXIuSXRlbSB7XHJcbiAgICBjb25zdCBsYXN0Um93ID0gdGhpcy5jYWxlbmRhckl0ZW1zW3RoaXMuY2FsZW5kYXJJdGVtcy5sZW5ndGggLSAxXTtcclxuICAgIHJldHVybiBsYXN0Um93W2xhc3RSb3cubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG59XHJcbiIsIjxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG10LTEgbWItMiBweC0xXCI+XHJcbiAgPGJ1dHRvbiBpZD1cInt7aWR9fV9wcmV2X2J1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cIm1yLWF1dG9cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uUHJldmlvdXNDbGljaygpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUHJldmlvdXNCdXR0b25cIj5cclxuICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTkwXCI+PC9pPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwidmlldy5tb2RlID09PSAnZGF5J1wiXHJcbiAgICAgICAgICBpZD1cInt7aWR9fV9tb250aF9idXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktMSBmb250LXdlaWdodC1ib2xkXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbk1vbnRoQ2xpY2soKVwiPlxyXG4gICAge3ttb250aH19XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxidXR0b24gKm5nSWY9XCJ2aWV3Lm1vZGUgIT09ICd5ZWFyJ1wiXHJcbiAgICAgICAgICBpZD1cInt7aWR9fV95ZWFyX2J1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQtYm9keS0xIGZvbnQtd2VpZ2h0LWJvbGRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uWWVhckNsaWNrKClcIj5cclxuICAgIHt7eWVhcn19XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxkaXYgaWQ9XCJ7e2lkfX1feWVhcl9yYW5nZVwiXHJcbiAgICAgICAqbmdJZj1cInZpZXcubW9kZSA9PT0gJ3llYXInXCJcclxuICAgICAgIGNsYXNzPVwidGV4dC1ib2R5LTEgZm9udC13ZWlnaHQtYm9sZFwiXHJcbiAgICAgICBbaW5uZXJIVE1MXT1cInllYXJSYW5nZVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uIGlkPVwie3tpZH19X25leHRfYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwibWwtYXV0b1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25OZXh0Q2xpY2soKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZU5leHRCdXR0b25cIj5cclxuICAgIDxpIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTI3MFwiPjwvaT5cclxuICA8L2J1dHRvbj5cclxuPC9oZWFkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwidmlldy5tb2RlID09PSAnZGF5J1wiXHJcbiAgICAgY2xhc3M9XCJtYi0xIHB4LTIgZC1mbGV4XCI+XHJcbiAgPGgzICpuZ0Zvcj1cImxldCBkYXkgb2Ygd2Vla0RheXNcIlxyXG4gICAgICBjbGFzcz1cInRleHQtaGVhZGluZy0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDJyZW07IGhlaWdodDogMS43NXJlbTtcIj57e2RheX19PC9oMz5cclxuPC9kaXY+XHJcblxyXG48ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2YgY2FsZW5kYXJJdGVtczsgbGFzdCBhcyBpc0xhc3Q7IHRyYWNrQnk6IHRyYWNrQnlEYXRlUm93XCJcclxuICAgICBjbGFzcz1cInB4LTIgZC1mbGV4IHt7dmlldy5tb2RlfX0tdmlld1wiXHJcbiAgICAgW2NsYXNzLm1iLTFdPVwiIWlzTGFzdFwiXHJcbiAgICAgW2NsYXNzLm1iLTJdPVwiaXNMYXN0XCI+XHJcbiAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiByb3c7IHRyYWNrQnk6IHRyYWNrQnlEYXRlXCJcclxuICAgICAgICAgIGlkPVwie3tpZH19X2l0ZW1fe3tpdGVtLmRhdGUgfCBkYXRlOidNTV9kZF95eXl5J319XCJcclxuICAgICAgICAgIGVjLWNhbGVuZGFyLWl0ZW1cclxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgICAgW3NlbGVjdGlvbl09XCJzZWxlY3Rpb25cIlxyXG4gICAgICAgICAgW3ZpZXddPVwidmlld1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25JdGVtU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgW2lubmVySFRNTF09XCJpdGVtLmxhYmVsXCJcclxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvY2FsZW5kYXIvY2FsZW5kYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBuYW1lc3BhY2UgQ2FsZW5kYXIge1xyXG4gIGV4cG9ydCB0eXBlIFZpZXdNb2RlID0gJ2RheScgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xyXG5cclxuICBleHBvcnQgdHlwZSBWaWV3ID0ge1xyXG4gICAgbW9kZTogVmlld01vZGU7XHJcbiAgICBkYXRlOiBEYXRlO1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydCB0eXBlIEl0ZW0gPSB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgZGF0ZTogRGF0ZTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,140 +0,0 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { merge, Subject } from 'rxjs';
3
- import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
4
- import { FormControlBase } from "../form-control-base";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../core/validation-message.service";
7
- import * as i2 from "../../shared/form-group.helper";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "@angular/forms";
10
- import * as i5 from "../help-popover/help-popover.component";
11
- import * as i6 from "@ngx-translate/core";
12
- export class CheckboxComponent extends FormControlBase {
13
- constructor(validationMessageService, formGroupHelper) {
14
- super(validationMessageService, formGroupHelper);
15
- this.validationMessageService = validationMessageService;
16
- this.formGroupHelper = formGroupHelper;
17
- /**
18
- * The name of the checkbox input element
19
- */
20
- this.name = '';
21
- /**
22
- * Determines whether to ignore or include disabled dependent checkboxes in the check to determine the checkbox state.
23
- */
24
- this.ignoreDisabledDependents = true;
25
- /**
26
- * If the checkbox is a master checkbox (i.e. it has a dependentCheckboxesGroup),
27
- * indeterminate is true if there are some checked dependents and some unchecked dependents.
28
- */
29
- this.indeterminate = false;
30
- //Used to prevent valueChanges loops in the master checkbox and dependent checkboxes value changes.
31
- this.ignoreCall = false;
32
- /** Fired whenever the dependent checkboxes are changed to clear out subscriptions to the previous dependents */
33
- this.resetDependentSubscriptions = new Subject();
34
- }
35
- ngAfterViewInit() {
36
- if (this.autofocus) {
37
- this.inputElement.nativeElement.focus();
38
- }
39
- }
40
- ngOnChanges(changes) {
41
- if (changes.dependentCheckboxesGroup) {
42
- this.setupDependents();
43
- }
44
- }
45
- dispatchEvent(event) {
46
- if (event.type === 'click' && !this.formModel.disabled) {
47
- this.formModel.patchValue(!this.formModel.value);
48
- }
49
- }
50
- /**
51
- * Create watchers that allow the master and dependent checkbox states to stay in sync as the user interacts with them.
52
- * Dependents can update the master when their values change and the master updates dependents when the value changes.
53
- */
54
- setupDependents() {
55
- if (!this.dependentCheckboxesGroup) {
56
- return;
57
- }
58
- // Remove any subscriptions to previous dependents
59
- this.resetDependentSubscriptions.next();
60
- //Extract the values (i.e. the checkboxes) from the FormGroup controls key-value map and return them.
61
- let dependentCheckboxes = Object.values(this.dependentCheckboxesGroup.controls);
62
- this.updateMasterState(dependentCheckboxes);
63
- //When the master value changes, we set all its dependents to that value.
64
- //We also set indeterminate to false since we know that all dependents will either be checked or unchecked.
65
- this.formModel.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
66
- if (!this.ignoreCall) {
67
- this.ignoreCall = true; //Ignore any value changes calls on the dependents to prevent a loop.
68
- dependentCheckboxes.forEach(checkbox => {
69
- if (!checkbox.disabled || !this.ignoreDisabledDependents) {
70
- checkbox.setValue(value);
71
- }
72
- });
73
- this.indeterminate = false;
74
- this.ignoreCall = false;
75
- }
76
- });
77
- //When a dependent value changes, we need to reevaluate the master state.
78
- //We are subscribing to the form models directly instead of the entire group because we found that adding checkboxes to
79
- // more than one form group causes only the last group to emit valueChanges events.
80
- //That prevented combined row-master and table-master setups from working properly.
81
- dependentCheckboxes.forEach(checkbox => {
82
- checkbox.valueChanges.pipe(distinctUntilChanged(), takeUntil(merge(this.componentDestroyed, this.resetDependentSubscriptions))).subscribe((value) => {
83
- if (value !== true && value !== false) {
84
- console.error(`The value ${value} is not true or false, which are the only supported values for FormControls in the dependentCheckboxesGroup`);
85
- return;
86
- }
87
- if (!this.ignoreCall) {
88
- this.ignoreCall = true; //Ignore any value changes calls on the master to prevent a loop.
89
- this.updateMasterState(dependentCheckboxes);
90
- this.ignoreCall = false;
91
- }
92
- });
93
- });
94
- }
95
- /**
96
- * If all dependents are true, the master should be true and determinate.
97
- * If all dependents are false, the master should be false and determinate.
98
- * If some dependents are true and some dependents are false, the master should be false and indeterminate.
99
- *
100
- * If ignoreDisabledDependents is true, does not include the disabled dependents when checking values
101
- */
102
- updateMasterState(dependentCheckboxes) {
103
- let dependentsToCheck = [];
104
- if (this.ignoreDisabledDependents) {
105
- dependentsToCheck = dependentCheckboxes.filter(checkbox => checkbox.enabled);
106
- }
107
- else {
108
- dependentsToCheck = dependentCheckboxes;
109
- }
110
- let isTrue = (checkbox) => { return checkbox.value === true; };
111
- if (dependentsToCheck.every(isTrue)) {
112
- this.formModel.setValue(true);
113
- this.indeterminate = false;
114
- }
115
- else if (dependentsToCheck.some(isTrue)) {
116
- this.formModel.setValue(false);
117
- this.indeterminate = true;
118
- }
119
- else {
120
- this.formModel.setValue(false);
121
- this.indeterminate = false;
122
- }
123
- }
124
- }
125
- CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CheckboxComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Component });
126
- CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CheckboxComponent, selector: "ec-checkbox", inputs: { name: "name", dependentCheckboxesGroup: "dependentCheckboxesGroup", ignoreDisabledDependents: "ignoreDisabledDependents" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["checkboxInput"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.HelpPopoverComponent, selector: "ec-help-popover", inputs: ["id", "text", "contentPosition", "maxWidth"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CheckboxComponent, decorators: [{
128
- type: Component,
129
- args: [{ selector: 'ec-checkbox', template: "<div class=\"control\">\r\n <label class=\"checkbox\"\r\n [ngClass]=\"{'is-disabled': formModel.disabled, 'no-label': !label, 'is-readonly': readonly}\">\r\n <input id=\"{{id}}_input\"\r\n #checkboxInput\r\n class='input'\r\n [class.indeterminate]=\"indeterminate\"\r\n [attr.id]=\"inputId\"\r\n [attr.name]=\"name\"\r\n type=\"checkbox\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <i class=\"ec-icon icon-check\"></i>\r\n\r\n <span id=\"{{id}}_label\"\r\n *ngIf=\"label\"\r\n class=\"label\">\r\n <span [innerHtml]=\"label | translate\"></span>\r\n <ec-help-popover id=\"{{id}}_helpPopover\"\r\n *ngIf=\"helpPopover\"\r\n class=\"d-inline-block my-n2 mx-n1\"\r\n text=\"{{helpPopover | translate}}\"\r\n contentPosition=\"{{helpPopoverPosition}}\">\r\n </ec-help-popover>\r\n </span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}:host(.w-auto){width:auto}.checkbox{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.checkbox.is-disabled{cursor:default}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.ec-icon{color:var(--ec-form-control-border-color)}.input:not(:checked)+.ec-icon:before{display:none}.input.indeterminate+.ec-icon,.input:indeterminate+.ec-icon{color:var(--ec-color-interactive)}.input.indeterminate+.ec-icon:before,.input:indeterminate+.ec-icon:before{content:\"\";background-color:currentColor;display:block;width:10px;height:3px}.input:focus+.ec-icon{color:var(--ec-color-interactive);box-shadow:var(--ec-form-control-box-shadow-focus);border-color:var(--ec-form-control-border-color-focus)}.input:disabled+.ec-icon{color:var(--ec-form-control-color-disabled);background-color:var(--ec-form-control-background-color-disabled);border-color:var(--ec-form-control-border-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.input:disabled~.label{color:var(--ec-form-control-color-disabled);opacity:var(--ec-form-control-opacity-disabled)}.ec-icon{background-color:var(--ec-form-control-background-color);background-clip:padding-box;border:1px solid currentColor;color:var(--ec-color-interactive);margin-top:.5rem;flex:none;pointer-events:none;display:inline-flex;align-items:center;justify-content:center;height:1em;width:1em;border-radius:.125rem}.ec-icon:before{font-size:.6875em}.label{line-height:1.25rem;padding:.375rem 0;margin-left:.5rem;min-height:2rem;height:auto}.checkbox.is-readonly{pointer-events:none}.checkbox.is-readonly .input{opacity:0}.checkbox.is-readonly .ec-icon{background-color:var(--ec-form-control-background-color-readonly);border-color:var(--ec-form-control-border-color-readonly)}.checkbox.is-readonly .label,.checkbox.is-readonly .ec-icon{opacity:1;color:var(--ec-form-control-color)}.no-label .input,.no-label .icon-check{margin-top:0}\n"] }]
130
- }], ctorParameters: function () { return [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }]; }, propDecorators: { name: [{
131
- type: Input
132
- }], dependentCheckboxesGroup: [{
133
- type: Input
134
- }], ignoreDisabledDependents: [{
135
- type: Input
136
- }], inputElement: [{
137
- type: ViewChild,
138
- args: ['checkboxInput', { static: true }]
139
- }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQTRCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7OztBQVV2RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQXdDcEQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEM1Qzs7V0FFRztRQUNhLFNBQUksR0FBVyxFQUFFLENBQUM7UUFhbEM7O1dBRUc7UUFDYSw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFPekQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFdEMsbUdBQW1HO1FBQzNGLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEMsZ0hBQWdIO1FBQ3hHLGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFPMUQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUks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QUFuRSxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDbGlja2FibGVFbGVtZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2RpcmVjdGl2ZXMvY2xpY2stYXJlYS1mb3IvY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xCYXNlIH0gZnJvbSBcIi4uL2Zvcm0tY29udHJvbC1iYXNlXCI7XHJcblxyXG5leHBvcnQgdHlwZSBDaGVja2JveFN0YXRlID0gJ3VuY2hlY2tlZCcgfCAnaW5kZXRlcm1pbmF0ZScgfCAnY2hlY2tlZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLWNoZWNrYm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEZvcm1Db250cm9sQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENsaWNrYWJsZUVsZW1lbnQsIE9uQ2hhbmdlcyB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjaGVja2JveCBpbnB1dCBlbGVtZW50XHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBvYmplY3Qgd2l0aCBhIGNvbGxlY3Rpb24gb2YgRm9ybUNvbnRyb2xzIHdobyBjYW4gb25seSBoYXZlIGEgdmFsdWUgb2YgdHJ1ZSBvciBmYWxzZS5cclxuICAgKiBBIEZvcm1Hcm91cCBvciBGb3JtQXJyYXkgd29yayBmaW5lLCBvciBhIGN1c3RvbSBvYmplY3QgcmVmZXJlbmNlIGlzIHBvc3NpYmxlIHRvb1xyXG4gICAqIFRoZSBtYXN0ZXIgY2hlY2tib3ggd2lsbCByZWF0dGFjaCB0byBkZXBlbmRlbnQgY29udHJvbHMgYW55IHRpbWUgdGhpcyByZWZlcmVuY2UgY2hhbmdlc1xyXG4gICAqIFRoZSBjb250cm9scyBzaG91bGQgYmUgZmxhdCAoaS5lLiBpZiB1c2luZyBhIEZvcm1Hcm91cCB0aGVuIGl0IGNhbm5vdCBoYXZlIG5lc3RlZCBGb3JtR3JvdXBzIHdpdGhpbiBpdCkuXHJcbiAgICogXHJcbiAgICogRm9yIGV4YW1wbGU6IFxyXG4gICAqIGRlcGVuZGVudENoZWNrYm94ZXNHcm91cCA9IG5ldyBGb3JtR3JvdXAoe2NoaWxkMTogbmV3IEZvcm1Db250cm9sKGZhbHNlKSwgY2hpbGQyOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLCBjaGlsZDM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSl9KVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXA/OiB7Y29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdIHwge1trZXk6IHN0cmluZ106IEFic3RyYWN0Q29udHJvbH19O1xyXG5cclxuICAvKipcclxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gaWdub3JlIG9yIGluY2x1ZGUgZGlzYWJsZWQgZGVwZW5kZW50IGNoZWNrYm94ZXMgaW4gdGhlIGNoZWNrIHRvIGRldGVybWluZSB0aGUgY2hlY2tib3ggc3RhdGUuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGlnbm9yZURpc2FibGVkRGVwZW5kZW50czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY2hlY2tib3ggaW5wdXQgY29udHJvbFxyXG4gICovXHJcbiAgQFZpZXdDaGlsZCgnY2hlY2tib3hJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pIHByb3RlY3RlZCBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICAvKipcclxuICAgKiBJZiB0aGUgY2hlY2tib3ggaXMgYSBtYXN0ZXIgY2hlY2tib3ggKGkuZS4gaXQgaGFzIGEgZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSxcclxuICAgKiBpbmRldGVybWluYXRlIGlzIHRydWUgaWYgdGhlcmUgYXJlIHNvbWUgY2hlY2tlZCBkZXBlbmRlbnRzIGFuZCBzb21lIHVuY2hlY2tlZCBkZXBlbmRlbnRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbmRldGVybWluYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVXNlZCB0byBwcmV2ZW50IHZhbHVlQ2hhbmdlcyBsb29wcyBpbiB0aGUgbWFzdGVyIGNoZWNrYm94IGFuZCBkZXBlbmRlbnQgY2hlY2tib3hlcyB2YWx1ZSBjaGFuZ2VzLlxyXG4gIHByaXZhdGUgaWdub3JlQ2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogRmlyZWQgd2hlbmV2ZXIgdGhlIGRlcGVuZGVudCBjaGVja2JveGVzIGFyZSBjaGFuZ2VkIHRvIGNsZWFyIG91dCBzdWJzY3JpcHRpb25zIHRvIHRoZSBwcmV2aW91cyBkZXBlbmRlbnRzICovXHJcbiAgcHJpdmF0ZSByZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzLmRlcGVuZGVudENoZWNrYm94ZXNHcm91cCkge1xyXG4gICAgICB0aGlzLnNldHVwRGVwZW5kZW50cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiAhdGhpcy5mb3JtTW9kZWwuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwucGF0Y2hWYWx1ZSghdGhpcy5mb3JtTW9kZWwudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlIHdhdGNoZXJzIHRoYXQgYWxsb3cgdGhlIG1hc3RlciBhbmQgZGVwZW5kZW50IGNoZWNrYm94IHN0YXRlcyB0byBzdGF5IGluIHN5bmMgYXMgdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlbS4gXHJcbiAgICogRGVwZW5kZW50cyBjYW4gdXBkYXRlIHRoZSBtYXN0ZXIgd2hlbiB0aGVpciB2YWx1ZXMgY2hhbmdlIGFuZCB0aGUgbWFzdGVyIHVwZGF0ZXMgZGVwZW5kZW50cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLiBcclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwRGVwZW5kZW50cygpIHtcclxuICAgICAgaWYoIXRoaXMuZGVwZW5kZW50Q2hlY2tib3hlc0dyb3VwKSB7cmV0dXJufVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGFueSBzdWJzY3JpcHRpb25zIHRvIHByZXZpb3VzIGRlcGVuZGVudHNcclxuICAgICAgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMubmV4dCgpO1xyXG5cclxuICAgICAgLy9FeHRyYWN0IHRoZSB2YWx1ZXMgKGkuZS4gdGhlIGNoZWNrYm94ZXMpIGZyb20gdGhlIEZvcm1Hcm91cCBjb250cm9scyBrZXktdmFsdWUgbWFwIGFuZCByZXR1cm4gdGhlbS4gXHJcbiAgICAgIGxldCBkZXBlbmRlbnRDaGVja2JveGVzOiBBYnN0cmFjdENvbnRyb2xbXSA9IE9iamVjdC52YWx1ZXModGhpcy5kZXBlbmRlbnRDaGVja2JveGVzR3JvdXAuY29udHJvbHMpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVNYXN0ZXJTdGF0ZShkZXBlbmRlbnRDaGVja2JveGVzKTtcclxuXHJcbiAgICAgIC8vV2hlbiB0aGUgbWFzdGVyIHZhbHVlIGNoYW5nZXMsIHdlIHNldCBhbGwgaXRzIGRlcGVuZGVudHMgdG8gdGhhdCB2YWx1ZS5cclxuICAgICAgLy9XZSBhbHNvIHNldCBpbmRldGVybWluYXRlIHRvIGZhbHNlIHNpbmNlIHdlIGtub3cgdGhhdCBhbGwgZGVwZW5kZW50cyB3aWxsIGVpdGhlciBiZSBjaGVja2VkIG9yIHVuY2hlY2tlZC5cclxuICAgICAgdGhpcy5mb3JtTW9kZWwudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwobWVyZ2UodGhpcy5jb21wb25lbnREZXN0cm95ZWQsIHRoaXMucmVzZXREZXBlbmRlbnRTdWJzY3JpcHRpb25zKSlcclxuICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYoIXRoaXMuaWdub3JlQ2FsbCkge1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIGRlcGVuZGVudHMgdG8gcHJldmVudCBhIGxvb3AuXHJcbiAgICAgICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWNoZWNrYm94LmRpc2FibGVkIHx8ICF0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICAgICAgICAgIGNoZWNrYm94LnNldFZhbHVlKHZhbHVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgLy9XaGVuIGEgZGVwZW5kZW50IHZhbHVlIGNoYW5nZXMsIHdlIG5lZWQgdG8gcmVldmFsdWF0ZSB0aGUgbWFzdGVyIHN0YXRlLlxyXG4gICAgICAvL1dlIGFyZSBzdWJzY3JpYmluZyB0byB0aGUgZm9ybSBtb2RlbHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgZW50aXJlIGdyb3VwIGJlY2F1c2Ugd2UgZm91bmQgdGhhdCBhZGRpbmcgY2hlY2tib3hlcyB0byBcclxuICAgICAgLy8gIG1vcmUgdGhhbiBvbmUgZm9ybSBncm91cCBjYXVzZXMgb25seSB0aGUgbGFzdCBncm91cCB0byBlbWl0IHZhbHVlQ2hhbmdlcyBldmVudHMuIFxyXG4gICAgICAvL1RoYXQgcHJldmVudGVkIGNvbWJpbmVkIHJvdy1tYXN0ZXIgYW5kIHRhYmxlLW1hc3RlciBzZXR1cHMgZnJvbSB3b3JraW5nIHByb3Blcmx5LlxyXG4gICAgICBkZXBlbmRlbnRDaGVja2JveGVzLmZvckVhY2goY2hlY2tib3ggPT4ge1xyXG4gICAgICAgICAgY2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbChtZXJnZSh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCwgdGhpcy5yZXNldERlcGVuZGVudFN1YnNjcmlwdGlvbnMpKVxyXG4gICAgICAgICAgKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHZhbHVlICE9PSB0cnVlICYmIHZhbHVlICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHZhbHVlICR7dmFsdWV9IGlzIG5vdCB0cnVlIG9yIGZhbHNlLCB3aGljaCBhcmUgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlcyBmb3IgRm9ybUNvbnRyb2xzIGluIHRoZSBkZXBlbmRlbnRDaGVja2JveGVzR3JvdXBgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZighdGhpcy5pZ25vcmVDYWxsKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pZ25vcmVDYWxsID0gdHJ1ZTsgLy9JZ25vcmUgYW55IHZhbHVlIGNoYW5nZXMgY2FsbHMgb24gdGhlIG1hc3RlciB0byBwcmV2ZW50IGEgbG9vcC5cclxuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXMpO1xyXG4gICAgICAgICAgICAgIHRoaXMuaWdub3JlQ2FsbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqIFxyXG4gICAqIElmIGFsbCBkZXBlbmRlbnRzIGFyZSB0cnVlLCB0aGUgbWFzdGVyIHNob3VsZCBiZSB0cnVlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBhbGwgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBkZXRlcm1pbmF0ZS5cclxuICAgKiBJZiBzb21lIGRlcGVuZGVudHMgYXJlIHRydWUgYW5kIHNvbWUgZGVwZW5kZW50cyBhcmUgZmFsc2UsIHRoZSBtYXN0ZXIgc2hvdWxkIGJlIGZhbHNlIGFuZCBpbmRldGVybWluYXRlLlxyXG4gICAqIFxyXG4gICAqIElmIGlnbm9yZURpc2FibGVkRGVwZW5kZW50cyBpcyB0cnVlLCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkaXNhYmxlZCBkZXBlbmRlbnRzIHdoZW4gY2hlY2tpbmcgdmFsdWVzXHJcbiAgKi9cclxuICBwcml2YXRlIHVwZGF0ZU1hc3RlclN0YXRlKGRlcGVuZGVudENoZWNrYm94ZXM6IEFic3RyYWN0Q29udHJvbFtdKSB7XHJcbiAgICBsZXQgZGVwZW5kZW50c1RvQ2hlY2sgPSBbXTtcclxuICAgIGlmICh0aGlzLmlnbm9yZURpc2FibGVkRGVwZW5kZW50cykge1xyXG4gICAgICBkZXBlbmRlbnRzVG9DaGVjayA9IGRlcGVuZGVudENoZWNrYm94ZXMuZmlsdGVyKGNoZWNrYm94ID0+IGNoZWNrYm94LmVuYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVwZW5kZW50c1RvQ2hlY2sgPSBkZXBlbmRlbnRDaGVja2JveGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1RydWUgPSAoY2hlY2tib3g6IEFic3RyYWN0Q29udHJvbCkgPT4ge3JldHVybiBjaGVja2JveC52YWx1ZSA9PT0gdHJ1ZX07XHJcbiAgICBpZihkZXBlbmRlbnRzVG9DaGVjay5ldmVyeShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYoZGVwZW5kZW50c1RvQ2hlY2suc29tZShpc1RydWUpKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59IiwiPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cclxuICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2lzLWRpc2FibGVkJzogZm9ybU1vZGVsLmRpc2FibGVkLCAnbm8tbGFiZWwnOiAhbGFiZWwsICdpcy1yZWFkb25seSc6IHJlYWRvbmx5fVwiPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBpZD1cInt7aWR9fV9pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICNjaGVja2JveElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSdpbnB1dCdcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cInt7dGFiaW5kZXh9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiYXV0b2ZvY3VzIHx8IG51bGxcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVja1wiPjwvaT5cclxuXHJcbiAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ7e2lkfX1fbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySHRtbF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgPGVjLWhlbHAtcG9wb3ZlciBpZD1cInt7aWR9fV9oZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoZWxwUG9wb3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWlubGluZS1ibG9jayBteS1uMiBteC1uMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1cInt7aGVscFBvcG92ZXIgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFBvc2l0aW9uPVwie3toZWxwUG9wb3ZlclBvc2l0aW9ufX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgPC9lYy1oZWxwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgPC9sYWJlbD5cclxuPC9kaXY+Il19