@sebgroup/green-angular 5.1.1 → 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 (440) hide show
  1. package/esm2022/lib/shared/core-element/core-element.directive.mjs +1 -2
  2. package/esm2022/src/lib/shared/core-element/core-element.directive.mjs +1 -2
  3. package/esm2022/src/v-angular/account-number/account-number.module.mjs +18 -0
  4. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +54 -0
  5. package/esm2022/src/v-angular/account-number/index.mjs +3 -0
  6. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +5 -0
  7. package/esm2022/src/v-angular/alert/alert.component.mjs +47 -0
  8. package/esm2022/src/v-angular/alert/alert.models.mjs +8 -0
  9. package/esm2022/src/v-angular/alert/alert.module.mjs +18 -0
  10. package/esm2022/src/v-angular/alert/index.mjs +4 -0
  11. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +5 -0
  12. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  13. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  14. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  15. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  16. package/esm2022/src/v-angular/button/button.component.mjs +9 -9
  17. package/esm2022/src/v-angular/button/button.module.mjs +11 -11
  18. package/esm2022/src/v-angular/card/card.component.mjs +6 -6
  19. package/esm2022/src/v-angular/card/card.module.mjs +9 -9
  20. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  21. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +9 -7
  22. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +14 -12
  23. package/esm2022/src/v-angular/core/core.utils.mjs +35 -1
  24. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  25. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  26. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  27. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  28. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  29. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +20 -0
  30. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +56 -0
  31. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +63 -0
  32. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +196 -0
  33. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  34. package/esm2022/src/v-angular/datepicker/index.mjs +17 -0
  35. package/esm2022/src/v-angular/datepicker/models/dates.mjs +291 -0
  36. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  37. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  38. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  39. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +5 -0
  40. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  41. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  42. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  43. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  44. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  45. package/esm2022/src/v-angular/drag-drop/index.mjs +5 -0
  46. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +5 -0
  47. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  48. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -9
  49. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +31 -15
  50. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  51. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  52. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  53. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  54. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  55. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +5 -5
  56. package/esm2022/src/v-angular/external-link/external-link.module.mjs +9 -9
  57. package/esm2022/src/v-angular/i18n/i18n.module.mjs +12 -12
  58. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +6 -6
  59. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +6 -6
  60. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +11 -11
  61. package/esm2022/src/v-angular/input/input.component.mjs +11 -15
  62. package/esm2022/src/v-angular/input/input.module.mjs +27 -22
  63. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +6 -6
  64. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +10 -10
  65. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +53 -31
  66. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  67. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  68. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  69. package/esm2022/src/v-angular/modal/modal.module.mjs +38 -27
  70. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  71. package/esm2022/src/v-angular/pagination/index.mjs +3 -0
  72. package/esm2022/src/v-angular/pagination/pagination.component.mjs +144 -0
  73. package/esm2022/src/v-angular/pagination/pagination.module.mjs +37 -0
  74. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +5 -0
  75. package/esm2022/src/v-angular/radio/radio.component.mjs +14 -12
  76. package/esm2022/src/v-angular/radio/radio.module.mjs +12 -11
  77. package/esm2022/src/v-angular/slug/slug.module.mjs +6 -6
  78. package/esm2022/src/v-angular/table/index.mjs +9 -0
  79. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +5 -0
  80. package/esm2022/src/v-angular/table/table.component.mjs +387 -0
  81. package/esm2022/src/v-angular/table/table.directive.mjs +110 -0
  82. package/esm2022/src/v-angular/table/table.models.mjs +2 -0
  83. package/esm2022/src/v-angular/table/table.module.mjs +40 -0
  84. package/esm2022/src/v-angular/table/table.tools.mjs +29 -0
  85. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +22 -0
  86. package/esm2022/src/v-angular/tabs/index.mjs +8 -0
  87. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +5 -0
  88. package/esm2022/src/v-angular/tabs/tab.directive.mjs +81 -0
  89. package/esm2022/src/v-angular/tabs/tabs.component.mjs +262 -0
  90. package/esm2022/src/v-angular/tabs/tabs.models.mjs +2 -0
  91. package/esm2022/src/v-angular/tabs/tabs.module.mjs +21 -0
  92. package/esm2022/src/v-angular/textarea/textarea.component.mjs +9 -7
  93. package/esm2022/src/v-angular/textarea/textarea.module.mjs +27 -13
  94. package/esm2022/src/v-angular/toast/index.mjs +8 -0
  95. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +5 -0
  96. package/esm2022/src/v-angular/toast/toast-message.service.mjs +63 -0
  97. package/esm2022/src/v-angular/toast/toast.component.mjs +70 -0
  98. package/esm2022/src/v-angular/toast/toast.models.mjs +8 -0
  99. package/esm2022/src/v-angular/toast/toast.module.mjs +21 -0
  100. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +35 -15
  101. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +11 -11
  102. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +60 -0
  103. package/esm2022/v-angular/alert/alert.component.mjs +47 -0
  104. package/esm2022/v-angular/alert/alert.models.mjs +8 -0
  105. package/esm2022/v-angular/alert/alert.module.mjs +18 -0
  106. package/esm2022/v-angular/alert/index.mjs +4 -0
  107. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  108. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  109. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  110. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  111. package/esm2022/v-angular/button/button.component.mjs +9 -9
  112. package/esm2022/v-angular/button/button.module.mjs +11 -11
  113. package/esm2022/v-angular/card/card.component.mjs +6 -6
  114. package/esm2022/v-angular/card/card.module.mjs +9 -9
  115. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  116. package/esm2022/v-angular/checkbox/checkbox.component.mjs +9 -7
  117. package/esm2022/v-angular/checkbox/checkbox.module.mjs +14 -12
  118. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  119. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  120. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  121. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  122. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  123. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +20 -0
  124. package/esm2022/v-angular/datepicker/datepicker.models.mjs +56 -0
  125. package/esm2022/v-angular/datepicker/datepicker.module.mjs +63 -0
  126. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +196 -0
  127. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  128. package/esm2022/v-angular/datepicker/index.mjs +17 -0
  129. package/esm2022/v-angular/datepicker/models/dates.mjs +291 -0
  130. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  131. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  132. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  133. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  134. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  135. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  136. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  137. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  138. package/esm2022/v-angular/drag-drop/index.mjs +5 -0
  139. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  140. package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -9
  141. package/esm2022/v-angular/dropdown/dropdown.module.mjs +31 -15
  142. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  143. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  144. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  145. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  146. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  147. package/esm2022/v-angular/external-link/external-link.directive.mjs +37 -0
  148. package/esm2022/v-angular/external-link/external-link.module.mjs +18 -0
  149. package/esm2022/v-angular/external-link/index.mjs +3 -0
  150. package/esm2022/v-angular/i18n/i18n.module.mjs +12 -12
  151. package/esm2022/v-angular/i18n/i18n.test.module.mjs +6 -6
  152. package/esm2022/v-angular/index.mjs +10 -1
  153. package/esm2022/v-angular/info-circle/info-circle.component.mjs +6 -6
  154. package/esm2022/v-angular/info-circle/info-circle.module.mjs +11 -11
  155. package/esm2022/v-angular/input/input.component.mjs +11 -15
  156. package/esm2022/v-angular/input/input.module.mjs +27 -22
  157. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +6 -6
  158. package/esm2022/v-angular/input-mask/input-mask.module.mjs +10 -10
  159. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +53 -31
  160. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  161. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  162. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  163. package/esm2022/v-angular/modal/modal.module.mjs +38 -27
  164. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  165. package/esm2022/v-angular/pagination/index.mjs +3 -0
  166. package/esm2022/v-angular/pagination/pagination.component.mjs +144 -0
  167. package/esm2022/v-angular/pagination/pagination.module.mjs +37 -0
  168. package/esm2022/v-angular/radio/radio.component.mjs +14 -12
  169. package/esm2022/v-angular/radio/radio.module.mjs +12 -11
  170. package/esm2022/v-angular/slug/index.mjs +3 -0
  171. package/esm2022/v-angular/slug/slug.module.mjs +18 -0
  172. package/esm2022/v-angular/slug/slug.pipe.mjs +27 -0
  173. package/esm2022/v-angular/table/index.mjs +9 -0
  174. package/esm2022/v-angular/table/table.component.mjs +387 -0
  175. package/esm2022/v-angular/table/table.directive.mjs +110 -0
  176. package/esm2022/v-angular/table/table.models.mjs +2 -0
  177. package/esm2022/v-angular/table/table.module.mjs +40 -0
  178. package/esm2022/v-angular/table/table.tools.mjs +29 -0
  179. package/esm2022/v-angular/table/tr-thook.pipe.mjs +22 -0
  180. package/esm2022/v-angular/tabs/index.mjs +8 -0
  181. package/esm2022/v-angular/tabs/tab.directive.mjs +81 -0
  182. package/esm2022/v-angular/tabs/tabs.component.mjs +262 -0
  183. package/esm2022/v-angular/tabs/tabs.models.mjs +2 -0
  184. package/esm2022/v-angular/tabs/tabs.module.mjs +21 -0
  185. package/esm2022/v-angular/textarea/textarea.component.mjs +9 -7
  186. package/esm2022/v-angular/textarea/textarea.module.mjs +27 -13
  187. package/esm2022/v-angular/toast/index.mjs +8 -0
  188. package/esm2022/v-angular/toast/toast-message.service.mjs +63 -0
  189. package/esm2022/v-angular/toast/toast.component.mjs +70 -0
  190. package/esm2022/v-angular/toast/toast.models.mjs +8 -0
  191. package/esm2022/v-angular/toast/toast.module.mjs +21 -0
  192. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +35 -15
  193. package/esm2022/v-angular/tooltip/tooltip.module.mjs +11 -11
  194. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +60 -0
  195. package/esm2022/v-angular/v-angular.module.mjs +104 -68
  196. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +0 -1
  197. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  198. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +76 -0
  199. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -0
  200. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +76 -0
  201. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -0
  202. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +23 -13
  203. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  204. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +14 -14
  205. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  206. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +18 -18
  207. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  208. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +13 -13
  209. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  210. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +6 -6
  211. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  212. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +21 -17
  213. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  214. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +34 -0
  215. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  216. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +1759 -0
  217. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -0
  218. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +687 -0
  219. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -0
  220. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +126 -74
  221. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  222. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +12 -12
  223. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  224. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +17 -17
  225. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  226. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +15 -15
  227. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  228. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +14 -14
  229. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  230. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +36 -35
  231. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  232. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +246 -81
  233. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  234. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +185 -0
  235. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -0
  236. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +24 -21
  237. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  238. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +6 -6
  239. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  240. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +585 -0
  241. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -0
  242. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +367 -0
  243. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -0
  244. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +33 -18
  245. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  246. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +166 -0
  247. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -0
  248. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +103 -24
  249. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  250. package/fesm2022/sebgroup-green-angular-v-angular.mjs +6295 -2165
  251. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  252. package/fesm2022/sebgroup-green-angular.mjs +0 -1
  253. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  254. package/package.json +51 -3
  255. package/src/v-angular/account-number/README.md +70 -0
  256. package/src/v-angular/account-number/account-number.module.d.ts +8 -0
  257. package/src/v-angular/account-number/account-number.pipe.d.ts +32 -0
  258. package/src/v-angular/account-number/index.d.ts +2 -0
  259. package/src/v-angular/alert/alert.component.d.ts +19 -0
  260. package/src/v-angular/alert/alert.models.d.ts +13 -0
  261. package/src/v-angular/alert/alert.module.d.ts +8 -0
  262. package/src/v-angular/alert/index.d.ts +3 -0
  263. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  264. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  265. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  266. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  267. package/src/v-angular/button/button.component.d.ts +5 -5
  268. package/src/v-angular/button/button.module.d.ts +4 -4
  269. package/src/v-angular/card/card.component.d.ts +3 -3
  270. package/src/v-angular/card/card.module.d.ts +4 -4
  271. package/src/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  272. package/src/v-angular/checkbox/checkbox.component.d.ts +6 -5
  273. package/src/v-angular/checkbox/checkbox.module.d.ts +5 -4
  274. package/src/v-angular/core/core.utils.d.ts +1 -0
  275. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  276. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  277. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  278. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  279. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  280. package/src/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  281. package/src/v-angular/datepicker/datepicker.models.d.ts +50 -0
  282. package/src/v-angular/datepicker/datepicker.module.d.ts +19 -0
  283. package/src/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  284. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  285. package/src/v-angular/datepicker/index.d.ts +13 -0
  286. package/src/v-angular/datepicker/models/dates.d.ts +15 -0
  287. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  288. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  289. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  290. package/src/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  291. package/src/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  292. package/src/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  293. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  294. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  295. package/src/v-angular/drag-drop/index.d.ts +4 -0
  296. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  297. package/src/v-angular/dropdown/dropdown.component.d.ts +10 -6
  298. package/src/v-angular/dropdown/dropdown.module.d.ts +8 -7
  299. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  300. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  301. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  302. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  303. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  304. package/src/v-angular/external-link/external-link.directive.d.ts +3 -3
  305. package/src/v-angular/external-link/external-link.module.d.ts +4 -4
  306. package/src/v-angular/i18n/i18n.module.d.ts +7 -7
  307. package/src/v-angular/i18n/i18n.test.module.d.ts +4 -4
  308. package/src/v-angular/info-circle/info-circle.component.d.ts +4 -4
  309. package/src/v-angular/info-circle/info-circle.module.d.ts +4 -4
  310. package/src/v-angular/input/input.component.d.ts +5 -10
  311. package/src/v-angular/input/input.module.d.ts +5 -4
  312. package/src/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  313. package/src/v-angular/input-mask/input-mask.module.d.ts +5 -5
  314. package/src/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  315. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  316. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  317. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  318. package/src/v-angular/modal/modal.module.d.ts +4 -4
  319. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  320. package/src/v-angular/pagination/index.d.ts +2 -0
  321. package/src/v-angular/pagination/pagination.component.d.ts +64 -0
  322. package/src/v-angular/pagination/pagination.module.d.ts +12 -0
  323. package/src/v-angular/radio/radio.component.d.ts +14 -13
  324. package/src/v-angular/radio/radio.module.d.ts +5 -4
  325. package/src/v-angular/slug/slug.module.d.ts +4 -4
  326. package/src/v-angular/table/index.d.ts +5 -0
  327. package/src/v-angular/table/table.component.d.ts +229 -0
  328. package/src/v-angular/table/table.directive.d.ts +36 -0
  329. package/src/v-angular/table/table.models.d.ts +62 -0
  330. package/src/v-angular/table/table.module.d.ts +12 -0
  331. package/src/v-angular/table/table.tools.d.ts +5 -0
  332. package/src/v-angular/table/tr-thook.pipe.d.ts +7 -0
  333. package/src/v-angular/tabs/index.d.ts +4 -0
  334. package/src/v-angular/tabs/tab.directive.d.ts +37 -0
  335. package/src/v-angular/tabs/tabs.component.d.ts +65 -0
  336. package/src/v-angular/tabs/tabs.models.d.ts +25 -0
  337. package/src/v-angular/tabs/tabs.module.d.ts +11 -0
  338. package/src/v-angular/textarea/textarea.component.d.ts +6 -5
  339. package/src/v-angular/textarea/textarea.module.d.ts +6 -4
  340. package/src/v-angular/toast/index.d.ts +4 -0
  341. package/src/v-angular/toast/toast-message.service.d.ts +17 -0
  342. package/src/v-angular/toast/toast.component.d.ts +22 -0
  343. package/src/v-angular/toast/toast.models.d.ts +15 -0
  344. package/src/v-angular/toast/toast.module.d.ts +10 -0
  345. package/src/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  346. package/src/v-angular/tooltip/tooltip.module.d.ts +4 -4
  347. package/src/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  348. package/v-angular/alert/alert.component.d.ts +19 -0
  349. package/v-angular/alert/alert.models.d.ts +13 -0
  350. package/v-angular/alert/alert.module.d.ts +8 -0
  351. package/v-angular/alert/index.d.ts +3 -0
  352. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  353. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  354. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  355. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  356. package/v-angular/button/button.component.d.ts +5 -5
  357. package/v-angular/button/button.module.d.ts +4 -4
  358. package/v-angular/card/card.component.d.ts +3 -3
  359. package/v-angular/card/card.module.d.ts +4 -4
  360. package/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  361. package/v-angular/checkbox/checkbox.component.d.ts +6 -5
  362. package/v-angular/checkbox/checkbox.module.d.ts +5 -4
  363. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  364. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  365. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  366. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  367. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  368. package/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  369. package/v-angular/datepicker/datepicker.models.d.ts +50 -0
  370. package/v-angular/datepicker/datepicker.module.d.ts +19 -0
  371. package/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  372. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  373. package/v-angular/datepicker/index.d.ts +13 -0
  374. package/v-angular/datepicker/models/dates.d.ts +15 -0
  375. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  376. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  377. package/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  378. package/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  379. package/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  380. package/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  381. package/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  382. package/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  383. package/v-angular/drag-drop/index.d.ts +4 -0
  384. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  385. package/v-angular/dropdown/dropdown.component.d.ts +10 -6
  386. package/v-angular/dropdown/dropdown.module.d.ts +8 -7
  387. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  388. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  389. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  390. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  391. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  392. package/v-angular/external-link/external-link.directive.d.ts +17 -0
  393. package/v-angular/external-link/external-link.module.d.ts +8 -0
  394. package/v-angular/external-link/index.d.ts +2 -0
  395. package/v-angular/i18n/i18n.module.d.ts +7 -7
  396. package/v-angular/i18n/i18n.test.module.d.ts +4 -4
  397. package/v-angular/index.d.ts +9 -0
  398. package/v-angular/info-circle/info-circle.component.d.ts +4 -4
  399. package/v-angular/info-circle/info-circle.module.d.ts +4 -4
  400. package/v-angular/input/input.component.d.ts +5 -10
  401. package/v-angular/input/input.module.d.ts +5 -4
  402. package/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  403. package/v-angular/input-mask/input-mask.module.d.ts +5 -5
  404. package/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  405. package/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  406. package/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  407. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  408. package/v-angular/modal/modal.module.d.ts +4 -4
  409. package/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  410. package/v-angular/pagination/index.d.ts +2 -0
  411. package/v-angular/pagination/pagination.component.d.ts +64 -0
  412. package/v-angular/pagination/pagination.module.d.ts +12 -0
  413. package/v-angular/radio/radio.component.d.ts +14 -13
  414. package/v-angular/radio/radio.module.d.ts +5 -4
  415. package/v-angular/slug/index.d.ts +2 -0
  416. package/v-angular/slug/slug.module.d.ts +8 -0
  417. package/v-angular/slug/slug.pipe.d.ts +12 -0
  418. package/v-angular/table/index.d.ts +5 -0
  419. package/v-angular/table/table.component.d.ts +229 -0
  420. package/v-angular/table/table.directive.d.ts +36 -0
  421. package/v-angular/table/table.models.d.ts +62 -0
  422. package/v-angular/table/table.module.d.ts +12 -0
  423. package/v-angular/table/table.tools.d.ts +5 -0
  424. package/v-angular/table/tr-thook.pipe.d.ts +7 -0
  425. package/v-angular/tabs/index.d.ts +4 -0
  426. package/v-angular/tabs/tab.directive.d.ts +37 -0
  427. package/v-angular/tabs/tabs.component.d.ts +65 -0
  428. package/v-angular/tabs/tabs.models.d.ts +25 -0
  429. package/v-angular/tabs/tabs.module.d.ts +11 -0
  430. package/v-angular/textarea/textarea.component.d.ts +6 -5
  431. package/v-angular/textarea/textarea.module.d.ts +6 -4
  432. package/v-angular/toast/index.d.ts +4 -0
  433. package/v-angular/toast/toast-message.service.d.ts +17 -0
  434. package/v-angular/toast/toast.component.d.ts +22 -0
  435. package/v-angular/toast/toast.models.d.ts +15 -0
  436. package/v-angular/toast/toast.module.d.ts +10 -0
  437. package/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  438. package/v-angular/tooltip/tooltip.module.d.ts +4 -4
  439. package/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  440. package/v-angular/v-angular.module.d.ts +27 -18
