@sebgroup/green-angular 5.1.2 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/esm2022/src/v-angular/account-number/account-number.module.mjs +18 -0
  2. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +54 -0
  3. package/esm2022/src/v-angular/account-number/index.mjs +3 -0
  4. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +5 -0
  5. package/esm2022/src/v-angular/alert/alert.component.mjs +47 -0
  6. package/esm2022/src/v-angular/alert/alert.models.mjs +8 -0
  7. package/esm2022/src/v-angular/alert/alert.module.mjs +18 -0
  8. package/esm2022/src/v-angular/alert/index.mjs +4 -0
  9. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +5 -0
  10. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  11. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  12. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  13. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  14. package/esm2022/src/v-angular/button/button.component.mjs +9 -9
  15. package/esm2022/src/v-angular/button/button.module.mjs +11 -11
  16. package/esm2022/src/v-angular/card/card.component.mjs +6 -6
  17. package/esm2022/src/v-angular/card/card.module.mjs +9 -9
  18. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  19. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +9 -7
  20. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +14 -12
  21. package/esm2022/src/v-angular/core/core.utils.mjs +35 -1
  22. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  23. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  24. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  25. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  26. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  27. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +20 -0
  28. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +56 -0
  29. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +63 -0
  30. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +196 -0
  31. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  32. package/esm2022/src/v-angular/datepicker/index.mjs +17 -0
  33. package/esm2022/src/v-angular/datepicker/models/dates.mjs +291 -0
  34. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  35. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  36. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  37. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +5 -0
  38. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  39. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  40. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  41. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  42. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  43. package/esm2022/src/v-angular/drag-drop/index.mjs +5 -0
  44. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +5 -0
  45. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  46. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -9
  47. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +31 -15
  48. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  49. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  50. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  51. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  52. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  53. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +5 -5
  54. package/esm2022/src/v-angular/external-link/external-link.module.mjs +9 -9
  55. package/esm2022/src/v-angular/i18n/i18n.module.mjs +12 -12
  56. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +6 -6
  57. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +6 -6
  58. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +11 -11
  59. package/esm2022/src/v-angular/input/input.component.mjs +11 -15
  60. package/esm2022/src/v-angular/input/input.module.mjs +27 -22
  61. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +6 -6
  62. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +10 -10
  63. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +53 -31
  64. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  65. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  66. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  67. package/esm2022/src/v-angular/modal/modal.module.mjs +38 -27
  68. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  69. package/esm2022/src/v-angular/pagination/index.mjs +3 -0
  70. package/esm2022/src/v-angular/pagination/pagination.component.mjs +144 -0
  71. package/esm2022/src/v-angular/pagination/pagination.module.mjs +37 -0
  72. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +5 -0
  73. package/esm2022/src/v-angular/radio/radio.component.mjs +14 -12
  74. package/esm2022/src/v-angular/radio/radio.module.mjs +12 -11
  75. package/esm2022/src/v-angular/slug/slug.module.mjs +6 -6
  76. package/esm2022/src/v-angular/table/index.mjs +9 -0
  77. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +5 -0
  78. package/esm2022/src/v-angular/table/table.component.mjs +387 -0
  79. package/esm2022/src/v-angular/table/table.directive.mjs +110 -0
  80. package/esm2022/src/v-angular/table/table.models.mjs +2 -0
  81. package/esm2022/src/v-angular/table/table.module.mjs +40 -0
  82. package/esm2022/src/v-angular/table/table.tools.mjs +29 -0
  83. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +22 -0
  84. package/esm2022/src/v-angular/tabs/index.mjs +8 -0
  85. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +5 -0
  86. package/esm2022/src/v-angular/tabs/tab.directive.mjs +81 -0
  87. package/esm2022/src/v-angular/tabs/tabs.component.mjs +262 -0
  88. package/esm2022/src/v-angular/tabs/tabs.models.mjs +2 -0
  89. package/esm2022/src/v-angular/tabs/tabs.module.mjs +21 -0
  90. package/esm2022/src/v-angular/textarea/textarea.component.mjs +9 -7
  91. package/esm2022/src/v-angular/textarea/textarea.module.mjs +27 -13
  92. package/esm2022/src/v-angular/toast/index.mjs +8 -0
  93. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +5 -0
  94. package/esm2022/src/v-angular/toast/toast-message.service.mjs +63 -0
  95. package/esm2022/src/v-angular/toast/toast.component.mjs +70 -0
  96. package/esm2022/src/v-angular/toast/toast.models.mjs +8 -0
  97. package/esm2022/src/v-angular/toast/toast.module.mjs +21 -0
  98. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +35 -15
  99. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +11 -11
  100. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +60 -0
  101. package/esm2022/v-angular/alert/alert.component.mjs +47 -0
  102. package/esm2022/v-angular/alert/alert.models.mjs +8 -0
  103. package/esm2022/v-angular/alert/alert.module.mjs +18 -0
  104. package/esm2022/v-angular/alert/index.mjs +4 -0
  105. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  106. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  107. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  108. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  109. package/esm2022/v-angular/button/button.component.mjs +9 -9
  110. package/esm2022/v-angular/button/button.module.mjs +11 -11
  111. package/esm2022/v-angular/card/card.component.mjs +6 -6
  112. package/esm2022/v-angular/card/card.module.mjs +9 -9
  113. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  114. package/esm2022/v-angular/checkbox/checkbox.component.mjs +9 -7
  115. package/esm2022/v-angular/checkbox/checkbox.module.mjs +14 -12
  116. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  117. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  118. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  119. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  120. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  121. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +20 -0
  122. package/esm2022/v-angular/datepicker/datepicker.models.mjs +56 -0
  123. package/esm2022/v-angular/datepicker/datepicker.module.mjs +63 -0
  124. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +196 -0
  125. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  126. package/esm2022/v-angular/datepicker/index.mjs +17 -0
  127. package/esm2022/v-angular/datepicker/models/dates.mjs +291 -0
  128. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  129. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  130. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  131. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  132. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  133. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  134. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  135. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  136. package/esm2022/v-angular/drag-drop/index.mjs +5 -0
  137. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  138. package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -9
  139. package/esm2022/v-angular/dropdown/dropdown.module.mjs +31 -15
  140. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  141. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  142. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  143. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  144. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  145. package/esm2022/v-angular/external-link/external-link.directive.mjs +37 -0
  146. package/esm2022/v-angular/external-link/external-link.module.mjs +18 -0
  147. package/esm2022/v-angular/external-link/index.mjs +3 -0
  148. package/esm2022/v-angular/i18n/i18n.module.mjs +12 -12
  149. package/esm2022/v-angular/i18n/i18n.test.module.mjs +6 -6
  150. package/esm2022/v-angular/index.mjs +10 -1
  151. package/esm2022/v-angular/info-circle/info-circle.component.mjs +6 -6
  152. package/esm2022/v-angular/info-circle/info-circle.module.mjs +11 -11
  153. package/esm2022/v-angular/input/input.component.mjs +11 -15
  154. package/esm2022/v-angular/input/input.module.mjs +27 -22
  155. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +6 -6
  156. package/esm2022/v-angular/input-mask/input-mask.module.mjs +10 -10
  157. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +53 -31
  158. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  159. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  160. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  161. package/esm2022/v-angular/modal/modal.module.mjs +38 -27
  162. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  163. package/esm2022/v-angular/pagination/index.mjs +3 -0
  164. package/esm2022/v-angular/pagination/pagination.component.mjs +144 -0
  165. package/esm2022/v-angular/pagination/pagination.module.mjs +37 -0
  166. package/esm2022/v-angular/radio/radio.component.mjs +14 -12
  167. package/esm2022/v-angular/radio/radio.module.mjs +12 -11
  168. package/esm2022/v-angular/slug/index.mjs +3 -0
  169. package/esm2022/v-angular/slug/slug.module.mjs +18 -0
  170. package/esm2022/v-angular/slug/slug.pipe.mjs +27 -0
  171. package/esm2022/v-angular/table/index.mjs +9 -0
  172. package/esm2022/v-angular/table/table.component.mjs +387 -0
  173. package/esm2022/v-angular/table/table.directive.mjs +110 -0
  174. package/esm2022/v-angular/table/table.models.mjs +2 -0
  175. package/esm2022/v-angular/table/table.module.mjs +40 -0
  176. package/esm2022/v-angular/table/table.tools.mjs +29 -0
  177. package/esm2022/v-angular/table/tr-thook.pipe.mjs +22 -0
  178. package/esm2022/v-angular/tabs/index.mjs +8 -0
  179. package/esm2022/v-angular/tabs/tab.directive.mjs +81 -0
  180. package/esm2022/v-angular/tabs/tabs.component.mjs +262 -0
  181. package/esm2022/v-angular/tabs/tabs.models.mjs +2 -0
  182. package/esm2022/v-angular/tabs/tabs.module.mjs +21 -0
  183. package/esm2022/v-angular/textarea/textarea.component.mjs +9 -7
  184. package/esm2022/v-angular/textarea/textarea.module.mjs +27 -13
  185. package/esm2022/v-angular/toast/index.mjs +8 -0
  186. package/esm2022/v-angular/toast/toast-message.service.mjs +63 -0
  187. package/esm2022/v-angular/toast/toast.component.mjs +70 -0
  188. package/esm2022/v-angular/toast/toast.models.mjs +8 -0
  189. package/esm2022/v-angular/toast/toast.module.mjs +21 -0
  190. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +35 -15
  191. package/esm2022/v-angular/tooltip/tooltip.module.mjs +11 -11
  192. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +60 -0
  193. package/esm2022/v-angular/v-angular.module.mjs +104 -68
  194. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +76 -0
  195. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -0
  196. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +76 -0
  197. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -0
  198. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +23 -13
  199. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  200. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +14 -14
  201. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  202. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +18 -18
  203. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  204. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +13 -13
  205. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  206. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +6 -6
  207. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  208. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +21 -17
  209. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  210. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +34 -0
  211. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  212. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +1759 -0
  213. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -0
  214. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +687 -0
  215. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -0
  216. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +126 -74
  217. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  218. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +12 -12
  219. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  220. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +17 -17
  221. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  222. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +15 -15
  223. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  224. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +14 -14
  225. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  226. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +36 -35
  227. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  228. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +246 -81
  229. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  230. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +185 -0
  231. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -0
  232. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +24 -21
  233. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  234. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +6 -6
  235. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  236. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +585 -0
  237. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -0
  238. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +367 -0
  239. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -0
  240. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +33 -18
  241. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  242. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +166 -0
  243. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -0
  244. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +103 -24
  245. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  246. package/fesm2022/sebgroup-green-angular-v-angular.mjs +6295 -2165
  247. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  248. package/package.json +51 -3
  249. package/src/v-angular/account-number/README.md +70 -0
  250. package/src/v-angular/account-number/account-number.module.d.ts +8 -0
  251. package/src/v-angular/account-number/account-number.pipe.d.ts +32 -0
  252. package/src/v-angular/account-number/index.d.ts +2 -0
  253. package/src/v-angular/alert/alert.component.d.ts +19 -0
  254. package/src/v-angular/alert/alert.models.d.ts +13 -0
  255. package/src/v-angular/alert/alert.module.d.ts +8 -0
  256. package/src/v-angular/alert/index.d.ts +3 -0
  257. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  258. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  259. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  260. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  261. package/src/v-angular/button/button.component.d.ts +5 -5
  262. package/src/v-angular/button/button.module.d.ts +4 -4
  263. package/src/v-angular/card/card.component.d.ts +3 -3
  264. package/src/v-angular/card/card.module.d.ts +4 -4
  265. package/src/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  266. package/src/v-angular/checkbox/checkbox.component.d.ts +6 -5
  267. package/src/v-angular/checkbox/checkbox.module.d.ts +5 -4
  268. package/src/v-angular/core/core.utils.d.ts +1 -0
  269. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  270. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  271. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  272. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  273. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  274. package/src/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  275. package/src/v-angular/datepicker/datepicker.models.d.ts +50 -0
  276. package/src/v-angular/datepicker/datepicker.module.d.ts +19 -0
  277. package/src/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  278. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  279. package/src/v-angular/datepicker/index.d.ts +13 -0
  280. package/src/v-angular/datepicker/models/dates.d.ts +15 -0
  281. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  282. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  283. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  284. package/src/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  285. package/src/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  286. package/src/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  287. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  288. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  289. package/src/v-angular/drag-drop/index.d.ts +4 -0
  290. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  291. package/src/v-angular/dropdown/dropdown.component.d.ts +10 -6
  292. package/src/v-angular/dropdown/dropdown.module.d.ts +8 -7
  293. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  294. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  295. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  296. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  297. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  298. package/src/v-angular/external-link/external-link.directive.d.ts +3 -3
  299. package/src/v-angular/external-link/external-link.module.d.ts +4 -4
  300. package/src/v-angular/i18n/i18n.module.d.ts +7 -7
  301. package/src/v-angular/i18n/i18n.test.module.d.ts +4 -4
  302. package/src/v-angular/info-circle/info-circle.component.d.ts +4 -4
  303. package/src/v-angular/info-circle/info-circle.module.d.ts +4 -4
  304. package/src/v-angular/input/input.component.d.ts +5 -10
  305. package/src/v-angular/input/input.module.d.ts +5 -4
  306. package/src/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  307. package/src/v-angular/input-mask/input-mask.module.d.ts +5 -5
  308. package/src/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  309. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  310. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  311. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  312. package/src/v-angular/modal/modal.module.d.ts +4 -4
  313. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  314. package/src/v-angular/pagination/index.d.ts +2 -0
  315. package/src/v-angular/pagination/pagination.component.d.ts +64 -0
  316. package/src/v-angular/pagination/pagination.module.d.ts +12 -0
  317. package/src/v-angular/radio/radio.component.d.ts +14 -13
  318. package/src/v-angular/radio/radio.module.d.ts +5 -4
  319. package/src/v-angular/slug/slug.module.d.ts +4 -4
  320. package/src/v-angular/table/index.d.ts +5 -0
  321. package/src/v-angular/table/table.component.d.ts +229 -0
  322. package/src/v-angular/table/table.directive.d.ts +36 -0
  323. package/src/v-angular/table/table.models.d.ts +62 -0
  324. package/src/v-angular/table/table.module.d.ts +12 -0
  325. package/src/v-angular/table/table.tools.d.ts +5 -0
  326. package/src/v-angular/table/tr-thook.pipe.d.ts +7 -0
  327. package/src/v-angular/tabs/index.d.ts +4 -0
  328. package/src/v-angular/tabs/tab.directive.d.ts +37 -0
  329. package/src/v-angular/tabs/tabs.component.d.ts +65 -0
  330. package/src/v-angular/tabs/tabs.models.d.ts +25 -0
  331. package/src/v-angular/tabs/tabs.module.d.ts +11 -0
  332. package/src/v-angular/textarea/textarea.component.d.ts +6 -5
  333. package/src/v-angular/textarea/textarea.module.d.ts +6 -4
  334. package/src/v-angular/toast/index.d.ts +4 -0
  335. package/src/v-angular/toast/toast-message.service.d.ts +17 -0
  336. package/src/v-angular/toast/toast.component.d.ts +22 -0
  337. package/src/v-angular/toast/toast.models.d.ts +15 -0
  338. package/src/v-angular/toast/toast.module.d.ts +10 -0
  339. package/src/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  340. package/src/v-angular/tooltip/tooltip.module.d.ts +4 -4
  341. package/src/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  342. package/v-angular/alert/alert.component.d.ts +19 -0
  343. package/v-angular/alert/alert.models.d.ts +13 -0
  344. package/v-angular/alert/alert.module.d.ts +8 -0
  345. package/v-angular/alert/index.d.ts +3 -0
  346. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  347. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  348. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  349. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  350. package/v-angular/button/button.component.d.ts +5 -5
  351. package/v-angular/button/button.module.d.ts +4 -4
  352. package/v-angular/card/card.component.d.ts +3 -3
  353. package/v-angular/card/card.module.d.ts +4 -4
  354. package/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  355. package/v-angular/checkbox/checkbox.component.d.ts +6 -5
  356. package/v-angular/checkbox/checkbox.module.d.ts +5 -4
  357. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  358. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  359. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  360. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  361. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  362. package/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  363. package/v-angular/datepicker/datepicker.models.d.ts +50 -0
  364. package/v-angular/datepicker/datepicker.module.d.ts +19 -0
  365. package/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  366. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  367. package/v-angular/datepicker/index.d.ts +13 -0
  368. package/v-angular/datepicker/models/dates.d.ts +15 -0
  369. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  370. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  371. package/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  372. package/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  373. package/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  374. package/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  375. package/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  376. package/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  377. package/v-angular/drag-drop/index.d.ts +4 -0
  378. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  379. package/v-angular/dropdown/dropdown.component.d.ts +10 -6
  380. package/v-angular/dropdown/dropdown.module.d.ts +8 -7
  381. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  382. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  383. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  384. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  385. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  386. package/v-angular/external-link/external-link.directive.d.ts +17 -0
  387. package/v-angular/external-link/external-link.module.d.ts +8 -0
  388. package/v-angular/external-link/index.d.ts +2 -0
  389. package/v-angular/i18n/i18n.module.d.ts +7 -7
  390. package/v-angular/i18n/i18n.test.module.d.ts +4 -4
  391. package/v-angular/index.d.ts +9 -0
  392. package/v-angular/info-circle/info-circle.component.d.ts +4 -4
  393. package/v-angular/info-circle/info-circle.module.d.ts +4 -4
  394. package/v-angular/input/input.component.d.ts +5 -10
  395. package/v-angular/input/input.module.d.ts +5 -4
  396. package/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  397. package/v-angular/input-mask/input-mask.module.d.ts +5 -5
  398. package/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  399. package/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  400. package/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  401. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  402. package/v-angular/modal/modal.module.d.ts +4 -4
  403. package/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  404. package/v-angular/pagination/index.d.ts +2 -0
  405. package/v-angular/pagination/pagination.component.d.ts +64 -0
  406. package/v-angular/pagination/pagination.module.d.ts +12 -0
  407. package/v-angular/radio/radio.component.d.ts +14 -13
  408. package/v-angular/radio/radio.module.d.ts +5 -4
  409. package/v-angular/slug/index.d.ts +2 -0
  410. package/v-angular/slug/slug.module.d.ts +8 -0
  411. package/v-angular/slug/slug.pipe.d.ts +12 -0
  412. package/v-angular/table/index.d.ts +5 -0
  413. package/v-angular/table/table.component.d.ts +229 -0
  414. package/v-angular/table/table.directive.d.ts +36 -0
  415. package/v-angular/table/table.models.d.ts +62 -0
  416. package/v-angular/table/table.module.d.ts +12 -0
  417. package/v-angular/table/table.tools.d.ts +5 -0
  418. package/v-angular/table/tr-thook.pipe.d.ts +7 -0
  419. package/v-angular/tabs/index.d.ts +4 -0
  420. package/v-angular/tabs/tab.directive.d.ts +37 -0
  421. package/v-angular/tabs/tabs.component.d.ts +65 -0
  422. package/v-angular/tabs/tabs.models.d.ts +25 -0
  423. package/v-angular/tabs/tabs.module.d.ts +11 -0
  424. package/v-angular/textarea/textarea.component.d.ts +6 -5
  425. package/v-angular/textarea/textarea.module.d.ts +6 -4
  426. package/v-angular/toast/index.d.ts +4 -0
  427. package/v-angular/toast/toast-message.service.d.ts +17 -0
  428. package/v-angular/toast/toast.component.d.ts +22 -0
  429. package/v-angular/toast/toast.models.d.ts +15 -0
  430. package/v-angular/toast/toast.module.d.ts +10 -0
  431. package/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  432. package/v-angular/tooltip/tooltip.module.d.ts +4 -4
  433. package/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  434. package/v-angular/v-angular.module.d.ts +27 -18
