@sebgroup/green-angular 6.8.0 → 7.0.0-rc.20251125130141487

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 (516) hide show
  1. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs +13 -13
  2. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -1
  3. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs +9 -8
  4. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs.map +1 -1
  5. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs +9 -8
  6. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs.map +1 -1
  7. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs +17 -15
  8. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -1
  9. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs +9 -9
  10. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -1
  11. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs +9 -9
  12. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -1
  13. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs +17 -15
  14. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -1
  15. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs +9 -9
  16. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -1
  17. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs +30 -28
  18. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs.map +1 -1
  19. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs +9 -9
  20. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -1
  21. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs +9 -9
  22. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -1
  23. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs +9 -9
  24. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -1
  25. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +43 -38
  26. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  27. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs +9 -9
  28. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs.map +1 -1
  29. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs +9 -9
  30. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -1
  31. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +7 -7
  32. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -1
  33. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +9 -9
  34. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -1
  35. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +13 -10
  36. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  37. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +9 -9
  38. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +9 -9
  40. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  41. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +8 -8
  42. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  43. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +9 -8
  44. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  45. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +9 -9
  46. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  47. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +3 -3
  48. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  49. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +52 -43
  50. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
  51. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +19 -16
  52. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -1
  53. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +32 -32
  54. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  55. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +9 -8
  56. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  57. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +19 -16
  58. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  59. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +9 -9
  60. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  61. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +13 -11
  62. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  63. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +9 -9
  64. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  65. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +22 -21
  66. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  67. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +9 -9
  68. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -1
  69. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +16 -16
  70. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  71. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +8 -7
  72. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  73. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +28 -24
  74. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
  75. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +13 -12
  76. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -1
  77. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +9 -9
  78. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  79. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +12 -12
  80. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -1
  81. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +9 -8
  82. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  83. package/fesm2022/sebgroup-green-angular-v-angular.mjs +347 -317
  84. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  85. package/fesm2022/sebgroup-green-angular.mjs +201 -188
  86. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  87. package/package.json +8 -94
  88. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  89. package/src/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  90. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +1 -1
  91. package/v-angular/drag-drop/drag-drop.component.d.ts +3 -3
  92. package/esm2022/index.mjs +0 -18
  93. package/esm2022/lib/accordion/accordion-list-item.component.mjs +0 -50
  94. package/esm2022/lib/accordion/accordion.component.mjs +0 -77
  95. package/esm2022/lib/accordion/accordion.module.mjs +0 -24
  96. package/esm2022/lib/accordion/index.mjs +0 -4
  97. package/esm2022/lib/badge/badge.component.mjs +0 -85
  98. package/esm2022/lib/badge/badge.module.mjs +0 -23
  99. package/esm2022/lib/badge/index.mjs +0 -3
  100. package/esm2022/lib/button/button.component.mjs +0 -28
  101. package/esm2022/lib/button/button.module.mjs +0 -18
  102. package/esm2022/lib/button/index.mjs +0 -3
  103. package/esm2022/lib/cell-table/cell-table-item.component.mjs +0 -91
  104. package/esm2022/lib/cell-table/cell-table.component.mjs +0 -97
  105. package/esm2022/lib/cell-table/cell-table.module.mjs +0 -26
  106. package/esm2022/lib/cell-table/cell-table.types.mjs +0 -7
  107. package/esm2022/lib/cell-table/cell-underline.directive.mjs +0 -55
  108. package/esm2022/lib/cell-table/index.mjs +0 -4
  109. package/esm2022/lib/context-menu/context-menu.component.mjs +0 -79
  110. package/esm2022/lib/context-menu/context-menu.module.mjs +0 -37
  111. package/esm2022/lib/context-menu/index.mjs +0 -3
  112. package/esm2022/lib/datepicker/datepicker.component.mjs +0 -144
  113. package/esm2022/lib/datepicker/datepicker.module.mjs +0 -37
  114. package/esm2022/lib/datepicker/index.mjs +0 -3
  115. package/esm2022/lib/dropdown/dropdown-button.directive.mjs +0 -16
  116. package/esm2022/lib/dropdown/dropdown-option.directive.mjs +0 -16
  117. package/esm2022/lib/dropdown/dropdown.component.mjs +0 -248
  118. package/esm2022/lib/dropdown/dropdown.module.mjs +0 -51
  119. package/esm2022/lib/dropdown/index.mjs +0 -5
  120. package/esm2022/lib/green-angular.module.mjs +0 -72
  121. package/esm2022/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  122. package/esm2022/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  123. package/esm2022/lib/in-page-wizard/index.mjs +0 -3
  124. package/esm2022/lib/modal/index.mjs +0 -5
  125. package/esm2022/lib/modal/modal-footer.directive.mjs +0 -16
  126. package/esm2022/lib/modal/modal-header.directive.mjs +0 -16
  127. package/esm2022/lib/modal/modal.component.mjs +0 -317
  128. package/esm2022/lib/modal/modal.module.mjs +0 -44
  129. package/esm2022/lib/pagination/index.mjs +0 -3
  130. package/esm2022/lib/pagination/pagination.component.mjs +0 -175
  131. package/esm2022/lib/pagination/pagination.module.mjs +0 -18
  132. package/esm2022/lib/progress-circle/index.mjs +0 -3
  133. package/esm2022/lib/progress-circle/progress-circle.component.mjs +0 -41
  134. package/esm2022/lib/progress-circle/progress-circle.module.mjs +0 -18
  135. package/esm2022/lib/segmented-control/index.mjs +0 -3
  136. package/esm2022/lib/segmented-control/segmented-control.component.mjs +0 -38
  137. package/esm2022/lib/segmented-control/segmented-control.module.mjs +0 -22
  138. package/esm2022/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  139. package/esm2022/lib/shared/core-control/core-control.directive.mjs +0 -94
  140. package/esm2022/lib/shared/core-control/core-control.module.mjs +0 -20
  141. package/esm2022/lib/shared/core-control/index.mjs +0 -4
  142. package/esm2022/lib/shared/core-element/core-element.directive.mjs +0 -34
  143. package/esm2022/lib/shared/core-element/core-element.module.mjs +0 -18
  144. package/esm2022/lib/shared/core-element/index.mjs +0 -3
  145. package/esm2022/lib/shared/core-renderer/core-renderer.mjs +0 -152
  146. package/esm2022/lib/shared/core-renderer/index.mjs +0 -2
  147. package/esm2022/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  148. package/esm2022/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  149. package/esm2022/lib/shared/core-router-link/index.mjs +0 -3
  150. package/esm2022/lib/shared/index.mjs +0 -7
  151. package/esm2022/lib/shared/on-scroll.directive.mjs +0 -47
  152. package/esm2022/lib/shared/scope-resolver.mjs +0 -9
  153. package/esm2022/lib/shared/shared.module.mjs +0 -19
  154. package/esm2022/lib/slider/index.mjs +0 -3
  155. package/esm2022/lib/slider/slider.component.mjs +0 -116
  156. package/esm2022/lib/slider/slider.module.mjs +0 -19
  157. package/esm2022/lib/sortable-list/index.mjs +0 -3
  158. package/esm2022/lib/sortable-list/sortable-list.component.mjs +0 -181
  159. package/esm2022/lib/sortable-list/sortable-list.module.mjs +0 -20
  160. package/esm2022/sebgroup-green-angular.mjs +0 -5
  161. package/esm2022/src/lib/accordion/accordion-list-item.component.mjs +0 -50
  162. package/esm2022/src/lib/accordion/accordion.component.mjs +0 -77
  163. package/esm2022/src/lib/accordion/accordion.module.mjs +0 -24
  164. package/esm2022/src/lib/accordion/index.mjs +0 -4
  165. package/esm2022/src/lib/accordion/sebgroup-green-angular-src-lib-accordion.mjs +0 -5
  166. package/esm2022/src/lib/badge/badge.component.mjs +0 -85
  167. package/esm2022/src/lib/badge/badge.module.mjs +0 -23
  168. package/esm2022/src/lib/badge/index.mjs +0 -3
  169. package/esm2022/src/lib/badge/sebgroup-green-angular-src-lib-badge.mjs +0 -5
  170. package/esm2022/src/lib/button/button.component.mjs +0 -28
  171. package/esm2022/src/lib/button/button.module.mjs +0 -18
  172. package/esm2022/src/lib/button/index.mjs +0 -3
  173. package/esm2022/src/lib/button/sebgroup-green-angular-src-lib-button.mjs +0 -5
  174. package/esm2022/src/lib/cell-table/cell-table-item.component.mjs +0 -91
  175. package/esm2022/src/lib/cell-table/cell-table.component.mjs +0 -97
  176. package/esm2022/src/lib/cell-table/cell-table.module.mjs +0 -26
  177. package/esm2022/src/lib/cell-table/cell-table.types.mjs +0 -7
  178. package/esm2022/src/lib/cell-table/cell-underline.directive.mjs +0 -55
  179. package/esm2022/src/lib/cell-table/index.mjs +0 -4
  180. package/esm2022/src/lib/cell-table/sebgroup-green-angular-src-lib-cell-table.mjs +0 -5
  181. package/esm2022/src/lib/context-menu/context-menu.component.mjs +0 -79
  182. package/esm2022/src/lib/context-menu/context-menu.module.mjs +0 -37
  183. package/esm2022/src/lib/context-menu/index.mjs +0 -3
  184. package/esm2022/src/lib/context-menu/sebgroup-green-angular-src-lib-context-menu.mjs +0 -5
  185. package/esm2022/src/lib/datepicker/datepicker.component.mjs +0 -144
  186. package/esm2022/src/lib/datepicker/datepicker.module.mjs +0 -37
  187. package/esm2022/src/lib/datepicker/index.mjs +0 -3
  188. package/esm2022/src/lib/datepicker/sebgroup-green-angular-src-lib-datepicker.mjs +0 -5
  189. package/esm2022/src/lib/dropdown/dropdown-button.directive.mjs +0 -16
  190. package/esm2022/src/lib/dropdown/dropdown-option.directive.mjs +0 -16
  191. package/esm2022/src/lib/dropdown/dropdown.component.mjs +0 -248
  192. package/esm2022/src/lib/dropdown/dropdown.module.mjs +0 -51
  193. package/esm2022/src/lib/dropdown/index.mjs +0 -5
  194. package/esm2022/src/lib/dropdown/sebgroup-green-angular-src-lib-dropdown.mjs +0 -5
  195. package/esm2022/src/lib/in-page-wizard/in-page-wizard-step-card.component.mjs +0 -61
  196. package/esm2022/src/lib/in-page-wizard/in-page-wizard.module.mjs +0 -18
  197. package/esm2022/src/lib/in-page-wizard/index.mjs +0 -3
  198. package/esm2022/src/lib/in-page-wizard/sebgroup-green-angular-src-lib-in-page-wizard.mjs +0 -5
  199. package/esm2022/src/lib/modal/index.mjs +0 -5
  200. package/esm2022/src/lib/modal/modal-footer.directive.mjs +0 -16
  201. package/esm2022/src/lib/modal/modal-header.directive.mjs +0 -16
  202. package/esm2022/src/lib/modal/modal.component.mjs +0 -317
  203. package/esm2022/src/lib/modal/modal.module.mjs +0 -44
  204. package/esm2022/src/lib/modal/sebgroup-green-angular-src-lib-modal.mjs +0 -5
  205. package/esm2022/src/lib/pagination/index.mjs +0 -3
  206. package/esm2022/src/lib/pagination/pagination.component.mjs +0 -175
  207. package/esm2022/src/lib/pagination/pagination.module.mjs +0 -18
  208. package/esm2022/src/lib/pagination/sebgroup-green-angular-src-lib-pagination.mjs +0 -5
  209. package/esm2022/src/lib/progress-circle/index.mjs +0 -3
  210. package/esm2022/src/lib/progress-circle/progress-circle.component.mjs +0 -41
  211. package/esm2022/src/lib/progress-circle/progress-circle.module.mjs +0 -18
  212. package/esm2022/src/lib/progress-circle/sebgroup-green-angular-src-lib-progress-circle.mjs +0 -5
  213. package/esm2022/src/lib/segmented-control/index.mjs +0 -3
  214. package/esm2022/src/lib/segmented-control/sebgroup-green-angular-src-lib-segmented-control.mjs +0 -5
  215. package/esm2022/src/lib/segmented-control/segmented-control.component.mjs +0 -38
  216. package/esm2022/src/lib/segmented-control/segmented-control.module.mjs +0 -22
  217. package/esm2022/src/lib/shared/core-control/core-checkbox.directive.mjs +0 -39
  218. package/esm2022/src/lib/shared/core-control/core-control.directive.mjs +0 -94
  219. package/esm2022/src/lib/shared/core-control/core-control.module.mjs +0 -20
  220. package/esm2022/src/lib/shared/core-control/index.mjs +0 -4
  221. package/esm2022/src/lib/shared/core-element/core-element.directive.mjs +0 -34
  222. package/esm2022/src/lib/shared/core-element/core-element.module.mjs +0 -18
  223. package/esm2022/src/lib/shared/core-element/index.mjs +0 -3
  224. package/esm2022/src/lib/shared/core-renderer/core-renderer.mjs +0 -152
  225. package/esm2022/src/lib/shared/core-renderer/index.mjs +0 -2
  226. package/esm2022/src/lib/shared/core-router-link/core-router-link.directive.mjs +0 -53
  227. package/esm2022/src/lib/shared/core-router-link/core-router-link.module.mjs +0 -16
  228. package/esm2022/src/lib/shared/core-router-link/index.mjs +0 -3
  229. package/esm2022/src/lib/shared/index.mjs +0 -7
  230. package/esm2022/src/lib/shared/on-scroll.directive.mjs +0 -47
  231. package/esm2022/src/lib/shared/scope-resolver.mjs +0 -9
  232. package/esm2022/src/lib/shared/sebgroup-green-angular-src-lib-shared.mjs +0 -5
  233. package/esm2022/src/lib/shared/shared.module.mjs +0 -19
  234. package/esm2022/src/lib/slider/index.mjs +0 -3
  235. package/esm2022/src/lib/slider/sebgroup-green-angular-src-lib-slider.mjs +0 -5
  236. package/esm2022/src/lib/slider/slider.component.mjs +0 -116
  237. package/esm2022/src/lib/slider/slider.module.mjs +0 -19
  238. package/esm2022/src/lib/sortable-list/index.mjs +0 -3
  239. package/esm2022/src/lib/sortable-list/sebgroup-green-angular-src-lib-sortable-list.mjs +0 -5
  240. package/esm2022/src/lib/sortable-list/sortable-list.component.mjs +0 -181
  241. package/esm2022/src/lib/sortable-list/sortable-list.module.mjs +0 -20
  242. package/esm2022/src/v-angular/account-number/account-number.module.mjs +0 -18
  243. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +0 -55
  244. package/esm2022/src/v-angular/account-number/index.mjs +0 -3
  245. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +0 -5
  246. package/esm2022/src/v-angular/alert/alert.component.mjs +0 -49
  247. package/esm2022/src/v-angular/alert/alert.models.mjs +0 -8
  248. package/esm2022/src/v-angular/alert/alert.module.mjs +0 -18
  249. package/esm2022/src/v-angular/alert/index.mjs +0 -4
  250. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +0 -5
  251. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  252. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  253. package/esm2022/src/v-angular/base-control-value-accessor/index.mjs +0 -3
  254. package/esm2022/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +0 -5
  255. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  256. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  257. package/esm2022/src/v-angular/breadcrumbs/index.mjs +0 -3
  258. package/esm2022/src/v-angular/breadcrumbs/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +0 -5
  259. package/esm2022/src/v-angular/button/button.component.mjs +0 -108
  260. package/esm2022/src/v-angular/button/button.module.mjs +0 -20
  261. package/esm2022/src/v-angular/button/index.mjs +0 -3
  262. package/esm2022/src/v-angular/button/sebgroup-green-angular-src-v-angular-button.mjs +0 -5
  263. package/esm2022/src/v-angular/card/card.component.mjs +0 -11
  264. package/esm2022/src/v-angular/card/card.module.mjs +0 -18
  265. package/esm2022/src/v-angular/card/index.mjs +0 -3
  266. package/esm2022/src/v-angular/card/sebgroup-green-angular-src-v-angular-card.mjs +0 -5
  267. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  268. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  269. package/esm2022/src/v-angular/character-countdown/index.mjs +0 -3
  270. package/esm2022/src/v-angular/character-countdown/sebgroup-green-angular-src-v-angular-character-countdown.mjs +0 -5
  271. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +0 -94
  272. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +0 -21
  273. package/esm2022/src/v-angular/checkbox/index.mjs +0 -3
  274. package/esm2022/src/v-angular/checkbox/sebgroup-green-angular-src-v-angular-checkbox.mjs +0 -5
  275. package/esm2022/src/v-angular/core/core.globals.mjs +0 -20
  276. package/esm2022/src/v-angular/core/core.utils.mjs +0 -62
  277. package/esm2022/src/v-angular/core/index.mjs +0 -3
  278. package/esm2022/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.mjs +0 -5
  279. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  280. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  281. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  282. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  283. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  284. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +0 -20
  285. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +0 -56
  286. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +0 -63
  287. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +0 -196
  288. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  289. package/esm2022/src/v-angular/datepicker/index.mjs +0 -17
  290. package/esm2022/src/v-angular/datepicker/models/dates.mjs +0 -291
  291. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  292. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  293. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  294. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +0 -5
  295. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  296. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  297. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  298. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  299. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  300. package/esm2022/src/v-angular/drag-drop/index.mjs +0 -5
  301. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +0 -5
  302. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  303. package/esm2022/src/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  304. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +0 -303
  305. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +0 -38
  306. package/esm2022/src/v-angular/dropdown/index.mjs +0 -6
  307. package/esm2022/src/v-angular/dropdown/sebgroup-green-angular-src-v-angular-dropdown.mjs +0 -5
  308. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +0 -6
  309. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  310. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  311. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  312. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  313. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  314. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +0 -37
  315. package/esm2022/src/v-angular/external-link/external-link.module.mjs +0 -18
  316. package/esm2022/src/v-angular/external-link/index.mjs +0 -3
  317. package/esm2022/src/v-angular/external-link/sebgroup-green-angular-src-v-angular-external-link.mjs +0 -5
  318. package/esm2022/src/v-angular/i18n/i18n.json +0 -13
  319. package/esm2022/src/v-angular/i18n/i18n.module.mjs +0 -89
  320. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +0 -89
  321. package/esm2022/src/v-angular/i18n/index.mjs +0 -3
  322. package/esm2022/src/v-angular/i18n/sebgroup-green-angular-src-v-angular-i18n.mjs +0 -5
  323. package/esm2022/src/v-angular/info-circle/index.mjs +0 -3
  324. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +0 -28
  325. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +0 -21
  326. package/esm2022/src/v-angular/info-circle/sebgroup-green-angular-src-v-angular-info-circle.mjs +0 -5
  327. package/esm2022/src/v-angular/input/index.mjs +0 -3
  328. package/esm2022/src/v-angular/input/input.component.mjs +0 -248
  329. package/esm2022/src/v-angular/input/input.module.mjs +0 -41
  330. package/esm2022/src/v-angular/input/sebgroup-green-angular-src-v-angular-input.mjs +0 -5
  331. package/esm2022/src/v-angular/input-mask/config.mjs +0 -9
  332. package/esm2022/src/v-angular/input-mask/constants.mjs +0 -2
  333. package/esm2022/src/v-angular/input-mask/index.mjs +0 -6
  334. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  335. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +0 -165
  336. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +0 -35
  337. package/esm2022/src/v-angular/input-mask/input-mask.types.mjs +0 -2
  338. package/esm2022/src/v-angular/input-mask/sebgroup-green-angular-src-v-angular-input-mask.mjs +0 -5
  339. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +0 -242
  340. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  341. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  342. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  343. package/esm2022/src/v-angular/modal/index.mjs +0 -6
  344. package/esm2022/src/v-angular/modal/modal.globals.mjs +0 -20
  345. package/esm2022/src/v-angular/modal/modal.module.mjs +0 -53
  346. package/esm2022/src/v-angular/modal/modal.types.mjs +0 -2
  347. package/esm2022/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.mjs +0 -5
  348. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  349. package/esm2022/src/v-angular/pagination/index.mjs +0 -3
  350. package/esm2022/src/v-angular/pagination/pagination.component.mjs +0 -144
  351. package/esm2022/src/v-angular/pagination/pagination.module.mjs +0 -37
  352. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +0 -5
  353. package/esm2022/src/v-angular/radio/index.mjs +0 -4
  354. package/esm2022/src/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  355. package/esm2022/src/v-angular/radio/radio.component.mjs +0 -153
  356. package/esm2022/src/v-angular/radio/radio.module.mjs +0 -22
  357. package/esm2022/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.mjs +0 -5
  358. package/esm2022/src/v-angular/slug/index.mjs +0 -3
  359. package/esm2022/src/v-angular/slug/sebgroup-green-angular-src-v-angular-slug.mjs +0 -5
  360. package/esm2022/src/v-angular/slug/slug.module.mjs +0 -18
  361. package/esm2022/src/v-angular/slug/slug.pipe.mjs +0 -27
  362. package/esm2022/src/v-angular/table/index.mjs +0 -9
  363. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +0 -5
  364. package/esm2022/src/v-angular/table/table.component.mjs +0 -426
  365. package/esm2022/src/v-angular/table/table.directive.mjs +0 -110
  366. package/esm2022/src/v-angular/table/table.models.mjs +0 -2
  367. package/esm2022/src/v-angular/table/table.module.mjs +0 -40
  368. package/esm2022/src/v-angular/table/table.tools.mjs +0 -29
  369. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +0 -22
  370. package/esm2022/src/v-angular/tabs/index.mjs +0 -8
  371. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +0 -5
  372. package/esm2022/src/v-angular/tabs/tab.directive.mjs +0 -81
  373. package/esm2022/src/v-angular/tabs/tabs.component.mjs +0 -262
  374. package/esm2022/src/v-angular/tabs/tabs.models.mjs +0 -2
  375. package/esm2022/src/v-angular/tabs/tabs.module.mjs +0 -21
  376. package/esm2022/src/v-angular/textarea/index.mjs +0 -3
  377. package/esm2022/src/v-angular/textarea/sebgroup-green-angular-src-v-angular-textarea.mjs +0 -5
  378. package/esm2022/src/v-angular/textarea/textarea.component.mjs +0 -129
  379. package/esm2022/src/v-angular/textarea/textarea.module.mjs +0 -34
  380. package/esm2022/src/v-angular/toast/index.mjs +0 -8
  381. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +0 -5
  382. package/esm2022/src/v-angular/toast/toast-message.service.mjs +0 -82
  383. package/esm2022/src/v-angular/toast/toast.component.mjs +0 -66
  384. package/esm2022/src/v-angular/toast/toast.models.mjs +0 -8
  385. package/esm2022/src/v-angular/toast/toast.module.mjs +0 -21
  386. package/esm2022/src/v-angular/tooltip/index.mjs +0 -3
  387. package/esm2022/src/v-angular/tooltip/sebgroup-green-angular-src-v-angular-tooltip.mjs +0 -5
  388. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +0 -293
  389. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +0 -18
  390. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +0 -60
  391. package/esm2022/v-angular/account-number/account-number.module.mjs +0 -18
  392. package/esm2022/v-angular/account-number/account-number.pipe.mjs +0 -55
  393. package/esm2022/v-angular/account-number/index.mjs +0 -3
  394. package/esm2022/v-angular/alert/alert.component.mjs +0 -49
  395. package/esm2022/v-angular/alert/alert.models.mjs +0 -8
  396. package/esm2022/v-angular/alert/alert.module.mjs +0 -18
  397. package/esm2022/v-angular/alert/index.mjs +0 -4
  398. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +0 -300
  399. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +0 -17
  400. package/esm2022/v-angular/base-control-value-accessor/index.mjs +0 -3
  401. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +0 -25
  402. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +0 -20
  403. package/esm2022/v-angular/breadcrumbs/index.mjs +0 -3
  404. package/esm2022/v-angular/button/button.component.mjs +0 -108
  405. package/esm2022/v-angular/button/button.module.mjs +0 -20
  406. package/esm2022/v-angular/button/index.mjs +0 -3
  407. package/esm2022/v-angular/card/card.component.mjs +0 -11
  408. package/esm2022/v-angular/card/card.module.mjs +0 -18
  409. package/esm2022/v-angular/card/index.mjs +0 -3
  410. package/esm2022/v-angular/character-countdown/character-countdown.directive.mjs +0 -51
  411. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +0 -18
  412. package/esm2022/v-angular/character-countdown/index.mjs +0 -3
  413. package/esm2022/v-angular/checkbox/checkbox.component.mjs +0 -94
  414. package/esm2022/v-angular/checkbox/checkbox.module.mjs +0 -21
  415. package/esm2022/v-angular/checkbox/index.mjs +0 -3
  416. package/esm2022/v-angular/core/core.globals.mjs +0 -20
  417. package/esm2022/v-angular/core/core.utils.mjs +0 -62
  418. package/esm2022/v-angular/core/index.mjs +0 -3
  419. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +0 -200
  420. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +0 -115
  421. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +0 -238
  422. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +0 -192
  423. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +0 -411
  424. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +0 -20
  425. package/esm2022/v-angular/datepicker/datepicker.models.mjs +0 -56
  426. package/esm2022/v-angular/datepicker/datepicker.module.mjs +0 -63
  427. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +0 -196
  428. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +0 -47
  429. package/esm2022/v-angular/datepicker/index.mjs +0 -17
  430. package/esm2022/v-angular/datepicker/models/dates.mjs +0 -291
  431. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +0 -30
  432. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +0 -37
  433. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +0 -17
  434. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +0 -497
  435. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +0 -2
  436. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +0 -49
  437. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +0 -70
  438. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +0 -76
  439. package/esm2022/v-angular/drag-drop/index.mjs +0 -5
  440. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +0 -380
  441. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +0 -2
  442. package/esm2022/v-angular/dropdown/dropdown.component.mjs +0 -303
  443. package/esm2022/v-angular/dropdown/dropdown.module.mjs +0 -38
  444. package/esm2022/v-angular/dropdown/index.mjs +0 -6
  445. package/esm2022/v-angular/dropdown/typeahead/index.mjs +0 -6
  446. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +0 -110
  447. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +0 -85
  448. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +0 -138
  449. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +0 -186
  450. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +0 -33
  451. package/esm2022/v-angular/external-link/external-link.directive.mjs +0 -37
  452. package/esm2022/v-angular/external-link/external-link.module.mjs +0 -18
  453. package/esm2022/v-angular/external-link/index.mjs +0 -3
  454. package/esm2022/v-angular/i18n/i18n.json +0 -13
  455. package/esm2022/v-angular/i18n/i18n.module.mjs +0 -89
  456. package/esm2022/v-angular/i18n/i18n.test.module.mjs +0 -89
  457. package/esm2022/v-angular/i18n/index.mjs +0 -3
  458. package/esm2022/v-angular/index.mjs +0 -29
  459. package/esm2022/v-angular/info-circle/index.mjs +0 -3
  460. package/esm2022/v-angular/info-circle/info-circle.component.mjs +0 -28
  461. package/esm2022/v-angular/info-circle/info-circle.module.mjs +0 -21
  462. package/esm2022/v-angular/input/index.mjs +0 -3
  463. package/esm2022/v-angular/input/input.component.mjs +0 -248
  464. package/esm2022/v-angular/input/input.module.mjs +0 -41
  465. package/esm2022/v-angular/input-mask/config.mjs +0 -9
  466. package/esm2022/v-angular/input-mask/constants.mjs +0 -2
  467. package/esm2022/v-angular/input-mask/index.mjs +0 -6
  468. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +0 -21
  469. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +0 -165
  470. package/esm2022/v-angular/input-mask/input-mask.module.mjs +0 -35
  471. package/esm2022/v-angular/input-mask/input-mask.types.mjs +0 -2
  472. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +0 -242
  473. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +0 -167
  474. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +0 -19
  475. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +0 -10
  476. package/esm2022/v-angular/modal/index.mjs +0 -6
  477. package/esm2022/v-angular/modal/modal.globals.mjs +0 -20
  478. package/esm2022/v-angular/modal/modal.module.mjs +0 -53
  479. package/esm2022/v-angular/modal/modal.types.mjs +0 -2
  480. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +0 -253
  481. package/esm2022/v-angular/pagination/index.mjs +0 -3
  482. package/esm2022/v-angular/pagination/pagination.component.mjs +0 -144
  483. package/esm2022/v-angular/pagination/pagination.module.mjs +0 -37
  484. package/esm2022/v-angular/radio/index.mjs +0 -4
  485. package/esm2022/v-angular/radio/radio-group/radio-group.component.mjs +0 -86
  486. package/esm2022/v-angular/radio/radio.component.mjs +0 -153
  487. package/esm2022/v-angular/radio/radio.module.mjs +0 -22
  488. package/esm2022/v-angular/sebgroup-green-angular-v-angular.mjs +0 -5
  489. package/esm2022/v-angular/slug/index.mjs +0 -3
  490. package/esm2022/v-angular/slug/slug.module.mjs +0 -18
  491. package/esm2022/v-angular/slug/slug.pipe.mjs +0 -27
  492. package/esm2022/v-angular/table/index.mjs +0 -9
  493. package/esm2022/v-angular/table/table.component.mjs +0 -426
  494. package/esm2022/v-angular/table/table.directive.mjs +0 -110
  495. package/esm2022/v-angular/table/table.models.mjs +0 -2
  496. package/esm2022/v-angular/table/table.module.mjs +0 -40
  497. package/esm2022/v-angular/table/table.tools.mjs +0 -29
  498. package/esm2022/v-angular/table/tr-thook.pipe.mjs +0 -22
  499. package/esm2022/v-angular/tabs/index.mjs +0 -8
  500. package/esm2022/v-angular/tabs/tab.directive.mjs +0 -81
  501. package/esm2022/v-angular/tabs/tabs.component.mjs +0 -262
  502. package/esm2022/v-angular/tabs/tabs.models.mjs +0 -2
  503. package/esm2022/v-angular/tabs/tabs.module.mjs +0 -21
  504. package/esm2022/v-angular/textarea/index.mjs +0 -3
  505. package/esm2022/v-angular/textarea/textarea.component.mjs +0 -129
  506. package/esm2022/v-angular/textarea/textarea.module.mjs +0 -34
  507. package/esm2022/v-angular/toast/index.mjs +0 -8
  508. package/esm2022/v-angular/toast/toast-message.service.mjs +0 -82
  509. package/esm2022/v-angular/toast/toast.component.mjs +0 -66
  510. package/esm2022/v-angular/toast/toast.models.mjs +0 -8
  511. package/esm2022/v-angular/toast/toast.module.mjs +0 -21
  512. package/esm2022/v-angular/tooltip/index.mjs +0 -3
  513. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +0 -293
  514. package/esm2022/v-angular/tooltip/tooltip.module.mjs +0 -18
  515. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +0 -60
  516. package/esm2022/v-angular/v-angular.module.mjs +0 -132