@@ -0,0 +1,203 @@
1
+ import '../../datepicker.globals';
2
+ import { WeekDay } from '@angular/common';
3
+ import { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
4
+ import { NgControl } from '@angular/forms';
5
+ // import { faCalendarDays, IconDefinition } from '@fortawesome/pro-regular-svg-icons';
6
+ import { TRANSLOCO_SCOPE, TranslocoService, } from '@jsverse/transloco';
7
+ import { fromEvent, Subject } from 'rxjs';
8
+ import { startWith, takeUntil } from 'rxjs/operators';
9
+ import { DateControlValueAccessorComponent } from '../../date-control-value-accessor/date-control-value-accessor.component';
10
+ import '@sebgroup/green-core/components/icon/icons/calendar.js';
11
+ import '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/forms";
14
+ import * as i2 from "@jsverse/transloco";
15
+ import * as i3 from "@angular/common";
16
+ import * as i4 from "@sebgroup/green-angular/src/v-angular/input-mask";
17
+ import * as i5 from "@sebgroup/green-angular/src/lib/shared";
18
+ import * as i6 from "../datepicker/datepicker.component";
19
+ /**
20
+ * Date pickers simplify the task of selecting a date in a visual representation of a calendar.
21
+ * https://designlibrary.sebgroup.com/components/component-datepicker
22
+ *
23
+ * Selector: `nggv-dateinput`
24
+ *
25
+ * When focusing an date element, the calendar allows for navigation using both tab and arrow keys.
26
+ * Pressing 'esc' will close the calendar.
27
+ *
28
+ * Requires TranslocoLocale, but in turn allows for setting locale dynamically:
29
+ * https://jsverse.github.io/transloco/docs/plugins/locale/#manually-setting-locale
30
+ *
31
+ * To configure TranslocoLocale, follow this guide:
32
+ * https://jsverse.github.io/transloco/docs/plugins/locale/#setup
33
+ */
34
+ export class DateInputComponent extends DateControlValueAccessorComponent {
35
+ constructor(ngControl, translocoScope, transloco, elementRef, cdr) {
36
+ super(ngControl, translocoScope, elementRef, cdr, transloco);
37
+ this.ngControl = ngControl;
38
+ this.translocoScope = translocoScope;
39
+ this.transloco = transloco;
40
+ this.elementRef = elementRef;
41
+ this.cdr = cdr;
42
+ /** Special property used for selecting DOM elements during automated UI testing. */
43
+ this.thook = 'date-input';
44
+ /** Set type of calendar: either 'normal' or 'expanded'. Default is 'normal'. */
45
+ this.type = 'normal';
46
+ /** If set to true, the value will not be editable. */
47
+ this.readonly = false;
48
+ /**
49
+ * An array of Dates or parsable strings that corresponds with dates that should not be selectable in the calendar.
50
+ * I.e. bank holidays.
51
+ */
52
+ this.disableDates = [];
53
+ /**
54
+ * An array of weekdays that should not be selectable in the calendar.
55
+ * Can be used together with or instead of @Input() disableDates.
56
+ */
57
+ this.disableWeekDays = [];
58
+ /** Mininum number of rows shown in the calendar. */
59
+ this.minRows = 5;
60
+ /** Sets first day of week in calendar. Defaults to Monday. */
61
+ this.firstDayOfWeek = WeekDay.Monday;
62
+ /** If set to true, it will allow to close the calendar on escape button click. */
63
+ this.closeCalendarOnEscape = true;
64
+ /** @internal */
65
+ // calendarIcon: IconDefinition = faCalendarDays;
66
+ /** @internal */
67
+ this.shown = false;
68
+ /** @internal */
69
+ this.showInput$ = this.showInputDateSrc.asObservable().pipe(startWith(true));
70
+ /** Observable for listening to clicks outside of the datepicker. */
71
+ this.documentClick$ = fromEvent(document, 'click');
72
+ /** Subject used for unsubscribe pattern on above observable. */
73
+ this.datepickerClosed$ = new Subject();
74
+ // this.showInput$ = this.showInputDateSrc.asObservable()
75
+ }
76
+ ngOnDestroy() {
77
+ this.datepickerClosed$.next(true);
78
+ this.datepickerClosed$.complete();
79
+ }
80
+ /**
81
+ * @internal
82
+ * Called from the datepicker-component when a date button is clicked in the calendar.
83
+ *
84
+ * @param date date object emitted when selecting a date in the datepicker.
85
+ */
86
+ onDateChange(date) {
87
+ // control value accessor will ensure correct formatting of state
88
+ this.state = DateControlValueAccessorComponent.parseDateLike(date);
89
+ // emit state
90
+ this.onChange(this.state);
91
+ // close datepicker and move focus to datepicker button
92
+ this.setShown(false);
93
+ setTimeout(() => this.toggleButtonRef?.nativeElement.focus(), 1);
94
+ }
95
+ /**
96
+ * @internal
97
+ * Called when entering date manually in input field.
98
+ */
99
+ onValueChange(eventTarget) {
100
+ // Will be in the format selected in inputMask
101
+ const value = `${eventTarget.inputmask.undoValue}` ?? '';
102
+ // Use parserfunction from inputMask to parse to a date object since value can be in multiple formats
103
+ // Then ontrol value accessor will ensure correct formatting of state
104
+ const parsedDate = DateControlValueAccessorComponent.parseDateLike(this.dateInputMask.parser(value));
105
+ this.state = parsedDate;
106
+ // emit parsed date
107
+ this.onChange(parsedDate);
108
+ this.onTouched();
109
+ }
110
+ /**
111
+ * @internal
112
+ * Listen to 'esc' keypress and closes datepicker if open.
113
+ */
114
+ keyListener(event) {
115
+ if (this.closeCalendarOnEscape && event.key === 'Escape')
116
+ this.setShown(false);
117
+ }
118
+ /** @internal */
119
+ toggleDatepicker() {
120
+ this.setShown(!this.shown);
121
+ }
122
+ /** To externally trigger the datepicker to close. */
123
+ close() {
124
+ this.setShown(false);
125
+ }
126
+ /**
127
+ * Set the shown state of the datepicker popup. If true the popup will be visible.
128
+ * If the state is set to false, call onTouched to notify any state listeners
129
+ * @param state the shown state which to set.
130
+ */
131
+ setShown(state = true) {
132
+ this.shown = state;
133
+ if (!this.shown) {
134
+ // if shown is set to false, stop listening to clicks
135
+ this.datepickerClosed$.next(true);
136
+ return this.onTouched();
137
+ }
138
+ // if shown is set to true, reset unsubscribe variable
139
+ this.datepickerClosed$.next(false);
140
+ // start listening for clicks outside the component
141
+ this.documentClick$.pipe(takeUntil(this.datepickerClosed$)).subscribe({
142
+ next: (event) => {
143
+ // clicking on a gray date causes the datepicker to reload the calendar dates,
144
+ // and the button element clicked will no longer be considered as a child of the datepicker.
145
+ // but the event target path will still contain the parent element
146
+ // if target has datepicker parent, keep listening
147
+ const eventPath = event.composedPath();
148
+ const hasDatepickerParent = !!eventPath.find((e) => e === this.elementRef.nativeElement);
149
+ if (hasDatepickerParent)
150
+ return;
151
+ // else the click is considered to be outside, close datepicker
152
+ return this.setShown(false);
153
+ },
154
+ });
155
+ }
156
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", 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 }); }
157
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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" }, host: { listeners: { "keydown": "keyListener($event)" }, properties: { "attr.data-thook": "this.thook" } }, 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 class=\"gds-field-label--small description hide-if-empty\">\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\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-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\"\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 <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\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 (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 width=\"16\"\n height=\"16\"\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\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 width=\"16\"\n height=\"16\"\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 .gds-field-label:is(label){margin-bottom:.5rem}:host .gds-field-label--optional{margin-bottom:.5rem}: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:all .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;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}\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"], outputs: ["ngvDateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.InputMaskFormatPipe, name: "nggvInputMaskFormat" }] }); }
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
160
+ type: Component,
161
+ 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 class=\"gds-field-label--small description hide-if-empty\">\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\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-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\"\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 <gds-icon-calendar\n *nggCoreElement\n width=\"20\"\n height=\"20\"\n ></gds-icon-calendar>\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 (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 width=\"16\"\n height=\"16\"\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\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 width=\"16\"\n height=\"16\"\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 .gds-field-label:is(label){margin-bottom:.5rem}:host .gds-field-label--optional{margin-bottom:.5rem}: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:all .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;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}\n"] }]
162
+ }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
163
+ type: Self
164
+ }, {
165
+ type: Optional
166
+ }] }, { type: undefined, decorators: [{
167
+ type: Optional
168
+ }, {
169
+ type: Inject,
170
+ args: [TRANSLOCO_SCOPE]
171
+ }] }, { type: i2.TranslocoService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { toggleButtonRef: [{
172
+ type: ViewChild,
173
+ args: ['toggleCalendarButton']
174
+ }], thook: [{
175
+ type: HostBinding,
176
+ args: ['attr.data-thook']
177
+ }, {
178
+ type: Input
179
+ }], type: [{
180
+ type: Input
181
+ }], readonly: [{
182
+ type: Input
183
+ }], disableDates: [{
184
+ type: Input
185
+ }], disableWeekDays: [{
186
+ type: Input
187
+ }], minRows: [{
188
+ type: Input
189
+ }], firstValid: [{
190
+ type: Input
191
+ }], lastValid: [{
192
+ type: Input
193
+ }], closingTime: [{
194
+ type: Input
195
+ }], firstDayOfWeek: [{
196
+ type: Input
197
+ }], closeCalendarOnEscape: [{
198
+ type: Input
199
+ }], keyListener: [{
200
+ type: HostListener,
201
+ args: ['keydown', ['$event']]
202
+ }] } });
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUVqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsdUZBQXVGO0FBQ3ZGLE9BQU8sRUFDTCxlQUFlLEVBRWYsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQTtBQUkzSCxPQUFPLHdEQUF3RCxDQUFBO0FBQy9ELE9BQU8sb0VBQW9FLENBQUE7Ozs7Ozs7O0FBRTNFOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBTUgsTUFBTSxPQUFPLGtCQUNYLFNBQVEsaUNBQWlDO0lBaUR6QyxZQUM2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QjtvQkFBRSxPQUFNO2dCQUMvQiwrREFBK0Q7Z0JBQy9ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM3QixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0EzSlUsa0JBQWtCLHVFQXFEbkIsZUFBZTttR0FyRGQsa0JBQWtCLDhuQkNyRC9CLDBqS0FnTEE7OzRGRDNIYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usc0NBQXNDOzswQkF1RDdDLElBQUk7OzBCQUFJLFFBQVE7OzBCQUNoQixRQUFROzswQkFDUixNQUFNOzJCQUFDLGVBQWU7aUlBaER6QixlQUFlO3NCQURkLFNBQVM7dUJBQUMsc0JBQXNCO2dCQUdRLEtBQUs7c0JBQTdDLFdBQVc7dUJBQUMsaUJBQWlCOztzQkFBRyxLQUFLO2dCQUc3QixJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcscUJBQXFCO3NCQUE3QixLQUFLO2dCQTRFTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi9kYXRlcGlja2VyLmdsb2JhbHMnXG5cbmltcG9ydCB7IFdlZWtEYXkgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBTZWxmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcydcbi8vIGltcG9ydCB7IGZhQ2FsZW5kYXJEYXlzLCBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuXG5pbXBvcnQgdHlwZSB7IENhbGVuZGFyVHlwZSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG4vKipcbiAqIERhdGUgcGlja2VycyBzaW1wbGlmeSB0aGUgdGFzayBvZiBzZWxlY3RpbmcgYSBkYXRlIGluIGEgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKiBodHRwczovL2Rlc2lnbmxpYnJhcnkuc2ViZ3JvdXAuY29tL2NvbXBvbmVudHMvY29tcG9uZW50LWRhdGVwaWNrZXJcbiAqXG4gKiBTZWxlY3RvcjogYG5nZ3YtZGF0ZWlucHV0YFxuICpcbiAqIFdoZW4gZm9jdXNpbmcgYW4gZGF0ZSBlbGVtZW50LCB0aGUgY2FsZW5kYXIgYWxsb3dzIGZvciBuYXZpZ2F0aW9uIHVzaW5nIGJvdGggdGFiIGFuZCBhcnJvdyBrZXlzLlxuICogUHJlc3NpbmcgJ2VzYycgd2lsbCBjbG9zZSB0aGUgY2FsZW5kYXIuXG4gKlxuICogUmVxdWlyZXMgVHJhbnNsb2NvTG9jYWxlLCBidXQgaW4gdHVybiBhbGxvd3MgZm9yIHNldHRpbmcgbG9jYWxlIGR5bmFtaWNhbGx5OlxuICogaHR0cHM6Ly9qc3ZlcnNlLmdpdGh1Yi5pby90cmFuc2xvY28vZG9jcy9wbHVnaW5zL2xvY2FsZS8jbWFudWFsbHktc2V0dGluZy1sb2NhbGVcbiAqXG4gKiBUbyBjb25maWd1cmUgVHJhbnNsb2NvTG9jYWxlLCBmb2xsb3cgdGhpcyBndWlkZTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI3NldHVwXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZWlucHV0LG5nZ3YtaW5wdXRbdHlwZT1kYXRlXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndG9nZ2xlQ2FsZW5kYXJCdXR0b24nKVxuICB0b2dnbGVCdXR0b25SZWY/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PlxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtdGhvb2snKSBASW5wdXQoKSB0aG9vazogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCA9XG4gICAgJ2RhdGUtaW5wdXQnXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgZGF0ZXBpY2tlci4gKi9cbiAgcHJpdmF0ZSBkb2N1bWVudENsaWNrJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdjbGljaycpXG4gIC8qKiBTdWJqZWN0IHVzZWQgZm9yIHVuc3Vic2NyaWJlIHBhdHRlcm4gb24gYWJvdmUgb2JzZXJ2YWJsZS4gKi9cbiAgcHJpdmF0ZSBkYXRlcGlja2VyQ2xvc2VkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoVFJBTlNMT0NPX1NDT1BFKVxuICAgIHByb3RlY3RlZCB0cmFuc2xvY29TY29wZTogVHJhbnNsb2NvU2NvcGUsXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jbzogVHJhbnNsb2NvU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgc3VwZXIobmdDb250cm9sLCB0cmFuc2xvY29TY29wZSwgZWxlbWVudFJlZiwgY2RyLCB0cmFuc2xvY28pXG4gICAgLy8gdGhpcy5zaG93SW5wdXQkID0gdGhpcy5zaG93SW5wdXREYXRlU3JjLmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQodHJ1ZSlcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLmNvbXBsZXRlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIGZyb20gdGhlIGRhdGVwaWNrZXItY29tcG9uZW50IHdoZW4gYSBkYXRlIGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBjYWxlbmRhci5cbiAgICpcbiAgICogQHBhcmFtIGRhdGUgZGF0ZSBvYmplY3QgZW1pdHRlZCB3aGVuIHNlbGVjdGluZyBhIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIuXG4gICAqL1xuICBvbkRhdGVDaGFuZ2UoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGNvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgdGhpcy5zdGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKGRhdGUpXG4gICAgLy8gZW1pdCBzdGF0ZVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgICAvLyBjbG9zZSBkYXRlcGlja2VyIGFuZCBtb3ZlIGZvY3VzIHRvIGRhdGVwaWNrZXIgYnV0dG9uXG4gICAgdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudG9nZ2xlQnV0dG9uUmVmPy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDEpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIENhbGxlZCB3aGVuIGVudGVyaW5nIGRhdGUgbWFudWFsbHkgaW4gaW5wdXQgZmllbGQuXG4gICAqL1xuICBvblZhbHVlQ2hhbmdlKGV2ZW50VGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICAvLyBXaWxsIGJlIGluIHRoZSBmb3JtYXQgc2VsZWN0ZWQgaW4gaW5wdXRNYXNrXG4gICAgY29uc3QgdmFsdWUgPSBgJHtldmVudFRhcmdldC5pbnB1dG1hc2sudW5kb1ZhbHVlfWAgPz8gJydcblxuICAgIC8vIFVzZSBwYXJzZXJmdW5jdGlvbiBmcm9tIGlucHV0TWFzayB0byBwYXJzZSB0byBhIGRhdGUgb2JqZWN0IHNpbmNlIHZhbHVlIGNhbiBiZSBpbiBtdWx0aXBsZSBmb3JtYXRzXG4gICAgLy8gVGhlbiBvbnRyb2wgdmFsdWUgYWNjZXNzb3Igd2lsbCBlbnN1cmUgY29ycmVjdCBmb3JtYXR0aW5nIG9mIHN0YXRlXG4gICAgY29uc3QgcGFyc2VkRGF0ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKFxuICAgICAgdGhpcy5kYXRlSW5wdXRNYXNrLnBhcnNlciEodmFsdWUpLFxuICAgIClcblxuICAgIHRoaXMuc3RhdGUgPSBwYXJzZWREYXRlXG5cbiAgICAvLyBlbWl0IHBhcnNlZCBkYXRlXG4gICAgdGhpcy5vbkNoYW5nZShwYXJzZWREYXRlKVxuICAgIHRoaXMub25Ub3VjaGVkKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogTGlzdGVuIHRvICdlc2MnIGtleXByZXNzIGFuZCBjbG9zZXMgZGF0ZXBpY2tlciBpZiBvcGVuLlxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleUxpc3RlbmVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xvc2VDYWxlbmRhck9uRXNjYXBlICYmIGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpXG4gICAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICB0b2dnbGVEYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oIXRoaXMuc2hvd24pXG4gIH1cblxuICAvKiogVG8gZXh0ZXJuYWxseSB0cmlnZ2VyIHRoZSBkYXRlcGlja2VyIHRvIGNsb3NlLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2hvd24gc3RhdGUgb2YgdGhlIGRhdGVwaWNrZXIgcG9wdXAuIElmIHRydWUgdGhlIHBvcHVwIHdpbGwgYmUgdmlzaWJsZS5cbiAgICogSWYgdGhlIHN0YXRlIGlzIHNldCB0byBmYWxzZSwgY2FsbCBvblRvdWNoZWQgdG8gbm90aWZ5IGFueSBzdGF0ZSBsaXN0ZW5lcnNcbiAgICogQHBhcmFtIHN0YXRlIHRoZSBzaG93biBzdGF0ZSB3aGljaCB0byBzZXQuXG4gICAqL1xuICBwcml2YXRlIHNldFNob3duKHN0YXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuc2hvd24gPSBzdGF0ZVxuICAgIGlmICghdGhpcy5zaG93bikge1xuICAgICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIGZhbHNlLCBzdG9wIGxpc3RlbmluZyB0byBjbGlja3NcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgICAgcmV0dXJuIHRoaXMub25Ub3VjaGVkKClcbiAgICB9XG4gICAgLy8gaWYgc2hvd24gaXMgc2V0IHRvIHRydWUsIHJlc2V0IHVuc3Vic2NyaWJlIHZhcmlhYmxlXG4gICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KGZhbHNlKVxuICAgIC8vIHN0YXJ0IGxpc3RlbmluZyBmb3IgY2xpY2tzIG91dHNpZGUgdGhlIGNvbXBvbmVudFxuICAgIHRoaXMuZG9jdW1lbnRDbGljayQucGlwZSh0YWtlVW50aWwodGhpcy5kYXRlcGlja2VyQ2xvc2VkJCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGNsaWNraW5nIG9uIGEgZ3JheSBkYXRlIGNhdXNlcyB0aGUgZGF0ZXBpY2tlciB0byByZWxvYWQgdGhlIGNhbGVuZGFyIGRhdGVzLFxuICAgICAgICAvLyBhbmQgdGhlIGJ1dHRvbiBlbGVtZW50IGNsaWNrZWQgd2lsbCBubyBsb25nZXIgYmUgY29uc2lkZXJlZCBhcyBhIGNoaWxkIG9mIHRoZSBkYXRlcGlja2VyLlxuICAgICAgICAvLyBidXQgdGhlIGV2ZW50IHRhcmdldCBwYXRoIHdpbGwgc3RpbGwgY29udGFpbiB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGhhcyBkYXRlcGlja2VyIHBhcmVudCwga2VlcCBsaXN0ZW5pbmdcbiAgICAgICAgY29uc3QgZXZlbnRQYXRoID0gZXZlbnQuY29tcG9zZWRQYXRoKClcbiAgICAgICAgY29uc3QgaGFzRGF0ZXBpY2tlclBhcmVudCA9ICEhZXZlbnRQYXRoLmZpbmQoXG4gICAgICAgICAgKGUpID0+IGUgPT09IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICApXG4gICAgICAgIGlmIChoYXNEYXRlcGlja2VyUGFyZW50KSByZXR1cm5cbiAgICAgICAgLy8gZWxzZSB0aGUgY2xpY2sgaXMgY29uc2lkZXJlZCB0byBiZSBvdXRzaWRlLCBjbG9zZSBkYXRlcGlja2VyXG4gICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgfSxcbiAgICB9KVxuICB9XG59XG4iLCI8IS0tIExBQkVMIC0tPlxuPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gIDxsYWJlbFxuICAgIFtpZF09XCJpZCArICctbGFiZWwnXCJcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbCBoaWRlLWlmLWVtcHR5XCJcbiAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gID5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsIHx8IGJhc2ljTGFiZWxDb250ZW50VHBsXCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Jhc2ljTGFiZWxDb250ZW50VHBsPlxuICAgICAgPCEtLSB0byB0cmlnZ2VyIGNzczplbXB0eSBpZiBubyBsYWJlbCB3YXMgYWRkZWQgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdJZj1cIm9wdGlvbmFsID09PSB0cnVlIHx8IChyZXF1aXJlZCAhPT0gdHJ1ZSAmJiBvcHRpb25hbCAhPT0gZmFsc2UpXCJcbiAgICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tb3B0aW9uYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgKHt7IHQoJ2xhYmVsLm9wdGlvbmFsJykgfX0pXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbGFiZWw+XG5cbiAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tc21hbGwgZGVzY3JpcHRpb24gaGlkZS1pZi1lbXB0eVwiPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvZGl2PlxuXG4gIDwhLS0gTE9DS0VEIElOUFVUIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgY2xhc3M9XCJuZ2d2LWZpZWxkLS1sb2NrZWRcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhc3RhdGVcIiBjbGFzcz1cInVuc2V0LXN0YXRlXCI+LTwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGF0ZVwiPlxuICAgICAgICB7eyBzdGF0ZSB8IG5nZ3ZJbnB1dE1hc2tGb3JtYXQ6IGRhdGVJbnB1dE1hc2sgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElOUFVUIFdSQVBQRVIgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja2VkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmaWVsZC13cmFwXCJcbiAgICAgIFtjbGFzcy5uZ2d2LWZpZWxkLS1lcnJvcl09XCJpbnZhbGlkXCJcbiAgICAgICpuZ0lmPVwic2hvd0lucHV0JCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8IS0tIElOUFVUIEZJRUxEIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICBbaWRdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgIGNsYXNzPVwibmdndi1maWVsZC1kYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhclxuICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gREFURVBJQ0tFUiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibmdndi1kYXRlcGlja2VyXCIgKm5nSWY9XCJzaG93blwiPlxuICAgICAgPG5nZ3YtZGF0ZXBpY2tlclxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICAgICAgW2Rpc2FibGVXZWVrRGF5c109XCJkaXNhYmxlV2Vla0RheXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic3RhdGVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICAgIFttaW5DYWxlbmRhclJvd3NdPVwibWluUm93c1wiXG4gICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXG4gICAgICAgIFtmaXJzdFZhbGlkXT1cImZpcnN0VmFsaWRcIlxuICAgICAgICBbbGFzdFZhbGlkXT1cImxhc3RWYWxpZFwiXG4gICAgICAgIFtjbG9zaW5nVGltZV09XCJjbG9zaW5nVGltZVwiXG4gICAgICAgIChuZ3ZEYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZ2d2LWRhdGVwaWNrZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEVSUk9SUyAtLT5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBpbnZhbGlkICYmXG4gICAgICAgIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpICYmXG4gICAgICAgICghZXJyb3JMaXN0IHx8ICFlcnJvckxpc3QubGVuZ3RoKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JzUmVmPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJmaXJzdEVycm9yIGFzIGVycm9yXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0KCdlcnJvci5maWVsZCcgKyBlcnJvcj8uY29kZSwgZXJyb3I/LnBhcmFtcykgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JMaXN0ID8/IFtdXCI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbm90aWNlIGdkcy1maWVsZC1ub3RpY2UtLWVycm9yXCJcbiAgICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICAqbmdJZj1cImludmFsaWQgJiYgZXJyb3JcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW1cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIDxnZHMtaWNvbi10cmlhbmdsZS1leGNsYW1hdGlvblxuICAgICAgICAgICAgICAqbmdnQ29yZUVsZW1lbnRcbiAgICAgICAgICAgICAgW3NvbGlkXT1cInRydWVcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgPjwvZ2RzLWljb24tdHJpYW5nbGUtZXhjbGFtYXRpb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImVycm9yLWl0ZW0tLXRleHRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9vayArICctZXJyb3JsYWJlbCdcIlxuICAgICAgICAgICAgPnt7IGVycm9yIH19PC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,135 @@
1
+ import { WeekDay } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, 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
+ constructor() {
11
+ this.calendarTemplate = null;
12
+ /** Emits a Date upon selection. */
13
+ this.ngvDateChange = new EventEmitter();
14
+ /** Sets first day of week in calendar. Defaults to Monday. */
15
+ this.firstDayOfWeek = WeekDay.Monday;
16
+ /** Bank holidays. */
17
+ this.disableDates = [];
18
+ /** Other non selectable dates. */
19
+ this.disableWeekDays = [];
20
+ /** Minimum number of calendar rows shown. */
21
+ this.minCalendarRows = 5;
22
+ /** Set locale for date format. */
23
+ this.locale = 'en-US';
24
+ /** Set type of calendar. */
25
+ this.type = 'normal';
26
+ /** @internal */
27
+ /** @internal */
28
+ this.weekdayArray = [];
29
+ /** @internal */
30
+ this.disabledDatesForActiveMonth = [];
31
+ this.subs = [];
32
+ }
33
+ ngOnChanges(changes) {
34
+ if (changes.selected &&
35
+ !!changes.selected.currentValue &&
36
+ !changes.selected.isFirstChange()) {
37
+ // set active calendar to match selected date
38
+ const activeCalendar = new CalendarMonth(new Date(changes.selected.currentValue));
39
+ this.changeActiveCalendar(activeCalendar);
40
+ }
41
+ if (changes.disableDates && !changes.disableDates.isFirstChange()) {
42
+ this.disabledDatesForActiveMonth = this.getDisabledDatesFor(this.activeCalendar, changes.disableDates.currentValue || []);
43
+ }
44
+ }
45
+ ngOnInit() {
46
+ // initiate week label row
47
+ this.weekdayArray = getSortedWeekDays(this.firstDayOfWeek);
48
+ // initiate calendar
49
+ const initDate = !!this.selected && isValid(this.selected)
50
+ ? new Date(this.selected)
51
+ : new Date();
52
+ this.activeCalendar = new CalendarMonth(initDate);
53
+ }
54
+ ngOnDestroy() {
55
+ this.subs.forEach((sub) => sub.unsubscribe());
56
+ }
57
+ /**
58
+ * @internal
59
+ * Update local calendar variable and changes displayed calendar.
60
+ */
61
+ changeActiveCalendar(calendar) {
62
+ this.activeCalendar = calendar;
63
+ this.disabledDatesForActiveMonth = this.getDisabledDatesFor(calendar, this.disableDates);
64
+ }
65
+ /**
66
+ * @internal
67
+ * Returns a subset of all disabled dates.
68
+ *
69
+ * @param month current month to filter from
70
+ * @param disableDates master list of all disabled dates
71
+ * @returns a subset with current and adjacent months disabled dates
72
+ */
73
+ getDisabledDatesFor(calendar, disableDates) {
74
+ if (!disableDates)
75
+ disableDates = [];
76
+ // sets month to target month
77
+ const targetMonth = calendar.date;
78
+ // gets previous month from target month
79
+ const previousMonth = calendar.previousMonth().date;
80
+ // gets next month from target month
81
+ const nextMonth = calendar.nextMonth().date;
82
+ // checks if two dates are within the same year and month
83
+ const withinSameMonth = (a, b) => a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear();
84
+ // filter out disabled dates for current and adjacent months
85
+ return disableDates
86
+ .map((d) => new Date(d))
87
+ .filter((d) => withinSameMonth(d, previousMonth) ||
88
+ withinSameMonth(d, targetMonth) ||
89
+ withinSameMonth(d, nextMonth));
90
+ }
91
+ /**
92
+ * Handles date-clicks from calendar compoentn. Emits event or changes calendar.
93
+ * @param date date clicked in calendar
94
+ */
95
+ dateClickHandler(date) {
96
+ // if a date is clicked within the active month, emit date
97
+ if (date.getMonth() === this.activeCalendar.month)
98
+ return this.ngvDateChange.emit(date);
99
+ // else, change active calendar to match the date clicked
100
+ this.selected = date;
101
+ this.changeActiveCalendar(new CalendarMonth(date));
102
+ }
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", 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" }, outputs: { ngvDateChange: "ngvDateChange" }, 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}\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" }] }); }
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatepickerComponent, decorators: [{
107
+ type: Component,
108
+ 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}\n"] }]
109
+ }], propDecorators: { calendarTemplate: [{
110
+ type: ViewChild,
111
+ args: ['calendarTemplate']
112
+ }], ngvDateChange: [{
113
+ type: Output
114
+ }], firstDayOfWeek: [{
115
+ type: Input
116
+ }], disableDates: [{
117
+ type: Input
118
+ }], disableWeekDays: [{
119
+ type: Input
120
+ }], minCalendarRows: [{
121
+ type: Input
122
+ }], selected: [{
123
+ type: Input
124
+ }], locale: [{
125
+ type: Input
126
+ }], type: [{
127
+ type: Input
128
+ }], firstValid: [{
129
+ type: Input
130
+ }], lastValid: [{
131
+ type: Input
132
+ }], closingTime: [{
133
+ type: Input
134
+ }] } });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBR3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7Ozs7O0FBU25FLE1BQU0sT0FBTyxtQkFBbUI7SUFMaEM7UUFNaUMscUJBQWdCLEdBQzdDLElBQUksQ0FBQTtRQUVOLG1DQUFtQztRQUN6QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUE7UUFFbEQsOERBQThEO1FBQ3JELG1CQUFjLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUNqRCxxQkFBcUI7UUFDWixpQkFBWSxHQUFzQixFQUFFLENBQUE7UUFDN0Msa0NBQWtDO1FBQ3pCLG9CQUFlLEdBQWMsRUFBRSxDQUFBO1FBQ3hDLDZDQUE2QztRQUNwQyxvQkFBZSxHQUFHLENBQUMsQ0FBQTtRQUc1QixrQ0FBa0M7UUFDekIsV0FBTSxHQUF1QixPQUFPLENBQUE7UUFDN0MsNEJBQTRCO1FBQ25CLFNBQUksR0FBaUIsUUFBUSxDQUFB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J1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuXG5pbXBvcnQgeyBDYWxlbmRhck1vbnRoIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5pbXBvcnQgeyBnZXRTb3J0ZWRXZWVrRGF5cywgaXNWYWxpZCB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIudXRpbHMnXG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJUeXBlIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nZ3YtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyVGVtcGxhdGUnKSBjYWxlbmRhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9XG4gICAgbnVsbFxuXG4gIC8qKiBFbWl0cyBhIERhdGUgdXBvbiBzZWxlY3Rpb24uICovXG4gIEBPdXRwdXQoKSBuZ3ZEYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG5cbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogQmFuayBob2xpZGF5cy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZURhdGVzOiAoc3RyaW5nIHwgRGF0ZSlbXSA9IFtdXG4gIC8qKiBPdGhlciBub24gc2VsZWN0YWJsZSBkYXRlcy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW11bSBudW1iZXIgb2YgY2FsZW5kYXIgcm93cyBzaG93bi4gKi9cbiAgQElucHV0KCkgbWluQ2FsZW5kYXJSb3dzID0gNVxuICAvKiogSW5pdGlhbCBkYXRlIHNldCBhcyBzZWxlY3RlZC4gKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldCBsb2NhbGUgZm9yIGRhdGUgZm9ybWF0LiAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdlbi1VUydcbiAgLyoqIFNldCB0eXBlIG9mIGNhbGVuZGFyLiAqL1xuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuICAvKiogU2V0cyBhIGZyb20gZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYmVmb3JlIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgZmlyc3RWYWxpZDogRGF0ZSB8IHVuZGVmaW5lZFxuICAvKiogU2V0cyBhIHRvIGRhdGUgb2Ygd2hpY2ggYWxsIGRhdGVzIGFmdGVyIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgbGFzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgY2xvc2luZyB0aW1lIGZvciB0b2RheSB0byB0b2dnbGUgYXZhaWxhYmlsaXR5IGZvciB0b2RheSdzIGRhdGUuICovXG4gIEBJbnB1dCgpIGNsb3NpbmdUaW1lOiBEYXRlIHwgdW5kZWZpbmVkXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBhY3RpdmVDYWxlbmRhciE6IENhbGVuZGFyTW9udGggLyogID0gbmV3IENhbGVuZGFyTW9udGgobmV3IERhdGUoKSkgKi9cbiAgLyoqIEBpbnRlcm5hbCAqL1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgd2Vla2RheUFycmF5OiBEYXRlW10gPSBbXVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgZGlzYWJsZWREYXRlc0ZvckFjdGl2ZU1vbnRoOiBEYXRlW10gPSBbXVxuXG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLnNlbGVjdGVkICYmXG4gICAgICAhIWNoYW5nZXMuc2VsZWN0ZWQuY3VycmVudFZhbHVlICYmXG4gICAgICAhY2hhbmdlcy5zZWxlY3RlZC5pc0ZpcnN0Q2hhbmdlKClcbiAgICApIHtcbiAgICAgIC8vIHNldCBhY3RpdmUgY2FsZW5kYXIgdG8gbWF0Y2ggc2VsZWN0ZWQgZGF0ZVxuICAgICAgY29uc3QgYWN0aXZlQ2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXJNb250aChcbiAgICAgICAgbmV3IERhdGUoY2hhbmdlcy5zZWxlY3RlZC5jdXJyZW50VmFsdWUpLFxuICAgICAgKVxuICAgICAgdGhpcy5jaGFuZ2VBY3RpdmVDYWxlbmRhcihhY3RpdmVDYWxlbmRhcilcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kaXNhYmxlRGF0ZXMgJiYgIWNoYW5nZXMuZGlzYWJsZURhdGVzLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgdGhpcy5kaXNhYmxlZERhdGVzRm9yQWN0aXZlTW9udGggPSB0aGlzLmdldERpc2FibGVkRGF0ZXNGb3IoXG4gICAgICAgIHRoaXMuYWN0aXZlQ2FsZW5kYXIsXG4gICAgICAgIGNoYW5nZXMuZGlzYWJsZURhdGVzLmN1cnJlbnRWYWx1ZSB8fCBbXSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBpbml0aWF0ZSB3ZWVrIGxhYmVsIHJvd1xuICAgIHRoaXMud2Vla2RheUFycmF5ID0gZ2V0U29ydGVkV2Vla0RheXModGhpcy5maXJzdERheU9mV2VlaylcblxuICAgIC8vIGluaXRpYXRlIGNhbGVuZGFyXG4gICAgY29uc3QgaW5pdERhdGUgPVxuICAgICAgISF0aGlzLnNlbGVjdGVkICYmIGlzVmFsaWQodGhpcy5zZWxlY3RlZClcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkKVxuICAgICAgICA6IG5ldyBEYXRlKClcbiAgICB0aGlzLmFjdGl2ZUNhbGVuZGFyID0gbmV3IENhbGVuZGFyTW9udGgoaW5pdERhdGUpXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogVXBkYXRlIGxvY2FsIGNhbGVuZGFyIHZhcmlhYmxlIGFuZCBjaGFuZ2VzIGRpc3BsYXllZCBjYWxlbmRhci5cbiAgICovXG4gIGNoYW5nZUFjdGl2ZUNhbGVuZGFyKGNhbGVuZGFyOiBDYWxlbmRhck1vbnRoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVDYWxlbmRhciA9IGNhbGVuZGFyXG4gICAgdGhpcy5kaXNhYmxlZERhdGVzRm9yQWN0aXZlTW9udGggPSB0aGlzLmdldERpc2FibGVkRGF0ZXNGb3IoXG4gICAgICBjYWxlbmRhcixcbiAgICAgIHRoaXMuZGlzYWJsZURhdGVzLFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNldCBvZiBhbGwgZGlzYWJsZWQgZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtb250aCBjdXJyZW50IG1vbnRoIHRvIGZpbHRlciBmcm9tXG4gICAqIEBwYXJhbSBkaXNhYmxlRGF0ZXMgbWFzdGVyIGxpc3Qgb2YgYWxsIGRpc2FibGVkIGRhdGVzXG4gICAqIEByZXR1cm5zIGEgc3Vic2V0IHdpdGggY3VycmVudCBhbmQgYWRqYWNlbnQgbW9udGhzIGRpc2FibGVkIGRhdGVzXG4gICAqL1xuICBnZXREaXNhYmxlZERhdGVzRm9yKFxuICAgIGNhbGVuZGFyOiBDYWxlbmRhck1vbnRoLFxuICAgIGRpc2FibGVEYXRlcz86IChzdHJpbmcgfCBEYXRlKVtdLFxuICApOiBEYXRlW10ge1xuICAgIGlmICghZGlzYWJsZURhdGVzKSBkaXNhYmxlRGF0ZXMgPSBbXVxuICAgIC8vIHNldHMgbW9udGggdG8gdGFyZ2V0IG1vbnRoXG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBjYWxlbmRhci5kYXRlXG5cbiAgICAvLyBnZXRzIHByZXZpb3VzIG1vbnRoIGZyb20gdGFyZ2V0IG1vbnRoXG4gICAgY29uc3QgcHJldmlvdXNNb250aCA9IGNhbGVuZGFyLnByZXZpb3VzTW9udGgoKS5kYXRlXG5cbiAgICAvLyBnZXRzIG5leHQgbW9udGggZnJvbSB0YXJnZXQgbW9udGhcbiAgICBjb25zdCBuZXh0TW9udGggPSBjYWxlbmRhci5uZXh0TW9udGgoKS5kYXRlXG5cbiAgICAvLyBjaGVja3MgaWYgdHdvIGRhdGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgeWVhciBhbmQgbW9udGhcbiAgICBjb25zdCB3aXRoaW5TYW1lTW9udGggPSAoYTogRGF0ZSwgYjogRGF0ZSk6IGJvb2xlYW4gPT5cbiAgICAgIGEuZ2V0TW9udGgoKSA9PT0gYi5nZXRNb250aCgpICYmIGEuZ2V0RnVsbFllYXIoKSA9PT0gYi5nZXRGdWxsWWVhcigpXG5cbiAgICAvLyBmaWx0ZXIgb3V0IGRpc2FibGVkIGRhdGVzIGZvciBjdXJyZW50IGFuZCBhZGphY2VudCBtb250aHNcbiAgICByZXR1cm4gZGlzYWJsZURhdGVzXG4gICAgICAubWFwKChkOiBEYXRlIHwgc3RyaW5nKSA9PiBuZXcgRGF0ZShkKSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChkOiBEYXRlKSA9PlxuICAgICAgICAgIHdpdGhpblNhbWVNb250aChkLCBwcmV2aW91c01vbnRoKSB8fFxuICAgICAgICAgIHdpdGhpblNhbWVNb250aChkLCB0YXJnZXRNb250aCkgfHxcbiAgICAgICAgICB3aXRoaW5TYW1lTW9udGgoZCwgbmV4dE1vbnRoKSxcbiAgICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGRhdGUtY2xpY2tzIGZyb20gY2FsZW5kYXIgY29tcG9lbnRuLiBFbWl0cyBldmVudCBvciBjaGFuZ2VzIGNhbGVuZGFyLlxuICAgKiBAcGFyYW0gZGF0ZSBkYXRlIGNsaWNrZWQgaW4gY2FsZW5kYXJcbiAgICovXG4gIGRhdGVDbGlja0hhbmRsZXIoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIC8vIGlmIGEgZGF0ZSBpcyBjbGlja2VkIHdpdGhpbiB0aGUgYWN0aXZlIG1vbnRoLCBlbWl0IGRhdGVcbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpID09PSB0aGlzLmFjdGl2ZUNhbGVuZGFyLm1vbnRoKVxuICAgICAgcmV0dXJuIHRoaXMubmd2RGF0ZUNoYW5nZS5lbWl0KGRhdGUpXG4gICAgLy8gZWxzZSwgY2hhbmdlIGFjdGl2ZSBjYWxlbmRhciB0byBtYXRjaCB0aGUgZGF0ZSBjbGlja2VkXG4gICAgdGhpcy5zZWxlY3RlZCA9IGRhdGVcbiAgICB0aGlzLmNoYW5nZUFjdGl2ZUNhbGVuZGFyKG5ldyBDYWxlbmRhck1vbnRoKGRhdGUpKVxuICB9XG59XG4iLCI8IS0tIGNvbnRyb2wgZm9yIGNoYW5naW5nIGRpc3BsYXllZCBjYWxlbmRhciAtLT5cbjxuZ2d2LWNhbGVuZGFyLWNvbnRyb2xcbiAgW2FjdGl2ZUNhbGVuZGFyXT1cImFjdGl2ZUNhbGVuZGFyXCJcbiAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICBbdHlwZV09XCJ0eXBlXCJcbiAgKGNhbGVuZGFyQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZUNhbGVuZGFyKCRldmVudClcIlxuPlxuPC9uZ2d2LWNhbGVuZGFyLWNvbnRyb2w+XG5cbjwhLS0gbGFiZWwgcm93IGZvciB3ZWVrIC0tPlxuPGRpdiBjbGFzcz1cIm5nZ3Ytd2Vla2RheS1yb3dcIj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla2RheUFycmF5XCI+e3tcbiAgICB3ZWVrZGF5IHwgZGF0ZTogJ0VFRScgOiB1bmRlZmluZWQgOiBsb2NhbGVcbiAgfX08L3NwYW4+XG48L2Rpdj5cblxuPCEtLSBvdXRsZXQgZm9yIGFjdGl2ZSBjYWxlbmRhciAtLT5cbjxkaXYgY2xhc3M9XCJuZ2d2LWNhbGVuZGFyLXZpZXctY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FsZW5kYXJUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY2FsZW5kYXI6IGFjdGl2ZUNhbGVuZGFyLFxuICAgICAgICBkaXNhYmxlRGF0ZXM6IGRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCxcbiAgICAgIH1cbiAgICBcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZXh0ZW5kZWQnXCIgY2xhc3M9XCJnZHMtZGF0ZXBpY2tlcl9fY29udHJvbHNcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FsZW5kYXJUZW1wbGF0ZVxuICBsZXQtY2FsZW5kYXI9XCJjYWxlbmRhclwiXG4gIGxldC1kaXNhYmxlRGF0ZXM9XCJkaXNhYmxlRGF0ZXNcIlxuPlxuICA8bmdndi1jYWxlbmRhclxuICAgIFt5ZWFyXT1cImNhbGVuZGFyLnllYXJcIlxuICAgIFttb250aF09XCJjYWxlbmRhci5tb250aFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIFtsYXN0VmFsaWRdPVwibGFzdFZhbGlkXCJcbiAgICBbZmlyc3RWYWxpZF09XCJmaXJzdFZhbGlkXCJcbiAgICBbY2xvc2luZ1RpbWVdPVwiY2xvc2luZ1RpbWVcIlxuICAgIFtkaXNhYmxlV2Vla0RheXNdPVwiZGlzYWJsZVdlZWtEYXlzXCJcbiAgICBbbWluQ2FsZW5kYXJSb3dzXT1cIm1pbkNhbGVuZGFyUm93c1wiXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAoZGF0ZUNsaWNrKT1cImRhdGVDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgPC9uZ2d2LWNhbGVuZGFyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==