@@ -0,0 +1,200 @@
1
+ import { WeekDay } from '@angular/common';
2
+ import { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren, } from '@angular/core';
3
+ import { generateDateMatrix, getDayOffset, sortWeekDays, } from '../../datepicker.utils';
4
+ import { CalendarDateDirective } from '../../directives/calendar-date.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "../../directives/calendar-date.directive";
8
+ import * as i3 from "../../pipes/is-disabled.pipe";
9
+ import * as i4 from "../../pipes/date-thook.pipe";
10
+ import * as i5 from "../../pipes/matches.pipe";
11
+ export class CalendarComponent {
12
+ constructor() {
13
+ this.dateClick = new EventEmitter();
14
+ this.minCalendarRows = 5;
15
+ this.firstDayOfWeek = WeekDay.Monday;
16
+ this.type = 'normal';
17
+ this.dateMatrix = [[]];
18
+ this.disableDateConfig = {};
19
+ this.lastDayOfWeek = WeekDay.Sunday;
20
+ }
21
+ // inputs that affects which dates in the calendar should be grayed out
22
+ set disableDates(value) {
23
+ this.updateDisableDateConfig({ excludeDates: value ?? [] });
24
+ }
25
+ set disableWeekDays(value) {
26
+ this.updateDisableDateConfig({ excludeDays: value });
27
+ }
28
+ set firstValid(value) {
29
+ this.updateDisableDateConfig({ fromDate: value });
30
+ }
31
+ set lastValid(value) {
32
+ this.updateDisableDateConfig({ toDate: value });
33
+ }
34
+ set closingTime(value) {
35
+ this.updateDisableDateConfig({ closingTime: value });
36
+ }
37
+ ngOnChanges(changes) {
38
+ if (changes.selected?.currentValue) {
39
+ this.selected = new Date(changes.selected.currentValue);
40
+ }
41
+ if (changes.firstDayOfWeek?.currentValue) {
42
+ this.lastDayOfWeek = sortWeekDays(changes.firstDayOfWeek.currentValue).pop();
43
+ }
44
+ if ((changes.month?.currentValue !== undefined &&
45
+ changes.month?.currentValue !== null) ||
46
+ !!changes.year?.currentValue ||
47
+ !!changes.firstDayOfWeek?.currentValue ||
48
+ !!changes.minCalendarRows?.currentValue) {
49
+ this.dateMatrix = generateDateMatrix(this.month, this.year, this.minCalendarRows, this.firstDayOfWeek);
50
+ }
51
+ }
52
+ clickDate(date) {
53
+ this.dateClick.emit(date);
54
+ }
55
+ keyNavigation(event) {
56
+ let activeElement;
57
+ if (event.key !== 'Tab')
58
+ activeElement = document.activeElement;
59
+ if (event.key === 'ArrowRight') {
60
+ const nextFocusable = this.getNextFocusable(activeElement);
61
+ if (nextFocusable)
62
+ nextFocusable.focus();
63
+ }
64
+ if (event.key === 'ArrowLeft') {
65
+ const nextFocusable = this.getPreviousFocusable(activeElement);
66
+ if (nextFocusable)
67
+ nextFocusable.focus();
68
+ }
69
+ if (event.key === 'ArrowUp') {
70
+ event.preventDefault();
71
+ const nextFocusable = this.getElementWithOffset(activeElement, -7);
72
+ if (nextFocusable)
73
+ nextFocusable.focus();
74
+ }
75
+ if (event.key === 'ArrowDown') {
76
+ event.preventDefault();
77
+ const nextFocusable = this.getElementWithOffset(activeElement, 7);
78
+ if (nextFocusable)
79
+ nextFocusable.focus();
80
+ }
81
+ if (event.key === 'Enter' || event.key === 'Space') {
82
+ if (activeElement) {
83
+ const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);
84
+ if (!dateRef?.disabled) {
85
+ this.dateClick.emit(dateRef?.calendarDate);
86
+ }
87
+ }
88
+ }
89
+ if (event.key === 'Home') {
90
+ event.preventDefault();
91
+ const nextFocusable = this.firstDayOfWeekElement();
92
+ if (nextFocusable)
93
+ nextFocusable.focus();
94
+ }
95
+ if (event.key === 'End') {
96
+ event.preventDefault();
97
+ const nextFocusable = this.lastDayOfWeekElement();
98
+ if (nextFocusable)
99
+ nextFocusable.focus();
100
+ }
101
+ }
102
+ getElementWithOffset(fromElement, offsetDays, returnOnlyEnabled = true) {
103
+ if (!fromElement)
104
+ return;
105
+ const fromIndex = this.dateButtonRefs
106
+ .toArray()
107
+ .map((ref) => ref.nativeElement)
108
+ .indexOf(fromElement);
109
+ const next = this.dateButtonRefs.get(fromIndex + offsetDays);
110
+ if (!next)
111
+ return;
112
+ if (returnOnlyEnabled && next.disabled)
113
+ return this.getElementWithOffset(next.nativeElement, offsetDays);
114
+ return next.nativeElement;
115
+ }
116
+ getNextFocusable(fromElement) {
117
+ if (!fromElement)
118
+ return;
119
+ return this.getElementWithOffset(fromElement, 1);
120
+ }
121
+ getPreviousFocusable(fromElement) {
122
+ if (!fromElement)
123
+ return;
124
+ return this.getElementWithOffset(fromElement, -1);
125
+ }
126
+ firstDayOfWeekElement() {
127
+ const activeElement = document.activeElement;
128
+ if (!activeElement)
129
+ return;
130
+ const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);
131
+ if (dateRef.calendarDate.getDay() === this.firstDayOfWeek)
132
+ return;
133
+ const offset = this.getDayOffset(dateRef.calendarDate.getDay(), this.firstDayOfWeek, 'back');
134
+ const targetElement = this.getElementWithOffset(activeElement, offset, false);
135
+ if (targetElement && targetElement.disabled)
136
+ return this.getNextFocusable(targetElement);
137
+ return targetElement;
138
+ }
139
+ lastDayOfWeekElement() {
140
+ const activeElement = document.activeElement;
141
+ if (!activeElement)
142
+ return;
143
+ const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);
144
+ if (dateRef.calendarDate.getDay() === this.lastDayOfWeek)
145
+ return;
146
+ const offset = this.getDayOffset(dateRef.calendarDate.getDay(), this.lastDayOfWeek, 'forward');
147
+ const targetElement = this.getElementWithOffset(activeElement, offset, false);
148
+ if (targetElement && targetElement.disabled)
149
+ return this.getPreviousFocusable(targetElement);
150
+ return targetElement;
151
+ }
152
+ getDayOffset(from, to, direction) {
153
+ return getDayOffset(from, to, this.firstDayOfWeek, direction);
154
+ }
155
+ updateDisableDateConfig(config) {
156
+ this.disableDateConfig = {
157
+ ...this.disableDateConfig,
158
+ ...config,
159
+ };
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CalendarComponent, selector: "nggv-calendar", inputs: { year: "year", month: "month", selected: "selected", locale: "locale", minCalendarRows: "minCalendarRows", firstDayOfWeek: "firstDayOfWeek", type: "type", disableDates: "disableDates", disableWeekDays: "disableWeekDays", firstValid: "firstValid", lastValid: "lastValid", closingTime: "closingTime" }, outputs: { dateClick: "dateClick" }, host: { listeners: { "keydown": "keyNavigation($event)" } }, viewQueries: [{ propertyName: "dateButtonRefs", predicate: CalendarDateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngFor=\"let weekRow of dateMatrix\">\n <div class=\"nggv-calendar-row\">\n <button\n *ngFor=\"let date of weekRow\"\n class=\"gds-button gds-button-alternative\"\n [attr.data-thook]=\"\n date | dateThook: (date | isDisabled: disableDateConfig)\n \"\n [attr.aria-label]=\"date\"\n [calendarDate]=\"date\"\n [notWithinMonth]=\"!(month === date?.getMonth())\"\n [selected]=\"date | matches: selected\"\n [disabled]=\"date | isDisabled: disableDateConfig\"\n (click)=\"clickDate(date)\"\n >\n {{ date | date: 'd' : undefined : locale }}\n </button>\n </div>\n</ng-container>\n", styles: [":host{--sg-border-color: transparent;--sg-border-width: 0;--sg-border-radius: 4px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}:host .nggv-calendar-row{display:flex;padding:2px;gap:1px}:host .nggv-calendar-row>*{line-height:2.5rem;padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-calendar-row>*:disabled{border:0 solid transparent}:host .nggv-calendar-row>button{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;width:15%;background:transparent;width:44px;height:44px;border-radius:4px;font-size:1rem;font-family:inherit}:host .nggv-calendar-row>button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-row>button:focus,:host .nggv-calendar-row>button: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 .nggv-calendar-row>button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .nggv-calendar-row>button{border:2px solid currentcolor}}:host .nggv-calendar-row>button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .nggv-calendar-row>button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .nggv-calendar-row>button:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button:not([disabled]):focus{z-index:1;outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button[disabled]{background-color:#eee;color:#adadad}:host .nggv-calendar-row>button.today{border:1px solid #333}:host .nggv-calendar-row>button.not-within-month:not([disabled]){color:#adadad;background-color:#f8f8f8}:host .nggv-calendar-row>button.not-within-month:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button.selected:not([disabled]){background-color:#1a1a1a;border-color:#1a1a1a;text-decoration:none;color:#fff}@media (max-width: 35.98em){:host .nggv-calendar-row>button{min-width:initial}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.CalendarDateDirective, selector: "[calendarDate]", inputs: ["calendarDate", "selected", "notWithinMonth", "disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i3.IsDisabledPipe, name: "isDisabled" }, { kind: "pipe", type: i4.DateThookPipe, name: "dateThook" }, { kind: "pipe", type: i5.MatchesPipe, name: "matches" }] }); }
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: 'nggv-calendar', template: "<ng-container *ngFor=\"let weekRow of dateMatrix\">\n <div class=\"nggv-calendar-row\">\n <button\n *ngFor=\"let date of weekRow\"\n class=\"gds-button gds-button-alternative\"\n [attr.data-thook]=\"\n date | dateThook: (date | isDisabled: disableDateConfig)\n \"\n [attr.aria-label]=\"date\"\n [calendarDate]=\"date\"\n [notWithinMonth]=\"!(month === date?.getMonth())\"\n [selected]=\"date | matches: selected\"\n [disabled]=\"date | isDisabled: disableDateConfig\"\n (click)=\"clickDate(date)\"\n >\n {{ date | date: 'd' : undefined : locale }}\n </button>\n </div>\n</ng-container>\n", styles: [":host{--sg-border-color: transparent;--sg-border-width: 0;--sg-border-radius: 4px;border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}:host .nggv-calendar-row{display:flex;padding:2px;gap:1px}:host .nggv-calendar-row>*{line-height:2.5rem;padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-calendar-row>*:disabled{border:0 solid transparent}:host .nggv-calendar-row>button{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;width:15%;background:transparent;width:44px;height:44px;border-radius:4px;font-size:1rem;font-family:inherit}:host .nggv-calendar-row>button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-row>button:focus,:host .nggv-calendar-row>button: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 .nggv-calendar-row>button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host .nggv-calendar-row>button{border:2px solid currentcolor}}:host .nggv-calendar-row>button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host .nggv-calendar-row>button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .nggv-calendar-row>button:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button:not([disabled]):focus{z-index:1;outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button[disabled]{background-color:#eee;color:#adadad}:host .nggv-calendar-row>button.today{border:1px solid #333}:host .nggv-calendar-row>button.not-within-month:not([disabled]){color:#adadad;background-color:#f8f8f8}:host .nggv-calendar-row>button.not-within-month:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button.selected:not([disabled]){background-color:#1a1a1a;border-color:#1a1a1a;text-decoration:none;color:#fff}@media (max-width: 35.98em){:host .nggv-calendar-row>button{min-width:initial}}\n"] }]
167
+ }], propDecorators: { dateClick: [{
168
+ type: Output
169
+ }], dateButtonRefs: [{
170
+ type: ViewChildren,
171
+ args: [CalendarDateDirective]
172
+ }], year: [{
173
+ type: Input
174
+ }], month: [{
175
+ type: Input
176
+ }], selected: [{
177
+ type: Input
178
+ }], locale: [{
179
+ type: Input
180
+ }], minCalendarRows: [{
181
+ type: Input
182
+ }], firstDayOfWeek: [{
183
+ type: Input
184
+ }], type: [{
185
+ type: Input
186
+ }], disableDates: [{
187
+ type: Input
188
+ }], disableWeekDays: [{
189
+ type: Input
190
+ }], firstValid: [{
191
+ type: Input
192
+ }], lastValid: [{
193
+ type: Input
194
+ }], closingTime: [{
195
+ type: Input
196
+ }], keyNavigation: [{
197
+ type: HostListener,
198
+ args: ['keydown', ['$event']]
199
+ }] } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQTs7Ozs7OztBQVNoRixNQUFNLE9BQU8saUJBQWlCO0lBTDlCO1FBTVksY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFXckMsb0JBQWUsR0FBRyxDQUFDLENBQUE7UUFDbkIsbUJBQWMsR0FBWSxPQUFPLENBQUMsTUFBTSxDQUFBO1FBQ3hDLFNBQUksR0FBaUIsUUFBUSxDQUFBO1FBbUJ0QyxlQUFVLEdBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMzQixzQkFBaUIsR0FBc0IsRUFBRSxDQUFBO1FBRWpDLGtCQUFhLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQTtLQTZLaEQ7SUFqTUMsdUVBQXVFO0lBQ3ZFLElBQWEsWUFBWSxDQUFDLEtBQXlCO1FBQ2pELElBQUksQ0FBQyx1QkFBdUIsQ0FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2Vla0RheSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7XG4gIGdlbmVyYXRlRGF0ZU1hdHJpeCxcbiAgZ2V0RGF5T2Zmc2V0LFxuICBzb3J0V2Vla0RheXMsXG59IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIudXRpbHMnXG5pbXBvcnQgeyBDYWxlbmRhckRhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NhbGVuZGFyLWRhdGUuZGlyZWN0aXZlJ1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSwgRGlzYWJsZURhdGVDb25maWcgfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQE91dHB1dCgpIGRhdGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKVxuXG4gIEBWaWV3Q2hpbGRyZW4oQ2FsZW5kYXJEYXRlRGlyZWN0aXZlKVxuICBkYXRlQnV0dG9uUmVmcyE6IFF1ZXJ5TGlzdDxDYWxlbmRhckRhdGVEaXJlY3RpdmU+XG5cbiAgQElucHV0KCkgeWVhciE6IG51bWJlclxuICBASW5wdXQoKSBtb250aCE6IG51bWJlclxuICBASW5wdXQoKSBzZWxlY3RlZDogRGF0ZSB8IHVuZGVmaW5lZFxuXG4gIC8vIGlucHV0cyB0aGF0IGNvbmZpZ3VyZSBkaXNwbGF5IGJlaGF2aW91clxuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBtaW5DYWxlbmRhclJvd3MgPSA1XG4gIEBJbnB1dCgpIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5ID0gV2Vla0RheS5Nb25kYXlcbiAgQElucHV0KCkgdHlwZTogQ2FsZW5kYXJUeXBlID0gJ25vcm1hbCdcblxuICAvLyBpbnB1dHMgdGhhdCBhZmZlY3RzIHdoaWNoIGRhdGVzIGluIHRoZSBjYWxlbmRhciBzaG91bGQgYmUgZ3JheWVkIG91dFxuICBASW5wdXQoKSBzZXQgZGlzYWJsZURhdGVzKHZhbHVlOiBEYXRlW10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVEYXRlQ29uZmlnKHsgZXhjbHVkZURhdGVzOiB2YWx1ZSA/PyBbXSB9KVxuICB9XG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlV2Vla0RheXModmFsdWU6IFdlZWtEYXlbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZURhdGVDb25maWcoeyBleGNsdWRlRGF5czogdmFsdWUgfSlcbiAgfVxuICBASW5wdXQoKSBzZXQgZmlyc3RWYWxpZCh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZURhdGVDb25maWcoeyBmcm9tRGF0ZTogdmFsdWUgfSlcbiAgfVxuICBASW5wdXQoKSBzZXQgbGFzdFZhbGlkKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy51cGRhdGVEaXNhYmxlRGF0ZUNvbmZpZyh7IHRvRGF0ZTogdmFsdWUgfSlcbiAgfVxuICBASW5wdXQoKSBzZXQgY2xvc2luZ1RpbWUodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVEYXRlQ29uZmlnKHsgY2xvc2luZ1RpbWU6IHZhbHVlIH0pXG4gIH1cblxuICBkYXRlTWF0cml4OiBEYXRlW11bXSA9IFtbXV1cbiAgZGlzYWJsZURhdGVDb25maWc6IERpc2FibGVEYXRlQ29uZmlnID0ge31cblxuICBwcml2YXRlIGxhc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5LlN1bmRheVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gbmV3IERhdGUoY2hhbmdlcy5zZWxlY3RlZC5jdXJyZW50VmFsdWUpXG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuZmlyc3REYXlPZldlZWs/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5sYXN0RGF5T2ZXZWVrID0gc29ydFdlZWtEYXlzKFxuICAgICAgICBjaGFuZ2VzLmZpcnN0RGF5T2ZXZWVrLmN1cnJlbnRWYWx1ZSxcbiAgICAgICkucG9wKCkgYXMgV2Vla0RheVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChjaGFuZ2VzLm1vbnRoPy5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBjaGFuZ2VzLm1vbnRoPy5jdXJyZW50VmFsdWUgIT09IG51bGwpIHx8XG4gICAgICAhIWNoYW5nZXMueWVhcj8uY3VycmVudFZhbHVlIHx8XG4gICAgICAhIWNoYW5nZXMuZmlyc3REYXlPZldlZWs/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgISFjaGFuZ2VzLm1pbkNhbGVuZGFyUm93cz8uY3VycmVudFZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmRhdGVNYXRyaXggPSBnZW5lcmF0ZURhdGVNYXRyaXgoXG4gICAgICAgIHRoaXMubW9udGgsXG4gICAgICAgIHRoaXMueWVhcixcbiAgICAgICAgdGhpcy5taW5DYWxlbmRhclJvd3MsXG4gICAgICAgIHRoaXMuZmlyc3REYXlPZldlZWssXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY2xpY2tEYXRlKGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVDbGljay5lbWl0KGRhdGUpXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAga2V5TmF2aWdhdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBhY3RpdmVFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuICAgIGlmIChldmVudC5rZXkgIT09ICdUYWInKVxuICAgICAgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgIGNvbnN0IG5leHRGb2N1c2FibGUgPSB0aGlzLmdldE5leHRGb2N1c2FibGUoYWN0aXZlRWxlbWVudClcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZSA9IHRoaXMuZ2V0UHJldmlvdXNGb2N1c2FibGUoYWN0aXZlRWxlbWVudClcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGNvbnN0IG5leHRGb2N1c2FibGUgPSB0aGlzLmdldEVsZW1lbnRXaXRoT2Zmc2V0KGFjdGl2ZUVsZW1lbnQsIC03KVxuICAgICAgaWYgKG5leHRGb2N1c2FibGUpIG5leHRGb2N1c2FibGUuZm9jdXMoKVxuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCBuZXh0Rm9jdXNhYmxlID0gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChhY3RpdmVFbGVtZW50LCA3KVxuICAgICAgaWYgKG5leHRGb2N1c2FibGUpIG5leHRGb2N1c2FibGUuZm9jdXMoKVxuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnU3BhY2UnKSB7XG4gICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICBjb25zdCBkYXRlUmVmID0gdGhpcy5kYXRlQnV0dG9uUmVmcy5maW5kKFxuICAgICAgICAgIChyZWYpID0+IHJlZi5uYXRpdmVFbGVtZW50ID09PSBhY3RpdmVFbGVtZW50LFxuICAgICAgICApXG4gICAgICAgIGlmICghZGF0ZVJlZj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmRhdGVDbGljay5lbWl0KGRhdGVSZWY/LmNhbGVuZGFyRGF0ZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZSA9IHRoaXMuZmlyc3REYXlPZldlZWtFbGVtZW50KClcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW5kJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZSA9IHRoaXMubGFzdERheU9mV2Vla0VsZW1lbnQoKVxuICAgICAgaWYgKG5leHRGb2N1c2FibGUpIG5leHRGb2N1c2FibGUuZm9jdXMoKVxuICAgIH1cbiAgfVxuXG4gIGdldEVsZW1lbnRXaXRoT2Zmc2V0KFxuICAgIGZyb21FbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCxcbiAgICBvZmZzZXREYXlzOiBudW1iZXIsXG4gICAgcmV0dXJuT25seUVuYWJsZWQgPSB0cnVlLFxuICApOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFmcm9tRWxlbWVudCkgcmV0dXJuXG4gICAgY29uc3QgZnJvbUluZGV4ID0gdGhpcy5kYXRlQnV0dG9uUmVmc1xuICAgICAgLnRvQXJyYXkoKVxuICAgICAgLm1hcCgocmVmKSA9PiByZWYubmF0aXZlRWxlbWVudClcbiAgICAgIC5pbmRleE9mKGZyb21FbGVtZW50KVxuICAgIGNvbnN0IG5leHQgPSB0aGlzLmRhdGVCdXR0b25SZWZzLmdldChmcm9tSW5kZXggKyBvZmZzZXREYXlzKVxuICAgIGlmICghbmV4dCkgcmV0dXJuXG4gICAgaWYgKHJldHVybk9ubHlFbmFibGVkICYmIG5leHQuZGlzYWJsZWQpXG4gICAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChuZXh0Lm5hdGl2ZUVsZW1lbnQsIG9mZnNldERheXMpXG4gICAgcmV0dXJuIG5leHQubmF0aXZlRWxlbWVudFxuICB9XG5cbiAgZ2V0TmV4dEZvY3VzYWJsZShcbiAgICBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsXG4gICk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWZyb21FbGVtZW50KSByZXR1cm5cbiAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChmcm9tRWxlbWVudCwgMSlcbiAgfVxuXG4gIGdldFByZXZpb3VzRm9jdXNhYmxlKFxuICAgIGZyb21FbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCxcbiAgKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGlmICghZnJvbUVsZW1lbnQpIHJldHVyblxuICAgIHJldHVybiB0aGlzLmdldEVsZW1lbnRXaXRoT2Zmc2V0KGZyb21FbGVtZW50LCAtMSlcbiAgfVxuXG4gIGZpcnN0RGF5T2ZXZWVrRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHJldHVyblxuICAgIGNvbnN0IGRhdGVSZWYgPSB0aGlzLmRhdGVCdXR0b25SZWZzLmZpbmQoXG4gICAgICAocmVmKSA9PiByZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCxcbiAgICApIGFzIENhbGVuZGFyRGF0ZURpcmVjdGl2ZVxuICAgIGlmIChkYXRlUmVmLmNhbGVuZGFyRGF0ZS5nZXREYXkoKSA9PT0gdGhpcy5maXJzdERheU9mV2VlaykgcmV0dXJuXG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5nZXREYXlPZmZzZXQoXG4gICAgICBkYXRlUmVmLmNhbGVuZGFyRGF0ZS5nZXREYXkoKSxcbiAgICAgIHRoaXMuZmlyc3REYXlPZldlZWssXG4gICAgICAnYmFjaycsXG4gICAgKVxuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnRXaXRoT2Zmc2V0KFxuICAgICAgYWN0aXZlRWxlbWVudCxcbiAgICAgIG9mZnNldCxcbiAgICAgIGZhbHNlLFxuICAgICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJnZXRFbGVtZW50LmRpc2FibGVkKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dEZvY3VzYWJsZSh0YXJnZXRFbGVtZW50KVxuICAgIHJldHVybiB0YXJnZXRFbGVtZW50XG4gIH1cblxuICBsYXN0RGF5T2ZXZWVrRWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHJldHVyblxuICAgIGNvbnN0IGRhdGVSZWYgPSB0aGlzLmRhdGVCdXR0b25SZWZzLmZpbmQoXG4gICAgICAocmVmKSA9PiByZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCxcbiAgICApIGFzIENhbGVuZGFyRGF0ZURpcmVjdGl2ZVxuICAgIGlmIChkYXRlUmVmLmNhbGVuZGFyRGF0ZS5nZXREYXkoKSA9PT0gdGhpcy5sYXN0RGF5T2ZXZWVrKSByZXR1cm5cbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmdldERheU9mZnNldChcbiAgICAgIGRhdGVSZWYuY2FsZW5kYXJEYXRlLmdldERheSgpLFxuICAgICAgdGhpcy5sYXN0RGF5T2ZXZWVrLFxuICAgICAgJ2ZvcndhcmQnLFxuICAgIClcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChcbiAgICAgIGFjdGl2ZUVsZW1lbnQsXG4gICAgICBvZmZzZXQsXG4gICAgICBmYWxzZSxcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50XG4gICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5kaXNhYmxlZClcbiAgICAgIHJldHVybiB0aGlzLmdldFByZXZpb3VzRm9jdXNhYmxlKHRhcmdldEVsZW1lbnQpXG4gICAgcmV0dXJuIHRhcmdldEVsZW1lbnRcbiAgfVxuXG4gIGdldERheU9mZnNldChcbiAgICBmcm9tOiBXZWVrRGF5LFxuICAgIHRvOiBXZWVrRGF5LFxuICAgIGRpcmVjdGlvbj86ICdmb3J3YXJkJyB8ICdiYWNrJyxcbiAgKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZ2V0RGF5T2Zmc2V0KGZyb20sIHRvLCB0aGlzLmZpcnN0RGF5T2ZXZWVrLCBkaXJlY3Rpb24pXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVEYXRlQ29uZmlnKGNvbmZpZzogUGFydGlhbDxEaXNhYmxlRGF0ZUNvbmZpZz4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVEYXRlQ29uZmlnID0ge1xuICAgICAgLi4udGhpcy5kaXNhYmxlRGF0ZUNvbmZpZyxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHdlZWtSb3cgb2YgZGF0ZU1hdHJpeFwiPlxuICA8ZGl2IGNsYXNzPVwibmdndi1jYWxlbmRhci1yb3dcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdGb3I9XCJsZXQgZGF0ZSBvZiB3ZWVrUm93XCJcbiAgICAgIGNsYXNzPVwiZ2RzLWJ1dHRvbiBnZHMtYnV0dG9uLWFsdGVybmF0aXZlXCJcbiAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiXG4gICAgICAgIGRhdGUgfCBkYXRlVGhvb2s6IChkYXRlIHwgaXNEaXNhYmxlZDogZGlzYWJsZURhdGVDb25maWcpXG4gICAgICBcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkYXRlXCJcbiAgICAgIFtjYWxlbmRhckRhdGVdPVwiZGF0ZVwiXG4gICAgICBbbm90V2l0aGluTW9udGhdPVwiIShtb250aCA9PT0gZGF0ZT8uZ2V0TW9udGgoKSlcIlxuICAgICAgW3NlbGVjdGVkXT1cImRhdGUgfCBtYXRjaGVzOiBzZWxlY3RlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGF0ZSB8IGlzRGlzYWJsZWQ6IGRpc2FibGVEYXRlQ29uZmlnXCJcbiAgICAgIChjbGljayk9XCJjbGlja0RhdGUoZGF0ZSlcIlxuICAgID5cbiAgICAgIHt7IGRhdGUgfCBkYXRlOiAnZCcgOiB1bmRlZmluZWQgOiBsb2NhbGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,115 @@
1
+ import { Component, EventEmitter, HostListener, Input, Output, } from '@angular/core';
2
+ import { UntypedFormBuilder } from '@angular/forms';
3
+ import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
4
+ import { CalendarMonth } from '../../datepicker.models';
5
+ import { getMonthArray, getYearArray } from '../../datepicker.utils';
6
+ import '@sebgroup/green-core/components/icon/icons/chevron-left.js';
7
+ import '@sebgroup/green-core/components/icon/icons/chevron-right.js';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/forms";
10
+ import * as i2 from "@angular/common";
11
+ import * as i3 from "@sebgroup/green-angular/src/lib/shared";
12
+ export class CalendarControlComponent {
13
+ constructor(fb) {
14
+ this.fb = fb;
15
+ // nextIcon: IconDefinition = faChevronRight
16
+ // previousIcon: IconDefinition = faChevronLeft
17
+ this.calendarChange = new EventEmitter();
18
+ this.type = 'normal';
19
+ this.monthArray = []; // array used for month dropdown
20
+ this.yearArray = []; // array used for year dropdown
21
+ this.subs = [];
22
+ // initiate form group for dropdown menus
23
+ this.selectedCalendar = this.fb.group({
24
+ year: [],
25
+ month: [],
26
+ });
27
+ }
28
+ ngOnChanges(changes) {
29
+ if (changes.activeCalendar &&
30
+ !changes.activeCalendar.isFirstChange() &&
31
+ changes.activeCalendar.currentValue.valueOf() !==
32
+ this.selectedCalendar.value.id) {
33
+ this.selectedCalendar.patchValue(changes.activeCalendar.currentValue);
34
+ }
35
+ }
36
+ ngOnInit() {
37
+ // populate drowdowns and labels with data
38
+ this.monthArray = getMonthArray();
39
+ this.yearArray = getYearArray();
40
+ // subscribe to year and month changes, and emit event to datepicker
41
+ this.subscribeToFormChanges();
42
+ // update control to initial value
43
+ if (this.activeCalendar)
44
+ this.selectedCalendar.patchValue(this.activeCalendar);
45
+ }
46
+ ngOnDestroy() {
47
+ this.subs.forEach((sub) => sub.unsubscribe());
48
+ }
49
+ viewPreviousMonth() {
50
+ const previousMonth = CalendarMonth.fromObject(this.selectedCalendar.value).previousMonth();
51
+ this.selectedCalendar.patchValue(previousMonth);
52
+ }
53
+ viewNextMonth() {
54
+ const nextMonth = CalendarMonth.fromObject(this.selectedCalendar.value).nextMonth();
55
+ this.selectedCalendar.patchValue(nextMonth);
56
+ }
57
+ viewPreviousYear() {
58
+ const previousYear = CalendarMonth.fromObject(this.selectedCalendar.value).previousYear();
59
+ this.selectedCalendar.patchValue(previousYear);
60
+ }
61
+ viewNextYear() {
62
+ const nextYear = CalendarMonth.fromObject(this.selectedCalendar.value).nextYear();
63
+ this.selectedCalendar.patchValue(nextYear);
64
+ }
65
+ keyNavigation(event) {
66
+ if (event.key !== 'PageUp' && event.key !== 'PageDown')
67
+ return;
68
+ event.preventDefault();
69
+ if (event.shiftKey) {
70
+ if (event.key === 'PageUp')
71
+ return this.viewPreviousYear();
72
+ if (event.key === 'PageDown')
73
+ return this.viewNextYear();
74
+ }
75
+ if (event.key === 'PageUp')
76
+ return this.viewPreviousMonth();
77
+ if (event.key === 'PageDown')
78
+ return this.viewNextMonth();
79
+ }
80
+ subscribeToFormChanges() {
81
+ // used to quickly check if the yearsArray needs years appended to it
82
+ let existingYears = this.yearArray.map((e) => e.getFullYear());
83
+ const changes = this.selectedCalendar.valueChanges.pipe(debounceTime(1), // added due to this issue: https://github.com/angular/angular/issues/13129
84
+ map((value) => CalendarMonth.fromObject(value)), distinctUntilChanged((prev, curr) => prev.valueOf() === curr.valueOf()));
85
+ this.subs.push(changes.subscribe({
86
+ next: (value) => {
87
+ // if you need to append to year array
88
+ if (existingYears.indexOf(value.year) === -1) {
89
+ this.yearArray.push(value.date);
90
+ this.yearArray.sort((a, b) => a.getFullYear() - b.getFullYear());
91
+ existingYears = this.yearArray.map((e) => e.getFullYear());
92
+ }
93
+ this.calendarChange.emit(value);
94
+ },
95
+ }));
96
+ }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarControlComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CalendarControlComponent, selector: "nggv-calendar-control", inputs: { activeCalendar: "activeCalendar", locale: "locale", type: "type" }, outputs: { calendarChange: "calendarChange" }, host: { listeners: { "keydown": "keyNavigation($event)" } }, usesOnChanges: true, ngImport: i0, template: "<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"previous-month\"\n class=\"nggv-prev-button\"\n (click)=\"viewPreviousMonth()\"\n>\n <gds-icon-chevron-left *nggCoreElement></gds-icon-chevron-left>\n</button>\n\n<ng-container [formGroup]=\"selectedCalendar\">\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-month\"\n formControlName=\"month\"\n >\n <option\n *ngFor=\"let month of monthArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"month.getMonth()\"\n >\n {{ month | date: 'MMMM' : undefined : locale }}\n </option>\n </select>\n\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-year\"\n formControlName=\"year\"\n >\n <option\n *ngFor=\"let year of yearArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"year.getFullYear()\"\n >\n {{ year | date: 'yyyy' : undefined : locale }}\n </option>\n </select>\n</ng-container>\n\n<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"next-month\"\n class=\"nggv-next-button\"\n (click)=\"viewNextMonth()\"\n>\n <gds-icon-chevron-right *nggCoreElement></gds-icon-chevron-right>\n</button>\n", styles: [":host{display:flex;padding:.25rem;justify-content:space-between;align-items:center;gap:.25rem}:host .nggv-calendar-select{--sg-border-radius: 4px;--sg-border-width: 1px;--sg-border-color: #868686;padding:.75rem 3rem .75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);appearance:auto;background:#fff;color:#333;display:block;flex:1;font-family:inherit;font-size:.875rem;font-weight:400;line-height:2rem;max-height:2rem;max-width:100%;min-height:2rem;padding:0 .5em;text-overflow:ellipsis;white-space:nowrap;width:6rem}:host .nggv-calendar-select:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-select:focus,:host .nggv-calendar-select:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button.nggv-prev-button,:host button.nggv-next-button{--sg-border-radius: 4px;--sg-border-width: 0;--sg-border-color: transparent;background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;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;border:none;height:2rem;width:2rem;padding:0 .75em}:host button.nggv-prev-button:focus:not(:focus-visible),:host button.nggv-next-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button.nggv-prev-button:focus,:host button.nggv-prev-button:focus-visible,:host button.nggv-next-button:focus,:host button.nggv-next-button: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 button.nggv-prev-button,:host button.nggv-next-button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host button.nggv-prev-button,:host button.nggv-next-button{border:2px solid currentcolor}}:host button.nggv-prev-button.small,:host button.nggv-next-button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.nggv-prev-button.large,:host button.nggv-next-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}@media (max-width: 47.98em){:host button.nggv-prev-button,:host button.nggv-next-button{width:3em;height:3em}}:host button.nggv-prev-button:hover,:host button.nggv-next-button:hover{background-color:#e9e9e9}@media (max-width: 35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:initial}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarControlComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'nggv-calendar-control', template: "<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"previous-month\"\n class=\"nggv-prev-button\"\n (click)=\"viewPreviousMonth()\"\n>\n <gds-icon-chevron-left *nggCoreElement></gds-icon-chevron-left>\n</button>\n\n<ng-container [formGroup]=\"selectedCalendar\">\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-month\"\n formControlName=\"month\"\n >\n <option\n *ngFor=\"let month of monthArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"month.getMonth()\"\n >\n {{ month | date: 'MMMM' : undefined : locale }}\n </option>\n </select>\n\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-year\"\n formControlName=\"year\"\n >\n <option\n *ngFor=\"let year of yearArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"year.getFullYear()\"\n >\n {{ year | date: 'yyyy' : undefined : locale }}\n </option>\n </select>\n</ng-container>\n\n<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"next-month\"\n class=\"nggv-next-button\"\n (click)=\"viewNextMonth()\"\n>\n <gds-icon-chevron-right *nggCoreElement></gds-icon-chevron-right>\n</button>\n", styles: [":host{display:flex;padding:.25rem;justify-content:space-between;align-items:center;gap:.25rem}:host .nggv-calendar-select{--sg-border-radius: 4px;--sg-border-width: 1px;--sg-border-color: #868686;padding:.75rem 3rem .75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);appearance:auto;background:#fff;color:#333;display:block;flex:1;font-family:inherit;font-size:.875rem;font-weight:400;line-height:2rem;max-height:2rem;max-width:100%;min-height:2rem;padding:0 .5em;text-overflow:ellipsis;white-space:nowrap;width:6rem}:host .nggv-calendar-select:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-select:focus,:host .nggv-calendar-select:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button.nggv-prev-button,:host button.nggv-next-button{--sg-border-radius: 4px;--sg-border-width: 0;--sg-border-color: transparent;background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;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;border:none;height:2rem;width:2rem;padding:0 .75em}:host button.nggv-prev-button:focus:not(:focus-visible),:host button.nggv-next-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button.nggv-prev-button:focus,:host button.nggv-prev-button:focus-visible,:host button.nggv-next-button:focus,:host button.nggv-next-button: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 button.nggv-prev-button,:host button.nggv-next-button{min-width:100%}}@media screen and (-ms-high-contrast: active){:host button.nggv-prev-button,:host button.nggv-next-button{border:2px solid currentcolor}}:host button.nggv-prev-button.small,:host button.nggv-next-button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.nggv-prev-button.large,:host button.nggv-next-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}@media (max-width: 47.98em){:host button.nggv-prev-button,:host button.nggv-next-button{width:3em;height:3em}}:host button.nggv-prev-button:hover,:host button.nggv-next-button:hover{background-color:#e9e9e9}@media (max-width: 35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:initial}}\n"] }]
103
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { calendarChange: [{
104
+ type: Output
105
+ }], activeCalendar: [{
106
+ type: Input
107
+ }], locale: [{
108
+ type: Input
109
+ }], type: [{
110
+ type: Input
111
+ }], keyNavigation: [{
112
+ type: HostListener,
113
+ args: ['keydown', ['$event']]
114
+ }] } });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvY2FsZW5kYXItY29udHJvbC9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9jYWxlbmRhci1jb250cm9sL2NhbGVuZGFyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLGdCQUFnQixDQUFBO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFJcEUsT0FBTyw0REFBNEQsQ0FBQTtBQUNuRSxPQUFPLDZEQUE2RCxDQUFBOzs7OztBQU9wRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JuQyxZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQWYxQyw0Q0FBNEM7UUFDNUMsK0NBQStDO1FBRXJDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUE7UUFJbkQsU0FBSSxHQUFpQixRQUFRLENBQUE7UUFFdEMsZUFBVSxHQUFXLEVBQUUsQ0FBQSxDQUFDLGdDQUFnQztRQUN4RCxjQUFTLEdBQVcs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LENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtvQkFDaEUsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDOytHQXRIVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0UUM1QnJDLDJzQ0FpREE7OzRGRHJCYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCO3VGQVF2QixjQUFjO3NCQUF2QixNQUFNO2dCQUVFLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkF5RU4sYUFBYTtzQkFEWixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgQ2FsZW5kYXJNb250aCB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuaW1wb3J0IHsgZ2V0TW9udGhBcnJheSwgZ2V0WWVhckFycmF5IH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci51dGlscydcblxuaW1wb3J0IHR5cGUgeyBDYWxlbmRhclR5cGUgfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcblxuaW1wb3J0ICdAc2ViZ3JvdXAvZ3JlZW4tY29yZS9jb21wb25lbnRzL2ljb24vaWNvbnMvY2hldnJvbi1sZWZ0LmpzJ1xuaW1wb3J0ICdAc2ViZ3JvdXAvZ3JlZW4tY29yZS9jb21wb25lbnRzL2ljb24vaWNvbnMvY2hldnJvbi1yaWdodC5qcydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1jYWxlbmRhci1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyBuZXh0SWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNoZXZyb25SaWdodFxuICAvLyBwcmV2aW91c0ljb246IEljb25EZWZpbml0aW9uID0gZmFDaGV2cm9uTGVmdFxuXG4gIEBPdXRwdXQoKSBjYWxlbmRhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJNb250aD4oKVxuXG4gIEBJbnB1dCgpIGFjdGl2ZUNhbGVuZGFyITogQ2FsZW5kYXJNb250aFxuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuXG4gIG1vbnRoQXJyYXk6IERhdGVbXSA9IFtdIC8vIGFycmF5IHVzZWQgZm9yIG1vbnRoIGRyb3Bkb3duXG4gIHllYXJBcnJheTogRGF0ZVtdID0gW10gLy8gYXJyYXkgdXNlZCBmb3IgeWVhciBkcm9wZG93blxuICBzZWxlY3RlZENhbGVuZGFyOiBVbnR5cGVkRm9ybUdyb3VwIC8vIGRyb3Bkb3duIGZvcm0gZ3JvdXBcblxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHtcbiAgICAvLyBpbml0aWF0ZSBmb3JtIGdyb3VwIGZvciBkcm9wZG93biBtZW51c1xuICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhciA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgeWVhcjogW10sXG4gICAgICBtb250aDogW10sXG4gICAgfSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLmFjdGl2ZUNhbGVuZGFyICYmXG4gICAgICAhY2hhbmdlcy5hY3RpdmVDYWxlbmRhci5pc0ZpcnN0Q2hhbmdlKCkgJiZcbiAgICAgIGNoYW5nZXMuYWN0aXZlQ2FsZW5kYXIuY3VycmVudFZhbHVlLnZhbHVlT2YoKSAhPT1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLmlkXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZShjaGFuZ2VzLmFjdGl2ZUNhbGVuZGFyLmN1cnJlbnRWYWx1ZSlcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBwb3B1bGF0ZSBkcm93ZG93bnMgYW5kIGxhYmVscyB3aXRoIGRhdGFcbiAgICB0aGlzLm1vbnRoQXJyYXkgPSBnZXRNb250aEFycmF5KClcbiAgICB0aGlzLnllYXJBcnJheSA9IGdldFllYXJBcnJheSgpXG5cbiAgICAvLyBzdWJzY3JpYmUgdG8geWVhciBhbmQgbW9udGggY2hhbmdlcywgYW5kIGVtaXQgZXZlbnQgdG8gZGF0ZXBpY2tlclxuICAgIHRoaXMuc3Vic2NyaWJlVG9Gb3JtQ2hhbmdlcygpXG5cbiAgICAvLyB1cGRhdGUgY29udHJvbCB0byBpbml0aWFsIHZhbHVlXG4gICAgaWYgKHRoaXMuYWN0aXZlQ2FsZW5kYXIpXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZSh0aGlzLmFjdGl2ZUNhbGVuZGFyKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpXG4gIH1cblxuICB2aWV3UHJldmlvdXNNb250aCgpIHtcbiAgICBjb25zdCBwcmV2aW91c01vbnRoID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkucHJldmlvdXNNb250aCgpXG4gICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnBhdGNoVmFsdWUocHJldmlvdXNNb250aClcbiAgfVxuXG4gIHZpZXdOZXh0TW9udGgoKSB7XG4gICAgY29uc3QgbmV4dE1vbnRoID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkubmV4dE1vbnRoKClcbiAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZShuZXh0TW9udGgpXG4gIH1cblxuICB2aWV3UHJldmlvdXNZZWFyKCkge1xuICAgIGNvbnN0IHByZXZpb3VzWWVhciA9IENhbGVuZGFyTW9udGguZnJvbU9iamVjdChcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhci52YWx1ZSxcbiAgICApLnByZXZpb3VzWWVhcigpXG4gICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnBhdGNoVmFsdWUocHJldmlvdXNZZWFyKVxuICB9XG5cbiAgdmlld05leHRZZWFyKCkge1xuICAgIGNvbnN0IG5leHRZZWFyID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkubmV4dFllYXIoKVxuICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhci5wYXRjaFZhbHVlKG5leHRZZWFyKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleU5hdmlnYXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnUGFnZVVwJyAmJiBldmVudC5rZXkgIT09ICdQYWdlRG93bicpIHJldHVyblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSByZXR1cm4gdGhpcy52aWV3UHJldmlvdXNZZWFyKClcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlRG93bicpIHJldHVybiB0aGlzLnZpZXdOZXh0WWVhcigpXG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSByZXR1cm4gdGhpcy52aWV3UHJldmlvdXNNb250aCgpXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJykgcmV0dXJuIHRoaXMudmlld05leHRNb250aCgpXG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgLy8gdXNlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZSB5ZWFyc0FycmF5IG5lZWRzIHllYXJzIGFwcGVuZGVkIHRvIGl0XG4gICAgbGV0IGV4aXN0aW5nWWVhcnMgPSB0aGlzLnllYXJBcnJheS5tYXAoKGUpID0+IGUuZ2V0RnVsbFllYXIoKSlcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEpLCAvLyBhZGRlZCBkdWUgdG8gdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTMxMjlcbiAgICAgIG1hcCgodmFsdWU6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyIH0pID0+XG4gICAgICAgIENhbGVuZGFyTW9udGguZnJvbU9iamVjdCh2YWx1ZSksXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2OiBDYWxlbmRhck1vbnRoLCBjdXJyOiBDYWxlbmRhck1vbnRoKSA9PlxuICAgICAgICAgIHByZXYudmFsdWVPZigpID09PSBjdXJyLnZhbHVlT2YoKSxcbiAgICAgICksXG4gICAgKVxuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgY2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWU6IENhbGVuZGFyTW9udGgpID0+IHtcbiAgICAgICAgICAvLyBpZiB5b3UgbmVlZCB0byBhcHBlbmQgdG8geWVhciBhcnJheVxuICAgICAgICAgIGlmIChleGlzdGluZ1llYXJzLmluZGV4T2YodmFsdWUueWVhcikgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnllYXJBcnJheS5wdXNoKHZhbHVlLmRhdGUpXG4gICAgICAgICAgICB0aGlzLnllYXJBcnJheS5zb3J0KChhLCBiKSA9PiBhLmdldEZ1bGxZZWFyKCkgLSBiLmdldEZ1bGxZZWFyKCkpXG4gICAgICAgICAgICBleGlzdGluZ1llYXJzID0gdGhpcy55ZWFyQXJyYXkubWFwKChlKSA9PiBlLmdldEZ1bGxZZWFyKCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2FsZW5kYXJDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cInR5cGUgPT09ICdub3JtYWwnXCJcbiAgZGF0YS10aG9vaz1cInByZXZpb3VzLW1vbnRoXCJcbiAgY2xhc3M9XCJuZ2d2LXByZXYtYnV0dG9uXCJcbiAgKGNsaWNrKT1cInZpZXdQcmV2aW91c01vbnRoKClcIlxuPlxuICA8Z2RzLWljb24tY2hldnJvbi1sZWZ0ICpuZ2dDb3JlRWxlbWVudD48L2dkcy1pY29uLWNoZXZyb24tbGVmdD5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0ZWRDYWxlbmRhclwiPlxuICA8c2VsZWN0XG4gICAgY2xhc3M9XCJuZ2d2LWNhbGVuZGFyLXNlbGVjdFwiXG4gICAgZGF0YS10aG9vaz1cInNlbGVjdC1tb250aFwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIlxuICA+XG4gICAgPG9wdGlvblxuICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoQXJyYXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZmllbGQtZHJvcGRvd25fX2xhYmVsXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbdmFsdWVdPVwibW9udGguZ2V0TW9udGgoKVwiXG4gICAgPlxuICAgICAge3sgbW9udGggfCBkYXRlOiAnTU1NTScgOiB1bmRlZmluZWQgOiBsb2NhbGUgfX1cbiAgICA8L29wdGlvbj5cbiAgPC9zZWxlY3Q+XG5cbiAgPHNlbGVjdFxuICAgIGNsYXNzPVwibmdndi1jYWxlbmRhci1zZWxlY3RcIlxuICAgIGRhdGEtdGhvb2s9XCJzZWxlY3QteWVhclwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwieWVhclwiXG4gID5cbiAgICA8b3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyQXJyYXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZmllbGQtZHJvcGRvd25fX2xhYmVsXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbdmFsdWVdPVwieWVhci5nZXRGdWxsWWVhcigpXCJcbiAgICA+XG4gICAgICB7eyB5ZWFyIHwgZGF0ZTogJ3l5eXknIDogdW5kZWZpbmVkIDogbG9jYWxlIH19XG4gICAgPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuPC9uZy1jb250YWluZXI+XG5cbjxidXR0b25cbiAgKm5nSWY9XCJ0eXBlID09PSAnbm9ybWFsJ1wiXG4gIGRhdGEtdGhvb2s9XCJuZXh0LW1vbnRoXCJcbiAgY2xhc3M9XCJuZ2d2LW5leHQtYnV0dG9uXCJcbiAgKGNsaWNrKT1cInZpZXdOZXh0TW9udGgoKVwiXG4+XG4gIDxnZHMtaWNvbi1jaGV2cm9uLXJpZ2h0ICpuZ2dDb3JlRWxlbWVudD48L2dkcy1pY29uLWNoZXZyb24tcmlnaHQ+XG48L2J1dHRvbj5cbiJdfQ==