@@ -1,238 +0,0 @@
1
- import '../../datepicker.globals';
2
- import '@sebgroup/green-core/components/icon/icons/calendar.js';
3
- import '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js';
4
- import { WeekDay } from '@angular/common';
5
- import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
6
- import { NgControl } from '@angular/forms';
7
- import { TRANSLOCO_SCOPE, TranslocoService, } from '@jsverse/transloco';
8
- import { fromEvent, Subject } from 'rxjs';
9
- import { startWith, takeUntil } from 'rxjs/operators';
10
- import { DateControlValueAccessorComponent } from '../../date-control-value-accessor/date-control-value-accessor.component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@angular/forms";
13
- import * as i2 from "@jsverse/transloco";
14
- import * as i3 from "@angular/common";
15
- import * as i4 from "@sebgroup/green-angular/src/v-angular/input-mask";
16
- import * as i5 from "@sebgroup/green-angular/src/lib/shared";
17
- import * as i6 from "../datepicker/datepicker.component";
18
- /**
19
- * Date pickers simplify the task of selecting a date in a visual representation of a calendar.
20
- * https://designlibrary.sebgroup.com/components/component-datepicker
21
- *
22
- * Selector: `nggv-dateinput`
23
- *
24
- * When focusing an date element, the calendar allows for navigation using both tab and arrow keys.
25
- * Pressing 'esc' will close the calendar.
26
- *
27
- * Requires TranslocoLocale, but in turn allows for setting locale dynamically:
28
- * https://jsverse.github.io/transloco/docs/plugins/locale/#manually-setting-locale
29
- *
30
- * To configure TranslocoLocale, follow this guide:
31
- * https://jsverse.github.io/transloco/docs/plugins/locale/#setup
32
- */
33
- export class DateInputComponent extends DateControlValueAccessorComponent {
34
- get isSmall() {
35
- return this.size === 'small';
36
- }
37
- get isLarge() {
38
- return this.size === 'large';
39
- }
40
- constructor(ngControl, translocoScope, transloco, elementRef, cdr) {
41
- super(ngControl, translocoScope, elementRef, cdr, transloco);
42
- this.ngControl = ngControl;
43
- this.translocoScope = translocoScope;
44
- this.transloco = transloco;
45
- this.elementRef = elementRef;
46
- this.cdr = cdr;
47
- /** Special property used for selecting DOM elements during automated UI testing. */
48
- this.thook = 'date-input';
49
- /** Set type of calendar: either 'normal' or 'expanded'. Default is 'normal'. */
50
- this.type = 'normal';
51
- /** If set to true, the value will not be editable. */
52
- this.readonly = false;
53
- /**
54
- * An array of Dates or parsable strings that corresponds with dates that should not be selectable in the calendar.
55
- * I.e. bank holidays.
56
- */
57
- this.disableDates = [];
58
- /**
59
- * An array of weekdays that should not be selectable in the calendar.
60
- * Can be used together with or instead of @Input() disableDates.
61
- */
62
- this.disableWeekDays = [];
63
- /** Mininum number of rows shown in the calendar. */
64
- this.minRows = 5;
65
- /** Sets first day of week in calendar. Defaults to Monday. */
66
- this.firstDayOfWeek = WeekDay.Monday;
67
- /** If set to true, it will allow to close the calendar on escape button click. */
68
- this.closeCalendarOnEscape = true;
69
- /** If the date-input should close when scrolling the viewport. Default: false*/
70
- this.closeOnScroll = false;
71
- /**
72
- * Sets the displayed size of the date input field.
73
- */
74
- this.size = 'large';
75
- this.dynamicPosition = false;
76
- /** @internal */
77
- // calendarIcon: IconDefinition = faCalendarDays;
78
- /** @internal */
79
- this.shown = false;
80
- /** @internal */
81
- this.showInput$ = this.showInputDateSrc.asObservable().pipe(startWith(true));
82
- /** Observable for listening to scrolls when the datepicker is open */
83
- this.documentScroll$ = fromEvent(document, 'scroll');
84
- /** Observable for listening to clicks outside of the datepicker. */
85
- this.documentClick$ = fromEvent(document, 'click');
86
- /** Subject used for unsubscribe pattern on above observable. */
87
- this.datepickerClosed$ = new Subject();
88
- // this.showInput$ = this.showInputDateSrc.asObservable()
89
- }
90
- ngOnDestroy() {
91
- this.datepickerClosed$.next(true);
92
- this.datepickerClosed$.complete();
93
- }
94
- /**
95
- * @internal
96
- * Called from the datepicker-component when a date button is clicked in the calendar.
97
- *
98
- * @param date date object emitted when selecting a date in the datepicker.
99
- */
100
- onDateChange(date) {
101
- // control value accessor will ensure correct formatting of state
102
- this.state = DateControlValueAccessorComponent.parseDateLike(date);
103
- // emit state
104
- this.onChange(this.state);
105
- // close datepicker and move focus to datepicker button
106
- this.setShown(false);
107
- setTimeout(() => this.toggleButtonRef?.nativeElement.focus(), 1);
108
- }
109
- /**
110
- * @internal
111
- * Called when entering date manually in input field.
112
- */
113
- onValueChange(eventTarget) {
114
- // Will be in the format selected in inputMask
115
- const value = `${eventTarget.inputmask.undoValue}` ?? '';
116
- // Use parserfunction from inputMask to parse to a date object since value can be in multiple formats
117
- // Then ontrol value accessor will ensure correct formatting of state
118
- const parsedDate = DateControlValueAccessorComponent.parseDateLike(this.dateInputMask.parser(value));
119
- this.state = parsedDate;
120
- // emit parsed date
121
- this.onChange(parsedDate);
122
- this.onTouched();
123
- }
124
- /**
125
- * @internal
126
- * Listen to 'esc' keypress and closes datepicker if open.
127
- */
128
- keyListener(event) {
129
- if (this.closeCalendarOnEscape && event.key === 'Escape')
130
- this.setShown(false);
131
- }
132
- /** @internal */
133
- toggleDatepicker() {
134
- this.setShown(!this.shown);
135
- }
136
- /** To externally trigger the datepicker to close. */
137
- close() {
138
- this.setShown(false);
139
- }
140
- /**
141
- * Set the shown state of the datepicker popup. If true the popup will be visible.
142
- * If the state is set to false, call onTouched to notify any state listeners
143
- * @param state the shown state which to set.
144
- */
145
- setShown(state = true) {
146
- this.shown = state;
147
- if (!this.shown) {
148
- // if shown is set to false, stop listening to clicks
149
- this.datepickerClosed$.next(true);
150
- return this.onTouched();
151
- }
152
- // if shown is set to true, reset unsubscribe variable
153
- this.datepickerClosed$.next(false);
154
- // start listen to scroll if closeOnScroll is enabled
155
- if (this.closeOnScroll) {
156
- this.documentScroll$.pipe(takeUntil(this.datepickerClosed$)).subscribe({
157
- next: () => {
158
- // if document starts scrolling, close datepicker
159
- return this.setShown(false);
160
- },
161
- });
162
- }
163
- // start listening for clicks outside the component
164
- this.documentClick$.pipe(takeUntil(this.datepickerClosed$)).subscribe({
165
- next: (event) => {
166
- // clicking on a gray date causes the datepicker to reload the calendar dates,
167
- // and the button element clicked will no longer be considered as a child of the datepicker.
168
- // but the event target path will still contain the parent element
169
- // if target has datepicker parent, keep listening
170
- const eventPath = event.composedPath();
171
- const hasDatepickerParent = !!eventPath.find((e) => e === this.elementRef.nativeElement);
172
- if (hasDatepickerParent)
173
- return;
174
- // else the click is considered to be outside, close datepicker
175
- return this.setShown(false);
176
- },
177
- });
178
- }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i2.TranslocoService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
180
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateInputComponent, selector: "nggv-dateinput,nggv-input[type=date]", inputs: { thook: "thook", type: "type", readonly: "readonly", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minRows: "minRows", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", firstDayOfWeek: "firstDayOfWeek", closeCalendarOnEscape: "closeCalendarOnEscape", closeOnScroll: "closeOnScroll", size: "size", dynamicPosition: "dynamicPosition" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook", "class.small": "this.isSmall", "class.large": "this.isLarge" } }, viewQueries: [{ propertyName: "toggleButtonRef", first: true, predicate: ["toggleCalendarButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n @if (size === 'small') {\n <gds-icon-calendar *nggCoreElement size=\"16px\"></gds-icon-calendar>\n }\n\n @if (size === 'large') {\n <gds-icon-calendar *nggCoreElement size=\"20px\"></gds-icon-calendar>\n }\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n [dynamicPosition]=\"dynamicPosition\"\n [size]=\"size\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:border .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 3px);min-height:calc(2rem + 3px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.NggvInputMaskDirective, selector: "[nggvInputMask]", inputs: ["nggvInputMask"] }, { kind: "directive", type: i5.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "component", type: i6.DatepickerComponent, selector: "nggv-datepicker", inputs: ["firstDayOfWeek", "disableDates", "disableWeekDays", "minCalendarRows", "selected", "locale", "type", "firstValid", "lastValid", "closingTime", "dynamicPosition", "size"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
181
- }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateInputComponent, decorators: [{
183
- type: Component,
184
- args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n @if (size === 'small') {\n <gds-icon-calendar *nggCoreElement size=\"16px\"></gds-icon-calendar>\n }\n\n @if (size === 'large') {\n <gds-icon-calendar *nggCoreElement size=\"20px\"></gds-icon-calendar>\n }\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n [dynamicPosition]=\"dynamicPosition\"\n [size]=\"size\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:block;position:relative}@media (max-width: 47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label{display:block}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.form-control:focus,:host .gds-field-label.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+button,:host .gds-field-label+.group-stepper,:host .gds-field-label+.stepper-wrapper,:host .gds-field-label+.group{margin-top:.5rem}:host .gds-field-label+.form-info{margin-bottom:.5rem}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.form-control:focus,:host .gds-field-label--optional.form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+button,:host .gds-field-label--optional+.group-stepper,:host .gds-field-label--optional+.stepper-wrapper,:host .gds-field-label--optional+.group{margin-top:.5rem}:host .gds-field-label--optional+.form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;height:2.625rem;display:flex}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);font-weight:500;min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center;transition:border .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;border-color:#333;color:#333;--color: rgb(51, 51, 51);background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date:focus-visible{background-color:#333;color:#fff;--background: rgb(51, 51, 51);--color: rgb(255, 255, 255);border-color:#333!important}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}@media (max-width: 47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media (max-width: 35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px 0 0 4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit;border:none;min-height:2.375rem;width:100%;padding-left:1rem}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 3px);min-height:calc(2rem + 3px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\n"] }]
185
- }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
186
- type: Self
187
- }, {
188
- type: Optional
189
- }] }, { type: undefined, decorators: [{
190
- type: Optional
191
- }, {
192
- type: Inject,
193
- args: [TRANSLOCO_SCOPE]
194
- }] }, { type: i2.TranslocoService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { toggleButtonRef: [{
195
- type: ViewChild,
196
- args: ['toggleCalendarButton']
197
- }], thook: [{
198
- type: HostBinding,
199
- args: ['attr.data-thook']
200
- }, {
201
- type: Input
202
- }], isSmall: [{
203
- type: HostBinding,
204
- args: ['class.small']
205
- }], isLarge: [{
206
- type: HostBinding,
207
- args: ['class.large']
208
- }], type: [{
209
- type: Input
210
- }], readonly: [{
211
- type: Input
212
- }], disableDates: [{
213
- type: Input
214
- }], disableWeekDays: [{
215
- type: Input
216
- }], minRows: [{
217
- type: Input
218
- }], firstValid: [{
219
- type: Input
220
- }], lastValid: [{
221
- type: Input
222
- }], closingTime: [{
223
- type: Input
224
- }], firstDayOfWeek: [{
225
- type: Input
226
- }], closeCalendarOnEscape: [{
227
- type: Input
228
- }], closeOnScroll: [{
229
- type: Input
230
- }], size: [{
231
- type: Input
232
- }], dynamicPosition: [{
233
- type: Input
234
- }], keyListener: [{
235
- type: HostListener,
236
- args: ['keydown', ['$event']]
237
- }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLHdEQUF3RCxDQUFBO0FBQy9ELE9BQU8sb0VBQW9FLENBQUE7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFDLE9BQU8sRUFDTCxlQUFlLEVBRWYsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQTs7Ozs7Ozs7QUFJM0g7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFNSCxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxpQ0FBaUM7SUFTekMsSUFBZ0MsT0FBTztR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aUI7O3NCQUFHLEtBQUs7Z0JBR04sT0FBTztzQkFBdEMsV0FBVzt1QkFBQyxhQUFhO2dCQUlNLE9BQU87c0JBQXRDLFdBQVc7dUJBQUMsYUFBYTtnQkFLakIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLElBQUk7c0JBQVosS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQThFTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi9kYXRlcGlja2VyLmdsb2JhbHMnXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG5pbXBvcnQgeyBXZWVrRGF5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBUUkFOU0xPQ09fU0NPUEUsXG4gIFRyYW5zbG9jb1Njb3BlLFxuICBUcmFuc2xvY29TZXJ2aWNlLFxufSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nXG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGF0ZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5jb21wb25lbnQnXG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJUeXBlIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5cbi8qKlxuICogRGF0ZSBwaWNrZXJzIHNpbXBsaWZ5IHRoZSB0YXNrIG9mIHNlbGVjdGluZyBhIGRhdGUgaW4gYSB2aXN1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBjYWxlbmRhci5cbiAqIGh0dHBzOi8vZGVzaWdubGlicmFyeS5zZWJncm91cC5jb20vY29tcG9uZW50cy9jb21wb25lbnQtZGF0ZXBpY2tlclxuICpcbiAqIFNlbGVjdG9yOiBgbmdndi1kYXRlaW5wdXRgXG4gKlxuICogV2hlbiBmb2N1c2luZyBhbiBkYXRlIGVsZW1lbnQsIHRoZSBjYWxlbmRhciBhbGxvd3MgZm9yIG5hdmlnYXRpb24gdXNpbmcgYm90aCB0YWIgYW5kIGFycm93IGtleXMuXG4gKiBQcmVzc2luZyAnZXNjJyB3aWxsIGNsb3NlIHRoZSBjYWxlbmRhci5cbiAqXG4gKiBSZXF1aXJlcyBUcmFuc2xvY29Mb2NhbGUsIGJ1dCBpbiB0dXJuIGFsbG93cyBmb3Igc2V0dGluZyBsb2NhbGUgZHluYW1pY2FsbHk6XG4gKiBodHRwczovL2pzdmVyc2UuZ2l0aHViLmlvL3RyYW5zbG9jby9kb2NzL3BsdWdpbnMvbG9jYWxlLyNtYW51YWxseS1zZXR0aW5nLWxvY2FsZVxuICpcbiAqIFRvIGNvbmZpZ3VyZSBUcmFuc2xvY29Mb2NhbGUsIGZvbGxvdyB0aGlzIGd1aWRlOlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jc2V0dXBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1kYXRlaW5wdXQsbmdndi1pbnB1dFt0eXBlPWRhdGVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBAVmlld0NoaWxkKCd0b2dnbGVDYWxlbmRhckJ1dHRvbicpXG4gIHRvZ2dsZUJ1dHRvblJlZj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10aG9vaycpIEBJbnB1dCgpIHRob29rOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAnZGF0ZS1pbnB1dCdcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtYWxsJykgZ2V0IGlzU21hbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3NtYWxsJ1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXJnZScpIGdldCBpc0xhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdsYXJnZSdcbiAgfVxuXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcbiAgLyoqIElmIHRoZSBkYXRlLWlucHV0IHNob3VsZCBjbG9zZSB3aGVuIHNjcm9sbGluZyB0aGUgdmlld3BvcnQuIERlZmF1bHQ6IGZhbHNlKi9cbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbCA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc3BsYXllZCBzaXplIG9mIHRoZSBkYXRlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdsYXJnZScgPSAnbGFyZ2UnXG5cbiAgQElucHV0KCkgZHluYW1pY1Bvc2l0aW9uID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBzY3JvbGxzIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgb3BlbiAqL1xuICBwcml2YXRlIGRvY3VtZW50U2Nyb2xsJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdzY3JvbGwnKVxuICAvKiogT2JzZXJ2YWJsZSBmb3IgbGlzdGVuaW5nIHRvIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBkYXRlcGlja2VyLiAqL1xuICBwcml2YXRlIGRvY3VtZW50Q2xpY2skOiBPYnNlcnZhYmxlPEV2ZW50PiA9IGZyb21FdmVudChkb2N1bWVudCwgJ2NsaWNrJylcbiAgLyoqIFN1YmplY3QgdXNlZCBmb3IgdW5zdWJzY3JpYmUgcGF0dGVybiBvbiBhYm92ZSBvYnNlcnZhYmxlLiAqL1xuICBwcml2YXRlIGRhdGVwaWNrZXJDbG9zZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsb2NvOiBUcmFuc2xvY29TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihuZ0NvbnRyb2wsIHRyYW5zbG9jb1Njb3BlLCBlbGVtZW50UmVmLCBjZHIsIHRyYW5zbG9jbylcbiAgICAvLyB0aGlzLnNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDYWxsZWQgZnJvbSB0aGUgZGF0ZXBpY2tlci1jb21wb25lbnQgd2hlbiBhIGRhdGUgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGNhbGVuZGFyLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSBkYXRlIG9iamVjdCBlbWl0dGVkIHdoZW4gc2VsZWN0aW5nIGEgZGF0ZSBpbiB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIG9uRGF0ZUNoYW5nZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgLy8gY29udHJvbCB2YWx1ZSBhY2Nlc3NvciB3aWxsIGVuc3VyZSBjb3JyZWN0IGZvcm1hdHRpbmcgb2Ygc3RhdGVcbiAgICB0aGlzLnN0YXRlID0gRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50LnBhcnNlRGF0ZUxpa2UoZGF0ZSlcbiAgICAvLyBlbWl0IHN0YXRlXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnN0YXRlKVxuICAgIC8vIGNsb3NlIGRhdGVwaWNrZXIgYW5kIG1vdmUgZm9jdXMgdG8gZGF0ZXBpY2tlciBidXR0b25cbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50b2dnbGVCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIHdoZW4gZW50ZXJpbmcgZGF0ZSBtYW51YWxseSBpbiBpbnB1dCBmaWVsZC5cbiAgICovXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnRUYXJnZXQ6IGFueSk6IHZvaWQge1xuICAgIC8vIFdpbGwgYmUgaW4gdGhlIGZvcm1hdCBzZWxlY3RlZCBpbiBpbnB1dE1hc2tcbiAgICBjb25zdCB2YWx1ZSA9IGAke2V2ZW50VGFyZ2V0LmlucHV0bWFzay51bmRvVmFsdWV9YCA/PyAnJ1xuXG4gICAgLy8gVXNlIHBhcnNlcmZ1bmN0aW9uIGZyb20gaW5wdXRNYXNrIHRvIHBhcnNlIHRvIGEgZGF0ZSBvYmplY3Qgc2luY2UgdmFsdWUgY2FuIGJlIGluIG11bHRpcGxlIGZvcm1hdHNcbiAgICAvLyBUaGVuIG9udHJvbCB2YWx1ZSBhY2Nlc3NvciB3aWxsIGVuc3VyZSBjb3JyZWN0IGZvcm1hdHRpbmcgb2Ygc3RhdGVcbiAgICBjb25zdCBwYXJzZWREYXRlID0gRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50LnBhcnNlRGF0ZUxpa2UoXG4gICAgICB0aGlzLmRhdGVJbnB1dE1hc2sucGFyc2VyISh2YWx1ZSksXG4gICAgKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHBhcnNlZERhdGVcblxuICAgIC8vIGVtaXQgcGFyc2VkIGRhdGVcbiAgICB0aGlzLm9uQ2hhbmdlKHBhcnNlZERhdGUpXG4gICAgdGhpcy5vblRvdWNoZWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBMaXN0ZW4gdG8gJ2VzYycga2V5cHJlc3MgYW5kIGNsb3NlcyBkYXRlcGlja2VyIGlmIG9wZW4uXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAga2V5TGlzdGVuZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZUNhbGVuZGFyT25Fc2NhcGUgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJylcbiAgICAgIHRoaXMuc2V0U2hvd24oZmFsc2UpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHRvZ2dsZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTaG93bighdGhpcy5zaG93bilcbiAgfVxuXG4gIC8qKiBUbyBleHRlcm5hbGx5IHRyaWdnZXIgdGhlIGRhdGVwaWNrZXIgdG8gY2xvc2UuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzaG93biBzdGF0ZSBvZiB0aGUgZGF0ZXBpY2tlciBwb3B1cC4gSWYgdHJ1ZSB0aGUgcG9wdXAgd2lsbCBiZSB2aXNpYmxlLlxuICAgKiBJZiB0aGUgc3RhdGUgaXMgc2V0IHRvIGZhbHNlLCBjYWxsIG9uVG91Y2hlZCB0byBub3RpZnkgYW55IHN0YXRlIGxpc3RlbmVyc1xuICAgKiBAcGFyYW0gc3RhdGUgdGhlIHNob3duIHN0YXRlIHdoaWNoIHRvIHNldC5cbiAgICovXG4gIHByaXZhdGUgc2V0U2hvd24oc3RhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93biA9IHN0YXRlXG4gICAgaWYgKCF0aGlzLnNob3duKSB7XG4gICAgICAvLyBpZiBzaG93biBpcyBzZXQgdG8gZmFsc2UsIHN0b3AgbGlzdGVuaW5nIHRvIGNsaWNrc1xuICAgICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KHRydWUpXG4gICAgICByZXR1cm4gdGhpcy5vblRvdWNoZWQoKVxuICAgIH1cbiAgICAvLyBpZiBzaG93biBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdW5zdWJzY3JpYmUgdmFyaWFibGVcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQoZmFsc2UpXG5cbiAgICAvLyBzdGFydCBsaXN0ZW4gdG8gc2Nyb2xsIGlmIGNsb3NlT25TY3JvbGwgaXMgZW5hYmxlZFxuICAgIGlmICh0aGlzLmNsb3NlT25TY3JvbGwpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRTY3JvbGwkLnBpcGUodGFrZVVudGlsKHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gaWYgZG9jdW1lbnQgc3RhcnRzIHNjcm9sbGluZywgY2xvc2UgZGF0ZXBpY2tlclxuICAgICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBzdGFydCBsaXN0ZW5pbmcgZm9yIGNsaWNrcyBvdXRzaWRlIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLmRvY3VtZW50Q2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAvLyBjbGlja2luZyBvbiBhIGdyYXkgZGF0ZSBjYXVzZXMgdGhlIGRhdGVwaWNrZXIgdG8gcmVsb2FkIHRoZSBjYWxlbmRhciBkYXRlcyxcbiAgICAgICAgLy8gYW5kIHRoZSBidXR0b24gZWxlbWVudCBjbGlja2VkIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbnNpZGVyZWQgYXMgYSBjaGlsZCBvZiB0aGUgZGF0ZXBpY2tlci5cbiAgICAgICAgLy8gYnV0IHRoZSBldmVudCB0YXJnZXQgcGF0aCB3aWxsIHN0aWxsIGNvbnRhaW4gdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICAgIC8vIGlmIHRhcmdldCBoYXMgZGF0ZXBpY2tlciBwYXJlbnQsIGtlZXAgbGlzdGVuaW5nXG4gICAgICAgIGNvbnN0IGV2ZW50UGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpXG4gICAgICAgIGNvbnN0IGhhc0RhdGVwaWNrZXJQYXJlbnQgPSAhIWV2ZW50UGF0aC5maW5kKFxuICAgICAgICAgIChlKSA9PiBlID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoaGFzRGF0ZXBpY2tlclBhcmVudCkgcmV0dXJuXG4gICAgICAgIC8vIGVsc2UgdGhlIGNsaWNrIGlzIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lkZSwgY2xvc2UgZGF0ZXBpY2tlclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuIiwiPCEtLSBMQUJFTCAtLT5cbjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiPlxuICA8bGFiZWxcbiAgICBbaWRdPVwiaWQgKyAnLWxhYmVsJ1wiXG4gICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwgaGlkZS1pZi1lbXB0eVwiXG4gICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsQ29udGVudFRwbCB8fCBiYXNpY0xhYmVsQ29udGVudFRwbFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNiYXNpY0xhYmVsQ29udGVudFRwbD5cbiAgICAgIDwhLS0gdG8gdHJpZ2dlciBjc3M6ZW1wdHkgaWYgbm8gbGFiZWwgd2FzIGFkZGVkIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb25hbCA9PT0gdHJ1ZSB8fCAocmVxdWlyZWQgIT09IHRydWUgJiYgb3B0aW9uYWwgIT09IGZhbHNlKVwiXG4gICAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwtLW9wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyB0KCdsYWJlbC5vcHRpb25hbCcpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xhYmVsPlxuXG4gIDwhLS0gREVTQ1JJUFRJT04gLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tc21hbGwgZGVzY3JpcHRpb24gaGlkZS1pZi1lbXB0eVwiXG4gICAgKm5nSWY9XCJkZXNjcmlwdGlvblwiXG4gID5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L2Rpdj5cblxuICA8IS0tIExPQ0tFRCBJTlBVVCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZFwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgbG9ja2VkVHBsIHx8IGRlZmF1bHRMb2NrZWRUcGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzdGF0ZSB9XG4gICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvY2tlZFRwbD5cbiAgICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtLWxvY2tlZFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RhdGVcIiBjbGFzcz1cInVuc2V0LXN0YXRlXCI+LTwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlXCI+XG4gICAgICAgICAge3sgc3RhdGUgfCBuZ2d2SW5wdXRNYXNrRm9ybWF0OiBkYXRlSW5wdXRNYXNrIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJTlBVVCBXUkFQUEVSIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvY2tlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmllbGQtd3JhcFwiXG4gICAgICBbY2xhc3Mubmdndi1maWVsZC0tZXJyb3JdPVwiaW52YWxpZFwiXG4gICAgICAqbmdJZj1cInNob3dJbnB1dCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPCEtLSBJTlBVVCBGSUVMRCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtZGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoc2l6ZSA9PT0gJ3NtYWxsJykge1xuICAgICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhciAqbmdnQ29yZUVsZW1lbnQgc2l6ZT1cIjE2cHhcIj48L2dkcy1pY29uLWNhbGVuZGFyPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaXplID09PSAnbGFyZ2UnKSB7XG4gICAgICAgICAgPGdkcy1pY29uLWNhbGVuZGFyICpuZ2dDb3JlRWxlbWVudCBzaXplPVwiMjBweFwiPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICAgIH1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEQVRFUElDS0VSIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJuZ2d2LWRhdGVwaWNrZXJcIiAqbmdJZj1cInNob3duXCI+XG4gICAgICA8bmdndi1kYXRlcGlja2VyXG4gICAgICAgICNpbnB1dFxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2Rpc2FibGVEYXRlc109XCJkaXNhYmxlRGF0ZXNcIlxuICAgICAgICBbZGlzYWJsZVdlZWtEYXlzXT1cImRpc2FibGVXZWVrRGF5c1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzdGF0ZVwiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW21pbkNhbGVuZGFyUm93c109XCJtaW5Sb3dzXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgICAgW2ZpcnN0VmFsaWRdPVwiZmlyc3RWYWxpZFwiXG4gICAgICAgIFtsYXN0VmFsaWRdPVwibGFzdFZhbGlkXCJcbiAgICAgICAgW2Nsb3NpbmdUaW1lXT1cImNsb3NpbmdUaW1lXCJcbiAgICAgICAgW2R5bmFtaWNQb3NpdGlvbl09XCJkeW5hbWljUG9zaXRpb25cIlxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgKG5ndkRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nZ3YtZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRVJST1JTIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGludmFsaWQgJiZcbiAgICAgICAgKGVycm9yIHx8IG5nQ29udHJvbD8uaW52YWxpZCkgJiZcbiAgICAgICAgKCFlcnJvckxpc3QgfHwgIWVycm9yTGlzdC5sZW5ndGgpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1ub3RpY2UgZ2RzLWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbS0taWNvblwiPlxuICAgICAgICAgICAgPGdkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgICAgICBbc29saWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgICAgICAgID48L2dkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJlcnJvcjsgZWxzZSBlcnJvcnNSZWZcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID57eyBlcnJvciB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9yc1JlZj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3RFcnJvciBhcyBlcnJvclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItaXRlbS0tdGV4dFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdCgnZXJyb3IuZmllbGQnICsgZXJyb3I/LmNvZGUsIGVycm9yPy5wYXJhbXMpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvckxpc3QgPz8gW11cIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1ub3RpY2UgZ2RzLWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgICpuZ0lmPVwiaW52YWxpZCAmJiBlcnJvclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbS0taWNvblwiPlxuICAgICAgICAgICAgPGdkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgICAgICBbc29saWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgICAgICAgID48L2dkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID57eyBlcnJvciB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,192 +0,0 @@
1
- import { WeekDay } from '@angular/common';
2
- import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, } from '@angular/core';
3
- import { CalendarMonth } from '../../datepicker.models';
4
- import { getSortedWeekDays, isValid } from '../../datepicker.utils';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- import * as i2 from "../calendar/calendar.component";
8
- import * as i3 from "../calendar-control/calendar-control.component";
9
- export class DatepickerComponent {
10
- get positionAttr() {
11
- return this.datepickerPosition;
12
- }
13
- get sizeAttr() {
14
- return this.size;
15
- }
16
- constructor(elementRef, renderer) {
17
- this.elementRef = elementRef;
18
- this.renderer = renderer;
19
- this.calendarTemplate = null;
20
- /** Emits a Date upon selection. */
21
- this.ngvDateChange = new EventEmitter();
22
- /** Sets first day of week in calendar. Defaults to Monday. */
23
- this.firstDayOfWeek = WeekDay.Monday;
24
- /** Bank holidays. */
25
- this.disableDates = [];
26
- /** Other non selectable dates. */
27
- this.disableWeekDays = [];
28
- /** Minimum number of calendar rows shown. */
29
- this.minCalendarRows = 5;
30
- /** Set locale for date format. */
31
- this.locale = 'en-US';
32
- /** Set type of calendar. */
33
- this.type = 'normal';
34
- /**
35
- * When true, the datepicker will automatically choose to open above or below the input
36
- * based on available space in the viewport, and will scale its height to fit if needed.
37
- */
38
- this.dynamicPosition = false;
39
- /** Needed to determent where to place datepicker if dropdownPosition === 'top' */
40
- this.size = 'large';
41
- /** @internal */
42
- /** @internal */
43
- this.weekdayArray = [];
44
- /** @internal */
45
- this.disabledDatesForActiveMonth = [];
46
- // Indicates whether the datepicker should be displayed below ('bottom') or above ('top') the input, based on available space.
47
- this.datepickerPosition = 'bottom';
48
- this.subs = [];
49
- }
50
- ngOnChanges(changes) {
51
- if (changes.selected &&
52
- !!changes.selected.currentValue &&
53
- !changes.selected.isFirstChange()) {
54
- // set active calendar to match selected date
55
- const activeCalendar = new CalendarMonth(new Date(changes.selected.currentValue));
56
- this.changeActiveCalendar(activeCalendar);
57
- }
58
- if (changes.disableDates && !changes.disableDates.isFirstChange()) {
59
- this.disabledDatesForActiveMonth = this.getDisabledDatesFor(this.activeCalendar, changes.disableDates.currentValue || []);
60
- }
61
- }
62
- ngOnInit() {
63
- // initiate week label row
64
- this.weekdayArray = getSortedWeekDays(this.firstDayOfWeek);
65
- // initiate calendar
66
- const initDate = !!this.selected && isValid(this.selected)
67
- ? new Date(this.selected)
68
- : new Date();
69
- this.activeCalendar = new CalendarMonth(initDate);
70
- if (this.dynamicPosition)
71
- this.setDropdownPosition();
72
- }
73
- ngOnDestroy() {
74
- this.subs.forEach((sub) => sub.unsubscribe());
75
- }
76
- /**
77
- * @internal
78
- * Update local calendar variable and changes displayed calendar.
79
- */
80
- changeActiveCalendar(calendar) {
81
- this.activeCalendar = calendar;
82
- this.disabledDatesForActiveMonth = this.getDisabledDatesFor(calendar, this.disableDates);
83
- }
84
- /**
85
- * @internal
86
- * Returns a subset of all disabled dates.
87
- *
88
- * @param month current month to filter from
89
- * @param disableDates master list of all disabled dates
90
- * @returns a subset with current and adjacent months disabled dates
91
- */
92
- getDisabledDatesFor(calendar, disableDates) {
93
- if (!disableDates)
94
- disableDates = [];
95
- // sets month to target month
96
- const targetMonth = calendar.date;
97
- // gets previous month from target month
98
- const previousMonth = calendar.previousMonth().date;
99
- // gets next month from target month
100
- const nextMonth = calendar.nextMonth().date;
101
- // checks if two dates are within the same year and month
102
- const withinSameMonth = (a, b) => a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear();
103
- // filter out disabled dates for current and adjacent months
104
- return disableDates
105
- .map((d) => new Date(d))
106
- .filter((d) => withinSameMonth(d, previousMonth) ||
107
- withinSameMonth(d, targetMonth) ||
108
- withinSameMonth(d, nextMonth));
109
- }
110
- /**
111
- * Handles date-clicks from calendar compoentn. Emits event or changes calendar.
112
- * @param date date clicked in calendar
113
- */
114
- dateClickHandler(date) {
115
- // if a date is clicked within the active month, emit date
116
- if (date.getMonth() === this.activeCalendar.month)
117
- return this.ngvDateChange.emit(date);
118
- // else, change active calendar to match the date clicked
119
- this.selected = date;
120
- this.changeActiveCalendar(new CalendarMonth(date));
121
- }
122
- setDropdownPosition() {
123
- const datePicker = this.elementRef.nativeElement;
124
- const parent = datePicker.parentElement;
125
- const rect = parent.getBoundingClientRect();
126
- const viewportHeight = window.innerHeight;
127
- const spaceBelow = viewportHeight - rect.bottom;
128
- const spaceAbove = rect.top;
129
- const MARGIN = 10;
130
- const DATEPICKER_HEIGHT = 362; // 6 ROWS OF DATES, TO BE SURE
131
- let maxDatepickerHeight;
132
- if (spaceBelow >= DATEPICKER_HEIGHT) {
133
- this.datepickerPosition = 'bottom';
134
- maxDatepickerHeight = DATEPICKER_HEIGHT;
135
- }
136
- else if (spaceAbove >= DATEPICKER_HEIGHT) {
137
- this.datepickerPosition = 'top';
138
- maxDatepickerHeight = DATEPICKER_HEIGHT;
139
- }
140
- else if (spaceBelow > spaceAbove) {
141
- this.datepickerPosition = 'bottom';
142
- maxDatepickerHeight = Math.max(spaceBelow - MARGIN, DATEPICKER_HEIGHT); // 10px margin, height 362px
143
- }
144
- else {
145
- this.datepickerPosition = 'top';
146
- maxDatepickerHeight = Math.max(spaceAbove - MARGIN, DATEPICKER_HEIGHT); // 10px margin, height 362px
147
- }
148
- this.renderer.setStyle(datePicker, 'max-height', `${maxDatepickerHeight}px`);
149
- }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatepickerComponent, selector: "nggv-datepicker", inputs: { firstDayOfWeek: "firstDayOfWeek", disableDates: "disableDates", disableWeekDays: "disableWeekDays", minCalendarRows: "minCalendarRows", selected: "selected", locale: "locale", type: "type", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime", dynamicPosition: "dynamicPosition", size: "size" }, outputs: { ngvDateChange: "ngvDateChange" }, host: { properties: { "attr.data-position": "this.positionAttr", "attr.data-size": "this.sizeAttr" } }, viewQueries: [{ propertyName: "calendarTemplate", first: true, predicate: ["calendarTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- control for changing displayed calendar -->\n<nggv-calendar-control\n [activeCalendar]=\"activeCalendar\"\n [locale]=\"locale\"\n [type]=\"type\"\n (calendarChange)=\"changeActiveCalendar($event)\"\n>\n</nggv-calendar-control>\n\n<!-- label row for week -->\n<div class=\"nggv-weekday-row\">\n <span *ngFor=\"let weekday of weekdayArray\">{{\n weekday | date: 'EEE' : undefined : locale\n }}</span>\n</div>\n\n<!-- outlet for active calendar -->\n<div class=\"nggv-calendar-view-container\">\n <ng-container\n *ngTemplateOutlet=\"\n calendarTemplate;\n context: {\n calendar: activeCalendar,\n disableDates: disabledDatesForActiveMonth,\n }\n \"\n >\n </ng-container>\n</div>\n\n<div *ngIf=\"type === 'extended'\" class=\"gds-datepicker__controls\">\n <ng-content></ng-content>\n</div>\n\n<ng-template\n #calendarTemplate\n let-calendar=\"calendar\"\n let-disableDates=\"disableDates\"\n>\n <nggv-calendar\n [year]=\"calendar.year\"\n [month]=\"calendar.month\"\n [type]=\"type\"\n [locale]=\"locale\"\n [disableDates]=\"disableDates\"\n [selected]=\"selected\"\n [lastValid]=\"lastValid\"\n [firstValid]=\"firstValid\"\n [closingTime]=\"closingTime\"\n [disableWeekDays]=\"disableWeekDays\"\n [minCalendarRows]=\"minCalendarRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n (dateClick)=\"dateClickHandler($event)\"\n >\n </nggv-calendar>\n</ng-template>\n", styles: [":host{border-radius:4px;border:1px solid #868686;overflow:hidden;z-index:1000;background-color:#fff;position:absolute;display:block;box-shadow:0 0 12px #0000001a}:host .nggv-calendar-view-container{border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8;padding:.125em;width:auto}:host .nggv-weekday-row{display:flex;font-family:SEBSansSerif,Arial,sans-serif;font-size:.875rem}:host .nggv-weekday-row:first-child{font-size:.7em;line-height:2.5rem}:host .nggv-weekday-row button,:host .nggv-weekday-row span{padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-weekday-row button:disabled,:host .nggv-weekday-row span:disabled{border-radius:0;border:0px solid transparent}:host .nggv-extended-controls{display:flex;padding:.5rem}:host[data-position=top]{top:auto;bottom:100%}:host[data-position=top][data-size=large]{transform:translateY(calc(-.5rem - 45px))}:host[data-position=top][data-size=small]{transform:translateY(calc(-.5rem - 35px))}:host[data-position=bottom]{bottom:0;transform:translateY(100%)}\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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CalendarComponent, selector: "nggv-calendar", inputs: ["year", "month", "selected", "locale", "minCalendarRows", "firstDayOfWeek", "type", "disableDates", "disableWeekDays", "firstValid", "lastValid", "closingTime"], outputs: ["dateClick"] }, { kind: "component", type: i3.CalendarControlComponent, selector: "nggv-calendar-control", inputs: ["activeCalendar", "locale", "type"], outputs: ["calendarChange"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] }); }
152
- }
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatepickerComponent, decorators: [{
154
- type: Component,
155
- args: [{ selector: 'nggv-datepicker', template: "<!-- control for changing displayed calendar -->\n<nggv-calendar-control\n [activeCalendar]=\"activeCalendar\"\n [locale]=\"locale\"\n [type]=\"type\"\n (calendarChange)=\"changeActiveCalendar($event)\"\n>\n</nggv-calendar-control>\n\n<!-- label row for week -->\n<div class=\"nggv-weekday-row\">\n <span *ngFor=\"let weekday of weekdayArray\">{{\n weekday | date: 'EEE' : undefined : locale\n }}</span>\n</div>\n\n<!-- outlet for active calendar -->\n<div class=\"nggv-calendar-view-container\">\n <ng-container\n *ngTemplateOutlet=\"\n calendarTemplate;\n context: {\n calendar: activeCalendar,\n disableDates: disabledDatesForActiveMonth,\n }\n \"\n >\n </ng-container>\n</div>\n\n<div *ngIf=\"type === 'extended'\" class=\"gds-datepicker__controls\">\n <ng-content></ng-content>\n</div>\n\n<ng-template\n #calendarTemplate\n let-calendar=\"calendar\"\n let-disableDates=\"disableDates\"\n>\n <nggv-calendar\n [year]=\"calendar.year\"\n [month]=\"calendar.month\"\n [type]=\"type\"\n [locale]=\"locale\"\n [disableDates]=\"disableDates\"\n [selected]=\"selected\"\n [lastValid]=\"lastValid\"\n [firstValid]=\"firstValid\"\n [closingTime]=\"closingTime\"\n [disableWeekDays]=\"disableWeekDays\"\n [minCalendarRows]=\"minCalendarRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n (dateClick)=\"dateClickHandler($event)\"\n >\n </nggv-calendar>\n</ng-template>\n", styles: [":host{border-radius:4px;border:1px solid #868686;overflow:hidden;z-index:1000;background-color:#fff;position:absolute;display:block;box-shadow:0 0 12px #0000001a}:host .nggv-calendar-view-container{border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8;padding:.125em;width:auto}:host .nggv-weekday-row{display:flex;font-family:SEBSansSerif,Arial,sans-serif;font-size:.875rem}:host .nggv-weekday-row:first-child{font-size:.7em;line-height:2.5rem}:host .nggv-weekday-row button,:host .nggv-weekday-row span{padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-weekday-row button:disabled,:host .nggv-weekday-row span:disabled{border-radius:0;border:0px solid transparent}:host .nggv-extended-controls{display:flex;padding:.5rem}:host[data-position=top]{top:auto;bottom:100%}:host[data-position=top][data-size=large]{transform:translateY(calc(-.5rem - 45px))}:host[data-position=top][data-size=small]{transform:translateY(calc(-.5rem - 35px))}:host[data-position=bottom]{bottom:0;transform:translateY(100%)}\n"] }]
156
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { calendarTemplate: [{
157
- type: ViewChild,
158
- args: ['calendarTemplate']
159
- }], ngvDateChange: [{
160
- type: Output
161
- }], firstDayOfWeek: [{
162
- type: Input
163
- }], disableDates: [{
164
- type: Input
165
- }], disableWeekDays: [{
166
- type: Input
167
- }], minCalendarRows: [{
168
- type: Input
169
- }], selected: [{
170
- type: Input
171
- }], locale: [{
172
- type: Input
173
- }], type: [{
174
- type: Input
175
- }], firstValid: [{
176
- type: Input
177
- }], lastValid: [{
178
- type: Input
179
- }], closingTime: [{
180
- type: Input
181
- }], dynamicPosition: [{
182
- type: Input
183
- }], size: [{
184
- type: Input
185
- }], positionAttr: [{
186
- type: HostBinding,
187
- args: ['attr.data-position']
188
- }], sizeAttr: [{
189
- type: HostBinding,
190
- args: ['attr.data-size']
191
- }] } });
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBR3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7Ozs7O0FBU25FLE1BQU0sT0FBTyxtQkFBbUI7SUFtQzlCLElBQXVDLFlBQVk7UUFDakQsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQW1DLFFBQVE7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFpQkQsWUFDVSxVQUFzQixFQUN0QixRQUFtQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQVc7UUEzREUscUJBQWdCLEdBQzdDLElBQUksQ0FBQTtRQUVOLG1DQUFtQztRQUN6QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFFbEQsOERBQThEO1FBQ3JE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UUFDckcsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUE7SUFDOUUsQ0FBQzsrR0FqTVUsbUJBQW1CO21HQUFuQixtQkFBbUIsaXFCQzVCaEMsNjZDQXdEQTs7NEZENUJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7dUdBS0ksZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFJbkIsYUFBYTtzQkFBdEIsTUFBTTtnQkFHRSxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFaUMsWUFBWTtzQkFBbEQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBSUUsUUFBUTtzQkFBMUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWVrRGF5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5pbXBvcnQgeyBnZXRTb3J0ZWRXZWVrRGF5cywgaXNWYWxpZCB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIudXRpbHMnXG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJUeXBlIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyVGVtcGxhdGUnKSBjYWxlbmRhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9XG4gICAgbnVsbFxuXG4gIC8qKiBFbWl0cyBhIERhdGUgdXBvbiBzZWxlY3Rpb24uICovXG4gIEBPdXRwdXQoKSBuZ3ZEYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG5cbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogQmFuayBob2xpZGF5cy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZURhdGVzOiAoc3RyaW5nIHwgRGF0ZSlbXSA9IFtdXG4gIC8qKiBPdGhlciBub24gc2VsZWN0YWJsZSBkYXRlcy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW11bSBudW1iZXIgb2YgY2FsZW5kYXIgcm93cyBzaG93bi4gKi9cbiAgQElucHV0KCkgbWluQ2FsZW5kYXJSb3dzID0gNVxuICAvKiogSW5pdGlhbCBkYXRlIHNldCBhcyBzZWxlY3RlZC4gKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldCBsb2NhbGUgZm9yIGRhdGUgZm9ybWF0LiAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdlbi1VUydcbiAgLyoqIFNldCB0eXBlIG9mIGNhbGVuZGFyLiAqL1xuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuICAvKiogU2V0cyBhIGZyb20gZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYmVmb3JlIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgZmlyc3RWYWxpZDogRGF0ZSB8IHVuZGVmaW5lZFxuICAvKiogU2V0cyBhIHRvIGRhdGUgb2Ygd2hpY2ggYWxsIGRhdGVzIGFmdGVyIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgbGFzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgY2xvc2luZyB0aW1lIGZvciB0b2RheSB0byB0b2dnbGUgYXZhaWxhYmlsaXR5IGZvciB0b2RheSdzIGRhdGUuICovXG4gIEBJbnB1dCgpIGNsb3NpbmdUaW1lOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHRoZSBkYXRlcGlja2VyIHdpbGwgYXV0b21hdGljYWxseSBjaG9vc2UgdG8gb3BlbiBhYm92ZSBvciBiZWxvdyB0aGUgaW5wdXRcbiAgICogYmFzZWQgb24gYXZhaWxhYmxlIHNwYWNlIGluIHRoZSB2aWV3cG9ydCwgYW5kIHdpbGwgc2NhbGUgaXRzIGhlaWdodCB0byBmaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgQElucHV0KCkgZHluYW1pY1Bvc2l0aW9uID0gZmFsc2VcbiAgLyoqIE5lZWRlZCB0byBkZXRlcm1lbnQgd2hlcmUgdG8gcGxhY2UgZGF0ZXBpY2tlciBpZiBkcm9wZG93blBvc2l0aW9uID09PSAndG9wJyAqL1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ2xhcmdlJyA9ICdsYXJnZSdcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1wb3NpdGlvbicpIGdldCBwb3NpdGlvbkF0dHIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlclBvc2l0aW9uXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJykgZ2V0IHNpemVBdHRyKCkge1xuICAgIHJldHVybiB0aGlzLnNpemVcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWN0aXZlQ2FsZW5kYXIhOiBDYWxlbmRhck1vbnRoIC8qICA9IG5ldyBDYWxlbmRhck1vbnRoKG5ldyBEYXRlKCkpICovXG4gIC8qKiBAaW50ZXJuYWwgKi9cblxuICAvKiogQGludGVybmFsICovXG4gIHdlZWtkYXlBcnJheTogRGF0ZVtdID0gW11cblxuICAvKiogQGludGVybmFsICovXG4gIGRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aDogRGF0ZVtdID0gW11cblxuICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0ZXBpY2tlciBzaG91bGQgYmUgZGlzcGxheWVkIGJlbG93ICgnYm90dG9tJykgb3IgYWJvdmUgKCd0b3AnKSB0aGUgaW5wdXQsIGJhc2VkIG9uIGF2YWlsYWJsZSBzcGFjZS5cbiAgZGF0ZXBpY2tlclBvc2l0aW9uOiAnYm90dG9tJyB8ICd0b3AnID0gJ2JvdHRvbSdcblxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuc2VsZWN0ZWQgJiZcbiAgICAgICEhY2hhbmdlcy5zZWxlY3RlZC5jdXJyZW50VmFsdWUgJiZcbiAgICAgICFjaGFuZ2VzLnNlbGVjdGVkLmlzRmlyc3RDaGFuZ2UoKVxuICAgICkge1xuICAgICAgLy8gc2V0IGFjdGl2ZSBjYWxlbmRhciB0byBtYXRjaCBzZWxlY3RlZCBkYXRlXG4gICAgICBjb25zdCBhY3RpdmVDYWxlbmRhciA9IG5ldyBDYWxlbmRhck1vbnRoKFxuICAgICAgICBuZXcgRGF0ZShjaGFuZ2VzLnNlbGVjdGVkLmN1cnJlbnRWYWx1ZSksXG4gICAgICApXG4gICAgICB0aGlzLmNoYW5nZUFjdGl2ZUNhbGVuZGFyKGFjdGl2ZUNhbGVuZGFyKVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVEYXRlcyAmJiAhY2hhbmdlcy5kaXNhYmxlRGF0ZXMuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCA9IHRoaXMuZ2V0RGlzYWJsZWREYXRlc0ZvcihcbiAgICAgICAgdGhpcy5hY3RpdmVDYWxlbmRhcixcbiAgICAgICAgY2hhbmdlcy5kaXNhYmxlRGF0ZXMuY3VycmVudFZhbHVlIHx8IFtdLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYXRlIHdlZWsgbGFiZWwgcm93XG4gICAgdGhpcy53ZWVrZGF5QXJyYXkgPSBnZXRTb3J0ZWRXZWVrRGF5cyh0aGlzLmZpcnN0RGF5T2ZXZWVrKVxuXG4gICAgLy8gaW5pdGlhdGUgY2FsZW5kYXJcbiAgICBjb25zdCBpbml0RGF0ZSA9XG4gICAgICAhIXRoaXMuc2VsZWN0ZWQgJiYgaXNWYWxpZCh0aGlzLnNlbGVjdGVkKVxuICAgICAgICA/IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWQpXG4gICAgICAgIDogbmV3IERhdGUoKVxuICAgIHRoaXMuYWN0aXZlQ2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXJNb250aChpbml0RGF0ZSlcblxuICAgIGlmICh0aGlzLmR5bmFtaWNQb3NpdGlvbikgdGhpcy5zZXREcm9wZG93blBvc2l0aW9uKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBVcGRhdGUgbG9jYWwgY2FsZW5kYXIgdmFyaWFibGUgYW5kIGNoYW5nZXMgZGlzcGxheWVkIGNhbGVuZGFyLlxuICAgKi9cbiAgY2hhbmdlQWN0aXZlQ2FsZW5kYXIoY2FsZW5kYXI6IENhbGVuZGFyTW9udGgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNhbGVuZGFyID0gY2FsZW5kYXJcbiAgICB0aGlzLmRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCA9IHRoaXMuZ2V0RGlzYWJsZWREYXRlc0ZvcihcbiAgICAgIGNhbGVuZGFyLFxuICAgICAgdGhpcy5kaXNhYmxlRGF0ZXMsXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGEgc3Vic2V0IG9mIGFsbCBkaXNhYmxlZCBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIG1vbnRoIGN1cnJlbnQgbW9udGggdG8gZmlsdGVyIGZyb21cbiAgICogQHBhcmFtIGRpc2FibGVEYXRlcyBtYXN0ZXIgbGlzdCBvZiBhbGwgZGlzYWJsZWQgZGF0ZXNcbiAgICogQHJldHVybnMgYSBzdWJzZXQgd2l0aCBjdXJyZW50IGFuZCBhZGphY2VudCBtb250aHMgZGlzYWJsZWQgZGF0ZXNcbiAgICovXG4gIGdldERpc2FibGVkRGF0ZXNGb3IoXG4gICAgY2FsZW5kYXI6IENhbGVuZGFyTW9udGgsXG4gICAgZGlzYWJsZURhdGVzPzogKHN0cmluZyB8IERhdGUpW10sXG4gICk6IERhdGVbXSB7XG4gICAgaWYgKCFkaXNhYmxlRGF0ZXMpIGRpc2FibGVEYXRlcyA9IFtdXG4gICAgLy8gc2V0cyBtb250aCB0byB0YXJnZXQgbW9udGhcbiAgICBjb25zdCB0YXJnZXRNb250aCA9IGNhbGVuZGFyLmRhdGVcblxuICAgIC8vIGdldHMgcHJldmlvdXMgbW9udGggZnJvbSB0YXJnZXQgbW9udGhcbiAgICBjb25zdCBwcmV2aW91c01vbnRoID0gY2FsZW5kYXIucHJldmlvdXNNb250aCgpLmRhdGVcblxuICAgIC8vIGdldHMgbmV4dCBtb250aCBmcm9tIHRhcmdldCBtb250aFxuICAgIGNvbnN0IG5leHRNb250aCA9IGNhbGVuZGFyLm5leHRNb250aCgpLmRhdGVcblxuICAgIC8vIGNoZWNrcyBpZiB0d28gZGF0ZXMgYXJlIHdpdGhpbiB0aGUgc2FtZSB5ZWFyIGFuZCBtb250aFxuICAgIGNvbnN0IHdpdGhpblNhbWVNb250aCA9IChhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiA9PlxuICAgICAgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiYgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKClcblxuICAgIC8vIGZpbHRlciBvdXQgZGlzYWJsZWQgZGF0ZXMgZm9yIGN1cnJlbnQgYW5kIGFkamFjZW50IG1vbnRoc1xuICAgIHJldHVybiBkaXNhYmxlRGF0ZXNcbiAgICAgIC5tYXAoKGQ6IERhdGUgfCBzdHJpbmcpID0+IG5ldyBEYXRlKGQpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGQ6IERhdGUpID0+XG4gICAgICAgICAgd2l0aGluU2FtZU1vbnRoKGQsIHByZXZpb3VzTW9udGgpIHx8XG4gICAgICAgICAgd2l0aGluU2FtZU1vbnRoKGQsIHRhcmdldE1vbnRoKSB8fFxuICAgICAgICAgIHdpdGhpblNhbWVNb250aChkLCBuZXh0TW9udGgpLFxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZGF0ZS1jbGlja3MgZnJvbSBjYWxlbmRhciBjb21wb2VudG4uIEVtaXRzIGV2ZW50IG9yIGNoYW5nZXMgY2FsZW5kYXIuXG4gICAqIEBwYXJhbSBkYXRlIGRhdGUgY2xpY2tlZCBpbiBjYWxlbmRhclxuICAgKi9cbiAgZGF0ZUNsaWNrSGFuZGxlcihkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgLy8gaWYgYSBkYXRlIGlzIGNsaWNrZWQgd2l0aGluIHRoZSBhY3RpdmUgbW9udGgsIGVtaXQgZGF0ZVxuICAgIGlmIChkYXRlLmdldE1vbnRoKCkgPT09IHRoaXMuYWN0aXZlQ2FsZW5kYXIubW9udGgpXG4gICAgICByZXR1cm4gdGhpcy5uZ3ZEYXRlQ2hhbmdlLmVtaXQoZGF0ZSlcbiAgICAvLyBlbHNlLCBjaGFuZ2UgYWN0aXZlIGNhbGVuZGFyIHRvIG1hdGNoIHRoZSBkYXRlIGNsaWNrZWRcbiAgICB0aGlzLnNlbGVjdGVkID0gZGF0ZVxuICAgIHRoaXMuY2hhbmdlQWN0aXZlQ2FsZW5kYXIobmV3IENhbGVuZGFyTW9udGgoZGF0ZSkpXG4gIH1cblxuICBzZXREcm9wZG93blBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGRhdGVQaWNrZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgIGNvbnN0IHBhcmVudCA9IGRhdGVQaWNrZXIucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgcmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCBzcGFjZUJlbG93ID0gdmlld3BvcnRIZWlnaHQgLSByZWN0LmJvdHRvbVxuICAgIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcFxuXG4gICAgY29uc3QgTUFSR0lOID0gMTBcbiAgICBjb25zdCBEQVRFUElDS0VSX0hFSUdIVCA9IDM2MiAvLyA2IFJPV1MgT0YgREFURVMsIFRPIEJFIFNVUkVcbiAgICBsZXQgbWF4RGF0ZXBpY2tlckhlaWdodDogbnVtYmVyXG5cbiAgICBpZiAoc3BhY2VCZWxvdyA+PSBEQVRFUElDS0VSX0hFSUdIVCkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyUG9zaXRpb24gPSAnYm90dG9tJ1xuICAgICAgbWF4RGF0ZXBpY2tlckhlaWdodCA9IERBVEVQSUNLRVJfSEVJR0hUXG4gICAgfSBlbHNlIGlmIChzcGFjZUFib3ZlID49IERBVEVQSUNLRVJfSEVJR0hUKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJQb3NpdGlvbiA9ICd0b3AnXG4gICAgICBtYXhEYXRlcGlja2VySGVpZ2h0ID0gREFURVBJQ0tFUl9IRUlHSFRcbiAgICB9IGVsc2UgaWYgKHNwYWNlQmVsb3cgPiBzcGFjZUFib3ZlKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJQb3NpdGlvbiA9ICdib3R0b20nXG4gICAgICBtYXhEYXRlcGlja2VySGVpZ2h0ID0gTWF0aC5tYXgoc3BhY2VCZWxvdyAtIE1BUkdJTiwgREFURVBJQ0tFUl9IRUlHSFQpIC8vIDEwcHggbWFyZ2luLCBoZWlnaHQgMzYycHhcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlcGlja2VyUG9zaXRpb24gPSAndG9wJ1xuICAgICAgbWF4RGF0ZXBpY2tlckhlaWdodCA9IE1hdGgubWF4KHNwYWNlQWJvdmUgLSBNQVJHSU4sIERBVEVQSUNLRVJfSEVJR0hUKSAvLyAxMHB4IG1hcmdpbiwgaGVpZ2h0IDM2MnB4XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkYXRlUGlja2VyLCAnbWF4LWhlaWdodCcsIGAke21heERhdGVwaWNrZXJIZWlnaHR9cHhgKVxuICB9XG59XG4iLCI8IS0tIGNvbnRyb2wgZm9yIGNoYW5naW5nIGRpc3BsYXllZCBjYWxlbmRhciAtLT5cbjxuZ2d2LWNhbGVuZGFyLWNvbnRyb2xcbiAgW2FjdGl2ZUNhbGVuZGFyXT1cImFjdGl2ZUNhbGVuZGFyXCJcbiAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICBbdHlwZV09XCJ0eXBlXCJcbiAgKGNhbGVuZGFyQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZUNhbGVuZGFyKCRldmVudClcIlxuPlxuPC9uZ2d2LWNhbGVuZGFyLWNvbnRyb2w+XG5cbjwhLS0gbGFiZWwgcm93IGZvciB3ZWVrIC0tPlxuPGRpdiBjbGFzcz1cIm5nZ3Ytd2Vla2RheS1yb3dcIj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla2RheUFycmF5XCI+e3tcbiAgICB3ZWVrZGF5IHwgZGF0ZTogJ0VFRScgOiB1bmRlZmluZWQgOiBsb2NhbGVcbiAgfX08L3NwYW4+XG48L2Rpdj5cblxuPCEtLSBvdXRsZXQgZm9yIGFjdGl2ZSBjYWxlbmRhciAtLT5cbjxkaXYgY2xhc3M9XCJuZ2d2LWNhbGVuZGFyLXZpZXctY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FsZW5kYXJUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY2FsZW5kYXI6IGFjdGl2ZUNhbGVuZGFyLFxuICAgICAgICBkaXNhYmxlRGF0ZXM6IGRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCxcbiAgICAgIH1cbiAgICBcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZXh0ZW5kZWQnXCIgY2xhc3M9XCJnZHMtZGF0ZXBpY2tlcl9fY29udHJvbHNcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FsZW5kYXJUZW1wbGF0ZVxuICBsZXQtY2FsZW5kYXI9XCJjYWxlbmRhclwiXG4gIGxldC1kaXNhYmxlRGF0ZXM9XCJkaXNhYmxlRGF0ZXNcIlxuPlxuICA8bmdndi1jYWxlbmRhclxuICAgIFt5ZWFyXT1cImNhbGVuZGFyLnllYXJcIlxuICAgIFttb250aF09XCJjYWxlbmRhci5tb250aFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIFtsYXN0VmFsaWRdPVwibGFzdFZhbGlkXCJcbiAgICBbZmlyc3RWYWxpZF09XCJmaXJzdFZhbGlkXCJcbiAgICBbY2xvc2luZ1RpbWVdPVwiY2xvc2luZ1RpbWVcIlxuICAgIFtkaXNhYmxlV2Vla0RheXNdPVwiZGlzYWJsZVdlZWtEYXlzXCJcbiAgICBbbWluQ2FsZW5kYXJSb3dzXT1cIm1pbkNhbGVuZGFyUm93c1wiXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAoZGF0ZUNsaWNrKT1cImRhdGVDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgPC9uZ2d2LWNhbGVuZGFyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==