@norwegian/core-components 5.18.2 → 6.0.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 (307) hide show
  1. package/README.md +1 -1
  2. package/{esm2020 → esm2022}/lib/components/accordion/accordion.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/components/accordion/accordion.module.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/components/airport-select/airport-select.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/components/airport-select/airport-select.module.mjs +15 -15
  7. package/{esm2020 → esm2022}/lib/components/airport-select/services/airport-select-dropdown.service.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/components/airport-select/services/airport-select.service.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/components/autocomplete/autocomplete.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/components/autocomplete/autocomplete.module.mjs +17 -17
  11. package/{esm2020 → esm2022}/lib/components/backdrop/backdrop.component.mjs +4 -4
  12. package/{esm2020 → esm2022}/lib/components/backdrop/backdrop.module.mjs +7 -7
  13. package/{esm2020 → esm2022}/lib/components/box/box.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/components/box/box.module.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/components/button/button.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/components/button/button.module.mjs +5 -5
  17. package/{esm2020 → esm2022}/lib/components/checkbox/checkbox.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/components/checkbox/checkbox.module.mjs +5 -5
  19. package/{esm2020 → esm2022}/lib/components/chip/chip.component.mjs +4 -4
  20. package/{esm2020 → esm2022}/lib/components/chip/chip.module.mjs +7 -7
  21. package/{esm2020 → esm2022}/lib/components/container/container.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/components/container/container.module.mjs +5 -5
  23. package/{esm2020 → esm2022}/lib/components/continue/continue.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/components/continue/continue.module.mjs +11 -11
  25. package/{esm2020 → esm2022}/lib/components/cover/cover.component.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/components/cover/cover.module.mjs +5 -5
  27. package/{esm2020 → esm2022}/lib/components/datepicker/calendar/calendar.component.mjs +4 -4
  28. package/{esm2020 → esm2022}/lib/components/datepicker/datepicker.component.mjs +4 -4
  29. package/{esm2020 → esm2022}/lib/components/datepicker/datepicker.module.mjs +21 -21
  30. package/{esm2020 → esm2022}/lib/components/datepicker/services/calendar.service.mjs +4 -4
  31. package/{esm2020 → esm2022}/lib/components/datepicker-combo/datepicker-combo.component.mjs +4 -4
  32. package/{esm2020 → esm2022}/lib/components/datepicker-combo/datepicker-combo.module.mjs +9 -9
  33. package/{esm2020 → esm2022}/lib/components/divider/divider.component.mjs +4 -4
  34. package/{esm2020 → esm2022}/lib/components/divider/divider.module.mjs +5 -5
  35. package/{esm2020 → esm2022}/lib/components/dropdown/dropdown.component.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/components/dropdown/dropdown.module.mjs +11 -11
  37. package/{esm2020 → esm2022}/lib/components/filter/filter.component.mjs +4 -4
  38. package/{esm2020 → esm2022}/lib/components/filter/filter.module.mjs +29 -29
  39. package/esm2022/lib/components/grid/col/col.component.mjs +49 -0
  40. package/{esm2020 → esm2022}/lib/components/grid/grid.component.mjs +5 -5
  41. package/{esm2020 → esm2022}/lib/components/grid/grid.module.mjs +5 -5
  42. package/{esm2020 → esm2022}/lib/components/icon/icon.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/lib/components/icon/icon.module.mjs +7 -7
  44. package/{esm2020 → esm2022}/lib/components/icon-list/icon-list.component.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/components/icon-list/icon-list.module.mjs +5 -5
  46. package/{esm2020 → esm2022}/lib/components/info/info.component.mjs +4 -4
  47. package/{esm2020 → esm2022}/lib/components/info/info.module.mjs +13 -13
  48. package/{esm2020 → esm2022}/lib/components/input/input.component.mjs +4 -4
  49. package/{esm2020 → esm2022}/lib/components/input/input.module.mjs +5 -5
  50. package/{esm2020 → esm2022}/lib/components/journey/journey.component.mjs +4 -4
  51. package/{esm2020 → esm2022}/lib/components/journey/journey.module.mjs +9 -9
  52. package/{esm2020 → esm2022}/lib/components/journey-availability/journey-availability.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/components/journey-availability/journey-availability.module.mjs +13 -13
  54. package/{esm2020 → esm2022}/lib/components/journey-availability-list/journey-availability-list.component.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/components/journey-availability-list/journey-availability-list.module.mjs +13 -13
  56. package/{esm2020 → esm2022}/lib/components/journey-selection/journey-selection.component.mjs +4 -4
  57. package/{esm2020 → esm2022}/lib/components/journey-selection/journey-selection.module.mjs +11 -11
  58. package/{esm2020 → esm2022}/lib/components/journey-stopover/journey-stopover.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/components/journey-stopover/journey-stopover.module.mjs +9 -9
  60. package/{esm2020 → esm2022}/lib/components/list/list-item/list-item.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/components/list/list.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/components/list/list.module.mjs +5 -5
  63. package/{esm2020 → esm2022}/lib/components/modal/modal.component.mjs +4 -4
  64. package/{esm2020 → esm2022}/lib/components/modal/modal.module.mjs +13 -13
  65. package/{esm2020 → esm2022}/lib/components/number-field/number-field.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/lib/components/number-field/number-field.module.mjs +15 -15
  67. package/{esm2020 → esm2022}/lib/components/page-footer/page-footer.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/lib/components/page-footer/page-footer.module.mjs +5 -5
  69. package/{esm2020 → esm2022}/lib/components/page-header/hamburger/hamburger.component.mjs +4 -4
  70. package/{esm2020 → esm2022}/lib/components/page-header/page-header.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/lib/components/page-header/page-header.module.mjs +5 -5
  72. package/{esm2020 → esm2022}/lib/components/page-header/search/search.component.mjs +4 -4
  73. package/{esm2020 → esm2022}/lib/components/passenger-select/passenger-select.component.mjs +4 -4
  74. package/{esm2020 → esm2022}/lib/components/passenger-select/passenger-select.module.mjs +9 -9
  75. package/{esm2020 → esm2022}/lib/components/phone-number/phone-number.component.mjs +4 -4
  76. package/{esm2020 → esm2022}/lib/components/phone-number/phone-number.module.mjs +17 -17
  77. package/{esm2020 → esm2022}/lib/components/premium-toggle/premium-toggle.component.mjs +4 -4
  78. package/{esm2020 → esm2022}/lib/components/premium-toggle/premium-toggle.module.mjs +9 -9
  79. package/{esm2020 → esm2022}/lib/components/radio/radio.component.mjs +4 -4
  80. package/{esm2020 → esm2022}/lib/components/radio/radio.module.mjs +5 -5
  81. package/{esm2020 → esm2022}/lib/components/select/optgroup/optgroup.component.mjs +4 -4
  82. package/{esm2020 → esm2022}/lib/components/select/option/option.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/components/select/select.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/components/select/select.module.mjs +9 -9
  85. package/{esm2020 → esm2022}/lib/components/simple-list/simple-list.component.mjs +4 -4
  86. package/{esm2020 → esm2022}/lib/components/simple-list/simple-list.module.mjs +5 -5
  87. package/{esm2020 → esm2022}/lib/components/slide-toggle/slide-toggle.component.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/components/slide-toggle/slide-toggle.module.mjs +11 -11
  89. package/{esm2020 → esm2022}/lib/components/slider/slider.component.mjs +4 -4
  90. package/{esm2020 → esm2022}/lib/components/slider/slider.module.mjs +9 -9
  91. package/{esm2020 → esm2022}/lib/components/sort/sort.component.mjs +4 -4
  92. package/{esm2020 → esm2022}/lib/components/sort/sort.module.mjs +13 -13
  93. package/{esm2020 → esm2022}/lib/components/spinner/spinner.component.mjs +4 -4
  94. package/{esm2020 → esm2022}/lib/components/spinner/spinner.module.mjs +5 -5
  95. package/{esm2020 → esm2022}/lib/components/subsidy-discount/subsidy-discount.component.mjs +4 -4
  96. package/{esm2020 → esm2022}/lib/components/subsidy-discount/subsidy-discount.module.mjs +13 -13
  97. package/{esm2020 → esm2022}/lib/components/suggestions/suggestions.component.mjs +4 -4
  98. package/{esm2020 → esm2022}/lib/components/suggestions/suggestions.module.mjs +9 -9
  99. package/{esm2020 → esm2022}/lib/components/tab-group/tab/tab.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/lib/components/tab-group/tab-group.component.mjs +4 -4
  101. package/{esm2020 → esm2022}/lib/components/tab-group/tab-group.module.mjs +9 -9
  102. package/{esm2020 → esm2022}/lib/components/table/column/column.component.mjs +4 -4
  103. package/{esm2020 → esm2022}/lib/components/table/column-group/column-group.component.mjs +4 -4
  104. package/{esm2020 → esm2022}/lib/components/table/services/table.service.mjs +4 -4
  105. package/{esm2020 → esm2022}/lib/components/table/table-body/table-body.component.mjs +4 -4
  106. package/{esm2020 → esm2022}/lib/components/table/table-foot/table-foot.component.mjs +4 -4
  107. package/{esm2020 → esm2022}/lib/components/table/table-head/table-head.component.mjs +4 -4
  108. package/{esm2020 → esm2022}/lib/components/table/table-row/table-data/table-data.component.mjs +4 -4
  109. package/{esm2020 → esm2022}/lib/components/table/table-row/table-header/table-header.component.mjs +4 -4
  110. package/{esm2020 → esm2022}/lib/components/table/table-row/table-row.component.mjs +4 -4
  111. package/{esm2020 → esm2022}/lib/components/table/table.component.mjs +4 -4
  112. package/{esm2020 → esm2022}/lib/components/table/table.module.mjs +23 -23
  113. package/{esm2020 → esm2022}/lib/components/textarea/textarea.component.mjs +4 -4
  114. package/{esm2020 → esm2022}/lib/components/textarea/textarea.module.mjs +11 -11
  115. package/{esm2020 → esm2022}/lib/components/toggle/toggle.component.mjs +4 -4
  116. package/{esm2020 → esm2022}/lib/components/toggle/toggle.module.mjs +13 -13
  117. package/{esm2020 → esm2022}/lib/components/trip-summary/trip-summary.component.mjs +4 -4
  118. package/{esm2020 → esm2022}/lib/components/trip-summary/trip-summary.module.mjs +13 -13
  119. package/{esm2020 → esm2022}/lib/components/weather-icon/weather-icon.component.mjs +4 -4
  120. package/{esm2020 → esm2022}/lib/components/weather-icon/weather-icon.module.mjs +5 -5
  121. package/{esm2020 → esm2022}/lib/core/directives/nas-class/nas-class.directive.mjs +4 -4
  122. package/{esm2020 → esm2022}/lib/core/directives/nas-class/nas-class.module.mjs +5 -5
  123. package/{esm2020 → esm2022}/lib/core/services/abandoned-basket/abandoned-basket.service.mjs +4 -4
  124. package/{esm2020 → esm2022}/lib/core/services/animate-helper/animate-helper.service.mjs +4 -4
  125. package/{esm2020 → esm2022}/lib/core/services/bem-helper/bem-helper.service.mjs +4 -4
  126. package/{esm2020 → esm2022}/lib/core/services/date/date-helper.service.mjs +4 -4
  127. package/{esm2020 → esm2022}/lib/core/services/device/device-helper.service.mjs +4 -4
  128. package/{esm2020 → esm2022}/lib/core/services/geolocation/geolocation.service.mjs +4 -4
  129. package/{esm2020 → esm2022}/lib/core/services/language/language-helper.service.mjs +4 -4
  130. package/{esm2020 → esm2022}/lib/core/services/sort/sort.service.mjs +4 -4
  131. package/{esm2020 → esm2022}/lib/core/services/viewport/viewport.service.mjs +4 -4
  132. package/{esm2020 → esm2022}/lib/services/get-position.service.mjs +4 -4
  133. package/{fesm2020 → fesm2022}/norwegian-core-components.mjs +712 -712
  134. package/{fesm2020 → fesm2022}/norwegian-core-components.mjs.map +1 -1
  135. package/lib/components/accordion/accordion.component.d.ts +1 -1
  136. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +1 -1
  137. package/lib/components/airport-select/airport-select.component.d.ts +1 -1
  138. package/lib/components/autocomplete/autocomplete.component.d.ts +1 -1
  139. package/lib/components/backdrop/backdrop.component.d.ts +1 -1
  140. package/lib/components/box/box.component.d.ts +1 -1
  141. package/lib/components/button/button.component.d.ts +1 -1
  142. package/lib/components/checkbox/checkbox.component.d.ts +1 -1
  143. package/lib/components/chip/chip.component.d.ts +1 -1
  144. package/lib/components/container/container.component.d.ts +1 -1
  145. package/lib/components/continue/continue.component.d.ts +1 -1
  146. package/lib/components/cover/cover.component.d.ts +1 -1
  147. package/lib/components/datepicker/calendar/calendar.component.d.ts +2 -2
  148. package/lib/components/datepicker/datepicker.component.d.ts +3 -3
  149. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +2 -2
  150. package/lib/components/divider/divider.component.d.ts +1 -1
  151. package/lib/components/dropdown/dropdown.component.d.ts +1 -1
  152. package/lib/components/filter/filter.component.d.ts +1 -1
  153. package/lib/components/grid/col/col.component.d.ts +1 -1
  154. package/lib/components/grid/grid.component.d.ts +1 -1
  155. package/lib/components/icon/icon.component.d.ts +1 -1
  156. package/lib/components/icon-list/icon-list.component.d.ts +1 -1
  157. package/lib/components/info/info.component.d.ts +1 -1
  158. package/lib/components/input/input.component.d.ts +1 -1
  159. package/lib/components/journey/journey.component.d.ts +1 -1
  160. package/lib/components/journey-availability/journey-availability.component.d.ts +1 -1
  161. package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +1 -1
  162. package/lib/components/journey-selection/journey-selection.component.d.ts +1 -1
  163. package/lib/components/journey-stopover/journey-stopover.component.d.ts +1 -1
  164. package/lib/components/list/list-item/list-item.component.d.ts +1 -1
  165. package/lib/components/list/list.component.d.ts +1 -1
  166. package/lib/components/modal/modal.component.d.ts +1 -1
  167. package/lib/components/number-field/number-field.component.d.ts +1 -1
  168. package/lib/components/page-footer/page-footer.component.d.ts +1 -1
  169. package/lib/components/page-header/hamburger/hamburger.component.d.ts +1 -1
  170. package/lib/components/page-header/page-header.component.d.ts +1 -1
  171. package/lib/components/page-header/search/search.component.d.ts +1 -1
  172. package/lib/components/passenger-select/passenger-select.component.d.ts +1 -1
  173. package/lib/components/phone-number/phone-number.component.d.ts +1 -1
  174. package/lib/components/premium-toggle/premium-toggle.component.d.ts +1 -1
  175. package/lib/components/radio/radio.component.d.ts +1 -1
  176. package/lib/components/select/optgroup/optgroup.component.d.ts +1 -1
  177. package/lib/components/select/option/option.component.d.ts +1 -1
  178. package/lib/components/select/select.component.d.ts +1 -1
  179. package/lib/components/simple-list/simple-list.component.d.ts +1 -1
  180. package/lib/components/slide-toggle/slide-toggle.component.d.ts +1 -1
  181. package/lib/components/slider/slider.component.d.ts +1 -1
  182. package/lib/components/sort/sort.component.d.ts +1 -1
  183. package/lib/components/spinner/spinner.component.d.ts +1 -1
  184. package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +1 -1
  185. package/lib/components/suggestions/suggestions.component.d.ts +1 -1
  186. package/lib/components/tab-group/tab/tab.component.d.ts +1 -1
  187. package/lib/components/tab-group/tab-group.component.d.ts +1 -1
  188. package/lib/components/table/column-group/column-group.component.d.ts +1 -1
  189. package/lib/components/table/table.component.d.ts +1 -1
  190. package/lib/components/textarea/textarea.component.d.ts +1 -1
  191. package/lib/components/toggle/toggle.component.d.ts +1 -1
  192. package/lib/components/trip-summary/trip-summary.component.d.ts +1 -1
  193. package/lib/components/weather-icon/weather-icon.component.d.ts +1 -1
  194. package/lib/core/directives/nas-class/nas-class.directive.d.ts +1 -1
  195. package/package.json +8 -14
  196. package/styles/2__generic/_fonts.scss +32 -61
  197. package/esm2020/lib/components/grid/col/col.component.mjs +0 -49
  198. package/fesm2015/norwegian-core-components.mjs +0 -11843
  199. package/fesm2015/norwegian-core-components.mjs.map +0 -1
  200. /package/{esm2020 → esm2022}/lib/components/accordion/index.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/components/airport-select/index.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/components/airport-select/models/airport.model.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/components/airport-select/models/results-labels.model.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/components/autocomplete/index.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/components/autocomplete/models/autocomplete.model.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/components/backdrop/index.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/components/box/index.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/components/button/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/components/checkbox/index.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/components/chip/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/components/container/index.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/components/continue/index.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/components/cover/index.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/components/datepicker/calendar/calendar-date.model.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/components/datepicker/calendar/enums/week-start.enum.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/components/datepicker/calendar/models/day.model.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/components/datepicker/calendar/models/select-option.model.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/components/datepicker/calendar/models/week.model.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/components/datepicker/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/components/datepicker-combo/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/components/divider/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/components/dropdown/index.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/components/filter/enums/trip-type.enum.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/components/filter/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/components/grid/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/components/icon/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/components/icon-list/icon-list.model.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/components/icon-list/index.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/components/info/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/components/info/models/info.model.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/components/input/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/components/journey/index.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/components/journey/models/journey-flight.model.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/components/journey/models/journey.model.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/components/journey-availability/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/components/journey-availability-list/enums/availability-sort-option.enum.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/components/journey-availability-list/index.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/components/journey-selection/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/components/journey-selection/models/journey-selection-collapsed.model.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/components/journey-selection/models/journey-selection-common.model.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/components/journey-selection/models/journey-selection-expanded.model.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/components/journey-selection/models/journey-selection.model.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/components/journey-stopover/index.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/components/journey-stopover/models/stopover-time.model.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/components/list/index.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/components/modal/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/components/number-field/index.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/components/page-footer/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/components/page-header/index.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/components/passenger-select/enums/passenger-type.enum.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/components/passenger-select/index.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/components/passenger-select/models/passengers.model.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/components/phone-number/index.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/components/premium-toggle/index.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/components/radio/index.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/components/select/index.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/components/select/models/select-option.model.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/components/simple-list/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/components/slide-toggle/index.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/components/slider/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/components/sort/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/components/spinner/index.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/components/subsidy-discount/index.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/components/subsidy-discount/models/subsidy-discount.model.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/components/suggestions/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/components/tab-group/index.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/components/table/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/components/textarea/index.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/components/toggle/index.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/components/toggle/models/options.model.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/components/trip-summary/index.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/components/weather-icon/index.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/core/base/nas-component.base.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/core/decorators/debounce.decorator.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/core/directives/index.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/core/extensions/html-element.extension.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/core/index.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/core/models/abandoned-basket-item.model.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/core/models/animate.model.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/core/models/class.model.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/core/models/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/core/models/link.model.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/core/models/position.model.mjs +0 -0
  285. /package/{esm2020 → esm2022}/lib/core/models/utc-date.model.mjs +0 -0
  286. /package/{esm2020 → esm2022}/lib/core/services/date/date-compare.enum.mjs +0 -0
  287. /package/{esm2020 → esm2022}/lib/core/services/geolocation/geolocation-state.enum.mjs +0 -0
  288. /package/{esm2020 → esm2022}/lib/core/services/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  290. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  291. /package/{esm2020 → esm2022}/lib/shared/index.mjs +0 -0
  292. /package/{esm2020 → esm2022}/lib/shared/models/flight-details.mjs +0 -0
  293. /package/{esm2020 → esm2022}/lib/shared/models/index.mjs +0 -0
  294. /package/{esm2020 → esm2022}/lib/shared/models/journey-availability-sort.model.mjs +0 -0
  295. /package/{esm2020 → esm2022}/lib/shared/models/journey-availability.model.mjs +0 -0
  296. /package/{esm2020 → esm2022}/lib/shared/models/journey-details.model.mjs +0 -0
  297. /package/{esm2020 → esm2022}/lib/shared/models/journey-duration.model.mjs +0 -0
  298. /package/{esm2020 → esm2022}/lib/shared/models/journey-stopover.model.mjs +0 -0
  299. /package/{esm2020 → esm2022}/lib/shared/models/journey-transit-info.model.mjs +0 -0
  300. /package/{esm2020 → esm2022}/lib/shared/models/operating-carrier.model.mjs +0 -0
  301. /package/{esm2020 → esm2022}/lib/shared/models/sort-option.model.mjs +0 -0
  302. /package/{esm2020 → esm2022}/lib/shared/models/sort.model.mjs +0 -0
  303. /package/{esm2020 → esm2022}/lib/shared/models/trip-item-details.model.mjs +0 -0
  304. /package/{esm2020 → esm2022}/lib/shared/models/trip-summary-details.model.mjs +0 -0
  305. /package/{esm2020 → esm2022}/lib/shared/models/trip-summary.model.mjs +0 -0
  306. /package/{esm2020 → esm2022}/norwegian-core-components.mjs +0 -0
  307. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"norwegian-core-components.mjs","sources":["../../../projects/core-components/src/lib/core/base/nas-component.base.ts","../../../projects/core-components/src/lib/core/services/bem-helper/bem-helper.service.ts","../../../projects/core-components/src/lib/core/directives/nas-class/nas-class.directive.ts","../../../projects/core-components/src/lib/core/directives/nas-class/nas-class.module.ts","../../../projects/core-components/src/lib/core/models/utc-date.model.ts","../../../projects/core-components/src/lib/core/services/animate-helper/animate-helper.service.ts","../../../projects/core-components/src/lib/core/services/device/device-helper.service.ts","../../../projects/core-components/src/lib/core/services/sort/sort.service.ts","../../../projects/core-components/src/lib/core/services/viewport/viewport.service.ts","../../../projects/core-components/src/lib/core/services/date/date-compare.enum.ts","../../../projects/core-components/src/lib/core/services/date/date-helper.service.ts","../../../projects/core-components/src/lib/core/services/language/language-helper.service.ts","../../../projects/core-components/src/lib/core/services/abandoned-basket/abandoned-basket.service.ts","../../../projects/core-components/src/lib/core/services/geolocation/geolocation-state.enum.ts","../../../projects/core-components/src/lib/core/services/geolocation/geolocation.service.ts","../../../projects/core-components/src/lib/components/icon/icon.component.ts","../../../projects/core-components/src/lib/components/icon/icon.component.html","../../../projects/core-components/src/lib/components/accordion/accordion.component.ts","../../../projects/core-components/src/lib/components/accordion/accordion.component.html","../../../projects/core-components/src/lib/components/icon/icon.module.ts","../../../projects/core-components/src/lib/components/accordion/accordion.module.ts","../../../projects/core-components/src/lib/components/airport-select/services/airport-select.service.ts","../../../projects/core-components/src/lib/components/airport-select/services/airport-select-dropdown.service.ts","../../../projects/core-components/src/lib/components/button/button.component.ts","../../../projects/core-components/src/lib/components/button/button.component.html","../../../projects/core-components/src/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.ts","../../../projects/core-components/src/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.html","../../../projects/core-components/src/lib/components/airport-select/airport-select.component.ts","../../../projects/core-components/src/lib/components/airport-select/airport-select.component.html","../../../projects/core-components/src/lib/components/button/button.module.ts","../../../projects/core-components/src/lib/components/airport-select/airport-select.module.ts","../../../projects/core-components/src/lib/components/box/box.component.ts","../../../projects/core-components/src/lib/components/box/box.component.html","../../../projects/core-components/src/lib/components/box/box.module.ts","../../../projects/core-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/core-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/core-components/src/lib/components/checkbox/checkbox.module.ts","../../../projects/core-components/src/lib/components/container/container.component.ts","../../../projects/core-components/src/lib/components/container/container.component.html","../../../projects/core-components/src/lib/components/container/container.module.ts","../../../projects/core-components/src/lib/core/decorators/debounce.decorator.ts","../../../projects/core-components/src/lib/components/continue/continue.component.ts","../../../projects/core-components/src/lib/components/continue/continue.component.html","../../../projects/core-components/src/lib/components/continue/continue.module.ts","../../../projects/core-components/src/lib/components/cover/cover.component.ts","../../../projects/core-components/src/lib/components/cover/cover.component.html","../../../projects/core-components/src/lib/components/cover/cover.module.ts","../../../projects/core-components/src/lib/components/dropdown/dropdown.component.ts","../../../projects/core-components/src/lib/components/dropdown/dropdown.component.html","../../../projects/core-components/src/lib/components/number-field/number-field.component.ts","../../../projects/core-components/src/lib/components/number-field/number-field.component.html","../../../projects/core-components/src/lib/components/number-field/number-field.module.ts","../../../projects/core-components/src/lib/components/dropdown/dropdown.module.ts","../../../projects/core-components/src/lib/components/filter/enums/trip-type.enum.ts","../../../projects/core-components/src/lib/components/passenger-select/enums/passenger-type.enum.ts","../../../projects/core-components/src/lib/components/passenger-select/passenger-select.component.ts","../../../projects/core-components/src/lib/components/passenger-select/passenger-select.component.html","../../../projects/core-components/src/lib/components/select/option/option.component.ts","../../../projects/core-components/src/lib/components/select/option/option.component.html","../../../projects/core-components/src/lib/components/select/optgroup/optgroup.component.ts","../../../projects/core-components/src/lib/components/select/optgroup/optgroup.component.html","../../../projects/core-components/src/lib/components/select/select.component.ts","../../../projects/core-components/src/lib/components/select/select.component.html","../../../projects/core-components/src/lib/components/backdrop/backdrop.component.ts","../../../projects/core-components/src/lib/components/backdrop/backdrop.component.html","../../../projects/core-components/src/lib/components/datepicker/calendar/enums/week-start.enum.ts","../../../projects/core-components/src/lib/components/datepicker/services/calendar.service.ts","../../../projects/core-components/src/lib/components/datepicker/calendar/calendar.component.ts","../../../projects/core-components/src/lib/components/datepicker/calendar/calendar.component.html","../../../projects/core-components/src/lib/components/datepicker/datepicker.component.ts","../../../projects/core-components/src/lib/components/datepicker/datepicker.component.html","../../../projects/core-components/src/lib/components/datepicker-combo/datepicker-combo.component.ts","../../../projects/core-components/src/lib/components/datepicker-combo/datepicker-combo.component.html","../../../projects/core-components/src/lib/components/subsidy-discount/subsidy-discount.component.ts","../../../projects/core-components/src/lib/components/subsidy-discount/subsidy-discount.component.html","../../../projects/core-components/src/lib/components/suggestions/suggestions.component.ts","../../../projects/core-components/src/lib/components/suggestions/suggestions.component.html","../../../projects/core-components/src/lib/components/filter/filter.component.ts","../../../projects/core-components/src/lib/components/filter/filter.component.html","../../../projects/core-components/src/lib/components/backdrop/backdrop.module.ts","../../../projects/core-components/src/lib/components/select/select.module.ts","../../../projects/core-components/src/lib/components/spinner/spinner.component.ts","../../../projects/core-components/src/lib/components/spinner/spinner.component.html","../../../projects/core-components/src/lib/components/spinner/spinner.module.ts","../../../projects/core-components/src/lib/components/datepicker/datepicker.module.ts","../../../projects/core-components/src/lib/components/datepicker-combo/datepicker-combo.module.ts","../../../projects/core-components/src/lib/components/passenger-select/passenger-select.module.ts","../../../projects/core-components/src/lib/components/subsidy-discount/subsidy-discount.module.ts","../../../projects/core-components/src/lib/components/suggestions/suggestions.module.ts","../../../projects/core-components/src/lib/components/filter/filter.module.ts","../../../projects/core-components/src/lib/components/radio/radio.component.ts","../../../projects/core-components/src/lib/components/radio/radio.component.html","../../../projects/core-components/src/lib/components/sort/sort.component.ts","../../../projects/core-components/src/lib/components/sort/sort.component.html","../../../projects/core-components/src/lib/components/radio/radio.module.ts","../../../projects/core-components/src/lib/components/sort/sort.module.ts","../../../projects/core-components/src/lib/components/grid/grid.component.ts","../../../projects/core-components/src/lib/components/grid/grid.component.html","../../../projects/core-components/src/lib/components/grid/col/col.component.ts","../../../projects/core-components/src/lib/components/grid/col/col.component.html","../../../projects/core-components/src/lib/components/grid/grid.module.ts","../../../projects/core-components/src/lib/components/icon-list/icon-list.component.ts","../../../projects/core-components/src/lib/components/icon-list/icon-list.component.html","../../../projects/core-components/src/lib/components/icon-list/icon-list.module.ts","../../../projects/core-components/src/lib/components/info/info.component.ts","../../../projects/core-components/src/lib/components/info/info.component.html","../../../projects/core-components/src/lib/components/info/info.module.ts","../../../projects/core-components/src/lib/components/input/input.component.ts","../../../projects/core-components/src/lib/components/input/input.component.html","../../../projects/core-components/src/lib/components/input/input.module.ts","../../../projects/core-components/src/lib/components/simple-list/simple-list.component.ts","../../../projects/core-components/src/lib/components/simple-list/simple-list.component.html","../../../projects/core-components/src/lib/components/simple-list/simple-list.module.ts","../../../projects/core-components/src/lib/components/modal/modal.component.ts","../../../projects/core-components/src/lib/components/modal/modal.component.html","../../../projects/core-components/src/lib/components/modal/modal.module.ts","../../../projects/core-components/src/lib/components/page-footer/page-footer.component.ts","../../../projects/core-components/src/lib/components/page-footer/page-footer.component.html","../../../projects/core-components/src/lib/components/page-footer/page-footer.module.ts","../../../projects/core-components/src/lib/components/page-header/search/search.component.ts","../../../projects/core-components/src/lib/components/page-header/search/search.component.html","../../../projects/core-components/src/lib/components/page-header/hamburger/hamburger.component.ts","../../../projects/core-components/src/lib/components/page-header/hamburger/hamburger.component.html","../../../projects/core-components/src/lib/components/page-header/page-header.component.ts","../../../projects/core-components/src/lib/components/page-header/page-header.component.html","../../../projects/core-components/src/lib/components/page-header/page-header.module.ts","../../../projects/core-components/src/lib/components/toggle/toggle.component.ts","../../../projects/core-components/src/lib/components/toggle/toggle.component.html","../../../projects/core-components/src/lib/components/premium-toggle/premium-toggle.component.ts","../../../projects/core-components/src/lib/components/premium-toggle/premium-toggle.component.html","../../../projects/core-components/src/lib/components/toggle/toggle.module.ts","../../../projects/core-components/src/lib/components/premium-toggle/premium-toggle.module.ts","../../../projects/core-components/src/lib/components/weather-icon/weather-icon.component.ts","../../../projects/core-components/src/lib/components/weather-icon/weather-icon.component.html","../../../projects/core-components/src/lib/components/weather-icon/weather-icon.module.ts","../../../projects/core-components/src/lib/components/list/list.component.ts","../../../projects/core-components/src/lib/components/list/list.component.html","../../../projects/core-components/src/lib/components/list/list-item/list-item.component.ts","../../../projects/core-components/src/lib/components/list/list-item/list-item.component.html","../../../projects/core-components/src/lib/components/list/list.module.ts","../../../projects/core-components/src/lib/components/journey-availability-list/enums/availability-sort-option.enum.ts","../../../projects/core-components/src/lib/components/journey/journey.component.ts","../../../projects/core-components/src/lib/components/journey/journey.component.html","../../../projects/core-components/src/lib/components/journey-stopover/journey-stopover.component.ts","../../../projects/core-components/src/lib/components/journey-stopover/journey-stopover.component.html","../../../projects/core-components/src/lib/components/trip-summary/trip-summary.component.ts","../../../projects/core-components/src/lib/components/trip-summary/trip-summary.component.html","../../../projects/core-components/src/lib/components/journey-availability/journey-availability.component.ts","../../../projects/core-components/src/lib/components/journey-availability/journey-availability.component.html","../../../projects/core-components/src/lib/components/journey-availability-list/journey-availability-list.component.ts","../../../projects/core-components/src/lib/components/journey-availability-list/journey-availability-list.component.html","../../../projects/core-components/src/lib/components/journey/journey.module.ts","../../../projects/core-components/src/lib/components/journey-stopover/journey-stopover.module.ts","../../../projects/core-components/src/lib/components/trip-summary/trip-summary.module.ts","../../../projects/core-components/src/lib/components/journey-availability/journey-availability.module.ts","../../../projects/core-components/src/lib/components/journey-availability-list/journey-availability-list.module.ts","../../../projects/core-components/src/lib/components/chip/chip.component.ts","../../../projects/core-components/src/lib/components/chip/chip.component.html","../../../projects/core-components/src/lib/components/chip/chip.module.ts","../../../projects/core-components/src/lib/components/tab-group/tab/tab.component.ts","../../../projects/core-components/src/lib/components/tab-group/tab/tab.component.html","../../../projects/core-components/src/lib/components/tab-group/tab-group.component.ts","../../../projects/core-components/src/lib/components/tab-group/tab-group.component.html","../../../projects/core-components/src/lib/components/tab-group/tab-group.module.ts","../../../projects/core-components/src/lib/components/phone-number/phone-number.component.ts","../../../projects/core-components/src/lib/components/phone-number/phone-number.component.html","../../../projects/core-components/src/lib/components/phone-number/phone-number.module.ts","../../../projects/core-components/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/core-components/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/core-components/src/lib/components/autocomplete/autocomplete.module.ts","../../../projects/core-components/src/lib/components/textarea/textarea.component.ts","../../../projects/core-components/src/lib/components/textarea/textarea.component.html","../../../projects/core-components/src/lib/components/textarea/textarea.module.ts","../../../projects/core-components/src/lib/components/journey-selection/journey-selection.component.ts","../../../projects/core-components/src/lib/components/journey-selection/journey-selection.component.html","../../../projects/core-components/src/lib/components/journey-selection/journey-selection.module.ts","../../../projects/core-components/src/lib/components/slide-toggle/slide-toggle.component.ts","../../../projects/core-components/src/lib/components/slide-toggle/slide-toggle.component.html","../../../projects/core-components/src/lib/components/slide-toggle/slide-toggle.module.ts","../../../projects/core-components/src/lib/components/slider/slider.component.ts","../../../projects/core-components/src/lib/components/slider/slider.component.html","../../../projects/core-components/src/lib/components/slider/slider.module.ts","../../../projects/core-components/src/lib/components/table/table.component.ts","../../../projects/core-components/src/lib/components/table/table.component.html","../../../projects/core-components/src/lib/core/extensions/html-element.extension.ts","../../../projects/core-components/src/lib/components/table/services/table.service.ts","../../../projects/core-components/src/lib/components/table/table-row/table-row.component.ts","../../../projects/core-components/src/lib/components/table/table-row/table-row.component.html","../../../projects/core-components/src/lib/components/table/table-row/table-header/table-header.component.ts","../../../projects/core-components/src/lib/components/table/table-row/table-header/table-header.component.html","../../../projects/core-components/src/lib/components/table/table-row/table-data/table-data.component.ts","../../../projects/core-components/src/lib/components/table/table-row/table-data/table-data.component.html","../../../projects/core-components/src/lib/components/table/table-head/table-head.component.ts","../../../projects/core-components/src/lib/components/table/table-head/table-head.component.html","../../../projects/core-components/src/lib/components/table/table-body/table-body.component.ts","../../../projects/core-components/src/lib/components/table/table-body/table-body.component.html","../../../projects/core-components/src/lib/components/table/table-foot/table-foot.component.ts","../../../projects/core-components/src/lib/components/table/table-foot/table-foot.component.html","../../../projects/core-components/src/lib/components/table/column-group/column-group.component.ts","../../../projects/core-components/src/lib/components/table/column-group/column-group.component.html","../../../projects/core-components/src/lib/components/table/column/column.component.ts","../../../projects/core-components/src/lib/components/table/column/column.component.html","../../../projects/core-components/src/lib/components/table/table.module.ts","../../../projects/core-components/src/lib/components/divider/divider.component.ts","../../../projects/core-components/src/lib/components/divider/divider.component.html","../../../projects/core-components/src/lib/components/divider/divider.module.ts","../../../projects/core-components/src/lib/services/get-position.service.ts","../../../projects/core-components/src/norwegian-core-components.ts"],"sourcesContent":["import { ElementRef, isDevMode } from '@angular/core';\nimport { ClassModel } from '../models';\n\nexport class NasComponentBase {\n cssClassBlock: string;\n\n constructor(block?: string) {\n if (block) {\n this.cssClassBlock = block;\n }\n }\n\n getContainerClass(element?: string, modifiersInput?: any): Array<ClassModel> {\n return [\n {\n block: 'container'\n },\n this.getClass(element, modifiersInput)\n ];\n }\n\n getClass(element?: string, modifiersInput?: any): ClassModel {\n let modifiers = modifiersInput;\n\n if (typeof modifiersInput === 'string' || modifiersInput instanceof String) {\n modifiers = [modifiersInput];\n }\n\n return {\n block: this.cssClassBlock,\n element: element,\n modifiers: modifiers\n };\n }\n\n exists(value: boolean): boolean {\n return value !== undefined && value !== null && value !== false;\n }\n\n removeHostElement(elementRef: ElementRef<HTMLElement>) {\n if (!elementRef?.nativeElement?.parentElement) {\n return;\n }\n const nativeElement: HTMLElement = elementRef.nativeElement;\n const parentElement: HTMLElement = nativeElement.parentElement;\n\n while (nativeElement.firstChild) {\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\n }\n\n parentElement.removeChild(nativeElement);\n }\n\n warnMissingAccessibiltyInput(input: string): void {\n if (isDevMode()) {\n console.warn(`Missing required input for accessibilty: [${input}]`);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BemHelper {\n\n getClasses(block: string): any {\n const blockClass = block || '';\n\n return (element?: any, modifier?: any, addition?: any) => {\n const elementClass = element ? `__${element}` : '';\n\n let modifierClass = '';\n\n if (Array.isArray(modifier)) {\n // If it's an array we loop through it\n modifierClass = ` ${modifier\n .filter(item => item !== null && item !== undefined)\n .map(item => `${blockClass}${elementClass}--${item.toString().toLowerCase()}`)\n .join(' ')}`;\n } else if ((typeof modifier).toUpperCase() === 'OBJECT') {\n // If it's an object we convert it to an array and loop through it\n const modifierArray = Object.keys(modifier)\n .filter(\n key =>\n modifier[key] !== undefined &&\n modifier[key] !== false &&\n modifier[key] !== null,\n ) // Filter if the value is undefined\n .map(key => key);\n\n modifierClass = ` ${modifierArray\n .map(item => `${blockClass}${elementClass}--${item.toString().toLowerCase()}`)\n .join(' ')}`;\n } else if (modifier) {\n // If it's a string we just make the classname\n modifierClass = ` ${blockClass}${elementClass}--${modifier.toString().toLowerCase()}`;\n }\n\n const additionClass = addition ? ` ${addition}` : '';\n\n return `${blockClass}${elementClass}${modifierClass}${additionClass}`;\n };\n }\n\n class(block: string, element?: string, modifiers?: any, addition?: string): string {\n return this.getClasses(block)(element, modifiers, addition);\n }\n}\n","import { Directive, HostBinding, Input } from '@angular/core';\nimport { ClassModel } from '../../models/class.model';\nimport { BemHelper } from '../../services/bem-helper/bem-helper.service';\n\n@Directive({\n selector: '[nasClass]'\n})\nexport class NasClassDirective {\n @Input()\n set nasClass(value: any) {\n if (!value) {\n return;\n }\n\n if (typeof value === 'string' || value instanceof String) {\n const cssClasses = value.split(' ');\n\n for (const cssClass of cssClasses) {\n const model = { block: cssClass };\n this.models.push(model);\n }\n\n } else {\n if (Array.isArray(value)) {\n this.models = new Array<ClassModel>();\n for (const cssClass of value) {\n this.pushClassToModels(cssClass);\n }\n } else {\n this.models = new Array<ClassModel>();\n this.pushClassToModels(value);\n }\n }\n\n if (!this.models || this.models.length <= 0) {\n return;\n }\n\n const classes = new Array<string>();\n\n for (const model of this.models) {\n const cssClasses = this.bem.class(model.block, model.element, model.modifiers, model.addition);\n classes.push(cssClasses);\n }\n\n this.elementClass = classes.join(' ');\n }\n\n @Input('attr.class')\n @HostBinding('attr.class')\n get elementClass(): string {\n return this.elementClassValue;\n }\n set elementClass(value: string) {\n this.elementClassValue = value;\n }\n\n private models = new Array<ClassModel>();\n private elementClassValue: string;\n\n constructor(private bem: BemHelper) {\n }\n\n private pushClassToModels(cssClass: any) {\n const model = {\n block: cssClass.block,\n element: cssClass.element,\n modifiers: new Array<string>()\n };\n if (cssClass.modifiers && cssClass.modifiers.length > 0) {\n for (const modifier of cssClass.modifiers) {\n if (modifier) {\n model.modifiers.push(modifier);\n }\n }\n }\n this.models.push(model);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NasClassDirective } from './nas-class.directive';\nimport { BemHelper } from '../../services/bem-helper/bem-helper.service';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [NasClassDirective],\n exports: [NasClassDirective],\n providers: [BemHelper]\n})\nexport class NasClassModule { }\n","export class UtcDate {\n\n constructor(public year: number, public month: number, public date: number, public hours: number = 0, public minutes: number = 0) {\n }\n\n setDate(date: number): void {\n const dateObj = this.toDate();\n dateObj.setUTCDate(date);\n\n this.toUtcDate(dateObj);\n }\n\n setMonth(month: number): any {\n const dateObj = this.toDate();\n\n if (month < 0) {\n month = 11;\n\n dateObj.setUTCFullYear(this.year - 1);\n } else if (month > 11) {\n month = 0;\n\n dateObj.setUTCFullYear(this.year + 1);\n }\n\n dateObj.setUTCMonth(month);\n\n this.toUtcDate(dateObj);\n }\n\n getDay(): number {\n return this.toDate().getUTCDay();\n }\n\n toDate(): Date {\n const date = new Date(Date.UTC(this.year, this.month, this.date, this.hours, this.minutes));\n return date;\n }\n\n private toUtcDate(date: Date): void {\n this.year = date.getUTCFullYear();\n this.month = date.getUTCMonth();\n this.date = date.getUTCDate();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AnimateHelper {\n\n constructor() { }\n\n animateFromElement(from: HTMLElement, to: HTMLElement, time: number = 800) {\n const fromPos = from.getBoundingClientRect();\n const fromWidth = fromPos.width;\n const fromHeight = fromPos.height;\n const fromTop = fromPos.top;\n const fromLeft = fromPos.left;\n\n const toPos = to.getBoundingClientRect();\n const scaleX = ((fromWidth * 100) / toPos.width / 100).toFixed(3);\n const scaleY = ((fromHeight * 100) / toPos.height / 100).toFixed(3);\n const left = (fromLeft - toPos.left).toFixed(3);\n const top = (fromTop - toPos.top).toFixed(3);\n\n return `${this.makeAnimation(`\n transform-origin: left top;\n transform: translate(${left}px, ${top}px) scale(${scaleX}, ${scaleY});\n opacity: 0;\n `,\n 'transform-origin: left top;',\n time,\n )} ${time}ms cubic-bezier(0.19, 1, 0.22, 1) both`;\n }\n\n private makeAnimation(from: string, to: string, time: number) {\n const animationName =\n `animation-${Math.random()\n .toString(36)\n .substr(2, 9)}`;\n\n this.makeKeyframe(\n `\n @keyframes ${animationName} {\n ${`from { ${from} }`}\n ${`to { ${to} }`}\n }\n `,\n time,\n );\n\n return animationName;\n }\n\n private makeKeyframe(keyframes: string, time: number) {\n const style = document.createElement('style');\n const head = document.getElementsByTagName('head')[0];\n style.innerHTML = keyframes;\n head.appendChild(style);\n\n setTimeout(() => {\n head.removeChild(style);\n }, time + 3000);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DeviceHelper {\n\n private readonly mobileMaxWidth = 639;\n private readonly tabletMaxWidth = 999;\n\n isTouchScreenDevice() {\n return 'ontouchstart' in document.documentElement;\n }\n\n isMobile() {\n const maxWidth = 414;\n return window.screen.width <= maxWidth && this.isTouchScreenDevice();\n }\n\n isMobileWidth() {\n return window.innerWidth <= this.mobileMaxWidth;\n }\n\n isWidthMobile(width: number): boolean {\n return width <= this.mobileMaxWidth;\n }\n\n isTabletWidth() {\n return !this.isMobileWidth() && window.innerWidth <= this.tabletMaxWidth;\n }\n\n isWidthTablet(width: number): boolean {\n return !this.isWidthMobile(width) && width <= this.tabletMaxWidth;\n }\n\n isWidthDesktop(width: number): boolean {\n return !this.isWidthMobile(width)\n && !this.isWidthTablet(width)\n && width > this.tabletMaxWidth;\n }\n\n isTabletWindow() {\n const MOBILE_MAX_WIDTH = 999;\n return MOBILE_MAX_WIDTH >= window.innerWidth || MOBILE_MAX_WIDTH >= window.innerWidth;\n }\n\n isIE(): boolean {\n const isIEOrEdge = /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n return isIEOrEdge;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SortService {\n sortByObject(array: Array<any>, order: Array<string>, key: string) {\n array.sort((a, b) => {\n const A = a[key], B = b[key];\n\n if (order.indexOf(A) > order.indexOf(B)) {\n return 1;\n } else {\n return -1;\n }\n });\n\n return array;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ViewPortService {\n isElementInViewport(element: HTMLElement): boolean {\n const rect = element.getBoundingClientRect();\n\n const isInViewPort =\n rect.top >= 0 &&\n rect.left >= 0 &&\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n\n return isInViewPort;\n }\n\n getElementPosition(element: HTMLElement): Position {\n let el: any = element;\n let x = 0;\n let y = 0;\n\n while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) {\n x += el.offsetLeft;\n y += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n x: x,\n y: y,\n };\n }\n}\n\nexport interface Position {\n x: number;\n y: number;\n}\n","export enum DateCompare {\n lessThan,\n equal,\n greaterThan\n}\n","import { Injectable } from '@angular/core';\n\nimport { DateCompare } from './date-compare.enum';\nimport { UtcDate } from '../../models';\n\n@Injectable()\nexport class DateHelper {\n utcDate(input?: Date | string): UtcDate | null {\n if (!input) {\n input = new Date();\n }\n\n let utcDate = null;\n\n if (typeof input === 'string') {\n let inputYearMonthDate = input;\n let inputHoursMinutes = input;\n\n if (input.indexOf('T') > -1) {\n const indexOfT = input.indexOf('T');\n inputYearMonthDate = input.slice(0, indexOfT);\n inputHoursMinutes = input.slice(indexOfT + 1, indexOfT + 6);\n }\n\n const yearMonthDateParts = inputYearMonthDate.split('-');\n const year = Number(yearMonthDateParts[0]);\n const month = Number(yearMonthDateParts[1]) - 1;\n const date = Number(yearMonthDateParts[2]) || 1;\n\n\n const hoursMinutesParts = inputHoursMinutes.split(':');\n const hours = Number(hoursMinutesParts[0]);\n const minutes = Number(hoursMinutesParts[1]);\n\n utcDate = new UtcDate(year, month, date, hours, minutes);\n }\n\n if (input instanceof Date) {\n utcDate = new UtcDate(input.getUTCFullYear(), input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes());\n return utcDate;\n }\n\n return utcDate;\n }\n\n date(utcDate: UtcDate): Date | null {\n if (!utcDate) {\n return null;\n }\n\n const date = new Date(Date.UTC(utcDate.year, utcDate.month, utcDate.date, utcDate.hours, utcDate.minutes));\n return date;\n }\n\n getWeekNumber(input: Date): number {\n if (!input) {\n return -1;\n }\n\n const date = new Date(input);\n\n const day = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const dayNumber = day.getUTCDay() || 7;\n day.setUTCDate(day.getUTCDate() + 4 - dayNumber);\n const yearStart = new Date(Date.UTC(day.getUTCFullYear(), 0, 1));\n return Math.ceil((((day.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);\n }\n\n toYearMonthDateString(date: UtcDate): string {\n return `${date.year}-${('0' + (date.month + 1)).slice(-2)}-${('0' + date.date).slice(-2)}`;\n }\n\n toYearMonthString(date: UtcDate): string {\n return `${date.year}-${('0' + (date.month + 1)).slice(-2)}`;\n }\n\n isEqual(\n date1: UtcDate,\n date2: UtcDate,\n ignoreDate: boolean = false,\n ignoreHours: boolean = false,\n ignoreMinutes: boolean = false): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n let isEqual = false;\n\n if (!date1 || !date2) {\n isEqual = date1 === date2;\n return isEqual;\n }\n\n isEqual = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.equal;\n return isEqual;\n }\n\n isLessThan(\n date1: UtcDate,\n date2: UtcDate,\n ignoreDate: boolean = false,\n ignoreHours: boolean = false,\n ignoreMinutes: boolean = false): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n const isLessThan = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.lessThan;\n return isLessThan;\n }\n\n isGreaterThan(\n date1: UtcDate,\n date2: UtcDate,\n ignoreDate: boolean = false,\n ignoreHours: boolean = false,\n ignoreMinutes: boolean = false): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n const isGreaterThan = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.greaterThan;\n return isGreaterThan;\n }\n\n isInThePast(\n date: UtcDate,\n ignoreDate: boolean = false,\n ignoreHours: boolean = false,\n ignoreMinutes: boolean = false): boolean {\n if (!date) {\n return true;\n }\n\n const today = this.utcDate();\n\n if (date.year > today.year) {\n return false;\n } else if (date.year < today.year) {\n return true;\n }\n\n if (date.month > today.month) {\n return false;\n } else if (date.month < today.month) {\n return true;\n }\n\n if (!ignoreDate) {\n if (date.date > today.date) {\n return false;\n }\n\n if (!ignoreHours) {\n if (date.hours > today.hours) {\n return false;\n }\n\n if (!ignoreMinutes) {\n return date.minutes < today.minutes;\n } else {\n return true;\n }\n } else {\n return date.date !== today.date;\n }\n }\n }\n\n isSameMonth(date1: UtcDate, date2: UtcDate): boolean {\n if (!date1 || !date2) {\n return null;\n }\n\n return date1.year === date2.year && date1.month === date2.month;\n }\n\n isSameDate(date1: UtcDate, date2: UtcDate): boolean {\n if (!date1 || !date2) {\n return false;\n }\n\n return this.compare(date1, date2, false, false, false) === DateCompare.equal;\n }\n\n getUtcNumberOfMonthBetween(date1: UtcDate, date2: UtcDate): number {\n return this.getNumberOfMonthBetween(this.date(date1), this.date(date2));\n }\n\n getUtcNumberOfDaysBetween(date1: UtcDate, date2: UtcDate): number {\n return this.getNumberOfDaysBetween(this.date(date1), this.date(date2));\n }\n\n private getNumberOfDaysBetween(date1: Date, date2: Date): number {\n const timeDifference = date2.getTime() - date1.getTime();\n const daysBetween = timeDifference / (1000 * 3600 * 24);\n return daysBetween;\n }\n\n private getNumberOfMonthBetween(date1: Date, date2: Date): number {\n let months: number;\n months = (date2.getUTCFullYear() - date1.getUTCFullYear()) * 12;\n months -= date1.getUTCMonth() + 1;\n months += date2.getUTCMonth();\n return months <= 0 ? 0 : months;\n }\n\n private compare(\n date1: UtcDate,\n date2: UtcDate,\n ignoreDate: boolean = false,\n ignoreHours: boolean = false,\n ignoreMinutes: boolean = false): DateCompare {\n if (!date1 || !date2) {\n return null;\n }\n\n if (date1.year > date2.year) {\n return DateCompare.greaterThan;\n } else if (date1.year < date2.year) {\n return DateCompare.lessThan;\n }\n\n if (date1.month > date2.month) {\n return DateCompare.greaterThan;\n } else if (date1.month < date2.month) {\n return DateCompare.lessThan;\n }\n\n if (!ignoreDate) {\n if (date1.date > date2.date) {\n return DateCompare.greaterThan;\n } else if (date1.date < date2.date) {\n return DateCompare.lessThan;\n }\n\n if (!ignoreHours) {\n if (date1.hours > date2.hours) {\n return DateCompare.greaterThan;\n } else if (date1.hours < date2.hours) {\n return DateCompare.lessThan;\n }\n\n if (!ignoreMinutes) {\n if (date1.minutes > date2.minutes) {\n return DateCompare.greaterThan;\n } else if (date1.minutes < date2.minutes) {\n return DateCompare.lessThan;\n }\n }\n }\n }\n\n return DateCompare.equal;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { registerLocaleData } from '@angular/common';\nimport localeEnCa from '@angular/common/locales/en-CA';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEs from '@angular/common/locales/es';\nimport localeFi from '@angular/common/locales/fi';\nimport localeEnIe from '@angular/common/locales/en-IE';\nimport localeEn from '@angular/common/locales/en';\nimport localeNo from '@angular/common/locales/nb';\nimport localePl from '@angular/common/locales/pl';\nimport localeSv from '@angular/common/locales/sv';\nimport localeEnGb from '@angular/common/locales/en-GB';\n\n@Injectable()\nexport class LanguageHelper {\n private languageCodeValue: string;\n private fallbackLanguageCodeValue: string;\n private defaultCountryValue: string;\n\n languageCode(): string {\n return this.languageCodeValue;\n }\n\n fallbackLanguageCode(): string {\n return this.fallbackLanguageCodeValue;\n }\n\n defaultCountryCode(): string {\n return this.defaultCountryValue;\n }\n\n setLanguageBasedOnMarketCode(marketCode: string) {\n const englishLanguageCode = 'en';\n const spanishLanguageCode = 'es';\n const noDefaultCountry = '';\n\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = noDefaultCountry;\n\n if (marketCode) {\n switch (marketCode.toLowerCase()) {\n case 'en-ca':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'CA';\n registerLocaleData(localeEnCa, this.languageCodeValue);\n break;\n case 'dk':\n this.languageCodeValue = 'da';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'DK';\n registerLocaleData(localeDa, this.languageCodeValue);\n break;\n case 'de':\n this.languageCodeValue = 'de';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'DE';\n registerLocaleData(localeDe, this.languageCodeValue);\n break;\n case 'es':\n this.languageCodeValue = spanishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'ES';\n registerLocaleData(localeEs, this.languageCodeValue);\n break;\n case 'fi':\n this.languageCodeValue = 'fi';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'FI';\n registerLocaleData(localeFi, this.languageCodeValue);\n break;\n case 'ie':\n this.languageCodeValue = 'en-IE';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'IE';\n registerLocaleData(localeEnIe, this.languageCodeValue);\n break;\n case 'nl':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'NL';\n registerLocaleData(localeEn, this.languageCodeValue);\n break;\n case 'no':\n this.languageCodeValue = 'no';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'NO';\n registerLocaleData(localeNo, this.languageCodeValue);\n break;\n case 'en':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = noDefaultCountry;\n registerLocaleData(localeEn, this.languageCodeValue);\n break;\n case 'pl':\n this.languageCodeValue = 'pl';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'PL';\n registerLocaleData(localePl, this.languageCodeValue);\n break;\n case 'sg':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'SG';\n registerLocaleData(localeEn, this.languageCodeValue);\n break;\n case 'se':\n this.languageCodeValue = 'sv';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'SE';\n registerLocaleData(localeSv, this.languageCodeValue);\n break;\n case 'uk':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'GB';\n registerLocaleData(localeEnGb, this.languageCodeValue);\n break;\n case 'us':\n this.languageCodeValue = englishLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'US';\n registerLocaleData(localeEn, this.languageCodeValue);\n break;\n default:\n break;\n }\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbandonedBasketItemModel } from '../../models/abandoned-basket-item.model';\n\n@Injectable()\nexport class AbandonedBasketService {\n private abandonedBasketKey = 'ngStorage-abandonedBasket';\n\n getAll(): Array<AbandonedBasketItemModel> {\n let abandonedBasket = [];\n\n try {\n if (!localStorage) {\n return [];\n }\n\n abandonedBasket = JSON.parse(localStorage.getItem(this.abandonedBasketKey)) || [];\n } catch (error) {\n return [];\n }\n\n if (!Array.isArray(abandonedBasket) || abandonedBasket.length <= 0) {\n this.remove();\n return [];\n }\n\n abandonedBasket = abandonedBasket.filter(x => {\n const departureDateParsed = Date.parse(x.departureDate);\n\n if (isNaN(departureDateParsed)) {\n return false;\n }\n\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const todayParsed = Date.parse(today.toString());\n\n if (departureDateParsed < todayParsed) {\n return false;\n }\n\n return true;\n });\n\n this.replace(abandonedBasket);\n\n return abandonedBasket;\n }\n\n private remove() {\n try {\n localStorage.removeItem(this.abandonedBasketKey);\n } catch (error) {\n }\n }\n\n private replace(abandonedBasket: Array<AbandonedBasketItemModel>) {\n try {\n localStorage.setItem(this.abandonedBasketKey, JSON.stringify(abandonedBasket));\n\n } catch (error) {\n }\n }\n}\n","export enum GeolocationState {\n granted = 0,\n prompt = 1,\n denied = 2,\n unknown = 3\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GeolocationState } from './geolocation-state.enum';\n\n@Injectable()\nexport class GeolocationService {\n\n getCurrentPosition(): Observable<GeolocationPosition> {\n return new Observable(observer => {\n if (window.navigator && window.navigator.geolocation) {\n window.navigator.geolocation.getCurrentPosition(\n (position) => {\n observer.next(position);\n observer.complete();\n },\n (error) => observer.error(error));\n } else {\n observer.error('Unsupported browser');\n }\n });\n }\n\n getState(): Observable<GeolocationState> {\n return new Observable(observer => {\n if (window.navigator && window.navigator.geolocation) {\n const permissions = ((window.navigator as any).permissions );\n\n if (permissions) {\n permissions\n .query({ name: 'geolocation' })\n .then((result: { state: any }) => {\n if (result && result.state) {\n switch (result.state) {\n case 'granted':\n observer.next(GeolocationState.granted);\n break;\n case 'prompt':\n observer.next(GeolocationState.prompt);\n break;\n case 'denied':\n observer.next(GeolocationState.denied);\n break;\n default:\n observer.next(GeolocationState.denied);\n break;\n }\n }\n\n observer.complete();\n });\n } else {\n observer.next(GeolocationState.unknown);\n observer.complete();\n }\n } else {\n observer.next(GeolocationState.unknown);\n observer.complete();\n }\n });\n }\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { ClassModel } from '../../core/models/class.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Icon Component | Buttons and Indicators\n */\n@Component({\n selector: 'nas-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IconComponent extends NasComponentBase {\n /**\n * @description\n * String specifies the icon name, default to 'arrow-right'\n *\n * @example\n * ```html\n * <nas-icon type=\"home\" ></nas-icon>\n * ```\n */\n @Input() icon: string;\n /**\n * @description\n * String specifies the icon type, default to 'small'\n *\n * @example\n * ```html\n * <nas-icon type=\"baggage\" type=\"large\"></nas-icon>\n * ```\n */\n @Input() type: string;\n /**\n * @description\n * Boolean which specifies if the icon is used as a indicator.\n */\n @Input() isIndicator?: boolean;\n\n /**\n * @description\n * NOTE! this only works for small icons properly.\n * Boolean which if true enable white circular background for icon.\n */\n @Input() lightCircularBackground?: boolean;\n\n /**\n * @description\n * String to set type. Button will sett additional custom styling.\n *\n * @example\n *\n * ```html\n * <nas-icon [cssClass]=\"'my-custom-class'\"></nas-icon>\n * ```\n *\n */\n @Input() cssClass: ClassModel;\n\n constructor() {\n super();\n }\n\n getClasses(): Array<ClassModel> {\n const type = this.type || 'small';\n const icon = this.icon || 'arrow-right';\n\n this.cssClassBlock = `nas-icon-${type}`;\n\n const classes = [this.getClass('', [icon, this.lightCircularBackground && 'light-background'])];\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n}\n","<span [nasClass]=\"getClasses()\" [style.marginLeft.px]=\"isIndicator ? 9 : 0\"></span>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation, EventEmitter, Output, OnInit } from '@angular/core';\nimport { NasComponentBase, ClassModel } from '../../core';\n\n/**\n * @description\n * Norwegian Accordion Component | Layout\n */\n@Component({\n selector: 'nas-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AccordionComponent extends NasComponentBase implements OnInit {\n\n /**\n * @description\n * Boolean to set if accordion should be expanded or not. Default value is false.\n */\n @Input() expanded: boolean;\n\n /**\n * @description\n * A string input value to set title text of component.\n * @example\n * ```html\n * <nas-accordion [title]=\"'This is a title'\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() title: string;\n\n /**\n * @description\n * A string input value to set subheader text of component.\n * @example\n * ```html\n * <nas-accordion [subheader]=\"'This is a subheader'\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() subheader: string;\n\n /**\n * @description\n * A string input value to set icon text of component. Specifies the icon name, defaults to 'small'.\n * @example\n * ```html\n * <nas-accordion [icon]=\"'small'\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() icon: string;\n\n /**\n * @description\n * A boolean input value to set simple styling.\n * @example\n * ```html\n * <nas-accordion simple>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [simple]=\"isSimpleProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() simple?: boolean;\n\n /**\n * @description\n * A boolean input value to set spaced styling.\n * @example\n * ```html\n * <nas-accordion spaced>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [spaced]=\"isSpacedProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() spaced?: boolean;\n\n /**\n * @description\n * A boolean input value to set small styling.\n * @example\n * ```html\n * <nas-accordion small>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [small]=\"isSmallProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() small?: boolean;\n\n /**\n * @description\n * A boolean input value to set inverted styling.\n * @example\n * ```html\n * <nas-accordion inverted>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [inverted]=\"isInvertedProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() inverted?: boolean;\n\n /**\n * @description\n * A boolean input value to set a container on the toggle.\n * @example\n * ```html\n * <nas-accordion containerOnToggle>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [containerOnToggle]=\"isContainerOnToggleProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() containerOnToggle?: boolean;\n\n /**\n * @description\n * A boolean input value to remove padding on accodion.\n * @example\n * ```html\n * <nas-accordion nopadding>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [nopadding]=\"includePaddingProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() nopadding?: boolean;\n\n /**\n * @description\n * A boolean input value to set transparent background color.\n * @example\n * ```html\n * <nas-accordion transparent>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [transparent]=\"isTransparentProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() transparent?: boolean;\n\n /**\n * @description\n * A boolean input value to set the accordion to approve style.\n * @example\n * ```html\n * <nas-accordion approve>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [approve]=\"isApproveProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() approve?: boolean;\n\n /**\n * @description\n * A boolean input value to set the accordion to primary style.\n * @example\n * ```html\n * <nas-accordion primary>You can put any kind of elements and content here...</nas-accordion>\n * ```\n * or\n * ```html\n * <nas-accordion [primary]=\"isPrimaryProperty\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() primary?: boolean;\n\n /**\n * A boolean input value to set the accordion to info style.\n * @example\n * ```html\n * <nas-accordion info>You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() info?: boolean;\n\n /**\n * A boolean input value to set the accordion to subheader positive style.\n * @example\n * ```html\n * <nas-accordion subheader=\"This is subheader\" subheaderPositive>You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() subheaderPositive?: boolean;\n\n /**\n * A boolean input value to set the accordion to subheader negative style.\n * @example\n * ```html\n * <nas-accordion subheader=\"This is subheader\" subheaderNegative>You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Input() subheaderNegative?: boolean;\n\n /**\n * @description\n * Adds custom CSS class to the accordion. Accordion will sett additional custom styling.\n *\n * @example\n *\n * ```html\n * <nas-accordion [cssClass]=\"'my-custom-class'\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n *\n */\n @Input() cssClass?: ClassModel;\n\n /**\n * @description\n * Property to set custom styling on accordion.\n *\n * @example\n *\n * ```html\n * <nas-accordion [cssStyle]=\"{'width': '300px', 'height': '40px'}}\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n *\n */\n @Input() cssStyle: any = {};\n\n /**\n * @description\n * A boolean event that is fired on toggle.\n * @example\n * ```html\n * <nas-accordion (toggleChange)=\"onToggleChange($event)\">You can put any kind of elements and content here...</nas-accordion>\n * ```\n */\n @Output() toggleChange = new EventEmitter<boolean>();\n\n private animateIn = false;\n private animateOut = false;\n public regularHeader = true;\n\n /**\n * @description\n * Represent a accordion component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-accordion');\n }\n\n ngOnInit(): void {\n this.setHeaderType();\n }\n\n getClasses(element?: string, modifiers?: any): Array<ClassModel> {\n const classes = new Array<ClassModel>();\n\n classes.push(this.getClass(element, modifiers));\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n\n getModifiers(): Array<string> {\n return [\n (this.exists(this.expanded) && !this.animateOut) && 'expanded',\n this.exists(this.simple) && 'simple',\n this.exists(this.spaced) && 'spaced',\n this.exists(this.small) && 'small',\n this.exists(this.inverted) && 'inverted',\n this.exists(this.nopadding) && 'nopadding',\n this.exists(this.approve) && 'approve',\n this.exists(this.primary) && 'primary',\n this.exists(this.info) && 'info',\n this.exists(this.subheaderPositive) && 'subheader--positive',\n this.exists(this.subheaderNegative) && 'subheader--negative'\n ];\n }\n\n wrapperClass(): ClassModel {\n const wrapperClass = this.getClass('wrapper', [\n this.exists(this.animateIn) && 'enter',\n this.exists(this.animateOut) && 'leave'\n ]);\n\n return wrapperClass;\n }\n\n toggle() {\n if (this.exists(this.expanded)) {\n this.animateOut = true;\n this.expanded = false;\n this.toggleChange.emit(false);\n\n setTimeout(() => {\n this.animateOut = false;\n this.expanded = false;\n }, 600);\n } else {\n this.expanded = true;\n this.toggleChange.emit(true);\n this.animateIn = true;\n\n setTimeout(() => {\n this.animateIn = false;\n }, 600);\n }\n }\n\n setHeaderType() {\n this.regularHeader = !this.exists(this.small) && !this.exists(this.simple) ? true : false;\n }\n\n}\n","<section [nasClass]=\"getClasses('', getModifiers())\" [ngStyle]=\"cssStyle\" ref=\"element\">\n <div *ngIf=\"exists(containerOnToggle); else toggleTemplate\" class=\"container\">\n <ng-container *ngTemplateOutlet=\"toggleTemplate\"></ng-container>\n </div>\n\n <div [nasClass]=\"wrapperClass()\">\n <div [hidden]=\"!exists(expanded)\" [nasClass]=\"getClass('content')\" [style.background-color]=\"exists(transparent) && 'inherit'\"\n [style.padding]=\"exists(transparent) && 'unset'\">\n <ng-content></ng-content>\n </div>\n </div>\n</section>\n\n<ng-template #toggleTemplate>\n <button type=\"button\" [nasClass]=\"getClass('toggle')\" (click)=\"toggle()\">\n <span [nasClass]=\"getClass('icon')\" *ngIf=\"icon\">\n <nas-icon [icon]=\"icon\"></nas-icon>\n </span>\n <div>\n <h4 *ngIf=\"regularHeader\" [nasClass]=\"getClass('title')\">{{title}}</h4>\n <h5 *ngIf=\"!regularHeader\" [nasClass]=\"getClass('title')\">{{title}}</h5>\n <div *ngIf=\"subheader\" \n [nasClass]=\"getClass('subheader', exists(subheaderPositive) ? 'positive' : exists(subheaderNegative) ? 'negative' :'')\">\n <nas-icon *ngIf=\"exists(subheaderPositive) || exists(subheaderNegative)\"\n [type]=\"exists(subheaderPositive) ? 'positive--light' : exists(subheaderNegative) ? 'negative--light' : ''\"></nas-icon>\n <span [nasClass]=\"getClass('subheader--text')\">{{subheader}}</span>\n </div>\n </div>\n <nas-icon type=\"chevron-down\" [nasClass]=\"getClass('indicator')\"></nas-icon>\n </button>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { IconComponent } from './icon.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule\n ],\n declarations: [IconComponent],\n exports: [IconComponent]\n})\nexport class IconModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AccordionComponent } from './accordion.component';\nimport { IconModule } from '../icon/icon.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [AccordionComponent],\n imports: [CommonModule, IconModule, NasClassModule],\n exports: [AccordionComponent],\n})\nexport class AccordionModule {\n}\n","import { Injectable } from '@angular/core';\nimport { AirportModel } from '../models/airport.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AirportSelectService {\n\n constructor() { }\n\n filter(airports: AirportModel[], name: string): AirportModel[] {\n if (!name || !airports) {\n return airports;\n }\n\n const inputValue = name.trim().toLowerCase();\n\n const filters = [\n (airport: AirportModel) => airport.name?.toLowerCase().startsWith(inputValue),\n (airport: AirportModel) => airport.airportName?.toLowerCase().startsWith(inputValue),\n (airport: AirportModel) => airport.displayName?.toLowerCase().startsWith(inputValue),\n (airport: AirportModel) => airport.normalizedAirportName?.toLowerCase().startsWith(inputValue),\n (airport: AirportModel) => airport.code?.toLowerCase() === inputValue,\n (airport: AirportModel) => airport.countryName?.toLowerCase().startsWith(inputValue),\n ];\n\n const results = [];\n\n for (const filter of filters) {\n const matched = airports.filter(filter);\n results.push(...matched);\n airports = airports.filter(airport => !matched.includes(airport));\n }\n\n if (results.length === 0) {\n return airports;\n }\n\n return results;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AirportModel } from '../models/airport.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AirportSelectDropdownService {\n\n constructor() { }\n\n hasLatestSearches(displayLatestSearches: boolean, latestSearches: Array<AirportModel>): boolean {\n if (!displayLatestSearches || !latestSearches) {\n return false;\n }\n const hasLatestSearches = latestSearches.length > 0;\n return hasLatestSearches;\n }\n\n hasClosestAirports(displayClosestAirports: boolean, closestAirports: Array<AirportModel>): boolean {\n if (!displayClosestAirports || !closestAirports) {\n return false;\n }\n const hasClosestAirports = closestAirports.length > 0;\n return hasClosestAirports;\n }\n\n isIndexInClosestAirports(focusedClosestAirportIndex: number, closestAirports: Array<AirportModel>): boolean {\n if (!closestAirports || closestAirports.length === 0) {\n return false;\n }\n\n const isIndexInClosestAirports = focusedClosestAirportIndex < closestAirports.length - 1;\n return isIndexInClosestAirports;\n }\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Button Component | Buttons and Indicators\n */\n@Component({\n selector: 'nas-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ButtonComponent extends NasComponentBase {\n @ViewChild('button') button: ElementRef<HTMLButtonElement>;\n\n /**\n * @description\n * Boolean to set primary style of button (red).\n *\n * @example\n * <nas-button primary>Click on me!</nas-button>\n */\n @Input() primary?: boolean;\n\n /**\n * @description\n * Boolean to set secondary style of button (blue).\n * Primary is default style.\n *\n * @example\n * <nas-button secondary>Click on me!</nas-button>\n */\n @Input() secondary?: boolean;\n\n /**\n * @description\n * Boolean to set link style of button. Button will look like a link, with underlined text.\n *\n * @example\n * <nas-button link>Click on me!</nas-button>\n */\n @Input() link?: boolean;\n\n /**\n * @description\n * Boolean to set approved style of button (green).\n *\n * @example\n * <nas-button approve>Approve!</nas-button>\n */\n @Input() approve?: boolean;\n\n /**\n * @description\n * Boolean to set light style of button (grey).\n *\n * @example\n * <nas-button light>Click on me!</nas-button>\n */\n @Input() light?: boolean;\n\n /**\n * @description\n * Boolean to set large style of button. Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button large>Click on me!</nas-button>\n */\n @Input() large?: boolean;\n\n /**\n * @description\n * Boolean to set block style of button. Will have block behaviour.\n * Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button block>Click on me!</nas-button>\n */\n @Input() block?: boolean;\n\n /**\n * @description\n * Boolean to set flex style of button. Will have flex box behaviour.\n * Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button flex>Click on me!</nas-button>\n */\n @Input() flex?: boolean;\n\n /**\n * @description\n * Boolean to set compact style of button. Will be smaller, without \"the line\".\n * Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button compact>Click on me!</nas-button>\n */\n @Input() compact?: boolean;\n\n /**\n * @description\n * Boolean to set right style of button. Will be aligned at right.\n * Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button right>Click on me!</nas-button>\n */\n @Input() right?: boolean;\n\n /**\n * @description\n * Boolean to set spaceless style of button. Will remove space around button.\n * Can be compined with primary, secondary, approved and light.\n *\n * @example\n * <nas-button spaceless>Click on me!</nas-button>\n */\n @Input() spaceless?: boolean;\n\n /**\n * @description\n * Boolean to set transparent style of button. Will be transparent.\n *\n * @example\n * <nas-button transparent>Click on me!</nas-button>\n */\n @Input() transparent?: boolean;\n\n /**\n * @description\n * String to support href.\n * Can be combined with all other properties.\n *\n * @example\n * <nas-button [href]=\"http://www.norwegian.com\">Click on me!</nas-button>\n */\n @Input() href?: string;\n\n /**\n * @description\n * String to be tracked by e.x. GTM og GA.\n * Can be combined with all other properties.\n *\n * @example\n * <nas-button [trackingValue]=\"trackingValue\">Click on me!</nas-button>\n */\n @Input() trackingvalue?: string;\n\n /**\n * @description\n * Boolean to override disabled. Button will be clickable even though disabled is set.\n *\n * @example\n * <nas-button canContinueOnDisabled>Click on me!</nas-button>\n */\n @Input() canContinueOnDisabled?: boolean;\n\n /**\n * @description\n * Boolean to set disabled. Button will get disabled styling.\n *\n * @example\n * <nas-button disabled>Click on me!</nas-button>\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * String to set button type. Default value is \"button\".\n *\n * @example\n * <nas-button [type]=\"'submit'\">Click on me!</nas-button>\n */\n @Input() type = 'button';\n\n /**\n * @description\n * Adds custom CSS class to the button. Button will sett additional custom styling.\n *\n * @example\n * <nas-button [cssClass]=\"'my-custom-class'\">Click on me!</nas-button>\n */\n @Input() cssClass?: ClassModel;\n\n /**\n * @description\n * String to set aria label on button.\n *\n * @example\n * <nas-button [ariaLabel]=\"'this is my aria label'\">Click on me!</nas-button>\n */\n @Input() ariaLabel?: string;\n\n /**\n * @description\n * Property to set custom styling on button.\n *\n * @example\n * <nas-button [cssStyle]=\"{'width': '300px', 'height': '40px'}\">Click on me!</nas-button>\n */\n @Input() cssStyle: any = {};\n\n /**\n * @description\n * Number to set custom tab index on button.\n *\n * @example\n * <nas-button [tabIndex]=\"10\">Click on me!</nas-button>\n */\n @Input() tabindex: number;\n\n /**\n * @description\n * Boolean to override base css class.\n *\n * @example\n * <nas-button [overrideBaseCssClass]=\"true\">Click on me!</nas-button>\n */\n @Input() overrideBaseCssClass?: boolean;\n\n /**\n * @description\n * Use router link instead of href on links\n */\n @Input() useRouterLink?: boolean;\n\n /**\n * @description\n * The ID of the native button element\n */\n @Input() id: string;\n\n /**\n * @description\n * The target attribute specifies where to open the link.\n * @example\n * <nas-button link href=\"https://www.norwegian.com\" target=\"_blank\">Click on me!</nas-button>\n */\n @Input() target = '_self';\n\n /**\n * @description\n * Change event when clicking on button.\n *\n * @example\n * <nas-button (clickChange)=\"myFunction()\">Click on me!</nas-button>\n */\n @Output() clickChange = new EventEmitter<Event>();\n\n get buttonStyle(): any {\n if (this.canContinueOnDisabled && this.disabled) {\n this.cssStyle['pointer-events'] = 'inherit';\n return this.cssStyle;\n }\n\n return this.cssStyle;\n }\n\n get buttonId(): string {\n return this.id ? this.id : `nas-button-${this.componentId}`;\n }\n\n get modifiers(): Array<string> {\n return [\n this.exists(this.primary) && 'primary',\n this.exists(this.secondary) && 'secondary',\n this.exists(this.approve) && 'approve',\n this.exists(this.large) && 'large',\n this.exists(this.block) && 'block',\n this.exists(this.flex) && 'flex',\n this.exists(this.compact) && 'compact',\n this.exists(this.right) && 'right',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.transparent) && 'transparent',\n this.exists(this.link) && 'link',\n this.exists(this.light) && 'light'\n ];\n }\n\n private trackingEventSource = new Subject<string>();\n trackingEvent$ = this.trackingEventSource.asObservable();\n private componentId: number;\n\n /**\n * @description\n * Represent a button component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-button');\n this.componentId = nextId++;\n }\n\n getClasses(element?: string, modifiers?: any): Array<ClassModel> {\n const classes = new Array<ClassModel>();\n\n if (this.exists(this.overrideBaseCssClass) && this.cssClass) {\n classes.push(this.cssClass);\n return classes;\n }\n\n classes.push(this.getClass(element, modifiers));\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n\n emitTrackingEvent(): void {\n this.trackingEventSource.next(this.trackingvalue);\n }\n\n emitTrackingAndClickEvent(event: Event): void {\n this.trackingEventSource.next(this.trackingvalue);\n this.clickChange.emit(event);\n }\n}\n","<button #button\n *ngIf=\"!href\"\n [nasClass]=\"getClasses('', modifiers)\"\n [ngStyle]=\"buttonStyle\"\n [disabled]=\"!canContinueOnDisabled && disabled\"\n [class.disabled]=\"disabled\"\n [attr.type]=\"type\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"tabindex\"\n [id]=\"buttonId\"\n (click)=\"emitTrackingAndClickEvent($event)\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</button>\n<ng-container *ngIf=\"href\">\n <ng-container *ngIf=\"exists(useRouterLink); else linksHref\">\n <a [nasClass]=\"getClasses('', modifiers)\"\n [attr.disabled]=\"disabled\"\n [routerLink]=\"href\"\n [id]=\"buttonId\"\n (click)=\"emitTrackingEvent();\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #linksHref>\n <a [nasClass]=\"getClasses('', modifiers)\"\n [attr.disabled]=\"disabled\"\n [href]=\"href\"\n [target]=\"target\"\n [id]=\"buttonId\"\n (click)=\"emitTrackingEvent();\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { DOCUMENT } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../../core/base/nas-component.base';\nimport { GeolocationService } from '../../../core/services/geolocation/geolocation.service';\nimport { AirportModel } from '../models/airport.model';\nimport { ResultsLabelsModel } from '../models/results-labels.model';\nimport { AirportSelectDropdownService } from '../services/airport-select-dropdown.service';\nimport { AirportSelectService } from '../services/airport-select.service';\nimport { GeolocationState } from '../../../core/services/geolocation/geolocation-state.enum';\n\nlet nextId = 0;\n\n@Component({\n selector: 'nas-airport-select-dropdown',\n templateUrl: './airport-select-dropdown.component.html',\n styleUrls: ['./airport-select-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AirportSelectDropdownComponent extends NasComponentBase implements OnInit {\n\n airportValue: AirportModel;\n airportsValue: Array<AirportModel>;\n focusedAirportIndex = -1;\n focusedLatestSearchesIndex = -1;\n focusedClosestAirportIndex = -1;\n focusedClosestAirportCode: string;\n focusedAirportCode: string;\n focusedLatestSearchesAirportCode: string;\n filteredAirports: Array<AirportModel> = this.airports;\n displayAllAirportsLabel = true;\n selectedLabel: string;\n openValue: boolean;\n focusOnGeolocation: boolean;\n geolocationState: GeolocationState = null;\n\n @ViewChild('airportSelect') input: ElementRef;\n @ViewChild('results') results: ElementRef;\n\n @Input() displayLatestSearches?: boolean;\n @Input() displayClosestAirports?: boolean;\n @Input() latestSearches: Array<AirportModel>;\n @Input() resultsLabels: ResultsLabelsModel;\n @Input() airportSelectLabel: string;\n @Input() airportSelectPlaceholder: string;\n @Input() airportSelectIconModifier: string;\n @Input() keepSelection: boolean;\n @Input() nasFormControlName: string;\n @Input() nasFormGroup: UntypedFormGroup;\n @Input() enableGeolocation?: boolean;\n @Input() ariaLabelClear: string;\n @Input() ariaLabelBackdrop: string;\n @Input() isValid = true;\n @Input() invalidText: string;\n\n @Input()\n get closestAirports() {\n return this.closestAirportsValue;\n }\n set closestAirports(airports: Array<AirportModel>) {\n if (!airports || !airports.length) {\n return;\n }\n\n this.closestAirportsValue = airports;\n this.geolocationState = GeolocationState.granted;\n }\n\n @Input()\n get airport() {\n return this.airportValue;\n }\n set airport(airport: AirportModel) {\n if (!airport) {\n return;\n }\n\n this.airportValue = airport;\n this.selectedModel = airport.name;\n this.filteredAirports = this.selectService.filter(this.airports, this.selectedModel);\n }\n\n @Input()\n get open() {\n return this.openValue;\n }\n set open(value: boolean) {\n if (this.openValue === value) {\n return;\n }\n\n clearTimeout(this.inputSelectionTimeout);\n this.openValue = value;\n\n if (value) {\n this.inputSelectionTimeout = setTimeout(() => {\n this.input.nativeElement.select();\n }, 100);\n }\n }\n\n @Input()\n get airports() {\n return this.airportsValue;\n }\n set airports(airports: Array<AirportModel>) {\n this.airportsValue = airports;\n this.filteredAirports = this.selectService.filter(this.airports, this.selectedModel);\n }\n\n @Output() selected = new EventEmitter<AirportModel>();\n @Output() openChange = new EventEmitter<boolean>();\n @Output() focusOnNext = new EventEmitter<KeyboardEvent>();\n @Output() focusOnPrevious = new EventEmitter();\n @Output() positionChange = new EventEmitter<GeolocationPosition>();\n\n get selectedModel() {\n return this.selectedModelValue;\n }\n set selectedModel(model: string) {\n this.selectedModelValue = model;\n\n if (!this.nasFormGroup || !this.nasFormControlName) {\n return;\n }\n\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (control && control.value !== model) {\n control.patchValue(model);\n }\n }\n\n get resultsId(): string {\n return `nas-airport-select-dropdown-results-${this.componentId}`;\n }\n\n get labelId(): string {\n return `nas-airport-select-dropdown-label-${this.componentId}`;\n }\n\n get inputId(): string {\n return `nas-airport-select-dropdown-input-${this.componentId}`;\n }\n\n get geolocationIcon(): string {\n if (this.focusOnGeolocation && this.geolocationState !== GeolocationState.denied) {\n return 'geolocation--light';\n }\n if (this.geolocationState === GeolocationState.denied) {\n return 'geolocation--disabled';\n }\n\n return 'geolocation';\n }\n\n private lastSelectedModel: string;\n private selectedModelValue: string;\n private inputSelectionTimeout: any;\n private closestAirportsValue: Array<AirportModel>;\n private componentId: number;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private selectService: AirportSelectService,\n private airportSelectDropdownService: AirportSelectDropdownService,\n private geolocationService: GeolocationService) {\n super('nas-airport-select');\n this.componentId = nextId++;\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelClear) {\n this.warnMissingAccessibiltyInput('ariaLabelClear');\n }\n if (!this.ariaLabelBackdrop) {\n this.warnMissingAccessibiltyInput('ariaLabelBackdrop');\n }\n\n this.selectedModel = this.airport ? this.airport.name : '';\n\n if (this.exists(this.displayClosestAirports)) {\n this.geolocationService.getState().subscribe((state: GeolocationState) => {\n this.geolocationState = state;\n\n if (state === GeolocationState.granted) {\n this.updateCurrentPosition();\n }\n });\n }\n\n if (!this.selectedModel) {\n this.filteredAirports = this.selectService.filter(this.airports, this.selectedModel);\n return;\n }\n\n this.displayLatestSearches = false;\n this.displayClosestAirports = false;\n this.displayAllAirportsLabel = false;\n\n if (!this.filteredAirports) {\n return;\n }\n\n const airport = this.filteredAirports.find(x => x.name === this.selectedModel);\n\n if (airport) {\n this.focusedAirportCode = airport.code;\n }\n }\n\n getAllAirportsAirportId(airportCode: string): string {\n return `nas-airport-select-dropdown-airport-${this.componentId}-all-airports-${airportCode}`;\n }\n\n getClosestAirportsAirportId(airportCode: string): string {\n return `nas-airport-select-dropdown-airport-${this.componentId}-closest-airports-${airportCode}`;\n }\n\n getLatestSearchesAirportId(airportCode: string): string {\n return `nas-airport-select-dropdown-airport-${this.componentId}-latest-searches-${airportCode}`;\n }\n\n updateCurrentPosition(): void {\n if (this.geolocationState === GeolocationState.denied\n || this.geolocationState === GeolocationState.unknown) {\n return;\n }\n\n this.geolocationService.getCurrentPosition().subscribe((x: GeolocationPosition) => {\n this.positionChange.emit(x);\n }, (error: GeolocationPositionError) => {\n if (error.PERMISSION_DENIED) {\n this.geolocationState = GeolocationState.denied;\n }\n });\n }\n\n setOpen(): void {\n if (this.open) {\n return;\n }\n\n this.open = true;\n this.openChange.emit(true);\n }\n\n onGeolocationHover(hover: boolean): void {\n if (hover && this.geolocationState !== GeolocationState.denied) {\n this.focusOnGeolocation = true;\n } else {\n this.focusOnGeolocation = false;\n }\n }\n\n blur(): void {\n if (this.keepSelection) {\n this.selectedModel = this.lastSelectedModel;\n }\n\n this.open = false;\n this.openChange.emit(false);\n\n if (this.selectedModel === this.lastSelectedModel) {\n return;\n }\n\n if (this.selectedModel) {\n if (this.filteredAirports) {\n let airport = this.filteredAirports.find(x => x.name === this.selectedModel);\n if (!airport) {\n airport = this.filteredAirports[0];\n }\n this.updateSelected(airport);\n }\n } else {\n this.updateSelected({\n airportName: '',\n code: '',\n countryName: '',\n displayName: '',\n name: '',\n normalizedAirportName: ''\n });\n }\n }\n\n filter(): void {\n let isEmpty = false;\n\n if (!this.nasFormGroup || !this.nasFormControlName) {\n if (!this.selectedModel) {\n this.resetFilter();\n isEmpty = true;\n } else {\n this.focusedAirportIndex = 0;\n this.filteredAirports = this.selectService.filter(this.airports, this.selectedModel);\n this.focusedAirportCode = this.filteredAirports[0].code;\n }\n } else {\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (!control || !control.value) {\n this.resetFilter();\n isEmpty = true;\n } else {\n this.focusedAirportIndex = 0;\n this.filteredAirports = this.selectService.filter(this.airports, control.value);\n this.focusedAirportCode = this.filteredAirports[0].code;\n }\n }\n\n this.displayLatestSearches = isEmpty;\n this.displayClosestAirports = isEmpty;\n this.displayAllAirportsLabel = isEmpty;\n }\n\n clearSelected(event: Event): void {\n event.preventDefault();\n\n if (this.keepSelection) {\n this.lastSelectedModel = this.airport.name;\n }\n\n this.selectedModel = '';\n\n this.updateSelected({\n name: '',\n countryName: '',\n code: '',\n displayName: '',\n airportName: '',\n normalizedAirportName: ''\n });\n\n this.focusedAirportIndex = -1;\n this.focusedLatestSearchesIndex = -1;\n this.focusedClosestAirportIndex = -1;\n this.focusedAirportCode = '';\n this.focusedLatestSearchesAirportCode = '';\n this.focusedClosestAirportCode = '';\n this.filteredAirports = this.airports;\n\n this.open = true;\n this.displayLatestSearches = true;\n this.displayClosestAirports = true;\n this.displayAllAirportsLabel = true;\n }\n\n focusDown(): void {\n const hasLatestSearches = this.airportSelectDropdownService\n .hasLatestSearches(this.exists(this.displayLatestSearches), this.latestSearches);\n\n const hasClosestAirports = this.airportSelectDropdownService\n .hasClosestAirports(this.exists(this.displayClosestAirports), this.closestAirports);\n\n if (this.geolocationState !== null &&\n this.geolocationState !== GeolocationState.granted &&\n this.geolocationState !== GeolocationState.denied &&\n !this.focusOnGeolocation &&\n this.focusedAirportIndex === -1 &&\n this.focusedLatestSearchesIndex === -1) {\n this.focusOnGeolocation = true;\n } else if (hasLatestSearches && this.focusedLatestSearchesIndex < this.latestSearches.length - 1) {\n this.focusDownLatestSearches();\n } else if (hasClosestAirports\n && this.airportSelectDropdownService.isIndexInClosestAirports(this.focusedClosestAirportIndex, this.closestAirports)) {\n this.focusDownClosestAirports();\n } else {\n this.focusDownAirports(hasClosestAirports, hasLatestSearches);\n }\n\n this.autoScroll(66);\n }\n\n focusUp(): void {\n const hasLatestSearches = this.airportSelectDropdownService\n .hasLatestSearches(this.exists(this.displayLatestSearches), this.latestSearches);\n\n const hasClosestAirports = this.airportSelectDropdownService\n .hasClosestAirports(this.exists(this.displayClosestAirports), this.closestAirports);\n\n const hasGeolocation = this.geolocationState !== null &&\n this.geolocationState !== GeolocationState.granted &&\n this.geolocationState !== GeolocationState.denied &&\n !this.focusOnGeolocation;\n\n if (this.focusedAirportIndex > 0) {\n this.focusUpAirports(hasClosestAirports, hasLatestSearches);\n } else if (hasClosestAirports && this.focusedAirportIndex <= 0 && this.focusedClosestAirportIndex > 0) {\n this.focusUpClosestAirports(hasLatestSearches);\n } else if (hasLatestSearches && hasClosestAirports && this.focusedClosestAirportIndex <= 0\n || hasLatestSearches && !hasClosestAirports && this.focusedAirportIndex <= 0) {\n this.focusUpLatestSearches();\n } else if (hasGeolocation && hasLatestSearches && this.focusedLatestSearchesIndex <= 0\n || hasGeolocation && !hasLatestSearches && this.focusedAirportIndex <= 0) {\n this.focusOnGeolocation = true;\n this.focusedAirportCode = '';\n this.focusedLatestSearchesAirportCode = '';\n this.focusedLatestSearchesIndex = -1;\n this.focusedAirportIndex = -1;\n } else {\n this.blur();\n }\n\n this.autoScroll(66);\n }\n\n setSelected(airport: AirportModel): void {\n this.updateSelected(airport);\n this.open = false;\n this.openChange.emit(false);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n this.open = false;\n if (this.keepSelection && !this.airport.name) {\n this.blur();\n }\n break;\n case 'Tab':\n case 'Enter':\n if (this.filteredAirports) {\n const airport = this.filteredAirports.find(x => x.code === this.focusedAirportCode) || this.filteredAirports[0];\n this.selectedModel = airport.name || '';\n }\n\n if (this.focusOnGeolocation) {\n event.preventDefault();\n this.updateCurrentPosition();\n return;\n } else {\n this.blur();\n if (!event.shiftKey) {\n event.preventDefault();\n this.focusOnNext.emit(event);\n } else {\n this.focusOnPrevious.emit();\n }\n }\n if (!event.shiftKey) {\n event.preventDefault();\n setTimeout(() => {\n this.focusOnNext.emit(event);\n });\n } else {\n this.open = false;\n }\n break;\n case 'ArrowDown':\n case 'Down':\n this.focusDown();\n break;\n case 'ArrowUp':\n case 'Up':\n this.focusUp();\n break;\n case 'Backspace':\n case 'Delete':\n if (this.keepSelection) {\n this.lastSelectedModel = this.airport.name;\n }\n break;\n default:\n break;\n }\n }\n\n private resetFilter(): void {\n this.focusedAirportIndex = -1;\n this.focusedLatestSearchesIndex = -1;\n this.focusedClosestAirportIndex = -1;\n this.focusedAirportCode = '';\n this.focusedLatestSearchesAirportCode = '';\n this.focusedClosestAirportCode = '';\n this.filteredAirports = this.airports;\n }\n\n private updateSelected(airport: AirportModel): void {\n this.selectedModel = airport.name;\n if (this.keepSelection && airport.name.length) {\n this.lastSelectedModel = airport.name;\n }\n this.selected.emit(airport);\n }\n\n private focusDownLatestSearches(): void {\n this.focusOnGeolocation = false;\n\n let index = this.focusedLatestSearchesIndex;\n\n index = index + 1;\n\n const airport = this.latestSearches[index];\n\n this.focusedLatestSearchesIndex = index;\n this.focusedLatestSearchesAirportCode = airport.code;\n this.focusedAirportCode = '';\n this.focusedClosestAirportCode = '';\n this.updateSelected(airport);\n }\n\n private focusDownClosestAirports(): void {\n let index = this.focusedClosestAirportIndex;\n\n index = index + 1;\n\n const airport = this.closestAirports[index];\n\n this.focusedClosestAirportIndex = index;\n this.focusedClosestAirportCode = airport.code || '';\n this.focusedAirportCode = '';\n this.focusedLatestSearchesAirportCode = '';\n this.updateSelected(airport);\n }\n\n private focusDownAirports(hasClosestAirports: boolean, hasLatestSearches: boolean): void {\n let index = this.focusedAirportIndex;\n this.focusOnGeolocation = false;\n\n index = index + 1;\n\n if (this.filteredAirports && index > this.filteredAirports.length - 1) {\n this.focusedClosestAirportIndex = -1;\n this.focusedLatestSearchesIndex = -1;\n this.focusedAirportIndex = -1;\n\n if (this.geolocationState !== GeolocationState.granted) {\n this.focusOnGeolocation = true;\n this.focusedAirportCode = '';\n this.focusedClosestAirportCode = '';\n this.focusedLatestSearchesAirportCode = '';\n return;\n } else if (hasLatestSearches) {\n this.focusDownLatestSearches();\n return;\n } else if (hasClosestAirports) {\n this.focusDownClosestAirports();\n return;\n }\n }\n\n this.focusedAirportIndex = index;\n\n if (this.filteredAirports) {\n const airport = this.filteredAirports[index];\n\n if (airport) {\n this.focusedAirportCode = airport.code;\n this.selectedModel = airport.name;\n }\n }\n\n this.focusedLatestSearchesAirportCode = '';\n this.focusedClosestAirportCode = '';\n }\n\n private focusUpAirports(hasClosestAirports: boolean, hasLatestSearches: boolean): void {\n let index = this.focusedAirportIndex;\n this.focusOnGeolocation = false;\n\n if (index - 1 < 0) {\n this.focusedAirportIndex = -1;\n this.focusedAirportCode = '';\n this.blur();\n\n if (!hasClosestAirports) {\n this.focusedClosestAirportCode = '';\n }\n if (!hasLatestSearches) {\n this.focusedClosestAirportCode = '';\n }\n\n return;\n }\n\n index = index - 1;\n\n this.focusedAirportIndex = index;\n this.focusedLatestSearchesAirportCode = '';\n this.focusedClosestAirportCode = '';\n\n if (this.filteredAirports) {\n const airport = this.filteredAirports[index];\n\n if (airport) {\n this.focusedAirportCode = airport.code;\n this.selectedModel = airport.name;\n }\n }\n }\n\n private autoScroll(extraOffset: number): void {\n if (!this.results) {\n return;\n }\n const results = this.results.nativeElement;\n const focusedItem = this.document.querySelector('.nas-airport-select__list-item--focus');\n\n if (focusedItem) {\n results.scrollTo(0, 0);\n results.scrollTo(0, focusedItem.offsetTop + extraOffset - results.clientHeight);\n }\n }\n\n private focusUpLatestSearches(): void {\n this.focusOnGeolocation = false;\n\n let latestSearchesIndex = this.focusedLatestSearchesIndex;\n\n if (latestSearchesIndex < 0) {\n this.focusedLatestSearchesIndex = -1;\n this.focusedLatestSearchesAirportCode = '';\n this.blur();\n return;\n }\n\n const closestAirportIndex = this.focusedClosestAirportIndex;\n const airportsIndex = this.focusedAirportIndex;\n\n if (closestAirportIndex < 0 && airportsIndex < 0) {\n latestSearchesIndex = latestSearchesIndex - 1;\n\n if (latestSearchesIndex < 0) {\n this.focusedLatestSearchesIndex = -1;\n this.focusedLatestSearchesAirportCode = '';\n this.blur();\n return;\n }\n }\n\n const airport = this.latestSearches[latestSearchesIndex];\n\n this.focusedLatestSearchesIndex = latestSearchesIndex;\n this.focusedLatestSearchesAirportCode = airport.code;\n this.focusedClosestAirportCode = '';\n this.focusedClosestAirportIndex = -1;\n this.focusedAirportCode = '';\n this.focusedAirportIndex = -1;\n this.updateSelected(airport);\n }\n\n private focusUpClosestAirports(hasLatestSearches: boolean): void {\n let closestAirportIndex = this.focusedClosestAirportIndex;\n\n if (!hasLatestSearches && closestAirportIndex <= 0) {\n this.focusedClosestAirportIndex = -1;\n this.blur();\n return;\n }\n\n if (closestAirportIndex - 1 < 0) {\n this.focusedClosestAirportIndex = -1;\n this.focusedClosestAirportCode = '';\n return;\n }\n\n if (this.focusedAirportIndex < 0) {\n closestAirportIndex = closestAirportIndex - 1;\n }\n\n const airport = this.closestAirports[closestAirportIndex];\n this.focusedClosestAirportIndex = closestAirportIndex;\n this.focusedClosestAirportCode = airport.code;\n this.focusedAirportCode = '';\n this.focusedAirportIndex = -1;\n\n this.updateSelected(airport);\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [id]=\"labelId\"\n [attr.aria-label]=\"airportSelectLabel\"\n [nasClass]=\"getClass('wrapper', open && 'active')\">\n <span [nasClass]=\"getClass('label')\">\n <ng-container *ngIf=\"airportSelectLabel; else emptyLabel\">{{airportSelectLabel}}</ng-container>\n <ng-template #emptyLabel>&nbsp;</ng-template>\n </span>\n <input #airportSelect\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"none\"\n [id]=\"inputId\"\n [attr.aria-controls]=\"resultsId\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\"\n [attr.aria-owns]=\"resultsId\"\n [nasClass]=\"getClass('input')\"\n [placeholder]=\"airportSelectPlaceholder\"\n (focus)=\"setOpen()\"\n (mousedown)=\"setOpen()\"\n (input)=\"filter()\"\n (keydown)=\"onKeyDown($event)\"\n [(ngModel)]=\"selectedModel\" />\n <span [nasClass]=\"getClass('icon')\">\n <button type=\"button\"\n role=\"button\"\n tabindex=\"-1\"\n *ngIf=\"selectedModel; else isEmpty\"\n [attr.aria-label]=\"ariaLabelClear\"\n (click)=\"clearSelected($event)\">\n <nas-icon [type]=\"'remove'\"></nas-icon>\n </button>\n <ng-template #isEmpty>\n <nas-icon [type]=\"'small'\"\n [icon]=\"airportSelectIconModifier\"></nas-icon>\n </ng-template>\n </span>\n </label>\n</ng-container>\n<ng-template #reactiveForm>\n <label [id]=\"labelId\"\n [attr.aria-label]=\"airportSelectLabel\"\n [nasClass]=\"getClass('wrapper', open && 'active')\"\n [formGroup]=\"nasFormGroup\">\n <span [nasClass]=\"getClass('label')\"\n *ngIf=\"airportSelectLabel\">{{airportSelectLabel}}</span>\n <input #airportSelect\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-autocomplete=\"none\"\n [id]=\"inputId\"\n [attr.aria-controls]=\"resultsId\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\"\n [attr.aria-owns]=\"resultsId\"\n [nasClass]=\"getClass('input')\"\n [formControlName]=\"nasFormControlName\"\n [placeholder]=\"airportSelectPlaceholder\"\n (mousedown)=\"setOpen()\"\n (focus)=\"setOpen()\"\n (input)=\"filter()\"\n (keydown)=\"onKeyDown($event)\" />\n <span [nasClass]=\"getClass('icon')\">\n <button type=\"button\"\n role=\"button\"\n tabindex=\"-1\"\n *ngIf=\"selectedModel; else isEmpty\"\n [attr.aria-label]=\"ariaLabelClear\"\n (click)=\"clearSelected($event)\">\n <nas-icon [type]=\"'remove'\"></nas-icon>\n </button>\n <ng-template #isEmpty>\n <nas-icon [type]=\"'small'\"\n [icon]=\"airportSelectIconModifier\"></nas-icon>\n </ng-template>\n </span>\n </label>\n</ng-template>\n<div [nasClass]=\"getClass('results-wrapper')\"\n [id]=\"resultsId\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\">\n <ul #results\n role=\"listbox\"\n *ngIf=\"open\"\n [attr.aria-labelledby]=\"labelId\"\n [nasClass]=\"getClass('results')\">\n <ng-container *ngIf=\"exists(enableGeolocation) && geolocationState !== null && geolocationState !== 0 && isValid\">\n <li role=\"option\">\n <nas-button link\n secondary\n [disabled]=\"geolocationState === 2\"\n [cssStyle]=\"{'height': '66px', 'text-decoration': 'underline', 'display': 'flex', 'justify-content': 'space-between'}\"\n [cssClass]=\"getClass('item', ['geolocation', focusOnGeolocation && geolocationState !== 2 && 'focus', geolocationState === 2 && 'disabled'])\"\n [tabindex]=\"-1\"\n (clickChange)=\"updateCurrentPosition()\"\n (mouseenter)=\"onGeolocationHover(true)\"\n (mouseleave)=\"onGeolocationHover(false)\">\n <span *ngIf=\"geolocationState === 1; else geolocationDenied\"\n [nasClass]=\"getClass('geolocation', 'label')\">{{resultsLabels?.geolocation}}</span>\n <ng-template #geolocationDenied>\n <span [nasClass]=\"getClass('geolocation', 'label')\">{{resultsLabels?.geolocationDenied}}</span>\n </ng-template>\n <nas-icon [nasClass]=\"getClass('geolocation', 'icon')\"\n [type]=\"geolocationIcon\"></nas-icon>\n </nas-button>\n </li>\n </ng-container>\n <li role=\"separator\"\n [nasClass]=\"getClass('list-section-label')\"\n *ngIf=\"latestSearches?.length > 0\n && exists(displayLatestSearches)\n && resultsLabels?.latestSearches\n && isValid\">\n <span>{{resultsLabels?.latestSearches}}</span>\n </li>\n <ng-container *ngIf=\"exists(displayLatestSearches) && isValid\">\n <li role=\"option\"\n *ngFor=\"let airport of latestSearches\"\n [id]=\"getLatestSearchesAirportId(airport.code)\"\n [attr.aria-selected]=\"airport.code === focusedLatestSearchesAirportCode\"\n [nasClass]=\"getClass('list-item', airport.code === focusedLatestSearchesAirportCode && 'focus')\">\n <button type=\"button\"\n [nasClass]=\"getClass('item', airport.code === focusedLatestSearchesAirportCode && 'focus')\"\n (click)=\"setSelected(airport)\"\n tabindex=\"-1\">\n <span [nasClass]=\"getClass('name')\">{{airport.name}}</span>\n <span [nasClass]=\"getClass('code')\"></span>\n <span [nasClass]=\"getClass('country')\">{{airport.countryName}}</span>\n </button>\n </li>\n </ng-container>\n <li role=\"separator\"\n *ngIf=\"exists(displayClosestAirports)\n && geolocationState !== null\n && geolocationState === 0\n && closestAirports?.length > 0\n && resultsLabels?.closestAirports\n && isValid\"\n [nasClass]=\"getClass('list-section-label')\">\n <span>{{resultsLabels?.closestAirports}}</span>\n </li>\n <ng-container *ngIf=\"exists(displayClosestAirports) && geolocationState === 0 && isValid\">\n <li role=\"option\"\n *ngFor=\"let airport of closestAirports\"\n [id]=\"getClosestAirportsAirportId(airport.code)\"\n [attr.aria-selected]=\"airport.code === focusedClosestAirportCode\"\n [nasClass]=\"getClass('list-item', airport.code === focusedClosestAirportCode && 'focus')\">\n <button type=\"button\"\n [nasClass]=\"getClass('item', airport.code === focusedClosestAirportCode && 'focus')\"\n (click)=\"setSelected(airport)\"\n tabindex=\"-1\">\n <span [nasClass]=\"getClass('name')\">{{airport.name}}</span>\n <span [nasClass]=\"getClass('code')\"></span>\n <span [nasClass]=\"getClass('country')\">{{airport.countryName}}</span>\n </button>\n </li>\n </ng-container>\n <li role=\"separator\"\n [nasClass]=\"getClass('list-section-label')\"\n *ngIf=\"displayAllAirportsLabel && resultsLabels?.allAirports && isValid\">\n <span>{{resultsLabels?.allAirports}}</span>\n </li>\n <ng-container *ngIf=\"isValid\">\n <li role=\"option\"\n *ngFor=\"let airport of filteredAirports\"\n [id]=\"getAllAirportsAirportId(airport.code)\"\n [attr.aria-selected]=\"airport.code === focusedAirportCode\"\n [nasClass]=\"getClass('list-item', airport.code === focusedAirportCode && 'focus')\">\n <button type=\"button\"\n [nasClass]=\"getClass('item', airport.code === focusedAirportCode && 'focus')\"\n (click)=\"setSelected(airport)\"\n tabindex=\"-1\">\n <span [nasClass]=\"getClass('name')\">{{airport.name}}</span>\n <span [nasClass]=\"getClass('code')\"></span>\n <span [nasClass]=\"getClass('country')\">{{airport.countryName}}</span>\n </button>\n </li>\n </ng-container>\n <li *ngIf=\"!isValid\"\n role=\"listitem\">\n <span [nasClass]=\"getClass('name', 'invalid')\">{{invalidText}}</span>\n </li>\n </ul>\n</div>\n<button type=\"button\"\n tabindex=\"0\"\n *ngIf=\"open\"\n [attr.aria-label]=\"ariaLabelBackdrop\"\n [nasClass]=\"getClass('backdrop')\"\n (click)=\"blur()\"></button>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { AirportModel } from './models/airport.model';\nimport { ClassModel } from '../../core/models/class.model';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n ViewChild,\n ElementRef,\n OnInit\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../core';\nimport { ResultsLabelsModel } from './models/results-labels.model';\nimport { AirportSelectDropdownComponent } from './airport-select-dropdown/airport-select-dropdown.component';\n\n/**\n * @description\n * Norwegian Airport Select Component | Functional\n */\n@Component({\n selector: 'nas-airport-select',\n templateUrl: './airport-select.component.html',\n styleUrls: ['./airport-select.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AirportSelectComponent extends NasComponentBase implements OnInit {\n airportsOrigin: Array<AirportModel>;\n airportsDestination = new Array<AirportModel>();\n currentLatestSearchesDestination: Array<AirportModel>;\n closestAirportsDestination: Array<AirportModel>;\n focusDestination = false;\n textSelectOriginFirst: string;\n focusedLatestSearchesAirportCodeDestination: string;\n focusedAirportCodeDestination: string;\n focusedLatestSearchesIndexDestination = -1;\n focusedAirportIndexDestination = -1;\n switchType = 'switch';\n isDestinationValid: boolean;\n\n resultsLabels: ResultsLabelsModel = {\n allAirports: '',\n closestAirports: '',\n latestSearches: '',\n geolocation: '',\n geolocationDenied: ''\n };\n\n originOpen: boolean;\n destinationOpen: boolean;\n\n @ViewChild('switchButton') switchButton: ElementRef;\n @ViewChild('airportSelectDropdownOrigin') airportSelectDropdownOrigin: ElementRef;\n @ViewChild('airportSelectDropdownDestination') airportSelectDropdownDestination: AirportSelectDropdownComponent;\n\n origin: AirportModel;\n destination: AirportModel;\n\n /**\n * @required\n * @description\n * All airports that will be populated into the dropdown lists.\n */\n @Input() airports: Array<AirportModel>;\n\n /**\n * @description\n * A record containing keys with all airport codes with corresponding array of airport codes connected to the key.\n */\n @Input() airportRelations: Record<string, Array<string>>;\n\n /**\n * @description\n * An array of origin airports that the user has allready search for.\n */\n @Input() latestSearchesOrigin: Array<AirportModel>;\n\n /**\n * @description\n * An array of destination airports that the user has allready search for.\n */\n @Input() latestSearchesDestination: Array<AirportModel>;\n\n /**\n * @description\n * An array of airports that are close to the user.\n */\n @Input() closestAirports: Array<AirportModel>;\n\n /**\n * @description\n * A list of airports that should be displayed in the origin dropdown.\n * If not included, all airports will be displayed.\n */\n @Input() allowedOriginAiports: Array<AirportModel>;\n\n /**\n * @description\n * An array of airports that are restricted for destination airports. It will default to airports if not set.\n */\n @Input() allowedDestinationAirports: Array<AirportModel>;\n\n /**\n * @description\n * A boolean indicating if airports that the user allready has searh for should be displayed.\n */\n @Input() displayLatestSearches?: boolean;\n\n /**\n * @description\n * A boolean indicating if airports that are close to the user should be displayed.\n */\n @Input() displayClosestAirports?: boolean;\n\n /**\n * @description\n * Display both orgin and destination airport selector.\n */\n @Input() combo?: boolean;\n\n /**\n * @description\n * Display switch UI to interchange origin and destination airport.\n */\n @Input() useSwitch?: boolean;\n\n /**\n * @description\n * A label that will appear on top of all airports in the drop down list.\n */\n @Input() allAirportsLabel: string;\n\n /**\n * @description\n * A label that will appear on top of the latest searches in the drop down list.\n */\n @Input() latestSearchesLabel: string;\n\n /**\n * @description\n * A label that will appear on top of the closest airports in the drop down list.\n */\n @Input() closestAirportsLabel: string;\n\n /**\n * @description\n * A label that will appear in my location in the drop down list.\n */\n @Input() geolocationLabel: string;\n\n /**\n * @description\n * A label that will appear in my location, in the drop down list if user has denied geolocation.\n */\n @Input() geolocationBlockedLabel: string;\n\n /**\n * @description\n * A label that will appear in the destination input field if the\n * user tries to select a destination airport without selecting an origin airport.\n */\n @Input() selectOriginFirstLabel: string;\n\n /**\n * @description\n * A text that appears in the destinations dropdown list when origin airport is not set.\n */\n @Input() invalidDestinationText: string;\n\n /**\n * @required\n * @description\n * A label that will appear on top of the origin airport input field.\n */\n @Input() labelOrigin = '';\n\n /**\n * @description\n * A placeholder that will appear on the origin airport input field.\n */\n @Input() placeholderOrigin = '';\n\n /**\n * @description\n * A label that will appear on top of the destination airport input field.\n */\n @Input() labelDestination = '';\n\n /**\n * @description\n * A placeholder that will appear on the destination airport input field.\n */\n @Input() placeholderDestination = '';\n\n\n /**\n * @description\n * A modifier that will allow always keeping the selected airport.\n * The last selected airport will be shown once user clears the selection and blur.\n */\n @Input() keepSelection: boolean;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameOrigin: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameDestination: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * The airport code of the origin airport. It will set the selected origin airport based on this value.\n */\n @Input()\n get originAirportCode() {\n return this.originAirportCodeValue;\n }\n set originAirportCode(code: string) {\n if (code) {\n if (code !== this.originAirportCodeValue) {\n this.originAirportCodeValue = code;\n this.setOrigin();\n }\n } else {\n this.originAirportCodeValue = '';\n this.clearOrigin();\n }\n }\n\n /**\n * @description\n * The airport code of the destination airport. It will set the selected destination airport based on this value.\n */\n @Input()\n get destinationAirportCode() {\n return this.destinationAirportCodeValue;\n }\n set destinationAirportCode(code: string) {\n if (code) {\n if (code !== this.destinationAirportCodeValue) {\n this.destinationAirportCodeValue = code;\n this.setDestination();\n }\n } else {\n this.destinationAirportCodeValue = '';\n this.clearDestination();\n }\n }\n\n /**\n * @description\n * Adds 'aria-label' on the clear button inside the airport select inputs.\n */\n @Input() ariaLabelClear: string;\n\n /**\n * @description\n * Adds 'aria-label' to the backdrops.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * An event that is fired every time the selected origin airport changes.\n */\n @Output() originChange = new EventEmitter<AirportModel>();\n\n /**\n * @description\n * An event that is fired every time the origin dropdown selector opens or closes.\n */\n @Output() originOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * An event that is fired every time the origin dropdown selector opens or closes.\n */\n @Output() destinationChange = new EventEmitter<AirportModel>();\n\n /**\n * @description\n * An event that is fired every time the destination dropdown selector opens or closes.\n */\n @Output() destinationOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * An event that is fired when the destination dropdown closes.\n */\n @Output() focusOnNext = new EventEmitter<KeyboardEvent>();\n\n /**\n * @description\n * An event that is fired when geolocation position has changed.\n */\n @Output() positionChange = new EventEmitter<GeolocationPosition>();\n\n private originAirportCodeValue: string;\n private destinationAirportCodeValue: string;\n\n constructor() {\n super('nas-airport-select');\n }\n\n ngOnInit(): void {\n if (!this.airports) {\n throw new Error('Missing input: [airports]');\n }\n\n this.resultsLabels = {\n allAirports: this.allAirportsLabel || '',\n closestAirports: this.closestAirportsLabel || '',\n latestSearches: this.latestSearchesLabel || '',\n geolocation: this.geolocationLabel || '',\n geolocationDenied: this.geolocationBlockedLabel || ''\n };\n\n this.textSelectOriginFirst = this.selectOriginFirstLabel;\n this.airportsOrigin = this.allowedOriginAiports && this.allowedOriginAiports.length > 0 ? this.allowedOriginAiports : this.airports;\n\n this.airportsDestination = this.getAirportsDestinations();\n\n if (this.nasFormGroup) {\n if (this.nasFormControlNameOrigin) {\n const originControl = this.nasFormGroup.get(this.nasFormControlNameOrigin);\n\n if (originControl) {\n const origin = this.airportsOrigin.find(x => x.name === originControl.value);\n\n if (origin) {\n this.originAirportCode = origin.code;\n }\n }\n }\n\n if (this.nasFormControlNameDestination) {\n const destinationControl = this.nasFormGroup.get(this.nasFormControlNameDestination);\n\n if (destinationControl) {\n const destination = this.airportsDestination.find(x => x.name === destinationControl.value);\n\n if (destination) {\n this.destinationAirportCode = destination.code;\n }\n }\n\n }\n }\n\n if (!this.destination) {\n this.clearDestination();\n return;\n }\n\n this.destinationChange.emit(this.destination);\n this.originChange.emit(this.origin);\n\n\n if (this.originAirportCode) {\n this.setOrigin();\n }\n\n if (this.destinationAirportCode) {\n this.setDestination();\n }\n }\n\n getAirportSelectComboClass(element?: string, modifiersInput?: any): ClassModel {\n let modifiers = modifiersInput;\n\n if (typeof modifiersInput === 'string' || modifiersInput instanceof String) {\n modifiers = [modifiersInput];\n }\n\n return {\n block: 'nas-airport-select-combo',\n element: element,\n modifiers: modifiers\n };\n }\n\n onOriginOpen(open: boolean): void {\n setTimeout(() => {\n this.originOpen = open;\n });\n\n this.destinationOpen = false;\n this.originOpenChange.emit(open);\n }\n\n onDestinationOpen(open: boolean): void {\n this.destinationOpen = open;\n this.originOpen = false;\n\n this.destinationOpenChange.emit(open);\n }\n\n setSelectedOrigin(airport: AirportModel): void {\n if (!airport) {\n return;\n }\n\n this.origin = airport;\n this.originAirportCodeValue = airport.code;\n this.isDestinationValid = airport.code ? true : false;\n\n if (this.airportRelations && this.hasValidDestinations(airport)) {\n this.updateValidAirportDestinations(airport);\n this.setCurrentLatestSearchesDestination();\n }\n\n this.originChange.emit(airport);\n }\n\n setSelectedDestination(airport: AirportModel): void {\n if (!airport) {\n return;\n }\n\n this.destination = airport;\n this.destinationAirportCodeValue = airport.code;\n this.destinationChange.emit(airport);\n }\n\n setFocusOnNext(event: KeyboardEvent): void {\n this.focusOnNext.emit(event);\n }\n\n onOriginFocus(): void {\n if (this.airportSelectDropdownOrigin) {\n this.onOriginOpen(true);\n }\n }\n\n changeSwitchIcon(): void {\n this.switchType = this.switchType === 'switch' ? 'switch--secondary' : 'switch';\n }\n\n swapAirports(): void {\n const destination = { ...this.destination };\n const origin = { ...this.origin };\n this.destination = origin;\n this.origin = destination;\n\n this.setSelectedDestination(this.destination);\n this.setSelectedOrigin(this.origin);\n }\n\n swapKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter':\n this.swapAirports();\n break;\n }\n }\n\n setDestinationOpen(event: KeyboardEvent): void {\n if (this.exists(this.combo)) {\n this.destinationOpen = true;\n this.originOpen = false;\n } else {\n this.setFocusOnNext(event);\n }\n }\n\n getClosestAirports(position: GeolocationPosition): void {\n this.positionChange.emit(position);\n }\n\n private getAirportsDestinations(): Array<AirportModel> {\n const allowedDestinationAirports = this.allowedDestinationAirports;\n\n return allowedDestinationAirports && allowedDestinationAirports.length > 0\n ? allowedDestinationAirports\n : this.airports;\n }\n\n private setOrigin(): void {\n const airport = this.airports.find(x => x.code === this.originAirportCode);\n\n if (airport) {\n this.setSelectedOrigin(airport);\n }\n }\n\n private setDestination(): void {\n const airport = this.airports.find(x => x.code === this.destinationAirportCode);\n\n if (airport) {\n this.setSelectedDestination(airport);\n }\n }\n\n private updateValidAirportDestinations(airport: AirportModel): void {\n if (!this.airportRelations) {\n this.airportsDestination = this.airportsOrigin;\n } else {\n const validDestinations = this.getAirportRelations(airport);\n\n if (!validDestinations) {\n return;\n }\n\n if (validDestinations.length === 0) {\n this.clearDestinations();\n } else {\n let isDestinationValid: boolean;\n if (this.destination && this.destination.code) {\n isDestinationValid = validDestinations.some(x => x && x.toLowerCase() === this.destination.code.toLowerCase());\n }\n if (!isDestinationValid) {\n this.clearDestination();\n this.destinationChange.emit(null);\n }\n\n if (this.airports) {\n this.airportsDestination = this.airports\n .filter(airportItem => airportItem\n && airportItem.code\n && validDestinations.some(x => x && airportItem.code.toLowerCase() === x.toLowerCase()));\n }\n }\n }\n }\n\n private hasValidDestinations(origin: AirportModel): boolean {\n if (!origin) {\n return;\n }\n\n const relations = this.getAirportRelations(origin);\n\n return relations && relations.length > 0;\n }\n\n private getAirportRelations(airport: AirportModel): Array<string> {\n if (!this.airports) {\n return new Array<string>();\n }\n\n return this.airportRelations[airport.code.toLowerCase()] || this.airportRelations[airport.code.toUpperCase()];\n }\n\n private clearOrigin() {\n this.setSelectedOrigin({\n code: '',\n countryName: '',\n name: '',\n airportName: '',\n displayName: '',\n normalizedAirportName: ''\n });\n }\n\n private clearDestination(): void {\n this.setSelectedDestination({\n code: '',\n countryName: '',\n name: '',\n airportName: '',\n displayName: '',\n normalizedAirportName: ''\n });\n }\n\n private clearDestinations(): void {\n this.airportsDestination = new Array<AirportModel>();\n\n const model = {\n name: this.textSelectOriginFirst,\n countryName: '',\n code: '',\n airportName: '',\n displayName: '',\n normalizedAirportName: ''\n };\n\n this.airportsDestination.push(model);\n this.clearDestination();\n this.destinationChange.emit(model);\n }\n\n private setCurrentLatestSearchesDestination(): void {\n if (this.airportsDestination) {\n this.currentLatestSearchesDestination = this.airportsDestination.filter(airport => {\n if (this.latestSearchesDestination) {\n return this.latestSearchesDestination.some(x => x.code && x.code.toLowerCase() === airport.code.toLowerCase());\n }\n });\n }\n }\n\n}\n","<div *ngIf=\"exists(combo); else airportSelectTemplate\"\n [nasClass]=\"getAirportSelectComboClass()\">\n <ng-container *ngTemplateOutlet=\"airportSelectTemplate\"></ng-container>\n</div>\n<ng-template #airportSelectTemplate>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-origin')\"\n *ngIf=\"airportsOrigin\">\n <nas-airport-select-dropdown #airportSelectDropdownOrigin\n displayLatestSearches\n [enableGeolocation]=\"displayClosestAirports\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [airportSelectLabel]=\"labelOrigin\"\n [latestSearches]=\"latestSearchesOrigin\"\n [closestAirports]=\"closestAirports\"\n [airport]=\"origin\"\n [airports]=\"airportsOrigin\"\n [resultsLabels]=\"resultsLabels\"\n [airportSelectPlaceholder]=\"placeholderOrigin\"\n [open]=\"originOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-departure'\"\n [nasFormControlName]=\"nasFormControlNameOrigin\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (selected)=\"setSelectedOrigin($event)\"\n (openChange)=\"onOriginOpen($event)\"\n (focusOnNext)=\"setDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select-dropdown>\n </div>\n <ng-container *ngIf=\"exists(combo)\">\n <span [nasClass]=\"getAirportSelectComboClass('separator')\"></span>\n <div [nasClass]=\"getClass('', exists(useSwitch) && 'padding-destination')\"\n *ngIf=\"airportsDestination && airportsDestination.length > 0\">\n <nas-airport-select-dropdown #airportSelectDropdownDestination\n displayLatestSearches\n [airportSelectLabel]=\"labelDestination\"\n [displayClosestAirports]=\"false\"\n [latestSearches]=\"currentLatestSearchesDestination\"\n [airports]=\"airportsDestination\"\n [resultsLabels]=\"resultsLabels\"\n [airport]=\"destination\"\n [airportSelectPlaceholder]=\"placeholderDestination\"\n [open]=\"destinationOpen\"\n [keepSelection]=\"keepSelection\"\n [airportSelectIconModifier]=\"'flight-arrival'\"\n [nasFormControlName]=\"nasFormControlNameDestination\"\n [nasFormGroup]=\"nasFormGroup\"\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [isValid]=\"isDestinationValid\"\n [invalidText]=\"invalidDestinationText\"\n (selected)=\"setSelectedDestination($event)\"\n (openChange)=\"onDestinationOpen($event)\"\n (focusOnNext)=\"setFocusOnNext($event)\"\n (focusOnPrevious)=\"onOriginFocus()\"></nas-airport-select-dropdown>\n </div>\n <div *ngIf=\"exists(useSwitch)\"\n #switchButton\n [nasClass]=\"getAirportSelectComboClass('switcher')\"\n (mouseover)=\"changeSwitchIcon()\"\n (mouseleave)=\"changeSwitchIcon()\"\n (keydown)=\"swapKeyDown($event)\"\n (click)=\"swapAirports()\">\n <nas-icon [type]=\"switchType\"></nas-icon>\n </div>\n </ng-container>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { ButtonComponent } from './button.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [ButtonComponent],\n imports: [CommonModule, NasClassModule, RouterModule],\n exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AirportSelectDropdownComponent } from './airport-select-dropdown/airport-select-dropdown.component';\nimport { AirportSelectComponent } from './airport-select.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { GeolocationService } from '../../core/services/geolocation/geolocation.service';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NasClassModule,\n IconModule,\n ReactiveFormsModule,\n ButtonModule\n ],\n declarations: [AirportSelectComponent, AirportSelectDropdownComponent],\n exports: [AirportSelectComponent],\n providers: [GeolocationService]\n})\nexport class AirportSelectModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\n/**\n * @description\n * Norwegian Box Component | Layout\n */\n@Component({\n selector: 'nas-box',\n templateUrl: './box.component.html',\n styleUrls: ['./box.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class BoxComponent extends NasComponentBase {\n /**\n * @description\n * Boolean to set outlined style; white box with blue border.\n */\n @Input() outlined: boolean;\n /**\n * @description\n * Boolean to set primary style; red box.\n */\n @Input() primary: boolean;\n /**\n * @description\n * Boolean to set secondary style; blue box.\n */\n @Input() secondary: boolean;\n /**\n * @description\n * Boolean to set light style; white box.\n */\n @Input() light: boolean;\n /**\n * @description\n * Boolean to set transparent style. Box will be invisible, but include display properties as padding, margins etc.\n */\n @Input() transparent: boolean;\n /**\n * @description\n * Boolean to give content of box center alignement.\n */\n @Input() center: boolean;\n /**\n * @description\n * Boolean to remove all padding inside the box.\n */\n @Input() nopadding: boolean;\n /**\n * @description\n * Boolean to remove all margins around the box.\n */\n @Input() nomargin: boolean;\n /**\n * @description\n * Boolean to set 100% height of box.\n */\n @Input() stretch: boolean;\n /**\n * @description\n * Boolean to set grey style.\n */\n @Input() grey: boolean;\n\n /**\n * Represent a box component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-box');\n }\n\n getModifiers(): Array<string> {\n return [\n this.exists(this.outlined) && 'outlined',\n this.exists(this.light) && 'light',\n this.exists(this.transparent) && 'transparent',\n this.exists(this.center) && 'center',\n this.exists(this.nopadding) && 'nopadding',\n this.exists(this.nomargin) && 'nomargin',\n this.exists(this.stretch) && 'stretch',\n this.exists(this.primary) && 'primary',\n this.exists(this.secondary) && 'secondary',\n this.exists(this.grey) && 'grey'\n ];\n }\n\n getClasses(element?: string, modifiers?: any): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass(element, modifiers)\n ];\n return classes;\n }\n}\n","<div [nasClass]=\"getClasses('', getModifiers())\">\n <ng-content></ng-content>\n</div>\n","import { NgModule, Input } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { BoxComponent } from './box.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [BoxComponent],\n imports: [CommonModule, NasClassModule],\n exports: [BoxComponent],\n})\nexport class BoxModule {}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ViewChild,\n ElementRef,\n OnInit,\n} from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Checkbox Component | Form Controls\n */\n@Component({\n selector: 'nas-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class CheckboxComponent extends NasComponentBase implements OnInit {\n @ViewChild('input') input: ElementRef;\n @ViewChild('inputReactive') inputReactive: ElementRef;\n\n /**\n * @description\n * Sets the Id of the native input element\n */\n @Input()\n get inputId(): string {\n if (this.inputIdValue) {\n return this.inputIdValue;\n } else {\n return `nas-checkbox-${this.componentId}`;\n }\n }\n set inputId(value: string) {\n if (!value) {\n return;\n }\n\n this.inputIdValue = value;\n }\n\n /**\n * @description\n * The value attribute is bound to ngModel of the native input element.\n */\n @Input() value = '';\n\n /**\n * @description\n * Boolean setting error styling of the checkbox. Usefull for validation.\n */\n @Input() error: boolean;\n\n /**\n * @description\n * Boolean to disable the checkbox.\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Boolean to set display as block\n */\n @Input() block: boolean;\n\n /**\n * @description\n * Boolean to set spaceless styling - remove space around component.\n */\n @Input() spaceless: boolean;\n\n /**\n * @description\n * Boolean to set inverted styling.\n */\n @Input() inverted: boolean;\n\n /**\n * @description\n * Boolean to set outlined styling\n */\n @Input() outlined: boolean;\n\n /**\n * @description\n * Used to set the 'aria-label' attribute on the underlying input element.\n */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * @description\n * The 'aria-labelledby' attribute takes precedence as the element's text alternative.\n */\n @Input('aria-describedby') ariaDescribedby: string;\n\n /**\n * @description\n * The 'aria-describedby' attribute is read after the element's label and field type.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /**\n * @description\n * String to set name on native input element\n */\n @Input() name: string;\n\n /**\n * @description\n * String to set required on native input element\n */\n @Input() required: boolean;\n\n /**\n * @description\n * String to set tabIndex on native input element\n */\n @Input() tabIndex: number;\n\n @Input()\n get checked() {\n return this.checkedValue;\n }\n set checked(value: boolean) {\n if (value !== this.checkedValue) {\n this.checkedValue = value;\n this.checkedChange.emit(this.checked);\n }\n }\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n @Output() checkedChange = new EventEmitter<boolean>();\n @Output() focusOnPrevious = new EventEmitter<KeyboardEvent>();\n\n get mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.exists(this.block) && 'block',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.inverted) && 'inverted',\n (this.exists(this.inverted) && this.error) && 'inverted-error',\n this.exists(this.outlined) && 'outlined',\n (this.exists(this.outlined) && this.error) && 'outlined-error'\n ]);\n }\n\n private checkedValue: boolean;\n private componentId: number;\n private inputIdValue: string;\n\n /**\n * @description\n * Represent a checkbox component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-checkbox');\n this.componentId = nextId++;\n }\n\n ngOnInit(): void {\n if (this.nasFormGroup && this.nasFormControlName) {\n const checkedControl = this.nasFormGroup.get(this.nasFormControlName);\n\n if (checkedControl) {\n this.checked = checkedControl.value;\n }\n }\n }\n\n inputChanged(event: Event): void {\n event.stopPropagation();\n }\n\n inputClicked(event: Event): void {\n event.stopPropagation();\n\n if (this.exists(this.disabled)) {\n return;\n }\n\n this.checked = !this.checked;\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Tab':\n if (event.shiftKey) {\n this.focusOnPrevious.emit(event);\n }\n }\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [nasClass]=\"mainClass\">\n <input type=\"checkbox\"\n #input\n [id]=\"inputId\"\n [checked]=\"exists(checked)\"\n [disabled]=\"exists(disabled)\"\n [required]=\"exists(required)\"\n [tabIndex]=\"tabIndex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaLabelledby\"\n [attr.value]=\"value\"\n (change)=\"inputChanged($event)\"\n (click)=\"inputClicked($event)\" />\n <span [nasClass]=\"getClass('indicator')\"></span>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-container>\n\n<ng-template #reactiveForm>\n <label [nasClass]=\"mainClass\"\n #inputReactive\n [formGroup]=\"nasFormGroup\">\n <input type=\"checkbox\"\n [formControlName]=\"nasFormControlName\"\n [id]=\"inputId\"\n [checked]=\"exists(checked)\"\n [required]=\"exists(required)\"\n [tabIndex]=\"tabIndex\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaLabelledby\"\n [attr.value]=\"value\"\n (keydown)=\"onKeydown($event)\" />\n <span [nasClass]=\"getClass('indicator')\"></span>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","import { CheckboxComponent } from './checkbox.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, FormsModule, NasClassModule, ReactiveFormsModule],\n exports: [CheckboxComponent],\n})\nexport class CheckboxModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NasComponentBase } from '../../core';\n\n/**\n * @description\n * Norwegian Container Component | Layout\n */\n@Component({\n selector: 'nas-container',\n templateUrl: './container.component.html',\n styleUrls: ['./container.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ContainerComponent extends NasComponentBase {\n /**\n * @description\n * Boolean which sets column styling.\n */\n @Input() columns: boolean;\n /**\n * @description\n * Boolean which sets spaceless styling.\n */\n @Input() spaceless: boolean;\n /**\n * @description\n * Boolean which sets centered styling. Will center align content.\n */\n @Input() centered: boolean;\n /**\n * @description\n * Boolean which sets full size styling.\n */\n @Input() full: boolean;\n /**\n * @description\n * Boolean which sets medium size styling.\n */\n @Input() medium: boolean;\n /**\n * @description\n * Boolean which sets tight size styling.\n */\n @Input() tight: boolean;\n\n /**\n * Represent a container component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-container');\n }\n\n getModifiers(): Array<string> {\n return [\n this.exists(this.columns) && 'columns',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.centered) && 'centered',\n this.exists(this.full) && 'full',\n this.exists(this.medium) && 'medium',\n this.exists(this.tight) && 'tight'\n ];\n }\n\n}\n","<section [nasClass]=\"getClass('', getModifiers())\">\n <ng-content></ng-content>\n</section>\n","import { NgModule, Input } from '@angular/core';\nimport { CommonModule, NgClass } from '@angular/common';\nimport { ContainerComponent } from './container.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [ContainerComponent],\n imports: [CommonModule, NasClassModule],\n exports: [ContainerComponent],\n})\nexport class ContainerModule {}\n","export function Debounce(delay: number = 300): MethodDecorator {\n return function (_target: any, _propertyKey: string, descriptor: PropertyDescriptor) {\n let timeout = null;\n const original = descriptor.value;\n\n descriptor.value = function (...args: any) {\n clearTimeout(timeout);\n timeout = setTimeout(() => original.apply(this, args), delay);\n };\n\n return descriptor;\n };\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n ViewChild\n} from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport { ViewPortService } from '../../core/services/viewport/viewport.service';\nimport { Debounce } from '../../core/decorators/debounce.decorator';\nimport { ButtonComponent } from '../button/button.component';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian continue Component | Layout\n */\n@Component({\n selector: 'nas-continue',\n templateUrl: './continue.component.html',\n styleUrls: ['./continue.component.scss']\n})\nexport class ContinueComponent extends NasComponentBase implements OnChanges {\n @ViewChild('wrapper') wrapper: ElementRef<HTMLElement>;\n @ViewChild('content') content: ElementRef;\n @ViewChild('button') button: ButtonComponent;\n\n /**\n * @description\n * Boolean to set wide style of component. Will fill larger part of sceen width.\n *\n * @example\n * <nas-continue wide>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [wide]=\"isWideProperty\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() wide: boolean;\n /**\n * @description\n * String to set icon on the call to action button.\n *\n * @example\n * <nas-continue [icon]=\"'facebook-icon'\">You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [icon]=\"iconProperty\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() icon = 'arrow-right--light';\n /**\n * @description\n * Boolean to set disabled style of component.\n *\n * @example\n * <nas-continue disabled>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [disabled]=\"isDisabled\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Sets CTA text on button. If not set, CTA-button will not be displayed.\n */\n @Input() actionText: string;\n\n /**\n * @description\n * Sets type on the CTA button. Default is \"button\".\n * @example\n * <nas-continue [actionType]=\"'submit'\"></nas-continue>\n */\n @Input() actionType = 'button';\n\n /**\n * @description\n * Boolean to set simple style of component.\n *\n * @example\n * <nas-continue simple>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [simple]=\"isSimple\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() simple?: boolean;\n /**\n * @description\n * Boolean to set spaceless style of component.\n *\n * @example\n * <nas-continue spaceless>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [speaceless]=\"isSpaceless\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() spaceless?: boolean;\n /**\n * @description\n * Boolean to set tiny style of component.\n *\n * @example\n * <nas-continue tiny>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [tiny]=\"isTiny\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() tiny?: boolean;\n\n /**\n * @description\n * Boolean to override disabled. Button will be clickable even though disabled is set.\n *\n * @example\n * <nas-continue [canContinueOnDisabled]=\"canContinueOnDisabled\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input() canContinueOnDisabled: boolean;\n\n /**\n * @description\n * Set light style background style.\n */\n @Input() light?: boolean;\n\n /**\n * @description\n * Boolean to set sticky style of component.\n *\n * @example\n * <nas-continue sticky>You can put any kind of elements and content here...</nas-continue>\n * or\n * <nas-continue [sticky]=\"isSticky\">You can put any kind of elements and content here...</nas-continue>\n */\n @Input()\n get sticky() {\n return this.stickyValue;\n }\n set sticky(sticky: boolean) {\n this.stickyValue = sticky;\n this.stickyChange.emit(sticky);\n }\n\n /**\n * @description\n * The ID of the native button element\n */\n @Input() actionId: string;\n\n /**\n * @description\n * Boolean output for sticky changes.\n *\n * @example\n * <nas-continue (stickyChange)=\"stickyChanged()\">You can put any kind of elements and content here...</nas-continue>\n */\n @Output() stickyChange = new EventEmitter<boolean>();\n stickyValue: boolean;\n /**\n * @description\n * Boolean output for when call to action button has been clicked.\n *\n * @example\n * <nas-continue (clickContinue)=\"clickContinue()\">You can put any kind of elements and content here...</nas-continue>\n */\n @Output() clickContinue = new EventEmitter<any>();\n\n minHeight = 0;\n\n get mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.sticky) && 'sticky',\n this.exists(this.simple) && 'simple',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.wide) && 'wide',\n this.exists(this.tiny) && 'tiny',\n this.exists(this.animateUp) && 'animate-up',\n this.exists(this.scrolledPast) && 'scrolled-past',\n ]);\n }\n\n get iconClass(): ClassModel {\n return this.getClass('icon');\n }\n\n public get wrapperClass(): ClassModel {\n return this.getClass('wrapper', this.exists(this.light) && 'light');\n }\n\n get actionButtonId(): string {\n return this.actionId ? this.actionId : `nas-continue-action-${this.componentId}`;\n }\n\n private topPosition = 0;\n private scrolledPast = false;\n private contentHeight = 0;\n private animateUp = false;\n private componentId: number;\n\n constructor(private viewportService: ViewPortService) {\n super('nas-continue');\n this.componentId = nextId++;\n\n this.updateHeight = this.updateHeight.bind(this);\n this.checkPosition = this.checkPosition.bind(this);\n this.onScroll = this.onScroll.bind(this);\n }\n\n ngOnChanges() {\n this.updateHeight();\n }\n\n @HostListener('window:scroll', []) @Debounce() onScroll() {\n this.checkPosition();\n }\n\n private getScrollPosition() {\n return (\n window.pageYOffset ||\n document.body.scrollTop ||\n document.documentElement.scrollTop\n );\n }\n\n private checkPosition() {\n if (!this.topPosition || !this.sticky) {\n return;\n }\n\n const scrollPos = this.getScrollPosition();\n this.scrolledPast =\n scrollPos + window.innerHeight > this.topPosition + this.contentHeight;\n }\n\n private updateHeight() {\n if (!this.sticky || !this.wrapper || !this.content) {\n this.resetHeight();\n return;\n }\n\n const { nativeElement: wrapper } = this.wrapper;\n const { nativeElement: content } = this.content;\n const { offsetHeight: height } = content;\n const modifier = parseInt(\n window.getComputedStyle(content).getPropertyValue('margin-top'),\n 10,\n );\n\n this.contentHeight = height;\n this.animateUp = !this.viewportService.isElementInViewport(wrapper);\n this.topPosition = this.viewportService.getElementPosition(wrapper).y;\n this.minHeight = height + modifier;\n\n const scrollPos = this.getScrollPosition();\n this.scrolledPast =\n scrollPos + window.innerHeight > this.topPosition + this.contentHeight;\n }\n\n private resetHeight() {\n this.minHeight = 0;\n this.animateUp = false;\n this.scrolledPast = false;\n }\n\n}\n","<footer [nasClass]=\"mainClass\"\n [style.minHeight.px]=\"minHeight\">\n <div #wrapper\n [nasClass]=\"wrapperClass\">\n <div #content\n [nasClass]=\"getClass('content')\">\n <div [nasClass]=\"getClass('extra')\">\n <ng-content></ng-content>\n </div>\n <nas-button #button\n *ngIf=\"actionText\"\n primary\n spaceless\n [type]=\"actionType\"\n [nasClass]=\"getClass('action')\"\n [disabled]=\"disabled\"\n [canContinueOnDisabled]=\"canContinueOnDisabled\"\n [id]=\"actionButtonId\"\n (clickChange)=\"clickContinue.emit($event)\">\n <span>{{actionText}}</span>\n <nas-icon *ngIf=\"icon\"\n [icon]=\"icon\"\n [cssClass]=\"iconClass\"\n [isIndicator]=\"true\"></nas-icon>\n </nas-button>\n </div>\n </div>\n</footer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ContinueComponent } from './continue.component';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { ViewPortService } from '../../core/services/viewport/viewport.service';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n NasClassModule,\n IconModule\n ],\n declarations: [ContinueComponent],\n exports: [ContinueComponent],\n providers: [ViewPortService]\n})\nexport class ContinueModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport { LinkModel } from '../../core/models/link.model';\n\n/**\n * @description\n * Norwegian Cover Component | Layout\n */\n@Component({\n selector: 'nas-cover',\n templateUrl: './cover.component.html',\n styleUrls: ['./cover.component.scss']\n})\nexport class CoverComponent extends NasComponentBase {\n /**\n * @description\n * Boolean to set wide style of component. Will fill larger part of sceen width.\n * @example\n * <nas-cover wide>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [wide]=\"isWideProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() wide: boolean;\n\n /**\n * @description\n * Boolean to remove cloud icon on component\n * @example\n * <nas-cover cloudless>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [cloudless]=\"isCloudlessProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() cloudless?: boolean;\n\n /**\n * @description\n * Boolean to set spaceless style of component.\n * @example\n * <nas-cover spaceless>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [spaceless]=\"isSpacelessProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() spaceless?: boolean;\n\n /**\n * @description\n * Boolean to set small style of component.\n * @example\n * <nas-cover small>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [small]=\"isSpacelessProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() small?: boolean;\n\n /**\n * @description\n * String to set title text of component.\n * @example\n * <nas-cover [title]=\"'This is a title'\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() title: string;\n\n /**\n * @description\n * String to set preamble text of component.\n * @example\n *\n * ```html\n * <nas-cover [preamble]=\"'And some preamble text'\">You can put any kind of elements and content here...</nas-cover>\n * ```\n */\n @Input() preamble: string;\n\n /**\n * @description\n * ClassModel to set custom css class on component.\n * @example\n * <nas-cover [cssClass]=\"{block: 'block-name', element: 'element-name', modifiers: ['first_modifier', 'second_modifier']}\">\n * You can put any kind of elements and content here...\n * </nas-cover>\n */\n @Input() cssClass: ClassModel;\n\n /**\n * @description\n * String to set illustration icon of component. See Icon Component for existing icons.\n * @example\n * <nas-cover [illustration]=\"'fast-track'\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() illustration: string;\n\n /**\n * @description\n * Boolean to set fluid style of component.\n * @example\n * <nas-cover fluid>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [fluid]=\"isFluidProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() fluid: boolean;\n\n /**\n * @description\n * Boolean to set stripped style of component.\n * @example\n * <nas-cover stripped>You can put any kind of elements and content here...</nas-cover>\n * <nas-cover [stripped]=\"isStrippedProperty\">You can put any kind of elements and content here...</nas-cover>\n */\n @Input() stripped: boolean;\n\n /**\n * @description\n * String to set description text of component.\n */\n @Input() description: string;\n\n /**\n * @description\n * This will be a href if useRouterLink is not added. Otherwise, routerLink.\n */\n @Input() backLink: LinkModel;\n\n /**\n * @description\n * Use router link instead of href on links\n */\n @Input() useRouterLink: boolean;\n\n /**\n * @description\n * Represent a cover component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-cover');\n }\n\n getClasses(): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass('', [\n this.exists(this.cloudless) && 'cloudless',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.small) && 'small',\n this.exists(this.fluid) && 'fluid',\n this.exists(this.stripped) && 'stripped',\n this.illustration && 'illustration',\n this.exists(this.wide) && 'wide'\n ])\n ];\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n}\n\n","<div [nasClass]=\"getClasses()\">\n <div *ngIf=\"backLink\">\n <nas-icon [icon]=\"'arrow-left'\"></nas-icon>\n <nas-button link\n secondary\n [useRouterLink]=\"exists(useRouterLink)\"\n [href]=\"backLink.href\">{{backLink.text}}</nas-button>\n </div>\n <header [nasClass]=\"getClass('header')\">\n <div [nasClass]=\"getClass('content')\">\n <h1 [nasClass]=\"getClass('title')\">{{title}}</h1>\n <div [nasClass]=\"getClass('description')\"> \n <ng-container *ngIf=\"description; else descriptionContent\">{{description}}</ng-container>\n <ng-template #descriptionContent>\n <ng-content select=\"[description]\"></ng-content>\n </ng-template>\n </div>\n </div>\n <nas-icon *ngIf=\"illustration\"\n type=\"large\"\n [icon]=\"illustration\"\n [nasClass]=\"getClass('illustration')\"></nas-icon>\n <div *ngIf=\"!illustration\"\n [nasClass]=\"getClass('additions')\">\n <ng-content></ng-content>\n </div>\n </header>\n <p *ngIf=\"preamble\"\n [nasClass]=\"getClass('preamble')\">{{preamble}}</p>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoverComponent } from './cover.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [CoverComponent],\n imports: [CommonModule, NasClassModule, IconModule, ButtonModule],\n exports: [CoverComponent]\n})\nexport class CoverModule { }\n","import { Component, Input, EventEmitter, Output, ViewChild, ElementRef, OnInit, HostBinding } from '@angular/core';\nimport { ClassModel } from '../../core/models/class.model';\nimport { NasComponentBase } from '../../core';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Dropdown Component | Form Controls\n */\n@Component({\n selector: 'nas-dropdown',\n templateUrl: './dropdown.component.html',\n styleUrls: ['./dropdown.component.scss'],\n})\nexport class DropdownComponent extends NasComponentBase implements OnInit {\n position: any;\n arrowPosition: any;\n maxWidth: number = document.documentElement.clientWidth || document.body.clientWidth;\n\n @Input()\n get open() {\n return this.openValue;\n }\n set open(value: boolean) {\n if (this.openValue === value) {\n return;\n }\n\n clearTimeout(this.openTimeout);\n\n this.openTimeout = setTimeout(() => {\n this.openValue = value;\n });\n }\n\n @ViewChild('toggleElement') toggleElement: ElementRef;\n @ViewChild('contentElement') contentElement: ElementRef;\n @ViewChild('dropdownContent') dropdownContent: ElementRef;\n @ViewChild('contentParent') contentParent: ElementRef;\n @HostBinding('class.inline') useInline = false;\n\n /**\n * @description\n * The ID of the component\n */\n @Input() id!: string;\n\n /**\n * @description\n * Adds 'aria-label' to the backdrops.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * Adds custom CSS class to the dropdown.\n */\n @Input() cssClass: ClassModel;\n\n /**\n * @description\n * Sets inline styling on the dropdown\n */\n @Input() inline: boolean;\n\n /**\n * @description\n * Sets the label on the dropdown.\n */\n @Input() label: string;\n\n /**\n * @description\n * Sets stretched styling.\n */\n @Input() stretched?: boolean;\n\n /**\n * @description\n * Adds custom styling to the label.\n */\n @Input() labelStyle: any;\n\n /**\n * @description\n * An event that is fired every time the dropdown is toggled.\n */\n @Output() openChange = new EventEmitter<boolean>();\n\n private openValue: boolean;\n private openTimeout: any;\n private componentId: number;\n\n constructor() {\n super('nas-dropdown');\n this.componentId = nextId++;\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelBackdrop) {\n this.warnMissingAccessibiltyInput('ariaLabelBackdrop');\n }\n\n this.useInline = this.exists(this.inline);\n }\n\n toggleOnFocus(event: KeyboardEvent): void {\n if (this.open) {\n event.preventDefault();\n return;\n }\n\n this.toggle();\n }\n\n getId(): string {\n if (this.id) {\n return this.id;\n } else {\n return `nas-dropdown-${this.componentId}`;\n }\n }\n\n toggle(): void {\n if (!this.open) {\n this.open = true;\n this.openChange.emit(true);\n this.updatePosition();\n } else {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n\n getMainClass(): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass('', [\n this.exists(this.inline) && 'inline',\n this.exists(this.stretched) && 'stretched'\n ])\n ];\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n\n private updatePosition(): void {\n if (!this.toggleElement || !this.contentElement) {\n return;\n }\n\n this.maxWidth = document.documentElement.clientWidth || document.body.clientWidth;\n\n const toggle = this.toggleElement.nativeElement;\n const content = this.contentElement.nativeElement;\n\n if (!content) {\n return;\n }\n\n const contentBoundingRect = content.getBoundingClientRect();\n const toggleBoundingRect = toggle.getBoundingClientRect();\n\n const contentRightPosition = contentBoundingRect.right;\n const contentLeftPosition = contentBoundingRect.left;\n\n const toggleLeftPosition = toggleBoundingRect.left;\n const toggleRightPosition = toggleBoundingRect.right;\n\n if (contentLeftPosition < 0) {\n this.position = {\n left: 0\n };\n\n const toggleCenterPosition = (toggleBoundingRect.width / 2) + toggleLeftPosition;\n\n this.arrowPosition = {\n left: `${toggleCenterPosition - 16}px`,\n };\n\n } else if (contentRightPosition > this.maxWidth) {\n let rightAdjustment: number;\n let positionRight: string;\n let arrowRight: string;\n\n if (toggleRightPosition <= (this.maxWidth - 12)) {\n rightAdjustment = -(this.maxWidth - toggleRightPosition - 12);\n positionRight = `${rightAdjustment}px`;\n arrowRight = `${(toggleBoundingRect.width / 2) + (this.maxWidth - toggleRightPosition) - 12}px`;\n } else {\n rightAdjustment = contentRightPosition - this.maxWidth;\n positionRight = `calc(50% - ${rightAdjustment}px)`;\n arrowRight = `${rightAdjustment}px`;\n }\n\n this.position = {\n left: 'auto',\n right: positionRight\n };\n\n this.arrowPosition = {\n left: 'auto',\n right: arrowRight,\n };\n }\n }\n}\n","<div [nasClass]=\"getMainClass()\"\n [id]=\"getId()\">\n <button type=\"button\"\n #toggleElement\n [nasClass]=\"getClass('toggle', [open && 'active', !open && 'blured'])\"\n (mousedown)=\"toggle()\"\n (focus)=\"toggleOnFocus($event)\">\n <div [nasClass]=\"getClass('label')\"\n [ngStyle]=\"labelStyle\">{{label}}</div>\n <nas-icon [nasClass]=\"getClass('dropdown-icon', open && 'rotate')\"\n [icon]=\"'arrow-right'\"\n [type]=\"'chevron-down'\"\n [isIndicator]=\"true\"></nas-icon>\n </button>\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('content')\"\n [ngStyle]=\"position\"\n *ngIf=\"open\"\n tabindex=\"-1\">\n <span [nasClass]=\"getClass('arrow')\"\n [ngStyle]=\"arrowPosition\"></span>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div *ngIf=\"!open\" #contentElement\n [nasClass]=\"getClass('content', 'hidden')\" [style.maxWidth]=\"maxWidth - 24 + 'px'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n <button type=\"button\"\n tabindex=\"0\"\n *ngIf=\"open\"\n [attr.aria-label]=\"ariaLabelBackdrop\"\n [nasClass]=\"getClass('backdrop')\"\n (click)=\"toggle()\"></button>\n</div>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n Output,\n EventEmitter,\n Input,\n ViewEncapsulation,\n ElementRef,\n ViewChild,\n OnInit,\n} from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { UntypedFormGroup } from '@angular/forms';\n\n/**\n * @description\n * Norwegian Number field Component | Form Controls\n */\n@Component({\n selector: 'nas-number-field',\n templateUrl: './number-field.component.html',\n styleUrls: ['./number-field.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NumberFieldComponent extends NasComponentBase implements OnInit {\n @ViewChild('input') input: ElementRef;\n\n /**\n * @description\n * The selected number.\n */\n @Input()\n get number() {\n return this.numberValue;\n }\n set number(number: number) {\n if (!this.nasFormGroup || !this.nasFormControlName) {\n if (number < this.min) {\n number = this.min;\n } else if (number > this.max) {\n number = this.max;\n }\n }\n\n this.numberValue = number;\n this.numberChange.emit(number);\n }\n\n /**\n * @description\n * Maximum limit.\n */\n @Input() max: number;\n\n /**\n * @description\n * Minimum limit.\n */\n @Input() min: number;\n\n /**\n * @description\n * A label for the number field input.\n */\n @Input() label: string;\n\n /**\n * @description\n * Sets compact styling.\n */\n @Input() compact?: boolean;\n\n /**\n * @description\n * Sets spaceless styling.\n */\n @Input() spaceless?: boolean;\n\n /**\n * @description\n * Sets simple styling.\n */\n @Input() simple?: boolean;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Hides the input field and displays a plus and minus button only.\n */\n @Input() hideInput?: boolean;\n\n /**\n * @description\n * ARIA label for the subtract button.\n */\n @Input() ariaLabelSubtract: string;\n\n /**\n * @description\n * ARIA label for the add button.\n */\n @Input() ariaLabelAdd: string;\n\n /**\n * @description\n * ARIA label for the input field.\n */\n @Input() ariaLabel: string;\n\n /**\n * @description\n * An event that is fired every time the number changes.\n */\n @Output() numberChange = new EventEmitter<number>();\n\n private numberValue = 0;\n\n constructor() {\n super('nas-number-field');\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelAdd) {\n this.warnMissingAccessibiltyInput('ariaLabelAdd');\n }\n\n if (!this.ariaLabelSubtract) {\n this.warnMissingAccessibiltyInput('ariaLabelSubtract');\n }\n\n if (!this.label && !this.ariaLabel) {\n this.warnMissingAccessibiltyInput('ariaLabel');\n }\n\n if (this.nasFormGroup && this.nasFormControlName) {\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (!control) {\n return;\n }\n\n this.number = control.value;\n\n control.valueChanges.subscribe((value: number) => {\n this.number = value;\n });\n }\n }\n\n inputFocus(): void {\n setTimeout(() => {\n this.input.nativeElement.select();\n });\n }\n\n add(): void {\n if (this.number >= this.max) {\n this.numberChange.emit(this.number);\n return;\n }\n\n this.number += 1;\n\n this.patchReactiveFormControlValue();\n }\n\n subtract(): void {\n if (this.number <= this.min) {\n this.numberChange.emit(this.number);\n return;\n }\n\n this.number -= 1;\n\n this.patchReactiveFormControlValue();\n }\n\n private patchReactiveFormControlValue(): void {\n if (this.nasFormControlName && this.nasFormGroup) {\n const control = this.nasFormGroup.controls[this.nasFormControlName];\n\n if (control) {\n control.markAsDirty();\n control.patchValue(this.number);\n }\n }\n }\n}\n","<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n [(ngModel)]=\"number\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-container>\n<ng-template #reactiveForm>\n <div\n [nasClass]=\"getClass('', [exists(compact) && 'compact', exists(spaceless) && 'spaceless', exists(simple) && 'simple', exists(hideInput) && 'hidden'])\"\n [formGroup]=\"nasFormGroup\">\n <label [nasClass]=\"getClass('title')\"\n *ngIf=\"label\">{{label}}</label>\n <div [nasClass]=\"getClass('wrapper')\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'subtract')\"\n [disabled]=\"number <= min\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelSubtract\"\n (clickChange)=\"subtract()\">\n <nas-icon [type]=\"'subtract'\"></nas-icon>\n </nas-button>\n <input #input\n type=\"number\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.value]=\"number\"\n [attr.aria-valuenow]=\"number\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-label]=\"!ariaLabel ? label : ariaLabel\"\n (focus)=\"inputFocus()\"\n (keydown.arrowright)=\"add()\"\n (keydown.arrowleft)=\"subtract()\">\n <nas-button overrideBaseCssClass\n [cssClass]=\"getClass('button', 'add')\"\n [disabled]=\"number >= max\"\n [tabindex]=\"-1\"\n [ariaLabel]=\"ariaLabelAdd\"\n (clickChange)=\"add()\">\n <nas-icon [type]=\"'add'\"></nas-icon>\n </nas-button>\n <span [nasClass]=\"getClass('line')\"></span>\n </div>\n </div>\n</ng-template>\n","import { ButtonModule } from '../button/button.module';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '../icon/icon.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { NgModule } from '@angular/core';\nimport { NumberFieldComponent } from './number-field.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n IconModule,\n ButtonModule,\n ReactiveFormsModule,\n FormsModule\n ],\n declarations: [NumberFieldComponent],\n exports: [NumberFieldComponent]\n})\nexport class NumberFieldModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DropdownComponent } from './dropdown.component';\nimport { NumberFieldModule } from '../number-field/number-field.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NumberFieldModule,\n NasClassModule,\n IconModule\n ],\n declarations: [DropdownComponent],\n exports: [DropdownComponent]\n})\nexport class DropdownModule { }\n","export enum TripType {\n undefined = -1,\n oneWay = 1,\n twoWayReturn = 2,\n twoWayOpen = 3,\n}\n","export enum PassengerType {\n Adult,\n Child,\n Infant\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChildren,\n QueryList,\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { PassengerType } from './enums/passenger-type.enum';\nimport { PassengersModel } from './models/passengers.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { NumberFieldComponent } from '../number-field/number-field.component';\n\n/**\n * @description\n * Norwegian Passenger Select Component | Functional\n*/\n@Component({\n selector: 'nas-passenger-select',\n templateUrl: './passenger-select.component.html',\n styleUrls: ['./passenger-select.component.scss']\n})\nexport class PassengerSelectComponent extends NasComponentBase implements OnInit {\n @ViewChildren(NumberFieldComponent) numberFields!: QueryList<NumberFieldComponent>;\n\n totalCount: number;\n isGroupBooking: boolean;\n\n /**\n * @description\n * An array of different passenger types that will be displayed.\n */\n @Input() passengers = new Array<PassengersModel>();\n\n /**\n * @description\n * The total maximum amount of passengers.\n */\n @Input() maxPaxCount: number;\n\n /**\n * @description\n * The minimum amount of adults that can be selected.\n */\n @Input() minAdultCount: number;\n\n /**\n * @description\n * The limit for when the total amount of passengers exceeds to be a group booking.\n */\n @Input() groupBookingLimit: number;\n\n /**\n * @description\n * A title that will be added to the dropdown.\n */\n @Input() title: string;\n\n /**\n * @description\n * A label for the adults passenger type.\n */\n @Input() adultsLabel: string;\n\n /**\n * @description\n * A label for the children passenger type.\n */\n @Input() childrenLabel: string;\n\n /**\n * @description\n * A label for the infants passenger type.\n */\n @Input() infantsLabel: string;\n\n /**\n * @description\n * A label that will appear when total number of selected passengers exceeds the group booking limit\n */\n @Input() groupBookingLabel: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlGroupBooking: string;\n\n /**\n * @description\n * ARIA label for the subtract buttons.\n */\n @Input() ariaLabelSubtract: string;\n\n /**\n * @description\n * ARIA label for the add buttons.\n */\n @Input() ariaLabelAdd: string;\n\n /**\n * @description\n * An event that is fired every time a passenger selection change is performed.\n */\n @Output() passengersChange = new EventEmitter<Array<PassengersModel>>();\n\n /**\n * @description\n * An event that is fired every time a passenger selection change is performed.\n */\n @Output() focusOnNext = new EventEmitter<any>();\n\n /**\n * @description\n * An event that is fired every time a passenger selection change is performed.\n */\n @Output() focusOnPrevious = new EventEmitter<any>();\n\n constructor() {\n super('nas-passenger-select');\n }\n\n ngOnInit() {\n this.setTotalCount();\n }\n\n getLabel(type: PassengerType): string {\n switch (type) {\n case PassengerType.Adult:\n return this.adultsLabel;\n case PassengerType.Child:\n return this.childrenLabel;\n case PassengerType.Infant:\n return this.infantsLabel;\n }\n }\n\n keyDown(event: KeyboardEvent, index: number): void {\n event.preventDefault();\n\n switch (event.key) {\n case 'ArrowDown':\n if (index === this.passengers.length - 1) {\n this.numberFields.first.input.nativeElement.focus();\n } else {\n this.numberFields.toArray()[index + 1].input.nativeElement.focus();\n }\n break;\n case 'ArrowUp':\n if (index === 0) {\n this.numberFields.toArray()[this.passengers.length - 1].input.nativeElement.focus();\n } else {\n this.numberFields.toArray()[index - 1].input.nativeElement.focus();\n }\n break;\n case 'Tab':\n if (!event.shiftKey) {\n this.focusOnNext.emit();\n } else if (event.shiftKey) {\n this.focusOnPrevious.emit();\n }\n }\n }\n\n setPassengersCount(passengers: PassengersModel, count: number): void {\n passengers.count = count;\n\n if (passengers.type === PassengerType.Adult) {\n if (this.passengers.find(x => x.type === PassengerType.Infant)) {\n const infantsCount = this.passengers.find(x => x.type === PassengerType.Infant).count;\n if (infantsCount > passengers.count && this.passengers.find(x => x.type === PassengerType.Infant)) {\n const infant = this.passengers.find(x => x.type === PassengerType.Infant);\n\n if (infant) {\n infant.count = passengers.count;\n\n if (infant.formGroup && infant.formControlName) {\n infant.formGroup.get(infant.formControlName).patchValue(infant.count);\n }\n }\n }\n }\n }\n\n this.setTotalCount();\n this.passengersChange.emit(this.passengers);\n }\n\n getMax(passengers: PassengersModel): number {\n if (passengers.type === PassengerType.Infant) {\n const adults = this.passengers.find(x => x.type === PassengerType.Adult);\n\n if (!adults) {\n return 0;\n }\n\n if (!adults.formGroup || !adults.formControlName) {\n return adults.count;\n }\n\n const adultsFormControl = adults.formGroup.get(adults.formControlName);\n\n if (!adultsFormControl) {\n return adults.count;\n }\n\n return adultsFormControl.value;\n } else if (this.totalCount >= this.maxPaxCount) {\n\n if (!passengers.formGroup || !passengers.formControlName) {\n return passengers.count;\n }\n\n const passengersFormControl = passengers.formGroup.get(passengers.formControlName);\n\n if (!passengersFormControl) {\n return passengers.count;\n }\n\n return passengersFormControl.value;\n } else {\n return this.maxPaxCount;\n }\n }\n\n getMin(passengers: PassengersModel): number {\n if (passengers.type === PassengerType.Adult) {\n return this.minAdultCount;\n } else {\n return 0;\n }\n }\n\n private setTotalCount() {\n const adult = this.passengers.find(x => x.type === PassengerType.Adult);\n const child = this.passengers.find(x => x.type === PassengerType.Child);\n\n let adultCount = 0;\n let childCount = 0;\n\n if (adult) {\n\n if (!adult.formGroup || !adult.formControlName) {\n adultCount = adult.count;\n } else {\n const adultsControl = adult.formGroup.get(adult.formControlName);\n\n if (!adultsControl) {\n adultCount = adult.count;\n } else {\n adultCount = adultsControl.value;\n }\n }\n }\n\n if (child) {\n if (!child.formGroup || !child.formControlName) {\n childCount = child.count;\n } else {\n const childsControl = child.formGroup.get(child.formControlName);\n\n if (!childsControl) {\n childCount = child.count;\n } else {\n childCount = childsControl.value;\n }\n }\n }\n\n this.totalCount = adultCount + childCount;\n\n if (this.nasFormGroup && this.nasFormControlGroupBooking) {\n const groupBookingControl = this.nasFormGroup.get(this.nasFormControlGroupBooking);\n\n this.isGroupBooking = this.totalCount >= this.groupBookingLimit;\n\n if (this.groupBookingLimit < 1) {\n this.isGroupBooking = false;\n }\n\n if (groupBookingControl.value !== this.isGroupBooking) {\n groupBookingControl.patchValue(this.isGroupBooking);\n }\n }\n }\n}\n","<h2 *ngIf=\"title\"\n [nasClass]=\"getClass('title', isGroupBooking && 'group-booking')\">{{title}}<ng-container *ngIf=\"isGroupBooking\">:\n <div>{{groupBookingLabel}}</div>\n </ng-container>\n</h2>\n<ul [nasClass]=\"getClass('list')\">\n <li *ngFor=\"let item of passengers; index as count\"\n [nasClass]=\"getClass('list-item')\">\n <label [nasClass]=\"getClass('label')\"\n [attr.aria-label]=\"getLabel(item.type)\">{{getLabel(item.type)}}</label>\n <ng-container *ngIf=\"!item.formGroup || !item.formControlName; else reactiveForm\">\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [number]=\"item.count\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (numberChange)=\"setPassengersCount(item, $event)\"\n (keydown)=\"keyDown($event, count)\"></nas-number-field>\n </ng-container>\n <ng-template #reactiveForm>\n <nas-number-field compact\n spaceless\n simple\n [ariaLabel]=\"getLabel(item.type)\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [nasFormGroup]=\"item.formGroup\"\n [nasFormControlName]=\"item.formControlName\"\n [number]=\"item.formGroup?.get(item.formControlName)?.value\"\n [max]=\"getMax(item)\"\n [min]=\"getMin(item)\"\n (keydown)=\"keyDown($event, count)\"\n (numberChange)=\"setPassengersCount(item, $event)\"></nas-number-field>\n </ng-template>\n </li>\n</ul>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ElementRef, AfterViewChecked } from '@angular/core';\n\nimport { SelectOptionModel } from '../models/select-option.model';\nimport { NasComponentBase } from '../../../core';\n\n@Component({\n selector: 'nas-option',\n templateUrl: './option.component.html',\n styleUrls: ['./option.component.scss']\n})\nexport class OptionComponent extends NasComponentBase implements AfterViewChecked {\n\n /**\n * @description\n * Add option.\n * @example\n * ```html\n * <nas-option [option]=\"option\"></nas-option>\n * ```\n */\n @Input() option: SelectOptionModel;\n\n constructor(private elementRef: ElementRef<HTMLElement>) {\n super('nas-option');\n }\n\n ngAfterViewChecked(): void {\n this.removeHostElement(this.elementRef);\n }\n}\n","<option [value]=\"option?.value\" [attr.aria-label]=\"option?.title\">{{option?.title}}</option>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, AfterViewChecked, Input, ContentChildren, QueryList, ElementRef } from '@angular/core';\n\nimport { OptionComponent } from '../option/option.component';\nimport { NasComponentBase } from '../../../core';\n\n@Component({\n selector: 'nas-optgroup',\n templateUrl: './optgroup.component.html',\n styleUrls: ['./optgroup.component.scss']\n})\nexport class OptgroupComponent extends NasComponentBase implements AfterViewChecked {\n\n @ContentChildren(OptionComponent) optionComponents: QueryList<OptionComponent>;\n\n /**\n * @description\n * Sets the label on the group.\n * @example\n * ```html\n * <nas-optgroup [label]=\"'Label name'\"></nas-optgroup>\n * ```\n */\n @Input() label: string;\n\n constructor(private elementRef: ElementRef) {\n super('nas-optgroup');\n }\n\n ngAfterViewChecked() {\n this.removeHostElement(this.elementRef);\n }\n}\n","<optgroup [attr.label]=\"label\">\n <ng-content></ng-content>\n</optgroup>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ElementRef,\n ViewChild,\n ChangeDetectorRef,\n OnChanges,\n ContentChildren,\n QueryList,\n AfterContentInit,\n AfterViewChecked,\n} from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\n\nimport { NasComponentBase } from '../../core';\nimport { ClassModel } from '../../core/models';\nimport { SelectOptionModel } from './models/select-option.model';\nimport { OptionComponent } from './option/option.component';\nimport { OptgroupComponent } from './optgroup/optgroup.component';\nimport { Debounce } from '../../core/decorators/debounce.decorator';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Select Component | Form Controls\n */\n@Component({\n selector: 'nas-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SelectComponent extends NasComponentBase implements OnChanges, AfterViewChecked, AfterContentInit {\n selectControl = new UntypedFormControl();\n labelWidth: number;\n selectTitle: string;\n hasContent = false;\n\n @ViewChild('selectTitleWrapper', { static: true }) selectTitleWrapper: ElementRef;\n @ViewChild('errorMessageWrapper') errorMessageWrapper: ElementRef;\n @ViewChild('select') select: ElementRef<HTMLSelectElement>;\n @ContentChildren(OptionComponent) optionComponents: QueryList<OptionComponent>;\n @ContentChildren(OptgroupComponent) optgroupComponents: QueryList<OptgroupComponent>;\n\n private optionsValue: Array<SelectOptionModel>;\n\n /**\n * @description\n * The ID of the native input element\n */\n @Input() id: string;\n\n /**\n * @description\n * Add custom inline styling.\n */\n @Input() inline?: boolean;\n\n /**\n * @description\n * Add custom label styling.\n */\n @Input() label: string;\n\n /**\n * @description\n * Sets block styling.\n */\n @Input() block?: boolean;\n\n /**\n * @description\n * Sets spaceless styling.\n */\n @Input() spaceless?: boolean;\n\n /**\n * @description\n * Sets stretch styling.\n */\n @Input() stretch?: boolean;\n\n /**\n * @description\n * Sets compact styling.\n */\n @Input() compact?: boolean;\n\n /**\n * @description\n * Sets simple styling.\n */\n @Input() simple?: boolean;\n\n /**\n * @description\n * Sets light styling.\n */\n @Input() light?: boolean;\n\n /**\n * @description\n * Sets fill styling.\n */\n @Input() fill?: boolean;\n\n /**\n * @description\n * Sets error styling.\n */\n @Input() error?: boolean;\n /**\n * @description\n * The error message to display when error occur. Error attribute need to be true.\n */\n @Input() errorMessage?: string;\n\n /**\n * @description\n * Sets disabled styling.\n */\n @Input() disabled?: boolean;\n\n /**\n * @description\n * Makes the select component autogrow.\n */\n @Input() autogrow?: boolean;\n\n /**\n * @description\n * Add custom CSS class to the selector.\n */\n @Input() cssClass: ClassModel;\n /**\n * @description\n * Sets a formControlName directive to the select.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * ```html\n * <nas-select [nasFormControlName]=\"'fareClass'\"></nas-select>\n * ```\n */\n @Input() nasFormControlName: string;\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * ```html\n * <nas-select [nasFormGroup]=\"classGroup\"></nas-select>\n * ```\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Add options to the selector.\n */\n @Input()\n public get options(): Array<SelectOptionModel> {\n return this.optionsValue;\n }\n public set options(value: Array<SelectOptionModel>) {\n this.optionsValue = value;\n\n if (this.options && this.options.length > 0 && !this.selected) {\n const option = this.options[0];\n\n this.setSelectedTitle(option);\n\n if (this.selectedValue === option) {\n return;\n }\n\n this.selectedValue = option;\n this.selectControl.setValue(this.selectedValue.value);\n }\n }\n\n /**\n * @description\n * The default selected value.\n */\n @Input() selectedValue: SelectOptionModel;\n\n /**\n * @description\n * Gets or sets the selected value.\n */\n @Input()\n get selected(): SelectOptionModel {\n return this.selectedValue;\n }\n set selected(option: SelectOptionModel) {\n if (!option) {\n return;\n }\n\n this.setSelectedTitle(option);\n\n if (this.selectedValue === option) {\n return;\n }\n\n this.selectedValue = option;\n this.selectControl.setValue(this.selectedValue.value);\n }\n\n /**\n * @description\n * An event that is fired every time a selection is done.\n */\n @Output() selectedChange = new EventEmitter<SelectOptionModel>();\n\n /**\n * @description\n * An events that fires every type a keydown event has been pressed on the select element.\n */\n @Output() keydown = new EventEmitter<KeyboardEvent>();\n\n private open = false;\n private componentId: number;\n\n constructor(private change: ChangeDetectorRef) {\n super('nas-select');\n this.componentId = nextId++;\n }\n\n ngOnChanges() {\n if (this.selectedValue) {\n this.selectControl.setValue(this.selectedValue.value);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.optionComponents && this.optionComponents.length > 0\n || this.optgroupComponents && this.optgroupComponents.length > 0) {\n this.hasContent = true;\n }\n\n if (this.selectedValue) {\n return;\n }\n\n if (this.optionComponents && this.optionComponents.length > 0) {\n this.setFirstOptionSelected(this.optionComponents);\n } else if (this.optgroupComponents && this.optgroupComponents.length > 0) {\n const firstOptgroupComponent = this.optgroupComponents.first;\n\n if (firstOptgroupComponent) {\n this.setFirstOptionSelected(firstOptgroupComponent.optionComponents);\n }\n }\n }\n\n ngAfterViewChecked() {\n if (!this.hasContent && !this.selectedValue) {\n if (this.options && this.options.length > 0) {\n this.setSelectedTitle(this.options[0]);\n }\n return;\n }\n\n if (this.selectedValue) {\n this.selectControl.setValue(this.selectedValue.value);\n this.setSelectedTitle(this.selectedValue);\n }\n }\n\n getSelectId(): string {\n return `nas-select-${this.componentId}`;\n }\n\n get selectId(): string {\n return this.id ? this.id : `nas-select-${this.componentId}`;\n }\n\n get errorId(): string {\n return this.id ? this.id + '__error' : `nas-select-${this.componentId}__error`;\n }\n\n toggleSelect(event: any, keydown?: boolean): void {\n if ((event && event.key === 'Enter') || !event || !event.key) {\n this.open = !this.open;\n\n if (keydown) {\n this.keydown.emit(event);\n }\n\n if (!event) {\n return;\n }\n\n const target = event.target;\n\n if (this.options) {\n const selected = this.options.find(x => x.value === target.value);\n if (selected && (!this.selected || selected.value !== this.selected.value)) {\n this.setSelectedAndEmitChange(selected);\n }\n }\n\n if (this.optionComponents && this.optionComponents.length > 0) {\n const selected = this.optionComponents.find(x => x.option.value === target.value);\n if (selected && (!this.selected || selected.option.value !== this.selected.value)) {\n this.setSelectedAndEmitChange(selected.option);\n return;\n }\n }\n\n if (this.optgroupComponents && this.optgroupComponents.length > 0) {\n this.optgroupComponents.forEach(optgroupComponent => {\n if (optgroupComponent.optionComponents) {\n const selected = optgroupComponent.optionComponents.find(x => x.option.value === target.value);\n if (selected && (!this.selected || selected.option.value !== this.selected.value)) {\n this.setSelectedAndEmitChange(selected.option);\n return;\n }\n }\n });\n }\n\n this.updateShadow(target, target.value);\n }\n }\n\n blurSelect(): void {\n this.open = false;\n }\n\n getClasses(): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass('', [\n this.label,\n this.exists(this.inline) && 'inline',\n this.exists(this.block) && 'block',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.stretch) && 'stretch',\n this.exists(this.compact) && 'compact',\n this.exists(this.simple) && 'simple',\n this.exists(this.light) && 'light',\n this.exists(this.fill) && 'fill',\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.open && 'rotate'\n ])\n ];\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n\n @Debounce(150)\n private setSelectedAndEmitChange(selected: SelectOptionModel): void {\n if (!selected) {\n return;\n }\n\n if (this.selected !== selected) {\n this.selectedChange.emit(selected);\n }\n\n this.selected = selected;\n }\n\n private setFirstOptionSelected(optionComponents: QueryList<OptionComponent>): void {\n if (!optionComponents || optionComponents.length <= 0) {\n return;\n }\n\n const firstOptionComponent = optionComponents.first;\n\n if (firstOptionComponent) {\n this.selectedValue = firstOptionComponent.option;\n this.setSelectedTitle(this.selectedValue);\n }\n }\n\n private updateShadow(target: any, targetValue: string) {\n if (this.label || this.block || !this.autogrow || !target) {\n return;\n }\n\n let value: string;\n\n if (target.selectedOptions && target.selectedOptions.length) {\n value = target.selectedOptions[0].innerHTML;\n } else {\n value = targetValue;\n }\n\n const shadow = document.createElement('select');\n const computedStyle = window.getComputedStyle(target);\n shadow.style.position = 'absolute';\n shadow.style.top = '-1000px';\n shadow.style.left = '-1000px';\n shadow.style.width = 'auto';\n shadow.style.maxWidth = 'none';\n shadow.style.fontSize = computedStyle.getPropertyValue('font-size');\n shadow.style.fontFamily = computedStyle.getPropertyValue('font-family');\n shadow.style.fontWeight = computedStyle.getPropertyValue('font-weight');\n shadow.style.letterSpacing = computedStyle.getPropertyValue('letter-spacing');\n shadow.style.paddingTop = computedStyle.getPropertyValue('padding-top');\n shadow.style.paddingRight = computedStyle.getPropertyValue('padding-right');\n shadow.style.paddingBottom = computedStyle.getPropertyValue('padding-bottom');\n shadow.style.paddingLeft = computedStyle.getPropertyValue('padding-left');\n shadow.style.borderTop = computedStyle.getPropertyValue('border-top');\n shadow.style.borderRight = computedStyle.getPropertyValue('border-right');\n shadow.style.borderBottom = computedStyle.getPropertyValue('border-bottom');\n shadow.style.borderLeft = computedStyle.getPropertyValue('border-left');\n\n const option = document.createElement('option');\n option.value = value;\n option.innerHTML = value;\n shadow.appendChild(option);\n\n target.style.width = `${shadow.offsetWidth + 6}px`;\n }\n\n private setSelectedTitle(option: SelectOptionModel): void {\n const selectTitleWrapper = this.selectTitleWrapper.nativeElement as HTMLElement;\n\n if (!selectTitleWrapper) {\n return;\n }\n\n if (!option) {\n selectTitleWrapper.style.display = 'none';\n return;\n }\n\n this.selectTitle = option.title;\n selectTitleWrapper.style.display = 'block';\n selectTitleWrapper.style.whiteSpace = 'nowrap';\n\n if (!this.select) {\n return;\n }\n\n const selectElement = this.select.nativeElement as HTMLElement;\n\n if (!selectElement) {\n return;\n }\n\n const selectStyle = window.getComputedStyle(selectElement);\n let selectPaddingLeft = 0;\n let selectPaddingRight = 0;\n let selectBorderLeft = 0;\n let selectBorderRight = 0;\n\n if (selectStyle) {\n selectPaddingLeft = parseInt(selectStyle.paddingLeft, 10);\n selectPaddingRight = parseInt(selectStyle.paddingRight, 10);\n selectBorderLeft = parseInt(selectStyle.borderLeft, 10);\n selectBorderRight = parseInt(selectStyle.borderRight, 10);\n }\n\n const selectTitleWrapperTitle = selectTitleWrapper.lastElementChild as HTMLElement;\n let offsetWidth = selectPaddingLeft + selectPaddingRight + selectBorderLeft + selectBorderRight;\n\n if (selectTitleWrapperTitle) {\n offsetWidth += selectTitleWrapperTitle.offsetWidth;\n if (this.exists(this.error) && this.errorMessageWrapper) {\n const selectErrorWidth = parseInt(window.getComputedStyle(this.errorMessageWrapper.nativeElement).width, 10);\n if (selectErrorWidth > offsetWidth) {\n offsetWidth = selectErrorWidth;\n }\n }\n }\n\n if (offsetWidth > 0) {\n this.labelWidth = offsetWidth;\n this.change.detectChanges();\n }\n\n selectTitleWrapper.style.display = 'none';\n }\n}\n","<label for=\"getSelectId()\"\n *ngIf=\"label && !inline\">\n <span [nasClass]=\"getClass('label')\">{{label}}</span>\n</label>\n<div [nasClass]=\"getClasses()\">\n <ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <select #select\n [id]=\"selectId\"\n [attr.disabled]=\"disabled\"\n [attr.aria-label]=\"'select'\"\n [attr.aria-labelledby]=\"getSelectId()\"\n [style.width.px]=\"labelWidth\"\n [formControl]=\"selectControl\"\n (mousedown)=\"toggleSelect($event)\"\n (keydown)=\"toggleSelect($event, true)\"\n (blur)=\"blurSelect()\"\n (change)=\"toggleSelect($event)\">\n <ng-container *ngIf=\"!hasContent\">\n <option *ngFor=\"let option of options\"\n [value]=\"option?.value\"\n [attr.aria-label]=\"option?.title\">\n {{option?.title}}</option>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentOptions\"></ng-container>\n </select>\n </ng-container>\n <ng-template #reactiveForm>\n <ng-container [formGroup]=\"nasFormGroup\">\n <select #select\n [formControlName]=\"nasFormControlName\"\n [id]=\"selectId\"\n [attr.disabled]=\"disabled\"\n [attr.aria-label]=\"'select'\"\n [attr.aria-labelledby]=\"getSelectId()\"\n [style.width.px]=\"labelWidth\"\n (mousedown)=\"toggleSelect($event)\"\n (keydown)=\"toggleSelect($event, true)\"\n (blur)=\"blurSelect()\"\n (change)=\"toggleSelect($event)\">\n <ng-container *ngIf=\"!hasContent\">\n <option *ngFor=\"let option of options\"\n [value]=\"option?.value\"\n [attr.aria-label]=\"option?.title\">{{option?.title}}</option>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"contentOptions\"></ng-container>\n </select>\n </ng-container>\n </ng-template>\n <p [nasClass]=\"getClass('error')\"\n #errorMessageWrapper\n *ngIf=\"exists(error) && errorMessage\" [id]=\"errorId\">{{errorMessage}}</p>\n <div #selectTitleWrapper\n [style.display]=\"'none'\"\n aria-hidden=\"true\">\n <span>{{selectTitle}}</span>\n </div>\n <ng-template #contentOptions>\n <ng-content></ng-content>\n </ng-template>\n</div>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Back drop Component | Functional\n */\n@Component({\n selector: 'nas-backdrop',\n templateUrl: './backdrop.component.html',\n styleUrls: ['./backdrop.component.scss']\n})\nexport class BackdropComponent extends NasComponentBase implements OnInit {\n show: boolean;\n\n /**\n * @description\n * Event emmitted when showBackdrop is changed.\n */\n @Output() showBackdropChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * backdrop show/hide.\n */\n @Input()\n get showBackdrop(): boolean {\n return this.show;\n }\n set showBackdrop(value: boolean) {\n this.show = value;\n this.showBackdropChange.emit(value);\n }\n\n /**\n * @description\n * Adds an aria-label attribute to the button\n */\n @Input() ariaLabelBackdrop: string;\n\n constructor() {\n super('nas-backdrop');\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelBackdrop) {\n this.warnMissingAccessibiltyInput('ariaLabelBackdrop');\n }\n }\n\n onClose(event: KeyboardEvent): void {\n this.showBackdrop = false;\n event.preventDefault();\n }\n\n}\n","<button type=\"button\"\n tabindex=\"0\"\n #backdrop\n [attr.aria-label]=\"ariaLabelBackdrop\"\n [nasClass]=\"getClass()\"\n (click)=\"onClose($event)\"\n *ngIf=\"show\">\n</button>","export enum WeekStart {\n monday,\n sunday\n}\n","import { DatePipe } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { UtcDate } from '../../../core/models/utc-date.model';\nimport { DateHelper } from '../../../core/services/date/date-helper.service';\nimport { SelectOptionModel } from '../../select/models/select-option.model';\nimport { WeekStart } from '../calendar/enums/week-start.enum';\nimport { DayModel } from '../calendar/models/day.model';\nimport { WeekModel } from '../calendar/models/week.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CalendarService {\n\n constructor(private datePipe: DatePipe, private dateService: DateHelper) { }\n\n getMonthNames(locale?: string): Array<string> {\n const month = new Date();\n month.setMonth(0);\n month.setDate(1);\n\n const monthNames = new Array<string>();\n\n for (let index = 0; index < 12; index++) {\n const currentMonth = new Date(Date.UTC(month.getFullYear(), month.getMonth() + index, 1));\n monthNames.push(this.datePipe.transform(currentMonth, 'LLLL', 'UTC', locale));\n }\n\n return monthNames;\n }\n\n getWeekdays(weekStart: WeekStart, locale?: string): Array<string> {\n const weekday = this.getMonday();\n\n const weekdays = new Array<string>();\n\n for (let index = 0; index < 7; index++) {\n const currentDay = new Date(Date.UTC(weekday.getFullYear(), weekday.getMonth(), weekday.getDate() + index));\n weekdays.push(this.datePipe.transform(currentDay, 'EEE', 'UTC', locale));\n }\n if (weekStart !== WeekStart.monday) {\n const sunday = weekdays.pop();\n weekdays.unshift(sunday);\n }\n\n return weekdays;\n }\n\n updateAvailableDaysWithSelectedDate(availableDays: Array<DayModel>, selectedDate: UtcDate): void {\n if (!availableDays || !selectedDate) {\n return;\n }\n\n availableDays = availableDays.map((x: DayModel) => {\n if (!this.dateService.isSameDate(this.dateService.utcDate(x.date), selectedDate)) {\n return x;\n }\n\n if (x.isDisabled) {\n selectedDate.setDate(selectedDate.date + 1);\n return x;\n }\n\n x.isSelected = true;\n return x;\n });\n }\n\n setActiveDate(date: UtcDate, weeks: Array<WeekModel>): void {\n if (!weeks || weeks.length <= 0) {\n return;\n }\n\n for (const day of this.getDays(weeks)) {\n if (!day) {\n continue;\n }\n\n day.isActive = false;\n const utcDate = this.dateService.utcDate(day.date);\n\n if (this.dateService.isSameDate(utcDate, date)) {\n day.isActive = true;\n }\n }\n }\n\n getDays(weeks: Array<WeekModel>): Array<DayModel> {\n const flatten = new Array<DayModel>();\n\n weeks.forEach(x => x.days.forEach(d => flatten.push(d)));\n\n return flatten;\n }\n\n getWeeks(availableDays: Array<DayModel>, weekStart: WeekStart): Array<WeekModel> {\n if (!availableDays) {\n return;\n }\n\n const sortedDays = availableDays\n .sort((a, b) => this.dateService\n .date(this.dateService.utcDate(a.date)).getTime() - this.dateService.date(this.dateService.utcDate(b.date)).getTime());\n\n const weeks = new Array<WeekModel>();\n let index = 0;\n\n for (let week = 0; week < 6; week++) {\n const days = new Array<DayModel>();\n\n for (let day = 0; day < 7; day++) {\n const currentDayModel = sortedDays[0];\n if (currentDayModel) {\n const currentDate = this.dateService.utcDate(currentDayModel.date);\n\n currentDayModel.isEmpty = currentDayModel.isAvailable;\n\n let currentDay = currentDate.getDay();\n\n if (weekStart === WeekStart.monday) {\n if (currentDay === 0) {\n currentDay = 6;\n } else {\n currentDay -= 1;\n }\n }\n\n if (currentDay === day) {\n index = index + 1;\n currentDayModel.index = index;\n\n days.push(currentDayModel);\n sortedDays.shift();\n } else {\n days.push(null);\n }\n }\n }\n\n const firstDayInWeek = days.find(x => x != null);\n let firstDateDateInWeek: Date;\n\n if (firstDayInWeek) {\n const utcDate = this.dateService.utcDate(firstDayInWeek.date);\n firstDateDateInWeek = new Date(utcDate.year, utcDate.month, utcDate.date);\n }\n\n if (!days.every(x => x === null)) {\n weeks.push({\n days: days,\n weekNumber: this.dateService.getWeekNumber(firstDateDateInWeek)\n });\n }\n }\n return weeks;\n }\n\n getCurrentMonth(date?: UtcDate): UtcDate {\n let currentMonth: UtcDate;\n if (date) {\n currentMonth = this.dateService.utcDate(new Date(Date.UTC(date.year, date.month, 1)));\n } else {\n currentMonth = this.dateService.utcDate();\n }\n\n return currentMonth;\n }\n\n getMonthsSelectOptions(disablePastSelection: boolean, maxMonthIndex: number, monthNames: Array<string>): Array<SelectOptionModel> {\n const months = new Array<SelectOptionModel>();\n\n if (disablePastSelection === false) {\n return months;\n }\n\n for (let index = 0; index < maxMonthIndex; index++) {\n const date = this.dateService.utcDate().toDate();\n date.setUTCDate(1);\n date.setUTCMonth(date.getUTCMonth() + index);\n\n const selectOption: SelectOptionModel = {\n title: `${monthNames[date.getUTCMonth()]} - ${date.getUTCFullYear()}`,\n value: date.toISOString()\n };\n\n months.push(selectOption);\n }\n\n return months;\n }\n\n getSelectedMonth(months: Array<SelectOptionModel>, currentMonth: UtcDate): SelectOptionModel {\n if (!months) {\n return null;\n }\n\n const selected = months.find(x => {\n const date = this.dateService.utcDate(x.value);\n date.setDate(1);\n const month = new UtcDate(currentMonth.year, currentMonth.month, 1);\n return this.dateService.isSameMonth(date, month);\n });\n\n return selected;\n }\n\n getAvailableDays(\n currentMonth: UtcDate,\n availableDates: Array<UtcDate>,\n availability: boolean,\n disablePastSelection: boolean,\n lowerLimitDate: UtcDate,\n activeDate: UtcDate,\n selectedDate: UtcDate): Array<DayModel> {\n const firstDateInThisMonth = new Date();\n firstDateInThisMonth.setUTCDate(1);\n firstDateInThisMonth.setUTCHours(0, 0, 0, 0);\n\n const currentDate = currentMonth\n ? new Date(Date.UTC(currentMonth.year, currentMonth.month, 1))\n : firstDateInThisMonth;\n\n const currentDateMonth = currentDate.getUTCMonth();\n const days = new Array<DayModel>();\n\n while (currentDate.getUTCMonth() === currentDateMonth) {\n const utcDate = this.dateService.utcDate(currentDate);\n\n const day: DayModel = {\n date: this.dateService.date(utcDate).toISOString(),\n isAvailable: this.isAvailable(utcDate, availableDates, availability, disablePastSelection),\n isDisabled: this.dateService.isLessThan(utcDate, lowerLimitDate) ? true : false,\n isActive: this.dateService.isSameDate(this.dateService.utcDate(currentDate), activeDate)\n };\n\n if (selectedDate && this.dateService.isSameDate(selectedDate, utcDate) && day.isSelected || !day.isAvailable) {\n day.isSelected = false;\n }\n\n days.push(day);\n currentDate.setUTCDate(currentDate.getUTCDate() + 1);\n }\n\n return days;\n }\n\n private isAvailable(date: UtcDate, availableDates: Array<UtcDate>, availability: boolean, disablePastSelection: boolean): boolean {\n if (!availability) {\n return disablePastSelection && this.dateService.isInThePast(date, false, true, true) ? false : true;\n }\n\n if ((disablePastSelection && this.dateService.isInThePast(date, false, true, true))\n || !availableDates\n || !availableDates.some(x => this.dateService.isSameDate(x, date))) {\n return false;\n }\n\n return true;\n }\n\n private getMonday() {\n const date = new Date();\n const day = date.getDay();\n const diff = date.getDate() - day + (day === 0 ? -6 : 1);\n return new Date(date.setDate(diff));\n }\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n QueryList\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CalendarDateModel } from './calendar-date.model';\nimport { WeekStart } from './enums/week-start.enum';\nimport { DayModel } from './models/day.model';\nimport { SelectOptionModel } from './models/select-option.model';\nimport { WeekModel } from './models/week.model';\nimport { NasComponentBase } from '../../../core/base/nas-component.base';\nimport { ClassModel } from '../../../core/models/class.model';\nimport { UtcDate } from '../../../core/models/utc-date.model';\nimport { DateHelper } from '../../../core/services/date/date-helper.service';\nimport { SelectComponent } from '../../select/select.component';\nimport { CalendarService } from '../services/calendar.service';\nimport { Debounce } from '../../../core/decorators/debounce.decorator';\n\n@Component({\n selector: 'nas-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CalendarComponent extends NasComponentBase implements OnInit {\n weeks: Array<WeekModel>;\n months = new Array<SelectOptionModel>();\n weekdays = new Array<string>();\n isPreviousMonthDisabled: boolean;\n\n @ViewChild('previousMonthRef') previousMonthRef: ElementRef<HTMLButtonElement>;\n @ViewChild('nextMonthRef') nextMonthRef: ElementRef<HTMLButtonElement>;\n @ViewChildren('tableCells') tableCells: QueryList<ElementRef>;\n @ViewChildren('dateButton') dateButtons: QueryList<ElementRef>;\n @ViewChild('calendarContent') calendarContent: ElementRef;\n @ViewChild('monthSelect') monthSelectRef: SelectComponent;\n\n /**\n * @description\n * Label for no available flights.\n */\n @Input() noAvailableFlightsLabel: string;\n\n /**\n * @description\n * Label for available flights.\n */\n @Input() availableFlightsLabel: string;\n\n /**\n * @description\n * Disable possibility to select dates in the past.\n */\n @Input() disablePastSelection?: boolean;\n\n /**\n * @description\n * The lowest date allowed.\n */\n @Input()\n get lowerLimitDate(): UtcDate {\n return this.lowerLimitDateValue;\n }\n set lowerLimitDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n this.lowerLimitDateValue = date;\n\n if (!this.selectedDate) {\n this.selectedDateValue = this.lowerLimitDateValue;\n this.activeDate = this.lowerLimitDateValue;\n } else if (this.selectedDate && this.dateService.isGreaterThan(date, this.selectedDate, false, true, true)) {\n this.selectedDateValue = this.lowerLimitDateValue;\n this.activeDate = this.lowerLimitDateValue;\n } else if (this.activeDate && this.dateService.isGreaterThan(date, this.activeDate, false, true, true)) {\n this.activeDate = this.lowerLimitDateValue;\n }\n\n this.applySelectedDateChanges();\n }\n\n /**\n * @description\n * Current month date to be displayed. It will take precedence over selected date input, if it is set.\n */\n @Input() date: UtcDate;\n\n /**\n * @description\n * Desides if the week should start on a monday or sunday. Defaults to monday.\n */\n @Input() weekStart = WeekStart.monday;\n\n /**\n * @description\n * Display week numbers.\n */\n @Input() displayWeekNumbers: boolean;\n\n /**\n * @description\n * Sets the datepicker in availability mode where available dates can be added.\n */\n @Input() availability: boolean;\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * An array with all the available dates of the month for seats.\n */\n @Input()\n get availableDates(): Array<UtcDate> {\n return this.availableDatesValue;\n }\n set availableDates(dates: Array<UtcDate>) {\n if (!dates || !this.exists(this.availability)) {\n return;\n }\n\n if (dates.length > 0) {\n const firstDate = dates[0];\n this.currentMonth = firstDate;\n this.setPreviousMonthDisabled();\n }\n\n this.availableDatesValue = dates;\n\n this.applySelectedDateChanges();\n\n if (!this.shouldFocusCalendarOnAvailableDatesUpdate) {\n return;\n }\n\n if (document.activeElement === this.nextMonthRef.nativeElement ||\n document.activeElement === this.previousMonthRef.nativeElement ||\n this.monthSelectRef && document.activeElement === this.monthSelectRef.select.nativeElement) {\n return;\n }\n\n setTimeout(() => {\n const elmementToFocus = this.activeDateCell;\n\n if (elmementToFocus) {\n elmementToFocus.focus();\n }\n\n this.shouldFocusCalendarOnAvailableDatesUpdate = false;\n }, 100);\n }\n\n /**\n * @description\n * Gets or sets the active date\n */\n @Input()\n get activeDate(): UtcDate {\n return this.activeDateValue;\n }\n set activeDate(date: UtcDate) {\n if (!date || this.dateService.isSameDate(date, this.activeDate)) {\n return;\n }\n\n if (!this.currentMonth) {\n this.currentMonth = date;\n }\n\n if (!this.dateService.isSameMonth(date, this.currentMonth)) {\n this.currentMonth = date;\n\n this.applySelectedDateChanges();\n this.monthChange.emit(this.currentMonth);\n this.setPreviousMonthDisabled();\n\n const elmementToFocus = this.activeDateCell;\n if (elmementToFocus) {\n elmementToFocus.focus();\n }\n }\n\n if (this.weeks) {\n this.calendarService.setActiveDate(date, this.weeks);\n\n for (const day of this.calendarService.getDays(this.weeks)) {\n if (!day) {\n continue;\n }\n\n if (day.isActive) {\n this.activeDateValue = date;\n this.activeDateChange.emit(date);\n }\n }\n }\n }\n\n @Input()\n get selectedDate() {\n return this.selectedDateValue;\n }\n set selectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n this.selectedDateValue = date;\n\n if (!this.dateService.isSameMonth(date, this.activeDate)\n || !this.dateService.isSameMonth(date, this.currentMonth)) {\n this.currentMonth = date;\n this.activeDateValue = date;\n this.applySelectedDateChanges();\n }\n\n this.setSelectedDate(date);\n }\n\n @Input() nasFormGroup: UntypedFormGroup;\n @Input() nasFormControlName: string;\n @Input() dateDisplayFormat = 'EEEE d, MMMM yyyy';\n @Input() ariaLabelPreviousMonth: string;\n @Input() ariaLabelNextMonth: string;\n\n /**\n * @description\n * Month selected by the user by clicking in drop down for month selection or month navigation buttons.\n */\n @Output() monthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When a user has actively changed the date.\n */\n @Output() focusOnNextChange = new EventEmitter<KeyboardEvent | MouseEvent | null>();\n\n /**\n * @description\n * When selected date has been changed.\n */\n @Output() selectedDateChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When active date has been changed.\n */\n @Output() activeDateChange = new EventEmitter<UtcDate>();\n\n get selectedMonth(): SelectOptionModel {\n return this.selectedValue;\n }\n set selectedMonth(option: SelectOptionModel) {\n if (!option) {\n return;\n }\n this.selectedValue = option;\n const optionDate = this.dateService.utcDate(option.value);\n\n if (!this.dateService.isSameMonth(optionDate, this.currentMonth)) {\n this.currentMonth = optionDate;\n this.applySelectedDateChanges();\n this.monthChange.emit(this.currentMonth);\n this.setPreviousMonthDisabled();\n }\n }\n\n get nextMonthDisabled(): boolean {\n const nextMonthIndex = this.currentMonth\n && this.dateService.getUtcNumberOfMonthBetween(this.dateService.utcDate(), this.currentMonth);\n\n return (nextMonthIndex + 2) >= this.maxMonthIndex;\n }\n\n get currentMonthModel(): string {\n if (!this.currentMonth) {\n return '';\n }\n\n return `${this.monthNames[this.currentMonth.toDate().getUTCMonth()]} - ${this.currentMonth.toDate().getUTCFullYear()}`;\n }\n\n /**\n * @description\n * Is in use by DatepickerComponent\n */\n get activeDateCell(): HTMLElement {\n return document.querySelector('.nas-calendar__item--active');\n }\n\n private maxMonthIndex = 13;\n private activeDateValue: UtcDate;\n private availableDatesValue: Array<UtcDate>;\n private currentMonth: UtcDate;\n private selectedValue: SelectOptionModel;\n private availableDays: Array<DayModel>;\n private monthNames = new Array<string>();\n private lowerLimitDateValue: UtcDate;\n private selectedDateValue: UtcDate;\n private shouldFocusCalendarOnAvailableDatesUpdate = false;\n\n constructor(\n public dateService: DateHelper,\n public datePipe: DatePipe,\n private calendarService: CalendarService) {\n super('nas-calendar');\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelPreviousMonth) {\n this.warnMissingAccessibiltyInput('ariaLabelPreviousMonth');\n }\n\n if (!this.ariaLabelNextMonth) {\n this.warnMissingAccessibiltyInput('ariaLabelNextMonth');\n }\n\n if (this.nasFormGroup && this.nasFormControlName) {\n\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (control) {\n const calendarDate: CalendarDateModel = control.value;\n\n if (calendarDate) {\n this.selectedDate = calendarDate.date;\n }\n }\n }\n\n if (this.date || !this.currentMonth) {\n this.currentMonth = this.calendarService.getCurrentMonth(this.date);\n }\n\n this.availableDays = this.calendarService.getAvailableDays(\n this.currentMonth,\n this.availableDates,\n this.availability,\n this.disablePastSelection,\n this.lowerLimitDate,\n this.activeDate,\n this.selectedDate);\n\n this.calendarService.updateAvailableDaysWithSelectedDate(this.availableDays, this.selectedDate);\n\n this.weeks = this.calendarService.getWeeks(this.availableDays, this.weekStart);\n this.monthNames = this.calendarService.getMonthNames(this.locale);\n this.months = this.calendarService.getMonthsSelectOptions(this.disablePastSelection, this.maxMonthIndex, this.monthNames);\n this.selectedMonth = this.calendarService.getSelectedMonth(this.months, this.currentMonth);\n this.weekdays = this.calendarService.getWeekdays(this.weekStart, this.locale);\n\n this.setPreviousMonthDisabled();\n }\n\n dateKeyDown(event: KeyboardEvent): void {\n let elementToFocus: HTMLElement;\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n this.shouldFocusCalendarOnAvailableDatesUpdate = true;\n break;\n case 'Tab':\n if (!event.shiftKey) {\n if (this.previousMonthRef && !this.isPreviousMonthDisabled) {\n elementToFocus = this.previousMonthRef.nativeElement;\n } else if (this.monthSelectRef && this.months.length > 0) {\n elementToFocus = this.monthSelectRef.select.nativeElement;\n } else if (this.nextMonthRef && !this.nextMonthDisabled) {\n elementToFocus = this.nextMonthRef.nativeElement;\n }\n } else {\n if (this.nextMonthRef && !this.nextMonthDisabled) {\n elementToFocus = this.nextMonthRef.nativeElement;\n } else if (this.monthSelectRef && this.months.length > 0) {\n elementToFocus = this.monthSelectRef.select.nativeElement;\n } else if (this.previousMonthRef && !this.isPreviousMonthDisabled) {\n elementToFocus = this.previousMonthRef.nativeElement;\n }\n }\n\n this.focusElement(event, elementToFocus);\n break;\n case 'Enter':\n event.preventDefault();\n\n const activeDay = this.calendarService\n .getDays(this.weeks)\n .find(x => x && this.dateService.isSameDate(this.dateService.utcDate(x.date), this.activeDate));\n\n if (this.availability && activeDay?.isAvailable && !activeDay?.isDisabled || !this.availability) {\n this.setSelectedDate(this.activeDate);\n this.focusOnNextChange.emit(event);\n }\n break;\n }\n }\n\n @Debounce(150)\n onPreviousMonthKeydown(event: KeyboardEvent): void {\n let elementToFocus: HTMLElement;\n switch (event.key) {\n case 'Tab':\n if (!event.shiftKey) {\n if (this.monthSelectRef && this.months.length > 0) {\n elementToFocus = this.monthSelectRef.select.nativeElement;\n } else if (this.nextMonthRef && !this.nextMonthDisabled) {\n elementToFocus = this.nextMonthRef.nativeElement;\n } else {\n elementToFocus = this.activeDateCell;\n }\n } else {\n elementToFocus = this.activeDateCell;\n }\n\n this.focusElement(event, elementToFocus);\n break;\n case 'Enter':\n this.getPreviousMonth();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n @Debounce(150)\n onNextMonthKeydown(event: KeyboardEvent): void {\n let elementToFocus: HTMLElement;\n switch (event.key) {\n case 'Tab':\n if (!event.shiftKey) {\n elementToFocus = this.activeDateCell;\n } else {\n if (this.monthSelectRef && this.months.length > 0) {\n elementToFocus = this.monthSelectRef.select.nativeElement;\n } else if (this.onPreviousMonthKeydown && !this.isPreviousMonthDisabled) {\n elementToFocus = this.previousMonthRef.nativeElement;\n } else {\n elementToFocus = this.activeDateCell;\n }\n }\n\n this.focusElement(event, elementToFocus);\n break;\n case 'Enter':\n event.preventDefault();\n this.getNextMonth();\n break;\n }\n }\n\n @Debounce(200)\n onNextMonthMousedown(): void {\n this.getNextMonth();\n }\n\n @Debounce(200)\n onPreviousMonthMousedown(): void {\n this.getPreviousMonth();\n }\n\n onMonthSelectKeydown(event: KeyboardEvent): void {\n let elementToFocus: HTMLElement;\n switch (event.key) {\n case 'Tab':\n if (!event.shiftKey) {\n if (this.nextMonthRef && !this.nextMonthDisabled) {\n elementToFocus = this.nextMonthRef.nativeElement;\n } else {\n elementToFocus = this.activeDateCell;\n }\n } else {\n if (this.onPreviousMonthKeydown && !this.isPreviousMonthDisabled) {\n elementToFocus = this.previousMonthRef.nativeElement;\n } else {\n elementToFocus = this.activeDateCell;\n }\n }\n\n this.focusElement(event, elementToFocus);\n break;\n }\n }\n\n focusElement(event: KeyboardEvent, elementToFocus: HTMLElement): void {\n if (elementToFocus) {\n elementToFocus.focus();\n }\n\n if (event) {\n event.preventDefault();\n }\n }\n\n setActiveDate(): void {\n if (!this.currentMonth) {\n return;\n }\n\n const today = this.dateService.utcDate();\n const lastDay = new Date(this.currentMonth.year, this.currentMonth.month + 1, 0);\n const newDate = this.activeDate?.date > lastDay.getDate() ? lastDay.getDate() : this.activeDate?.date;\n\n if (this.currentMonth.month !== today.month || this.currentMonth.year !== today.year) {\n const nextMonth = this.currentMonth.month;\n const nextYear = this.currentMonth.year;\n\n this.activeDate = new UtcDate(nextYear, nextMonth, newDate);\n\n } else if (this.activeDate && this.activeDate.month !== this.currentMonth.month) {\n this.activeDate = new UtcDate(this.activeDateValue.year, this.currentMonth.month, newDate);\n\n } else {\n this.activeDate = this.dateService.utcDate();\n }\n }\n\n onMouseDown(date: string, event: MouseEvent): void {\n this.setSelectedDate(this.dateService.utcDate(date));\n this.focusOnNextChange.emit(event);\n }\n\n onDayFocus(day: DayModel): void {\n this.activeDate = this.dateService.utcDate(day.date);\n }\n\n onDayClick(day: DayModel): void {\n if (!day.isAvailable) {\n return;\n }\n\n this.setSelectedDate(this.dateService.utcDate(day.date));\n }\n\n setSelectedDate(date: UtcDate): void {\n if (!date) {\n return;\n }\n\n if (this.nasFormGroup && this.nasFormControlName) {\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n const calendarDate: CalendarDateModel = {\n model: this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale),\n date: date\n };\n\n control.patchValue(calendarDate);\n }\n\n this.selectedDateChange.emit(date);\n\n if (this.weeks && this.weeks.length > 0) {\n for (const week of this.weeks) {\n if (!week) {\n continue;\n }\n\n for (const day of week.days) {\n if (!day) {\n continue;\n }\n\n day.isSelected = day.isAvailable\n && this.dateService.isSameDate(this.dateService.utcDate(day.date), date);\n }\n }\n }\n }\n\n getCellButtonClass(day: DayModel): ClassModel {\n if (!day) {\n return this.getClass('item');\n }\n\n return this.getClass('item', [\n day.isDisabled && 'before',\n day.isSelected && 'selected',\n !this.dateService.isSameMonth(this.dateService.utcDate(day.date), this.currentMonth) && 'empty',\n day.isAvailable && 'available',\n 'large',\n day.isActive && 'active'\n ]);\n }\n\n getNextMonth(): void {\n if (!this.weeks) {\n return;\n }\n\n const firstWeek = this.weeks[0];\n\n if (!firstWeek) {\n return;\n }\n\n const firstValidDay = firstWeek.days\n .find(day => day && this.dateService.isSameMonth(this.dateService.utcDate(day.date), this.currentMonth));\n\n if (!firstValidDay) {\n return;\n }\n\n const nextMonth = this.dateService.utcDate(firstValidDay.date);\n const month = nextMonth.month + 1;\n nextMonth.setMonth(month);\n\n this.currentMonth = nextMonth;\n\n this.applySelectedDateChanges();\n this.monthChange.emit(this.currentMonth);\n this.setPreviousMonthDisabled();\n\n if (!this.availability) {\n this.maxMonthIndex++;\n }\n }\n\n getPreviousMonth(): void {\n if (!this.weeks) {\n return;\n }\n\n const firstWeek = this.weeks[0];\n\n if (!firstWeek) {\n return;\n }\n\n const firstValidDay = firstWeek.days\n .find(day => day && this.dateService.isSameMonth(this.dateService.utcDate(day.date), this.currentMonth));\n\n const previousMonth = this.dateService.utcDate(firstValidDay.date);\n const month = previousMonth.month - 1;\n previousMonth.setMonth(month);\n\n this.currentMonth = previousMonth;\n\n this.applySelectedDateChanges();\n this.monthChange.emit(this.currentMonth);\n this.setPreviousMonthDisabled();\n }\n\n setPreviousMonthDisabled(): void {\n if (this.currentMonth) {\n const previousMonth = new UtcDate(this.currentMonth.year, this.currentMonth.month, this.currentMonth.date);\n const month = previousMonth.month - 1;\n previousMonth.setMonth(month);\n\n if (this.disablePastSelection && this.dateService.isInThePast(previousMonth, true)) {\n this.isPreviousMonthDisabled = true;\n return;\n }\n }\n\n this.isPreviousMonthDisabled = false;\n }\n\n private applySelectedDateChanges() {\n this.availableDays = this.calendarService.getAvailableDays(\n this.currentMonth,\n this.availableDates,\n this.availability,\n this.disablePastSelection,\n this.lowerLimitDate,\n this.activeDate,\n this.selectedDate);\n\n this.selectedMonth = this.months\n .find(x => this.dateService.isSameMonth(this.dateService.utcDate(x.value), this.currentMonth));\n\n this.calendarService.updateAvailableDaysWithSelectedDate(this.availableDays, this.selectedDate);\n this.weeks = this.calendarService.getWeeks(this.availableDays, this.weekStart);\n }\n}\n","<div [nasClass]=\"getClass()\">\n <span [nasClass]=\"getClass('arrow')\"></span>\n <div #calendarContent\n tabindex=\"0\"\n [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button type=\"button\"\n #previousMonthRef\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\"\n [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\"\n (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\"\n [type]=\"'arrow-left--light'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect\n [cssClass]=\"getClass('month')\"\n [inline]=\"true\"\n [simple]=\"true\"\n [options]=\"months\"\n [(selected)]=\"selectedMonth\"\n (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button type=\"button\"\n tabindex=\"0\"\n #nextMonthRef\n [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\"\n [disabled]=\"nextMonthDisabled\"\n (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right--light'\"></nas-icon>\n </button>\n </header>\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr>\n <th *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\"\n *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\"\n [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\"\n *ngFor=\"let day of week?.days\"\n #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\"\n *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate\n tabindex=\"0\">\n <button type=\"button\"\n #dateButton\n (keydown)=\"dateKeyDown($event)\"\n tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\"\n (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\"\n [attr.aria-label]=\"day.date | date : 'dd':'UTC'\">{{day.date | date : 'dd':'UTC':locale}}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n OnInit\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { DayModel } from './calendar/models/day.model';\nimport { SelectOptionModel } from './calendar/models/select-option.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport { UtcDate } from '../../core/models/utc-date.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { SelectComponent } from '../select/select.component';\nimport { CalendarDateModel } from './calendar/calendar-date.model';\n\n/**\n * @description\n * Norwegian Date Picker Component | Functional\n */\n@Component({\n selector: 'nas-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DatepickerComponent extends NasComponentBase implements OnInit {\n timeOptions: Array<SelectOptionModel>;\n model: string;\n show = false;\n selectedTimeOption: SelectOptionModel;\n\n get showBackdrop(): boolean {\n return this.show && !this.exists(this.disableBackdrop);\n }\n set showBackdrop(value: boolean) {\n if (this.show === value) {\n return;\n }\n\n setTimeout(() => {\n this.show = value;\n });\n }\n\n @ViewChild('input') input: ElementRef;\n @ViewChild('calendar') calendar: CalendarComponent;\n @ViewChild('datePickerContent') datePickerContent: ElementRef;\n @ViewChild('timeSelector') timeSelector: SelectComponent;\n\n /**\n * @description\n * Adds 'aria-label' to the backdrops.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * A boolean value when set will disable showing the backdrop on popup open\n */\n @Input() disableBackdrop: boolean;\n\n /**\n * @description\n * Label for no available flights.\n */\n @Input() noAvailableFlightsLabel: string;\n\n /**\n * @description\n * Label for available flights.\n */\n @Input() availableFlightsLabel: string;\n\n /**\n * @description\n * Disable possibility to select dates in the past.\n */\n @Input() disablePastSelection: boolean;\n\n /**\n * @description\n * The lowest date allowed.\n */\n @Input()\n get lowerLimitDate(): UtcDate {\n return this.lowerLimitDateValue;\n }\n set lowerLimitDate(date: UtcDate) {\n this.lowerLimitDateValue = date;\n\n if (this.dateService.isLessThan(this.selectedDate, date, false, true, true)) {\n this.selectedDate = date;\n }\n }\n\n /**\n * @description\n * Sets the datepicker in availability mode where available dates can be added.\n */\n @Input() availability: boolean;\n\n /**\n * @description\n * An array with all the available (selectable) dates of the month.\n */\n @Input() availableDates: Array<UtcDate>;\n\n /**\n * @description\n * boolean value to disable or enable the input of the date picker.\n */\n @Input()\n get disabled() {\n return this.disabledValue;\n }\n set disabled(value: boolean) {\n this.disabledValue = value;\n\n if (this.nasFormGroup && this.nasFormControlName) {\n setTimeout(() => {\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (!control) {\n return;\n }\n\n if (value) {\n control.disable();\n } else {\n control.enable();\n }\n });\n }\n }\n\n /**\n * @description\n * A place holder string for the input for date picker.\n */\n @Input() placeholder: string;\n\n /**\n * @description\n * this will set the required attribute on the input so suer has to date-picker the date.\n */\n @Input() required: boolean;\n\n /**\n * @description\n * Is used to indicate the IDs of the elements that describe the date picker input.\n */\n @Input() ariaDescribedby: string;\n\n /**\n * @description\n * Aria label for input that enables date-picker popup once clicked. For accessibility web standards.\n */\n @Input() ariaLabel: string;\n\n /**\n * @description\n * The display format of the date when user has selected the date and it is being shown in the input box for the date picker.\n * Please look at the angular Date pipe for valid formats and variations.\n */\n @Input() dateDisplayFormat = 'EEEE d, MMMM yyyy';\n\n /**\n * @description\n * The time display format.\n */\n @Input() timeDisplayFormat = 'HH:mm';\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * A modifier to remove the padding and margins around the element.\n */\n @Input() compact: boolean;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * An array of times to be added in the time selector.\n */\n @Input()\n get times(): Array<UtcDate> {\n return this.timesValue;\n }\n set times(times: Array<UtcDate>) {\n if (!times) {\n return;\n }\n\n this.timesValue = times;\n this.timeOptions = times.map(x => {\n x.year = new Date().getUTCFullYear();\n const option: SelectOptionModel = {\n title: this.datePipe.transform(this.dateService.date(x), this.timeDisplayFormat, 'UTC', this.locale),\n value: this.dateService.date(x).toISOString()\n };\n\n return option;\n });\n\n this.dateDisplayFormat = 'mediumDate';\n }\n\n /**\n * @description\n * The calendar is open or closed.\n */\n @Input()\n get open(): boolean {\n return this.openValue;\n }\n set open(open: boolean) {\n if (open === this.openValue) {\n return;\n }\n\n this.openValue = open;\n\n if (open) {\n this.openCalendar();\n } else {\n this.closeCalendar();\n }\n }\n\n /**\n * @description\n * Set selected month.\n */\n @Input()\n get selectedMonth(): UtcDate {\n return this.selectedMonthValue;\n }\n set selectedMonth(month: UtcDate) {\n if (!month) {\n return;\n }\n\n if (this.dateService.isSameMonth(this.selectedMonthValue, month)) {\n return;\n }\n\n setTimeout(() => {\n this.selectedMonthValue = month;\n this.selectedMonthChange.emit(month);\n });\n }\n\n /**\n * @description\n * Gets or sets the selected Date in the date picker. Setting this date will highlight the date in the date picker\n * and user can change it by clicking from any other enabled dates\n * or by navigating betrween months and selecting from different available month.\n */\n @Input()\n get selectedDate(): UtcDate {\n return this.selectedDateValue;\n }\n set selectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n if (this.selectedDateValue && this.dateService.isSameDate(this.selectedDateValue, date)) {\n return;\n }\n\n if (this.selectedTimeValue) {\n date = new UtcDate(date.year, date.month, date.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);\n }\n\n this.selectedDateValue = date;\n\n if (this.nasFormGroup && this.nasFormControlName) {\n\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n if (control) {\n const calendarDate: CalendarDateModel = {\n model: this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale),\n date: date\n };\n\n control.patchValue(calendarDate);\n }\n }\n\n setTimeout(() => {\n this.model = this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale);\n });\n\n this.selectedDateChange.emit(date);\n\n if (this.show) {\n this.closeCalendar();\n }\n }\n\n /**\n * @description\n * Sets the selected time in the time selector.\n */\n @Input()\n get selectedTime(): UtcDate {\n return this.selectedTimeValue;\n }\n set selectedTime(time: UtcDate) {\n if (!time) {\n return;\n }\n\n this.selectedTimeValue = time;\n\n if (this.timeOptions && this.timeOptions.length > 0) {\n const timeOption = this.timeOptions.find(x => x.value === this.dateService.date(time).toISOString());\n\n if (timeOption) {\n this.selectedTimeOption = timeOption;\n }\n }\n\n if (this.selectedDate) {\n this.selectedDate = new UtcDate(\n this.selectedDate.year,\n this.selectedDate.month,\n this.selectedDate.date,\n this.selectedTimeValue.hours,\n this.selectedTimeValue.minutes);\n } else if (this.activeDate) {\n this.selectedDate = new UtcDate(\n this.activeDate.year,\n this.activeDate.month,\n this.activeDate.date,\n this.selectedTimeValue.hours,\n this.selectedTimeValue.minutes\n );\n }\n }\n\n /**\n * @description\n * ARIA label for the previous month button in the calendar.\n */\n @Input() ariaLabelPreviousMonth: string;\n\n /**\n * @description\n * ARIA label for the next month button in the calendar.\n */\n @Input() ariaLabelNextMonth: string;\n\n /**\n * @description\n * Date selected by the user by clicking in date-picker date-box.\n */\n @Output() selectedDateChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * Month selected by the user by clicking in drop down for month selection or month navigation buttons.\n */\n @Output() selectedMonthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * The calendar is open or closed.\n */\n @Output() openChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * When a user has actively changed the date.\n */\n @Output() focusOnNextChange = new EventEmitter<KeyboardEvent | MouseEvent>();\n\n /**\n * @description\n * When a user has pressed shift + tab to go to previous control.\n */\n @Output() focusOnPreviousChange = new EventEmitter<KeyboardEvent | MouseEvent>();\n\n get activeDate(): UtcDate {\n if (this.selectedDate && this.activeDateValue &&\n this.dateService.isLessThan(this.activeDateValue, this.selectedDate, false, true, true)) {\n return this.activeDateValue;\n }\n\n if (this.activeDateValue) {\n return this.activeDateValue;\n } else if (this.selectedDate) {\n this.activeDateValue = this.selectedDate;\n } else {\n const now = new Date();\n this.activeDateValue = new UtcDate(now.getFullYear(), now.getMonth(), now.getDate());\n }\n return this.activeDateValue;\n }\n set activeDate(date: UtcDate) {\n if (this.lowerLimitDate && this.dateService.isLessThan(date, this.lowerLimitDate, false, true, true)) {\n return;\n }\n\n this.activeDateValue = date;\n\n clearTimeout(this.activeDateTimeout);\n\n this.activeDateTimeout = setTimeout(() => {\n this.model = this.datePipe.transform(this.dateService.date(this.selectedDate), this.dateDisplayFormat, 'UTC', this.locale);\n });\n }\n\n private openCalendarTimeout: any;\n private activeDateTimeout: any;\n private selectedDateValue: UtcDate;\n private openValue: boolean;\n private activeDateValue: UtcDate;\n private timesValue: Array<UtcDate>;\n private selectedTimeValue: UtcDate;\n private selectedMonthValue: UtcDate;\n private disabledValue: boolean;\n private forceNotOpenCalendar = false;\n private lowerLimitDateValue: UtcDate;\n\n constructor(\n private datePipe: DatePipe,\n private dateService: DateHelper) {\n super('nas-datepicker');\n }\n\n ngOnInit(): void {\n if (this.nasFormGroup && this.nasFormControlName) {\n this.nasFormGroup\n .get(this.nasFormControlName)\n .valueChanges\n .subscribe(value => {\n if (this.model === value?.model) {\n return;\n }\n\n setTimeout(() => {\n this.model = value?.model;\n this.selectedDateValue = value?.date;\n });\n });\n }\n }\n\n onInputKeydownShiftTab(event: KeyboardEvent): void {\n this.closeCalendar();\n this.focusOnPreviousChange.emit(event);\n }\n\n onCalendarKeyDown(event: KeyboardEvent): void {\n let currentActiveDate = this.activeDate.date;\n let date: UtcDate;\n if (document.activeElement === this.input.nativeElement) {\n event.stopImmediatePropagation();\n }\n\n switch (event.key) {\n case 'ArrowRight':\n if (this.isActiveElementMonthButtons()) {\n event.preventDefault();\n break;\n }\n\n currentActiveDate++;\n\n this.activeDate = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));\n this.setFocusOnActiveDateAsync();\n break;\n case 'ArrowLeft':\n if (this.isActiveElementMonthButtons()) {\n event.preventDefault();\n break;\n }\n\n currentActiveDate--;\n date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));\n\n if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {\n break;\n }\n\n this.activeDate = date;\n this.setFocusOnActiveDateAsync();\n break;\n case 'ArrowUp':\n if (this.isActiveElementMonthButtons()) {\n event.preventDefault();\n break;\n }\n\n currentActiveDate -= 7;\n date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));\n\n if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {\n break;\n }\n\n this.activeDate = date;\n this.setFocusOnActiveDateAsync();\n event.preventDefault();\n break;\n case 'ArrowDown':\n if (this.isActiveElementMonthButtons()) {\n event.preventDefault();\n break;\n }\n\n currentActiveDate += 7;\n this.activeDateValue = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));\n\n this.setFocusOnActiveDateAsync();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeCalendar();\n\n this.forceNotOpenCalendar = true;\n\n if (this.input) {\n this.input.nativeElement.select();\n }\n break;\n case 'Enter':\n if (this.isActiveElementMonthButtons()) {\n return;\n }\n\n this.setFocusOnTimeSelectorOrNext(event);\n break;\n }\n }\n\n onTimeSelectorKeydown(event: KeyboardEvent): void {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n this.openCalendar();\n } else {\n this.focusOnNextChange.emit(event);\n }\n\n event.preventDefault();\n }\n }\n\n setFocusOnTimeSelectorOrNext(event: KeyboardEvent | MouseEvent): void {\n if (this.timeOptions) {\n setTimeout(() => {\n const selectElement = this.timeSelector.select.nativeElement;\n if (selectElement) {\n selectElement.focus();\n }\n });\n } else {\n this.focusOnNextChange.emit(event);\n }\n\n this.closeCalendar();\n }\n\n onMonthChange(currentMonth: UtcDate): void {\n this.selectedMonth = currentMonth;\n }\n\n onMouseDownDatepicker(): void {\n this.openCalendar();\n }\n\n openCalendar(): void {\n if (this.show || this.disabled || this.forceNotOpenCalendar) {\n this.forceNotOpenCalendar = false;\n return;\n }\n\n setTimeout(() => {\n this.show = true;\n });\n\n this.activeDate = this.selectedDate;\n\n clearTimeout(this.openCalendarTimeout);\n\n this.openCalendarTimeout = setTimeout(() => {\n this.input.nativeElement.select();\n this.openChange.emit(this.show);\n }, 100);\n }\n\n onTimeSelected(option: SelectOptionModel): void {\n this.selectedTime = this.dateService.utcDate(option.value);\n this.focusOnNextChange.emit();\n }\n\n getMainClass(): Array<ClassModel> {\n return this.getContainerClass('', [(this.exists(<any>this.timeOptions) && 'has-time'),\n (this.exists(this.compact) && 'compact')]);\n }\n\n getLabelClass(): ClassModel {\n if (this.exists(this.disabled)) {\n return this.getClass('date-picker-label', ['disabled']);\n } else {\n return this.getClass('date-picker-label');\n }\n }\n\n closeCalendar(): void {\n setTimeout(() => {\n this.show = false;\n });\n\n this.openChange.emit(false);\n }\n\n selectDate(event: KeyboardEvent): void {\n if (!this.isModelValid()) {\n return;\n }\n\n this.activeDate = this.date();\n\n if (!this.someValidDaysEqualsSelectedDay(this.activeDate)) {\n return;\n }\n\n this.selectedDate = this.activeDate;\n this.setFocusOnTimeSelectorOrNext(event);\n\n this.closeCalendar();\n }\n\n private isActiveElementMonthButtons(): boolean {\n return document.activeElement === this.calendar.nextMonthRef.nativeElement ||\n document.activeElement === this.calendar.previousMonthRef.nativeElement ||\n this.calendar.monthSelectRef && document.activeElement === this.calendar.monthSelectRef.select.nativeElement;\n }\n\n private setFocusOnActiveDateAsync(): void {\n setTimeout(() => {\n const elmementToFocus = this.calendar.activeDateCell;\n if (elmementToFocus) {\n elmementToFocus.focus();\n }\n }, 200);\n }\n\n private isModelValid(): boolean {\n const timestamp = Date.parse(this.model);\n return isNaN(timestamp) !== true;\n }\n\n private allDays(): Array<DayModel> {\n const allDays = new Array<DayModel>();\n\n if (this.calendar) {\n this.calendar.weeks.forEach(x => x && x.days.forEach(d => allDays.push(d)));\n }\n\n return allDays;\n }\n\n private someValidDaysEqualsSelectedDay(selectedDay: UtcDate): boolean {\n return this.allDays()\n .some(x => x\n && this.dateService.isSameDate(this.dateService.utcDate(x.date), selectedDay)\n && (x.isAvailable || !x.isDisabled));\n }\n\n private date(): UtcDate {\n const modelDate = new Date(this.model);\n const modelUtcDate = new UtcDate(modelDate.getFullYear(), modelDate.getMonth(), modelDate.getDate());\n return modelUtcDate;\n }\n}\n","<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper')\">\n <div [nasClass]=\"getClass('controls', show && 'active')\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent\n [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input\n [nasClass]=\"getClass('date-picker')\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-haspopup]=\"true\"\n (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\"\n (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\"\n (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\"\n (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\"\n [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\"\n [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\"\n (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"availableDates\"\n [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\"\n [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\"\n (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\">\n </nas-calendar>\n </div>\n <nas-backdrop [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\"\n [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-select #timeSelector\n [selected]=\"selectedTimeOption\"\n (selectedChange)=\"onTimeSelected($event)\"\n (keydown)=\"onTimeSelectorKeydown($event)\">\n <nas-option *ngFor=\"let time of timeOptions\"\n [option]=\"time\"></nas-option>\n </nas-select>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n ViewChild,\n ElementRef,\n AfterViewChecked,\n OnInit,\n OnDestroy\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport { UtcDate } from '../../core/models/utc-date.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { DatepickerComponent } from '../datepicker/datepicker.component';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @description\n * Norwegian Datepicker Combo Component | Functional\n */\n@Component({\n selector: 'nas-datepicker-combo',\n templateUrl: './datepicker-combo.component.html',\n styleUrls: ['./datepicker-combo.component.scss'],\n encapsulation: ViewEncapsulation.Emulated\n})\nexport class DatepickerComboComponent extends NasComponentBase implements OnInit, AfterViewChecked, OnDestroy {\n inboundLowerLimitDate: UtcDate;\n\n @ViewChild('datepickerOutbound') datepickerOutbound: DatepickerComponent;\n @ViewChild('datepickerInbound') datepickerInbound: ElementRef;\n @ViewChild('container') container: ElementRef;\n\n /**\n * @description\n * Adds 'aria-label' to the backdrops.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * Sets outbound datepicker open.\n */\n @Input()\n get outboundOpen(): boolean {\n return this.outboundOpenValue;\n }\n set outboundOpen(value: boolean) {\n if (this.outboundDisabled || value === this.outboundOpenValue) {\n return;\n }\n\n setTimeout(() => {\n this.outboundOpenValue = value;\n this.outboundOpenChange.emit(value);\n\n if (value && this.inboundOpen) {\n this.inboundOpen = false;\n }\n });\n }\n\n /**\n * @description\n * Sets inbound datepicker open.\n */\n @Input()\n get inboundOpen(): boolean {\n return this.inboundOpenValue;\n }\n set inboundOpen(value: boolean) {\n if (this.inboundDisabled || value === this.inboundOpenValue) {\n return;\n }\n\n if (this.outboundOnly) {\n this.focusOnNextChange.emit();\n return;\n }\n\n setTimeout(() => {\n this.inboundOpenValue = value;\n this.inboundOpenChange.emit(value);\n\n if (value && this.outboundOpen) {\n this.outboundOpen = false;\n }\n });\n }\n\n /**\n * @description\n * Label for no available flights.\n */\n @Input() noAvailableFlightsLabel: string;\n\n /**\n * @description\n * Label for available flights.\n */\n @Input() availableFlightsLabel: string;\n\n /**\n * @description\n * Disable possibility to select dates in the past.\n */\n @Input() disablePastSelection: boolean;\n\n /**\n * @description\n * Disable possibility to select outbound dates.\n */\n @Input() outboundDisabled: boolean;\n\n /**\n * @description\n * Disable possibility to select inbound dates.\n */\n @Input() inboundDisabled: boolean;\n\n /**\n * @description\n * Remove the inbound datepicker if set.\n */\n @Input() outboundOnly: boolean;\n\n /**\n * @description\n * Label for outbound datepicker.\n */\n @Input() outboundLabel: string;\n\n /**\n * @description\n * Label for inbound datepicker.\n */\n @Input() inboundLabel: string;\n\n /**\n * @description\n * Sets the datepickers in availability mode where available dates can be added.\n */\n @Input() availability: boolean;\n\n /**\n * @description\n * Available dates for outbound calendar.\n */\n @Input() outboundAvailableDates: Array<UtcDate>;\n\n /**\n * @description\n * Available dates for inbound calendar.\n */\n @Input() inboundAvailableDates: Array<UtcDate>;\n\n /**\n * @description\n * If set, Enables the time dropdown selector alongside datepicker.\n */\n\n @Input() times: Array<UtcDate>;\n\n /**\n * @description\n * The display format of the date when user has selected the date and it is being shown in the input box for the date picker.\n * Please look at the angular Date pipe for valid formats and variations.\n */\n @Input() dateDisplayFormat = 'EEEE d, MMMM yyyy';\n\n /**\n * @description\n * The time display format.\n */\n @Input() timeDisplayFormat = 'HH:mm';\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * A modifier to remove the padding and margins around the element.\n */\n @Input() compact: boolean;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: FormGroup;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameOutbound: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameInbound: string;\n\n /**\n * @description\n * Selected datefor outbound calendar.\n */\n @Input()\n get outboundSelectedDate() {\n return this.outboundSelectedDateValue;\n }\n set outboundSelectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n if (this.outboundSelectedDateValue && this.dateService.isSameDate(this.outboundSelectedDateValue, date)) {\n return;\n }\n\n this.outboundSelectedDateValue = date;\n\n this.inboundLowerLimitDate = new UtcDate(date.year, date.month, 1);\n this.inboundLowerLimitDate.setDate(date.date + this.inboundLowerLimitDateOffset);\n\n this.outboundSelectedDateChange.emit(date);\n }\n\n /**\n * @description\n * Selected datefor inbound calendar.\n */\n @Input()\n get inboundSelectedDate() {\n return this.inboundSelectedDateValue;\n }\n set inboundSelectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n if (this.inboundSelectedDateValue && this.dateService.isSameDate(this.inboundSelectedDateValue, date)) {\n return;\n }\n\n this.inboundSelectedDateValue = date;\n this.inboundSelectedDateChange.emit(date);\n }\n\n @Input() disableBackdrop: boolean;\n\n /**\n * @description\n * Sets the outbound selected time in the time selector.\n */\n @Input() outboundSelectedTime: UtcDate;\n\n /**\n * @description\n * Sets the inbound selected time in the time selector.\n */\n @Input() inboundSelectedTime: UtcDate;\n\n /**\n * @description\n * ARIA label for the previous month button in the calendar.\n */\n @Input() ariaLabelPreviousMonth: string;\n\n /**\n * @description\n * ARIA label for the next month button in the calendar.\n */\n @Input() ariaLabelNextMonth: string;\n\n /**\n * @description\n * Sets a relative number to decide when the inbound lower limit date should be based on selected outbound date.\n *\n * The lower limit date for inbound is set by default equal to the selected outbound date.\n *\n * If this number is positive, the inbound lower limit date will add the number of days to the selected outbound date.\n * If this number is negative, the inbound lower limit date will subtract the number of days to the selected outbound date.\n */\n @Input() inboundLowerLimitDateOffset = 0;\n\n /**\n * @description\n * When selected datehas been changed on the outbound calendar.\n */\n @Output() outboundSelectedDateChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When selected datehas been changed on the inbound calendar.\n */\n @Output() inboundSelectedDateChange = new EventEmitter<UtcDate>();\n\n\n /**\n * @description\n * Outbound datepicker is open or closed.\n */\n @Output() outboundOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Inbound datepicker is open or closed.\n */\n @Output() inboundOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Outbound calendar changes month.\n */\n @Output() outboundMonthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * Inbound calendar changes month.\n */\n @Output() inboundMonthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When a user has actively changed the date.\n */\n @Output() focusOnNextChange = new EventEmitter();\n\n /**\n * @description\n * When a user has pressed shift + tab to go to previous control.\n */\n @Output() focusOnPreviousChange = new EventEmitter<KeyboardEvent | MouseEvent>();\n\n get inboundSelectedMonth(): UtcDate {\n return this.inboundSelectedMonthValue;\n }\n set inboundSelectedMonth(month: UtcDate) {\n if (!month) {\n return;\n }\n\n if (this.dateService.isSameMonth(month, this.inboundSelectedMonthValue)) {\n return;\n }\n\n setTimeout(() => {\n this.inboundSelectedMonthValue = month;\n this.inboundMonthChange.emit(month);\n });\n }\n\n private outboundSelectedDateValue: UtcDate;\n private inboundSelectedDateValue: UtcDate;\n private inboundSelectedMonthValue: UtcDate;\n private inboundOpenValue = false;\n private outboundOpenValue = false;\n private containerWidth = new BehaviorSubject<number>(0);\n private inboundValueChangesSubscription: Subscription;\n private outboundValueChangesSubscription: Subscription;\n\n constructor(private dateService: DateHelper, private deviceHelper: DeviceHelper) {\n super('nas-datepicker-combo');\n\n window.onresize = () => {\n this.updateContainerWidth();\n };\n }\n\n ngOnInit(): void {\n if (this.nasFormGroup) {\n if (this.nasFormControlNameOutbound) {\n this.outboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameOutbound)\n .valueChanges\n .subscribe(outbound => {\n this.outboundSelectedDate = outbound?.date;\n });\n }\n if (this.nasFormControlNameInbound) {\n this.inboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameInbound)\n .valueChanges\n .subscribe(inbound => {\n this.inboundSelectedDate = inbound?.date;\n });\n }\n }\n }\n\n ngAfterViewChecked(): void {\n this.updateContainerWidth();\n }\n\n onFocusOnNext(event: KeyboardEvent | MouseEvent): void {\n this.focusOnNextChange.emit(event);\n }\n\n onFocusOnPrevious(event: KeyboardEvent): void {\n this.focusOnPreviousChange.emit(event);\n }\n\n onInboundFocusOnPrevious(): void {\n if (this.times && this.times.length > 0) {\n const selectElement = this.datepickerOutbound.timeSelector?.select?.nativeElement as HTMLElement;\n\n setTimeout(() => {\n selectElement?.focus();\n });\n\n this.inboundOpenChange.emit(false);\n } else {\n this.outboundOpen = true;\n }\n }\n\n onOutboundMonthChange(date: UtcDate): void {\n this.outboundMonthChange.emit(date);\n this.inboundSelectedMonthValue = date;\n }\n\n getMainClass(): Array<ClassModel> {\n const widths = [\n this.deviceHelper.isWidthTablet(this.containerWidth.getValue()) && 'md',\n this.deviceHelper.isWidthDesktop(this.containerWidth.getValue()) && 'lg'\n ];\n\n if (this.exists(this.compact)) {\n return this.getContainerClass('', ['compact', ...widths]);\n } else {\n return this.getContainerClass('', [...widths]);\n }\n }\n\n checkOutboundOnly(): boolean {\n return !(this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly));\n }\n\n checkInboundDisabled(): boolean {\n return (!this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly))\n || this.exists(this.inboundDisabled);\n }\n\n ngOnDestroy() {\n this.inboundValueChangesSubscription?.unsubscribe();\n this.outboundValueChangesSubscription?.unsubscribe();\n }\n\n private updateContainerWidth(): void {\n const containerOffsetWidth = (this.container.nativeElement as HTMLElement).offsetWidth;\n\n if (containerOffsetWidth > 0) {\n this.containerWidth.next(containerOffsetWidth);\n }\n }\n}\n","<div [nasClass]=\"getMainClass()\"\n #container>\n <div [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerOutbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameOutbound\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"outboundAvailableDates\"\n [times]=\"times\"\n [selectedTime]=\"outboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [disabled]=\"exists(outboundDisabled)\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"inboundOpen = true\"\n (focusOnPreviousChange)=\"onFocusOnPrevious($event)\"\n (selectedMonthChange)=\"onOutboundMonthChange($event)\"\n [(open)]=\"outboundOpen\"\n [(selectedDate)]=\"outboundSelectedDate\">{{outboundLabel}}</nas-datepicker>\n </div>\n <span [nasClass]=\"getClass('separator')\"></span>\n <div *ngIf=\"checkOutboundOnly()\"\n [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerInbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameInbound\"\n [disabled]=\"checkInboundDisabled()\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"inboundAvailableDates\"\n [lowerLimitDate]=\"inboundLowerLimitDate\"\n [times]=\"times\"\n [selectedTime]=\"inboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNext($event)\"\n (focusOnPreviousChange)=\"onInboundFocusOnPrevious()\"\n [(open)]=\"inboundOpen\"\n [(selectedMonth)]=\"inboundSelectedMonth\"\n [(selectedDate)]=\"inboundSelectedDate\">{{inboundLabel}}</nas-datepicker>\n </div>\n</div>","import { Component, Input, Output, EventEmitter, ViewEncapsulation, ViewChild } from '@angular/core';\n\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { SelectOptionModel } from '../select/models/select-option.model';\nimport { SubsidyDiscountModel } from './models/subsidy-discount.model';\nimport { ButtonComponent } from '../button/button.component';\n\n/**\n * @description\n * Norwegian Subsidy Discount Component | Functional\n*/\n@Component({\n selector: 'nas-subsidy-discount',\n templateUrl: './subsidy-discount.component.html',\n styleUrls: ['./subsidy-discount.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SubsidyDiscountComponent extends NasComponentBase {\n @ViewChild('infoButton') infoButton: ButtonComponent;\n\n options: Array<SelectOptionModel>;\n selectedOption: SelectOptionModel;\n\n /**\n * @description\n * Add custom label styling.\n */\n @Input() label: string;\n\n /**\n * @description\n * Set icon on component. Icon need to exist in medium size. Default value is 'family'\n */\n @Input() icon = 'family';\n\n /**\n * @description\n * Gets or sets the selected discount value.\n */\n @Input()\n get selectedDiscount(): SubsidyDiscountModel {\n return this.selectedDiscountValue;\n }\n set selectedDiscount(discount: SubsidyDiscountModel) {\n if (!discount || this.selectedDiscountValue && this.selectedDiscountValue.code === discount.code) {\n return;\n }\n\n this.selectedDiscountValue = discount;\n if (this.options) {\n this.selectedOption = this.options.find(x => x.value === discount.code);\n }\n }\n\n /**\n * @description\n * Gets or sets discounts value.\n */\n @Input()\n get discounts(): Array<SubsidyDiscountModel> {\n return this.discountsValue;\n }\n set discounts(discounts: Array<SubsidyDiscountModel>) {\n if (this.options) {\n return;\n }\n\n this.options = discounts.map(x => {\n const selectOption: SelectOptionModel = {\n title: x.displayName,\n value: x.code\n };\n\n return selectOption;\n });\n\n this.discountsValue = discounts;\n\n if (this.selectedDiscountValue) {\n this.selectedOption = this.options.find(x => x.value === this.selectedDiscountValue.code);\n }\n }\n\n /**\n * @description\n * An even that is fired every time the info button is clicked.\n */\n @Output() infoButtonClick = new EventEmitter();\n\n /**\n * @description\n * Fires when info button has a keydown event.\n */\n @Output() infoButtonKeydown = new EventEmitter<KeyboardEvent>();\n\n /**\n * @description\n * An even that is fired every time the info button is clicked.\n */\n @Output() discountSelectChange = new EventEmitter<SubsidyDiscountModel>();\n\n private discountsValue: Array<SubsidyDiscountModel>;\n private selectedDiscountValue: SubsidyDiscountModel;\n\n constructor() {\n super('nas-subsidy-discount');\n }\n\n onInfoButtonClick(): void {\n this.infoButtonClick.emit();\n }\n\n onSelectedChange(option: SelectOptionModel): void {\n const selectedDiscount = this.discounts.find(x => x.code === option.value);\n this.selectedOption = option;\n this.discountSelectChange.emit(selectedDiscount);\n }\n\n onInfoButtonKeydown(event: KeyboardEvent): void {\n this.infoButtonKeydown.emit(event);\n }\n}\n","<div [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('box')\">\n <nas-icon [cssClass]=\"getClass('icon')\"\n [type]=\"'medium'\"\n [icon]=\"icon\"></nas-icon>\n <div [nasClass]=\"getClass('content')\">\n <div>\n <label [nasClass]=\"getClass('label')\">{{label}}</label>\n <nas-button #infoButton\n [cssClass]=\"getClass('info')\"\n [overrideBaseCssClass]=\"true\"\n [ariaLabel]=\"label\"\n (clickChange)=\"onInfoButtonClick()\"\n (keydown)=\"onInfoButtonKeydown($event)\"></nas-button>\n </div>\n <nas-select [spaceless]=\"true\"\n [fill]=\"true\"\n [cssClass]=\"getClass('select')\"\n [options]=\"options\"\n (selectedChange)=\"onSelectedChange($event)\"\n [selected]=\"selectedOption\"></nas-select>\n </div>\n </div>\n</div>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n EventEmitter,\n Input,\n Output\n } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { AirportModel } from '../airport-select/models/airport.model';\n\n/**\n * @description\n * Norwegian Suggestions Component | Functional\n */\n@Component({\n selector: 'nas-suggestions',\n templateUrl: './suggestions.component.html',\n styleUrls: ['./suggestions.component.scss']\n})\nexport class SuggestionsComponent extends NasComponentBase {\n\n /**\n * @description\n * Suggestions to be displayed\n */\n @Input() suggestions: Array<AirportModel>;\n\n /**\n * @description\n * A label for 'or'\n */\n @Input() orLabel: string;\n\n /**\n * @description\n * Fired when an airport is selected\n */\n @Output() airportSelect = new EventEmitter<AirportModel>();\n\n constructor() {\n super('nas-suggestions');\n }\n\n onAirportSelect(airport: AirportModel): void {\n if (!airport) {\n return;\n }\n\n this.airportSelect.emit(airport);\n }\n}\n","<div *ngIf=\"suggestions\"\n [nasClass]=\"getClass()\">\n <span *ngFor=\"let suggestion of suggestions?.slice(0, 3); let index = index\">\n <nas-button link\n [tabindex]=\"-1\"\n (clickChange)=\"onAirportSelect(suggestion)\">\n {{suggestion.displayName}}\n </nas-button>\n <span *ngIf=\"index === 0 && suggestions.length > 2\">,&nbsp;</span>\n <span *ngIf=\"index === (suggestions.length - 2)\">&nbsp;{{orLabel}}&nbsp;</span>\n <span *ngIf=\"index === (suggestions.length - 1)\">?</span>\n </span>\n</div>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n AfterViewChecked,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ChangeDetectorRef\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\nimport { TripType } from './enums/trip-type.enum';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { AbandonedBasketItemModel } from '../../core/models/abandoned-basket-item.model';\nimport { ClassModel } from '../../core/models/class.model';\nimport { UtcDate } from '../../core/models/utc-date.model';\nimport { AbandonedBasketService } from '../../core/services/abandoned-basket/abandoned-basket.service';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { SortService } from '../../core/services/sort/sort.service';\nimport { AirportSelectComponent } from '../airport-select/airport-select.component';\nimport { AirportModel } from '../airport-select/models/airport.model';\nimport { DatepickerComboComponent } from '../datepicker-combo/datepicker-combo.component';\nimport { DropdownComponent } from '../dropdown/dropdown.component';\nimport { PassengersModel } from '../passenger-select/models/passengers.model';\nimport { SubsidyDiscountModel } from '../subsidy-discount/models/subsidy-discount.model';\nimport { PassengerSelectComponent } from '../passenger-select/passenger-select.component';\nimport { SubsidyDiscountComponent } from '../subsidy-discount/subsidy-discount.component';\n\n/**\n * @description\n * Norwegian Filter Component | Functional\n */\n@Component({\n selector: 'nas-filter',\n templateUrl: './filter.component.html',\n styleUrls: ['./filter.component.scss']\n})\nexport class FilterComponent extends NasComponentBase implements OnInit, AfterViewChecked {\n @ViewChild('passengerSelectDropdown') passengerSelectDropdown: DropdownComponent;\n @ViewChild('passengerSelect') passengerSelect: PassengerSelectComponent;\n @ViewChild('tripSwitch') tripSwitch: DropdownComponent;\n @ViewChild('transitSwitch') transitSwitch: DropdownComponent;\n @ViewChild('airportSelect') airportSelect: AirportSelectComponent;\n @ViewChild('datepickerCombo') datepickerCombo: DatepickerComboComponent;\n @ViewChild('container') container: ElementRef;\n @ViewChild('tripTypeOneway') tripTypeOneway: ElementRef;\n @ViewChild('tripTypeRoundTrip') tripTypeRoundTrip: ElementRef;\n @ViewChild('transitTypeDirectOnly') transitTypeDirectOnly: ElementRef;\n @ViewChild('transitTypeTransit') transitTypeTransit: ElementRef;\n @ViewChild('subsidyDiscount') subsidyDiscount: SubsidyDiscountComponent;\n\n latestSearchesOrigin: Array<AirportModel>;\n latestSearchesDestination: Array<AirportModel>;\n displaySummary = true;\n nativeElement: HTMLElement;\n inboundLowerLimitDate: UtcDate;\n containerWidth = new BehaviorSubject<number>(0);\n maximize = false;\n isNasGroupValid = false;\n\n get outboundOpen(): boolean {\n return this.outboundOpenValue;\n }\n set outboundOpen(value: boolean) {\n if (this.outboundOpenValue === value) {\n return;\n }\n\n if (value) {\n this.closeDropdowns();\n\n if (this.airportSelect) {\n this.airportSelect.originOpen = false;\n this.airportSelect.destinationOpen = false;\n }\n }\n\n this.outboundOpenValue = value;\n this.outboundOpenChange.emit(value);\n }\n\n get inboundOpen(): boolean {\n return this.inboundOpenValue;\n }\n set inboundOpen(value: boolean) {\n if (this.inboundOpenValue === value) {\n return;\n }\n\n if (value) {\n this.closeDropdowns();\n\n if (this.airportSelect) {\n this.airportSelect.originOpen = false;\n this.airportSelect.destinationOpen = false;\n }\n }\n\n clearTimeout(this.inboundOpenTimeout);\n\n this.inboundOpenTimeout = setTimeout(() => {\n this.inboundOpenValue = value;\n });\n\n this.inboundOpenChange.emit(value);\n }\n\n private inboundOpenTimeout: any;\n\n /**\n * @required\n * @description\n * A record containing keys with all airport codes with corresponding array of airport codes connected to the key.\n */\n @Input() airportRelations: Record<string, Array<string>>;\n\n /**\n * @description\n * Adds 'aria-label' on the clear button inside the airport select inputs.\n */\n @Input() ariaLabelClear: string;\n\n /**\n * @description\n * ARIA label for the subtract buttons.\n */\n @Input() ariaLabelSubtract: string;\n\n /**\n * @description\n * Adds 'aria-label' to the backdrops.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * ARIA label for the add buttons.\n */\n @Input() ariaLabelAdd: string;\n\n /**\n * @description\n * A list of airports that should be displayed in the origin dropdown.\n * If not included, all airports will be displayed.\n */\n @Input() allowedOriginAirports: Array<AirportModel>;\n\n /**\n * @description\n * An array of airports that are restricted for destination airports. It will default to airports if not set.\n */\n @Input() allowedDestinationAirports: Array<AirportModel>;\n\n /**\n * @description\n * A boolean indicating if airports that the user allready has searh for should be displayed.\n */\n @Input() displayLatestSearches: boolean;\n\n /**\n * @description\n * Display switch UI to interchange origin and destination airport.\n */\n @Input() useSwitch?: boolean;\n\n /**\n * @description\n * A boolean indicating if airports that are close to the user should be displayed.\n */\n @Input() displayClosestAirports: boolean;\n\n /**\n * @description\n * The airport code of the origin airport. It will set the selected origin airport based on this value.\n */\n @Input() originAirportCode: string;\n\n /**\n * @description\n * The airport code of the destination airport. It will set the selected destination airport based on this value.\n */\n @Input() destinationAirportCode: string;\n\n /**\n * @description\n * A label that will be added to the passenger select dropdown.\n */\n @Input() passengerSelectLabel: string;\n\n /**\n * @description\n * The total maximum amount of passengers in the passenger select dropdown.\n */\n @Input() maxPaxCount: number;\n\n /**\n * @description\n * An array of different passenger types that will be displayed.\n */\n @Input()\n get passengers(): Array<PassengersModel> {\n return this.passengersValue;\n }\n set passengers(value: Array<PassengersModel>) {\n if (!value) {\n return;\n }\n\n this.passengersValue = value;\n this.passengersChange.emit(value);\n }\n\n /**\n * @description\n * The minimum amount of adults that can be selected in the passenger select dropdown.\n */\n @Input() minAdultCount: number;\n\n /**\n * @description\n * A label for round trip selection in the trip switch dropdown.\n */\n @Input() tripSwitchRoundTripLabel: string;\n\n /**\n * @description\n * A label for one way selection in the trip switch dropdown.\n */\n @Input() tripSwitchOneWayLabel: string;\n\n /**\n * @description\n * A label for direct only selection in the transit switch dropdown.\n */\n @Input() directOnlyLabel: string;\n\n /**\n * @description\n * A label for both direct and transit selection in the transit switch dropdown.\n */\n @Input() directTransitLabel: string;\n\n /**\n * @description\n * Indicates if the filter should be minimized on mobile screen sizes.\n */\n @Input() minimizeOnMobile?: boolean;\n\n /**\n * @description\n * Indicates if the edit search of accordion should be expended on mobile screen sizes.\n */\n @Input()\n get expandedAccordionMobile() {\n return this.expandedAccordionMobileValue;\n }\n set expandedAccordionMobile(value: boolean) {\n if (value === this.expandedAccordionMobileValue) {\n return;\n }\n\n this.expandedAccordionMobileValue = value;\n }\n\n /**\n * @description\n * A separator for the filter summary that is dispayed if minimizeOnMobile is true.\n *\n * ### Example\n * 1 traveller, round trip and direct/transit\n */\n @Input() defaultSummarySeparator = '';\n\n /**\n * A separator for the filter summary is are dispayed if minimizeOnMobile is true.\n *\n * ### Example\n * 1 traveller, round trip and direct/transit\n */\n @Input() lastSummarySeparator = '';\n\n /**\n * @description\n * A title that will be added to the passenger select dropdown.\n */\n @Input() passengerSelectTitle: string;\n\n /**\n * @description\n * A label for the adults passenger type in the passenger select dropdown.\n */\n @Input() passengerSelectAdultsLabel: string;\n\n /**\n * @description\n * A label for the children passenger type in the passenger select dropdown.\n */\n @Input() passengerSelectChildrenLabel: string;\n\n /**\n * @description\n * A label for the infants passenger type in the passenger select dropdown.\n */\n @Input() passengerSelectInfantsLabel: string;\n\n /**\n * @description\n * A label that will appear when total number of selected passengers exceeds the group booking limit\n */\n @Input() groupBookingLabel: string;\n\n /**\n * @description\n * A label that will appear on top of all airports in the airport select drop down lists.\n */\n @Input() allAirportsLabel: string;\n\n /**\n * @description\n * A label that will appear on top of the latest searches in the airport select drop down lists.\n */\n @Input() latestSearchesLabel: string;\n\n /**\n * @description\n * A label that will appear on top of the closest airports in the airport select drop down lists.\n */\n @Input() closestAirportsLabel: string;\n\n /**\n * @description\n * A label that will appear in the destination input field in the airport select, if the\n * user tries to select a destination airport without selecting an origin airport.\n */\n @Input() selectOriginFirstLabel: string;\n\n /**\n * @required\n * @description\n * A label that will appear on top of the origin airport input field.\n */\n @Input() labelOrigin: string;\n\n /**\n * @description\n * A placeholder that will appear on the origin airport input field.\n */\n @Input() placeholderOrigin = '';\n\n /**\n * @required\n * @description\n * A label that will appear on top of the destination airport input field.\n */\n @Input() labelDestination: string;\n\n /**\n * @description\n * A label that will appear in my location in the drop down list in airport select.\n */\n @Input() geolocationLabel: string;\n\n /**\n * @description\n * A label that will appear in my location, in the drop down list in airport select if user has denied geolocation.\n */\n @Input() geolocationBlockedLabel: string;\n\n /**\n * @description\n * A placeholder that will appear on the destination airport input field.\n */\n @Input() placeholderDestination = '';\n\n /**\n * @description\n * A modifier that will allow always keeping the selected airport.\n * The last selected airport will be shown once user clears the selection and blur.\n */\n @Input() keepSelection: boolean;\n\n /**\n * @description\n * A title that will be assigned to edit search accordion.\n */\n @Input() editSearchTitle: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameOrigin: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameDestination: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameTripType: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameDirectOnly: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameOutbound: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameInbound: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlGroupBooking: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlNameSubsidyDiscount: string;\n\n /**\n * @description\n * Make latest searches and geolocation override default value in the origin airport selector.\n */\n @Input() overrideOrigin?: boolean;\n\n /**\n * @description\n * This will make the filter display suggested airports based on geolocation and latest searches.\n */\n @Input() enableSuggestions?: boolean;\n\n @Input()\n get closestAirports() {\n return this.closestAirportsValue;\n }\n set closestAirports(airports: Array<AirportModel>) {\n if (!airports || airports.length < 1) {\n return;\n }\n\n this.closestAirportsValue = airports;\n\n if (this.exists(this.overrideOrigin)) {\n this.originAirportCode = airports[0].code;\n }\n }\n\n /**\n * This will only display airport selection. When a city pair is selected, the rest of the filter will be visible.\n */\n @Input() minimize?: boolean;\n\n /**\n * @required\n * @description\n * All airports that will be populated into the dropdown lists.\n * If displayLatestSearches is true, it will try to get the latest searches from the abandoned basket.\n */\n @Input()\n get airports() {\n return this.airportsValue;\n }\n set airports(airports: Array<AirportModel>) {\n this.airportsValue = airports;\n\n if (this.exists(this.displayLatestSearches)) {\n const abandonedBasket = this.abandonedBasketService.getAll();\n this.setLatestSearches(abandonedBasket, this.airports);\n }\n }\n\n /**\n * @description\n * Sets and gets the selected trip type.\n */\n @Input()\n get tripType() {\n return this.tripTypeValue;\n }\n set tripType(tripType: TripType) {\n if (tripType === this.tripTypeValue) {\n return;\n }\n\n this.tripTypeValue = tripType;\n this.tripTypeChange.emit(this.tripType);\n }\n\n /**\n * @description\n * Sets and gets whether the selected transit type is direct only or not.\n */\n @Input()\n get directOnly() {\n return this.directOnlyValue;\n }\n set directOnly(directOnly: boolean) {\n if (directOnly === this.directOnlyValue) {\n return;\n }\n\n this.directOnlyValue = directOnly;\n this.directOnlyChange.emit(this.directOnly);\n }\n\n /**\n * @description\n * The limit for when the total amount of passengers exceeds to be a group booking.\n */\n @Input() groupBookingLimit: number;\n\n /**\n * @description\n * Subsidy discounts\n */\n @Input() subsidyDiscounts: Array<SubsidyDiscountModel>;\n\n /**\n * @description\n * Selected subsidy discount\n */\n @Input() selectedSubsidyDiscount: SubsidyDiscountModel;\n\n /**\n * @description\n * Subsidy discount label\n */\n @Input() subsidyDiscountLabel: string;\n\n /**\n * @description\n * ARIA label for the previous month button in the calendar.\n */\n @Input() ariaLabelPreviousMonth: string;\n\n /**\n * @description\n * ARIA label for the next month button in the calendar.\n */\n @Input() ariaLabelNextMonth: string;\n\n /**\n * @description\n * An event that is fired every time the origin dropdown selector opens or closes.\n */\n @Output() originOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * An event that is fired every time the origin dropdown selector opens or closes.\n */\n @Output() destinationOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * An event that is fired every time the passenger select dropdown opens or closes.\n */\n @Output() passengerSelectOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * An event that is fired every time the selected origin airport changes.\n */\n @Output() originChange = new EventEmitter<AirportModel>();\n\n /**\n * @description\n * An event that is fired every time the selected destination airport changes.\n */\n @Output() destinationChange = new EventEmitter<AirportModel>();\n\n /**\n * @description\n * An event that is fired every time a passenger selection change is performed.\n */\n @Output() passengersChange = new EventEmitter<Array<PassengersModel>>();\n\n /**\n * @description\n * Sets and gets the selected trip type.\n */\n @Output() tripTypeChange = new EventEmitter<TripType>();\n\n /**\n * @description\n * Sets and gets whether the selected transit type is direct only or not.\n */\n @Output() directOnlyChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Label for no available flights.\n */\n @Input() noAvailableFlightsLabel: string;\n\n /**\n * @description\n * Label for available flights.\n */\n @Input() availableFlightsLabel: string;\n\n /**\n * @description\n * Disable possibility to select dates in the past.\n */\n @Input() disablePastSelection: boolean;\n\n /**\n * @description\n * Label for outbound datepicker.\n */\n @Input() outboundLabel: string;\n\n /**\n * @description\n * Label for inbound datepicker.\n */\n @Input() inboundLabel: string;\n\n /**\n * @description\n * Sets the datepickers in availability mode where available dates can be added.\n */\n @Input() availability: boolean;\n\n /**\n * @description\n * Available dates for outbound calendar.\n */\n @Input() outboundAvailableDates: Array<UtcDate>;\n\n /**\n * @description\n * Available dates for inbound calendar.\n */\n @Input() inboundAvailableDates: Array<UtcDate>;\n\n /**\n * @description\n * If set, Enables the time dropdown selector alongside datepicker.\n */\n @Input() times: Array<UtcDate>;\n\n /**\n * @description\n * The display format of the date when user has selected the date and it is being shown in the input box for the date picker.\n * Please look at the angular Date pipe for valid formats and variations.\n */\n @Input() dateDisplayFormat = 'EEEE d, MMMM yyyy';\n\n /**\n * @description\n * The time display format.\n */\n @Input() timeDisplayFormat = 'HH:mm';\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n */\n @Input() locale = 'en-GB';\n\n /**\n * @description\n * A modifier to remove the padding and margins around the element.\n */\n @Input() compact: boolean;\n\n /**\n * @description\n * Disable possibility to select outbound dates.\n */\n @Input() outboundDisabled: boolean;\n\n /**\n * @description\n * Disable possibility to select inbound dates.\n */\n @Input() inboundDisabled: boolean;\n\n /**\n * @description\n * Show/Add date picker combo into the filter if set to true.\n */\n @Input() enableDatepickers: boolean;\n\n /**\n * @required\n * @description\n * Label for the toggle icon for minimizing filter.\n */\n @Input() minimizingLabel: string;\n\n /**\n * @required\n * @description\n * Label for the toggle icon for maximizing filter.\n */\n @Input() maximizingLabel: string;\n\n /**\n * @required\n * @description\n * Label for the toggling transit type when filter is minimized.\n */\n @Input() directOnlyMobileLabel: string;\n\n /**\n * @description\n * Label for 'or' in the suggestioned airports.\n */\n @Input() orLabel: string;\n\n /**\n * @description\n * A text that appears in the destinations dropdown list when origin airport is not set.\n */\n @Input() invalidDestinationText: string;\n\n /**\n * @description\n * Selected datefor outbound calendar.\n */\n @Input()\n get outboundSelectedDate() {\n return this.outboundSelectedDateValue;\n }\n set outboundSelectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n setTimeout(() => {\n this.outboundSelectedDateValue = date;\n this.outboundSelectedDateChange.emit(date);\n });\n }\n\n /**\n * @description\n * Selected datefor inbound calendar.\n */\n @Input()\n get inboundSelectedDate() {\n return this.inboundSelectedDateValue;\n }\n set inboundSelectedDate(date: UtcDate) {\n if (!date) {\n return;\n }\n\n setTimeout(() => {\n this.inboundSelectedDateValue = date;\n this.inboundSelectedDateChange.emit(date);\n });\n }\n\n /**\n * @description\n * Will display the destination input, set this to false to remove it. It's true by default.\n */\n @Input() enableDestinationSelect = true;\n\n /**\n * @description\n * Will display passenger select, set this to false to remove it. It's true by default.\n */\n @Input() enablePassengersSelect = true;\n\n /**\n * @description\n * Will display the trip switch, set this to false to remove it. It's true by default.\n */\n @Input() enableTripSwitch = true;\n\n /**\n * @description\n * Will display the transit switch, set this to false to remove it. It's true by default.\n */\n @Input() enableTransitSwitch = true;\n\n /**\n * @description\n * When selected datehas been changed on the outbound calendar.\n */\n @Output() outboundSelectedDateChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When selected datehas been changed on the inbound calendar.\n */\n @Output() inboundSelectedDateChange = new EventEmitter<UtcDate>();\n\n\n /**\n * @description\n * Outbound datepicker is open or closed.\n */\n @Output() outboundOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Inbound datepicker is open or closed.\n */\n @Output() inboundOpenChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Outbound calendar changes month.\n */\n @Output() outboundMonthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * Inbound calendar changes month.\n */\n @Output() inboundMonthChange = new EventEmitter<UtcDate>();\n\n /**\n * @description\n * When a user has actively changed the date.\n */\n @Output() focusOnNextChange = new EventEmitter();\n\n /**\n * @description\n * The geolocation of the user. Will be emitted if 'enableSuggestions' is true.\n */\n @Output() positionChange = new EventEmitter<GeolocationPosition>();\n\n /**\n * @description\n * An even that is fired every time the info button on the subsidy discount is clicked.\n */\n @Output() subsidyDiscountInfoClick = new EventEmitter();\n\n get inboundSelectedMonth(): UtcDate {\n return this.inboundSelectedMonthValue;\n }\n set inboundSelectedMonth(month: UtcDate) {\n if (this.dateService.isSameMonth(month, this.inboundSelectedMonthValue)) {\n return;\n }\n\n setTimeout(() => {\n this.inboundMonthChange.emit(month);\n this.inboundSelectedMonthValue = month;\n });\n }\n\n private outboundSelectedDateValue: UtcDate;\n private inboundSelectedDateValue: UtcDate;\n private inboundSelectedMonthValue: UtcDate;\n private airportsValue: Array<AirportModel>;\n private tripTypeValue: TripType;\n private directOnlyValue: boolean;\n private expandedAccordionMobileValue: boolean;\n private closestAirportsValue: Array<AirportModel>;\n private outboundOpenValue = false;\n private inboundOpenValue = false;\n private passengersValue = new Array<PassengersModel>();\n private focusAsyncTimout: any;\n private transitSwitchFocusTimeout: any;\n private tripSwitchFocusTimeout: any;\n\n constructor(\n public deviceHelper: DeviceHelper,\n private sortService: SortService,\n private abandonedBasketService: AbandonedBasketService,\n private dateService: DateHelper,\n public elementRef: ElementRef,\n private changeDetector: ChangeDetectorRef) {\n super('nas-filter');\n this.nativeElement = elementRef.nativeElement as HTMLElement;\n }\n\n ngOnInit(): void {\n if (!this.nasFormGroup) {\n return;\n }\n\n this.nasFormGroup.statusChanges.subscribe(x => {\n setTimeout(() => {\n this.isNasGroupValid = (/true/i).test(x);\n });\n });\n\n if (this.nasFormControlNameDirectOnly) {\n const directOnlyControl = this.nasFormGroup.get(this.nasFormControlNameDirectOnly);\n\n if (directOnlyControl) {\n this.directOnly = directOnlyControl.value;\n }\n }\n\n if (this.nasFormControlNameTripType) {\n const tripTypeControl = this.nasFormGroup.get(this.nasFormControlNameTripType);\n\n if (tripTypeControl) {\n this.tripType = tripTypeControl.value;\n this.inboundDisabled = tripTypeControl.value === TripType.oneWay;\n\n if (this.nasFormControlNameInbound) {\n const inboundControl = this.nasFormGroup.get(this.nasFormControlNameInbound);\n\n if (inboundControl && this.inboundDisabled) {\n inboundControl.disable();\n }\n }\n\n tripTypeControl.valueChanges.subscribe((value: TripType) => {\n this.inboundDisabled = value === TripType.oneWay;\n this.tripType = value;\n });\n }\n }\n\n if (this.nasFormControlNameDirectOnly) {\n const directOnlyControl = this.nasFormGroup.get(this.nasFormControlNameDirectOnly);\n if (directOnlyControl) {\n directOnlyControl.valueChanges.subscribe((value: boolean) => {\n this.directOnly = value;\n });\n }\n }\n }\n\n ngAfterViewChecked(): void {\n\n this.containerWidth.next((this.container.nativeElement as HTMLElement).offsetWidth);\n\n window.onresize = () => {\n this.containerWidth.next((this.container.nativeElement as HTMLElement).offsetWidth);\n };\n }\n\n onSubsidyDiscountInfoClick(): void {\n this.subsidyDiscountInfoClick.emit();\n }\n\n onSubsidyDiscountSelectChange(model: SubsidyDiscountModel): void {\n if (!this.nasFormGroup || !this.nasFormControlNameSubsidyDiscount) {\n return;\n }\n\n const subsidyDiscountControl = this.nasFormGroup.get(this.nasFormControlNameSubsidyDiscount);\n subsidyDiscountControl.patchValue(model);\n }\n\n getClosestAirports(position: GeolocationPosition): void {\n this.positionChange.emit(position);\n }\n\n getFilterClass(element?: string, modifiersInput?: any): ClassModel {\n let modifiers = modifiersInput || new Array<string>();\n\n if (typeof modifiersInput === 'string' || modifiersInput instanceof String) {\n modifiers = [modifiersInput];\n }\n\n const widths = [];\n\n if (this.deviceHelper.isWidthTablet(this.containerWidth.getValue())) {\n widths.push('md');\n }\n\n if (this.deviceHelper.isWidthDesktop(this.containerWidth.getValue())) {\n widths.push('lg');\n }\n\n modifiers = [...modifiers, ...widths];\n\n return this.getClass(element, modifiers);\n }\n\n getAirportSelectClass(): ClassModel {\n return this.getClass(\n 'airport-select',\n [\n this.deviceHelper.isWidthDesktop(this.containerWidth.getValue()) && 'lg',\n this.deviceHelper.isWidthTablet(this.containerWidth.getValue()) && 'md',\n this.exists(this.enableDatepickers) && 'no-border'\n ]);\n }\n\n getSuggestions(): Array<AirportModel> {\n const suggestions = Array.from(new Set([\n ...this.latestSearchesOrigin ? this.latestSearchesOrigin.filter(x => x.code !== this.originAirportCode) : [],\n ...this.closestAirports ? this.closestAirports.filter(x => x.code !== this.originAirportCode) : []\n ]));\n\n return suggestions.slice(0, 3);\n }\n\n getDatePickersClass(): ClassModel {\n return this.getFilterClass('date-combo', [\n this.exists(this.minimize) && 'minimized',\n this.containerWidth.getValue() > 500 && 'side-by-side'\n ]);\n }\n\n getTravelDetailsClass(element?: string, modifiersInput?: any): ClassModel {\n let modifiers = modifiersInput || new Array<string>();\n\n if (typeof modifiersInput === 'string' || modifiersInput instanceof String) {\n modifiers = [modifiersInput];\n }\n\n const widths = [\n this.deviceHelper.isWidthTablet(this.containerWidth.getValue()) && 'md',\n this.deviceHelper.isWidthDesktop(this.containerWidth.getValue()) && 'lg'\n ];\n\n modifiers = [...modifiers, ...widths];\n\n const travelDetailsBase = new NasComponentBase('travel-details');\n return travelDetailsBase.getClass(element, modifiers);\n }\n\n onInboundMonthChange(month: UtcDate): void {\n this.inboundMonthChange.emit(month);\n}\n onOutboundMonthChange(month: UtcDate): void {\n this.outboundMonthChange.emit(month);\n}\n\n onPassengersSelectFocusOnPrevious(): void {\n if (this.isMobileDisplay()) {\n this.onTransitSwitchOpen(true);\n this.focusAsync(this.transitSwitch.toggleElement);\n } else if (this.isTabletDisplay()) {\n this.selectPreviousControl();\n }\n }\n\n passengerKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Tab':\n if (event.shiftKey) {\n if (this.isMobileDisplay() || this.isTabletDisplay()) {\n break;\n }\n\n this.focusOnAirportSelectBackwards();\n break;\n }\n\n if (this.isMobileDisplay()) {\n if (this.subsidyDiscounts && this.subsidyDiscounts.length > 0) {\n this.subsidyDiscount.infoButton.button.nativeElement.focus();\n } else {\n this.focusOnNextChange.emit();\n }\n }\n break;\n case 'Enter':\n if (event.shiftKey || this.isMobileDisplay()) {\n break;\n }\n if (document.activeElement === this.passengerSelectDropdown.toggleElement.nativeElement) {\n if (this.passengerSelectDropdown.open) {\n this.onTripSwitchOpen(true);\n this.focusAsync(this.tripSwitch.toggleElement);\n } else {\n this.onPassengerSelectOpen(true);\n }\n }\n break;\n case 'Escape':\n this.onPassengerSelectOpen(false);\n event.preventDefault();\n this.setFocusOnNativeElement(this.passengerSelectDropdown.toggleElement);\n break;\n }\n }\n\n onTripSwitchKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowRight':\n if (document.activeElement === this.tripTypeRoundTrip.nativeElement) {\n this.tripTypeOneway.nativeElement.focus();\n }\n break;\n case 'ArrowLeft':\n if (document.activeElement === this.tripTypeOneway.nativeElement) {\n this.tripTypeRoundTrip.nativeElement.focus();\n }\n break;\n case 'Tab':\n case 'Enter':\n if (event.shiftKey) {\n event.preventDefault();\n\n if (this.isMobileDisplay() || !this.passengerSelectDropdown) {\n this.selectPreviousControl();\n } else {\n this.onPassengerSelectOpen(true);\n this.focusAsync(this.passengerSelectDropdown.toggleElement);\n }\n } else {\n if (event.key === 'Tab') {\n this.onTransitSwitchOpen(true);\n } else {\n if (this.tripSwitch.open) {\n this.onTransitSwitchOpen(true);\n this.focusAsync(this.transitSwitch.toggleElement);\n } else {\n this.onTripSwitchOpen(true);\n }\n }\n }\n break;\n\n case 'Escape':\n this.onTripSwitchOpen(false);\n this.setFocusOnNativeElement(this.tripSwitch.toggleElement);\n break;\n }\n }\n\n transitKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowRight':\n if (document.activeElement === this.transitTypeTransit.nativeElement) {\n this.transitTypeDirectOnly.nativeElement.focus();\n }\n break;\n case 'ArrowLeft':\n if (document.activeElement === this.transitTypeDirectOnly.nativeElement) {\n this.transitTypeTransit.nativeElement.focus();\n }\n break;\n case 'Tab':\n case 'Enter':\n if (event.shiftKey) {\n event.preventDefault();\n this.onTripSwitchOpen(true);\n this.focusAsync(<any>this.tripSwitch.toggleElement);\n } else {\n if (this.isMobileDisplay()) {\n this.onPassengerSelectOpen(true);\n this.focusAsync(this.passengerSelectDropdown.toggleElement);\n } else {\n this.onTransitSwitchOpen(!this.transitSwitch.open);\n\n if (this.subsidyDiscounts && this.subsidyDiscounts.length > 0) {\n this.subsidyDiscount.infoButton.button.nativeElement.focus();\n } else {\n this.focusOnNextChange.emit();\n }\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n }\n }\n\n break;\n case 'Escape':\n this.onTransitSwitchOpen(false);\n event.preventDefault();\n this.setFocusOnNativeElement(this.transitSwitch.toggleElement);\n break;\n }\n }\n\n onSubsidyDiscountInfoButtonKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Tab':\n if (event.shiftKey) {\n if (this.isMobileDisplay()) {\n this.focusAsync(this.passengerSelectDropdown.toggleElement);\n } else {\n this.focusAsync(this.transitSwitch.toggleElement);\n }\n\n event.preventDefault();\n }\n break;\n\n default:\n break;\n }\n }\n\n onPassengersSelectFocusOnNext(): void {\n if (this.isMobileDisplay()) {\n this.passengerSelectDropdown.toggle();\n } else {\n this.onTripSwitchOpen(true);\n this.focusAsync(<any>this.tripSwitch.toggleElement);\n }\n }\n\n focusAsync(refElement: ElementRef): void {\n clearTimeout(this.focusAsyncTimout);\n\n this.focusAsyncTimout = setTimeout(() => this.setFocusOnNativeElement(refElement));\n }\n\n onDatepickerFocusOnPrevious(event: KeyboardEvent | MouseEvent): void {\n event.preventDefault();\n\n this.focusOnAirportSelectBackwards();\n }\n\n selectPreviousControl(): void {\n if (this.datepickerCombo) {\n if (this.datepickerCombo.outboundOnly) {\n this.outboundOpen = true;\n } else {\n this.inboundOpen = true;\n }\n } else if (this.airportSelect) {\n if (this.exists(this.airportSelect.combo)) {\n this.airportSelect.onDestinationOpen(true);\n if ((<any>this.airportSelect.airportSelectDropdownDestination)) {\n this.focusAsync((<any>this.airportSelect.airportSelectDropdownDestination).input);\n }\n } else {\n this.airportSelect.onOriginOpen(true);\n if ((<any>this.airportSelect.airportSelectDropdownOrigin)) {\n this.focusAsync((<any>this.airportSelect.airportSelectDropdownOrigin).input);\n }\n }\n }\n\n }\n\n onFocusOnNextChange(event: KeyboardEvent | MouseEvent): void {\n if (this.isMobileDisplay() && this.tripSwitch) {\n this.onTripSwitchOpen(true);\n this.focusAsync(this.tripSwitch.toggleElement);\n } else if (this.isTabletDisplay()) {\n if (this.passengerSelectDropdown) {\n event.preventDefault();\n setTimeout(() => {\n this.onPassengerSelectOpen(true);\n this.setFocusOnNativeElement(this.passengerSelectDropdown.toggleElement);\n });\n } else if (this.tripSwitch) {\n this.onTripSwitchOpen(true);\n this.focusAsync(this.tripSwitch.toggleElement);\n }\n }\n }\n\n isMobileDisplay(): boolean {\n return this.deviceHelper.isWidthMobile(this.containerWidth.getValue());\n }\n\n isTabletDisplay(): boolean {\n return this.deviceHelper.isWidthTablet(this.containerWidth.getValue());\n }\n\n onOriginOpen(open: boolean): void {\n if (this.passengerSelectDropdown) {\n this.passengerSelectDropdown.open = false;\n }\n\n if (this.tripSwitch) {\n this.tripSwitch.open = false;\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = false;\n }\n\n if (this.datepickerCombo) {\n this.datepickerCombo.inboundOpen = false;\n this.datepickerCombo.outboundOpen = false;\n }\n if (this.airportSelect && !this.airportSelect.originOpen) {\n this.updateMaximize();\n }\n\n this.originOpenChange.emit(open);\n\n this.changeDetector.detectChanges();\n }\n\n validateAirportValues(): boolean {\n if (!this.airportSelect) {\n return false;\n }\n const originSnapshot = this.airportSelect.origin;\n const destinationSnapshot = this.airportSelect.destination;\n if ((originSnapshot && destinationSnapshot && originSnapshot.code && originSnapshot.code.length\n && destinationSnapshot.code && destinationSnapshot.code.length)) {\n return true;\n }\n return false;\n }\n\n updateMaximize(): void {\n setTimeout(() => {\n this.maximize = this.validateAirportValues();\n });\n }\n\n onDestinationOpen(open: boolean): void {\n if (this.passengerSelectDropdown) {\n this.passengerSelectDropdown.open = false;\n }\n\n if (this.tripSwitch) {\n this.tripSwitch.open = false;\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = false;\n }\n\n if (this.datepickerCombo) {\n this.datepickerCombo.inboundOpen = false;\n this.datepickerCombo.outboundOpen = false;\n }\n if (this.airportSelect && !this.airportSelect.destinationOpen) {\n this.updateMaximize();\n }\n this.destinationOpenChange.emit(open);\n }\n\n onPassengerSelectOpen(open: boolean): void {\n if (this.airportSelect) {\n this.airportSelect.originOpen = false;\n this.airportSelect.destinationOpen = false;\n }\n\n if (this.tripSwitch) {\n this.tripSwitch.open = false;\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = false;\n }\n\n\n if (this.datepickerCombo) {\n if (this.datepickerCombo.inboundOpen) {\n this.datepickerCombo.inboundOpen = false;\n }\n if (this.datepickerCombo.outboundOpen) {\n this.datepickerCombo.outboundOpen = false;\n }\n }\n\n this.passengerSelectDropdown.open = open;\n this.passengerSelectOpenChange.emit(open);\n\n if (open) {\n setTimeout(() => {\n if (this.passengerSelect.numberFields.first) {\n this.passengerSelect.numberFields.first.input.nativeElement.focus();\n }\n }, 300);\n }\n }\n\n onTripSwitchOpen(open: boolean): void {\n clearTimeout(this.tripSwitchFocusTimeout);\n\n if (this.passengerSelectDropdown) {\n setTimeout(() => {\n this.passengerSelectDropdown.open = false;\n });\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = false;\n }\n\n if (this.airportSelect) {\n this.airportSelect.originOpen = false;\n this.airportSelect.destinationOpen = false;\n }\n\n\n if (this.datepickerCombo) {\n this.datepickerCombo.inboundOpen = false;\n this.datepickerCombo.outboundOpen = false;\n }\n\n this.tripSwitch.open = open;\n\n if (open) {\n this.tripSwitchFocusTimeout = setTimeout(() => {\n this.tripTypeRoundTrip.nativeElement.focus();\n }, 200);\n }\n }\n\n onTransitSwitchOpen(open: boolean): void {\n clearTimeout(this.transitSwitchFocusTimeout);\n\n if (this.passengerSelectDropdown) {\n this.passengerSelectDropdown.open = false;\n }\n\n if (this.tripSwitch) {\n this.tripSwitch.open = false;\n }\n\n if (this.airportSelect) {\n this.airportSelect.originOpen = false;\n this.airportSelect.destinationOpen = false;\n }\n\n if (this.datepickerCombo) {\n this.datepickerCombo.inboundOpen = false;\n this.datepickerCombo.outboundOpen = false;\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = open;\n }\n\n if (open) {\n this.transitSwitchFocusTimeout = setTimeout(() => {\n this.transitTypeTransit.nativeElement.focus();\n }, 200);\n }\n }\n\n onOriginChange(airport: AirportModel): void {\n this.originChange.emit(airport);\n }\n\n setSelectedOriginAirport(airport: AirportModel): void {\n if (!airport) {\n return;\n }\n\n this.onOriginChange(airport);\n\n if (this.originAirportCode === airport.code) {\n return;\n }\n\n this.originAirportCode = airport.code;\n this.changeDetector.detectChanges();\n }\n\n onDestinationChange(airport: AirportModel): void {\n this.destinationChange.emit(airport);\n }\n\n setFocusOnPassengerSelect(event: KeyboardEvent): void {\n this.minimize = false;\n\n if (this.isMobileDisplay()) {\n if (this.datepickerCombo) {\n event.preventDefault();\n this.outboundOpen = true;\n this.focusAsync((<any>this.datepickerCombo.datepickerOutbound).input);\n } else if (this.tripSwitch) {\n event.preventDefault();\n this.onTripSwitchOpen(true);\n this.focusAsync(this.tripSwitch.toggleElement);\n }\n\n } else if (this.isTabletDisplay() && this.datepickerCombo) {\n setTimeout(() => {\n this.outboundOpen = true;\n });\n } else {\n if (this.passengerSelectDropdown) {\n\n this.onPassengerSelectOpen(true);\n const currentElementRef = this.passengerSelectDropdown.toggleElement;\n setTimeout(() => this.setFocusOnNativeElement(currentElementRef));\n\n } else if (this.tripSwitch) {\n\n this.onTripSwitchOpen(true);\n this.tripSwitch.toggleElement.nativeElement.focus();\n }\n\n }\n }\n\n setFocusOnNativeElement(element: ElementRef): void {\n element.nativeElement.focus();\n }\n\n onTripTypeChange(tripType: TripType): void {\n setTimeout(() => {\n this.tripSwitch.open = false;\n });\n\n this.tripType = tripType;\n\n if (this.nasFormGroup && this.nasFormControlNameTripType) {\n const tripSwitchControl = this.nasFormGroup.get(this.nasFormControlNameTripType);\n tripSwitchControl.patchValue(tripType);\n }\n }\n\n onTransitChange(directOnly: boolean): void {\n setTimeout(() => {\n this.transitSwitch.open = false;\n });\n\n this.directOnly = directOnly;\n\n if (this.nasFormGroup && this.nasFormControlNameDirectOnly) {\n const tripTypeControl = this.nasFormGroup.get(this.nasFormControlNameDirectOnly);\n tripTypeControl.patchValue(directOnly);\n }\n }\n\n getTravelDetailsTripSwitchIconClass(modifiers?: any): Array<ClassModel> {\n const iconMediumBase = new NasComponentBase('icon-medium');\n\n return [\n iconMediumBase.getClass('', modifiers),\n this.getTravelDetailsClass('icon')\n ];\n }\n\n getTripSwitchLabel(): string {\n return this.tripType === TripType.twoWayReturn ? this.tripSwitchRoundTripLabel : this.tripSwitchOneWayLabel;\n }\n\n getTransitLabel(): string {\n return this.directOnly ? this.directOnlyLabel : this.directTransitLabel;\n }\n\n onAccordionToggleChange(expanded: boolean): void {\n this.displaySummary = !expanded;\n }\n\n getSummary(): string {\n return `${this.passengerSelectLabel}${this.defaultSummarySeparator}` +\n `${this.getTripSwitchLabel().toLowerCase()}${this.lastSummarySeparator}${this.getTransitLabel().toLowerCase()}`;\n }\n\n shouldMaximize(): boolean {\n if (!this.exists(this.minimize)) {\n return true;\n } else if (this.airportSelect\n && this.enableDestinationSelect\n && this.airportSelect.origin\n && this.airportSelect.origin.code\n && this.airportSelect.destination\n && this.airportSelect.destination.code) {\n return true;\n } else if (this.airportSelect\n && !this.enableDestinationSelect\n && this.airportSelect.origin\n && this.airportSelect.origin.code) {\n return true;\n } else if (this.airportSelect && (this.airportSelect.originOpen || this.airportSelect.destinationOpen)) {\n return this.maximize;\n } else if (this.exists(this.minimize)) {\n if (this.maximize) {\n if (this.nasFormGroup) {\n return this.isNasGroupValid;\n }\n return true;\n } else {\n return false;\n }\n }\n }\n\n private focusOnAirportSelectBackwards(): void {\n if (this.exists(this.airportSelect.combo)) {\n this.airportSelect.onDestinationOpen(true);\n setTimeout(() => {\n this.airportSelect.airportSelectDropdownDestination.input.nativeElement.focus();\n }, 100);\n\n } else {\n this.airportSelect.onOriginOpen(true);\n this.focusAsync((<any>this.airportSelect.airportSelectDropdownOrigin).input);\n }\n }\n\n private setLatestSearches(abandonedBasket: Array<AbandonedBasketItemModel>, airports: Array<AirportModel>): void {\n if (!abandonedBasket || !airports) {\n return;\n }\n\n const unique = new Array<AbandonedBasketItemModel>();\n\n for (const item of abandonedBasket) {\n if (!unique.some(x => x.destinationCode === item.destinationCode)) {\n unique.push(item);\n }\n }\n\n const originCodes = unique.map(x => x.originCode);\n const destinationCodes = unique.map(x => x.destinationCode);\n\n const latestSearchesOrigin = airports.filter(airport => unique.some(x => x.originCode.toLowerCase() === airport.code.toLowerCase()));\n\n const latestSearchesDestination = airports.filter(airport => unique.some(x => x.destinationCode.toLowerCase() === airport.code.toLowerCase()));\n\n const code = 'code';\n this.latestSearchesOrigin = this.sortService.sortByObject(latestSearchesOrigin, originCodes, code).slice(0, 3);\n\n if (this.latestSearchesOrigin && this.latestSearchesOrigin.length > 0 && this.exists(this.overrideOrigin)) {\n this.originAirportCode = this.latestSearchesOrigin[0].code;\n }\n\n this.latestSearchesDestination = this.sortService.sortByObject(latestSearchesDestination, destinationCodes, code).slice(0, 3);\n }\n\n private closeDropdowns(): void {\n if (this.passengerSelectDropdown) {\n this.passengerSelectDropdown.open = false;\n }\n\n if (this.tripSwitch) {\n this.tripSwitch.open = false;\n }\n\n if (this.transitSwitch) {\n this.transitSwitch.open = false;\n }\n }\n}\n","<nas-accordion *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile); else filterTemplate\"\n simple\n containerOnToggle\n transparent\n [expanded]=\"expandedAccordionMobile\"\n [title]=\"editSearchTitle\"\n (toggleChange)=\"onAccordionToggleChange($event)\">\n <ng-container *ngTemplateOutlet=\"filterTemplate\"></ng-container>\n</nas-accordion>\n<div class=\"container\"\n *ngIf=\"deviceHelper?.isMobile() && exists(minimizeOnMobile) && displaySummary\">{{getSummary()}}</div>\n\n<ng-template #filterTemplate>\n <div #container\n [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getFilterClass('filters', [exists(minimize) && 'minimized', maximize && 'maximize'])\">\n <ng-container *ngIf=\"airports?.length > 0\">\n <nas-airport-select *ngIf=\"airports && airportRelations && (enableDestinationSelect)\"\n #airportSelect\n combo\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [nasFormControlNameDestination]=\"nasFormControlNameDestination\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getAirportSelectClass()\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [allowedDestinationAirports]=\"allowedDestinationAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [latestSearchesDestination]=\"latestSearchesDestination\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [destinationAirportCode]=\"destinationAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [labelDestination]=\"labelDestination\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [placeholderDestination]=\"placeholderDestination\"\n [keepSelection]=\"keepSelection\"\n [invalidDestinationText]=\"invalidDestinationText\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (destinationChange)=\"onDestinationChange($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (destinationOpenChange)=\"onDestinationOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-airport-select *ngIf=\"airports && (!enableDestinationSelect)\"\n #airportSelect\n [ariaLabelClear]=\"ariaLabelClear\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOrigin]=\"nasFormControlNameOrigin\"\n [useSwitch]=\"useSwitch\"\n [nasClass]=\"getClass('airport-origin-select')\"\n [airports]=\"airports\"\n [allowedOriginAiports]=\"allowedOriginAirports\"\n [airportRelations]=\"airportRelations\"\n [latestSearchesOrigin]=\"latestSearchesOrigin\"\n [displayLatestSearches]=\"displayLatestSearches\"\n [displayClosestAirports]=\"displayClosestAirports\"\n [originAirportCode]=\"originAirportCode\"\n [allAirportsLabel]=\"allAirportsLabel\"\n [latestSearchesLabel]=\"latestSearchesLabel\"\n [closestAirportsLabel]=\"closestAirportsLabel\"\n [closestAirports]=\"closestAirports\"\n [selectOriginFirstLabel]=\"selectOriginFirstLabel\"\n [labelOrigin]=\"labelOrigin\"\n [placeholderOrigin]=\"placeholderOrigin\"\n [geolocationLabel]=\"geolocationLabel\"\n [geolocationBlockedLabel]=\"geolocationBlockedLabel\"\n [keepSelection]=\"keepSelection\"\n (originChange)=\"setSelectedOriginAirport($event)\"\n (focusOnNext)=\"setFocusOnPassengerSelect($event)\"\n (originOpenChange)=\"onOriginOpen($event)\"\n (positionChange)=\"getClosestAirports($event)\"></nas-airport-select>\n <nas-suggestions *ngIf=\"(closestAirports || latestSearchesOrigin) && exists(enableSuggestions)\"\n [nasClass]=\"getFilterClass('suggestions')\"\n [suggestions]=\"getSuggestions()\"\n [orLabel]=\"orLabel\"\n (airportSelect)=\"setSelectedOriginAirport($event)\"></nas-suggestions>\n </ng-container>\n <ng-container *ngIf=\"shouldMaximize()\">\n <div\n [nasClass]=\"!enableDestinationSelect ? getClass('origin-combined') :\n getTravelDetailsClass('', ['combined', exists(enableDatepickers) && 'no-border', exists(minimize) && 'minimized'])\">\n <ng-container *ngIf=\"enablePassengersSelect\">\n <nas-dropdown #passengerSelectDropdown\n *ngIf=\"passengers?.length > 0\"\n [nasClass]=\"getTravelDetailsClass('dropdown', 'passengers')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"passengerSelectLabel\"\n [labelStyle]=\"{'width': '102px'}\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onPassengerSelectOpen($event)\"\n (keydown)=\"passengerKeyDown($event)\">\n <nas-passenger-select #passengerSelect\n [ariaLabelAdd]=\"ariaLabelAdd\"\n [ariaLabelSubtract]=\"ariaLabelSubtract\"\n [adultsLabel]=\"passengerSelectAdultsLabel\"\n [childrenLabel]=\"passengerSelectChildrenLabel\"\n [infantsLabel]=\"passengerSelectInfantsLabel\"\n [maxPaxCount]=\"maxPaxCount\"\n [minAdultCount]=\"minAdultCount\"\n [title]=\"passengerSelectTitle\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlGroupBooking]=\"nasFormControlGroupBooking\"\n [groupBookingLabel]=\"groupBookingLabel\"\n [groupBookingLimit]=\"groupBookingLimit\"\n (focusOnNext)=\"onPassengersSelectFocusOnNext()\"\n (focusOnPrevious)=\"onPassengersSelectFocusOnPrevious()\"\n [(passengers)]=\"passengers\"></nas-passenger-select>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTripSwitch\">\n <nas-dropdown *ngIf=\"tripSwitchOneWayLabel && tripSwitchRoundTripLabel\"\n #tripSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'trip-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTripSwitchLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTripSwitchOpen($event)\"\n (keydown)=\"onTripSwitchKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #tripTypeRoundTrip\n [nasClass]=\"getTravelDetailsClass('action', tripType === 2 && 'active')\"\n (click)=\"onTripTypeChange(2)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 2 ? 'flight-return--light' : 'flight-return'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{tripSwitchRoundTripLabel}}</span>\n </button>\n <button type=\"button\"\n #tripTypeOneway\n [nasClass]=\"getTravelDetailsClass('action', tripType === 1 && 'active')\"\n (click)=\"onTripTypeChange(1)\">\n <nas-icon [type]=\"'medium'\"\n [icon]=\"tripType === 1 ? 'flight-oneway--light' : 'flight-oneway'\"></nas-icon>\n <span [nasClass]=\"getTravelDetailsClass('title', ['small'])\">{{tripSwitchOneWayLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n <ng-container *ngIf=\"enableTransitSwitch\">\n <nas-dropdown *ngIf=\"directOnlyLabel && directTransitLabel\"\n #transitSwitch\n [nasClass]=\"getTravelDetailsClass('dropdown', 'transit-type')\"\n [cssClass]=\"getTravelDetailsClass('dropdown')\"\n [label]=\"getTransitLabel()\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n (openChange)=\"onTransitSwitchOpen($event)\"\n (keydown)=\"transitKeyDown($event)\">\n <div [nasClass]=\"getTravelDetailsClass('actions')\">\n <button type=\"button\"\n #transitTypeTransit\n [nasClass]=\"getTravelDetailsClass('action', !directOnly && 'active')\"\n (click)=\"onTransitChange(false)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon-stop')\"></span>\n </span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directTransitLabel}}</span>\n </button>\n <button [nasClass]=\"getTravelDetailsClass('action', directOnly && 'active')\"\n type=\"button\"\n #transitTypeDirectOnly\n (click)=\"onTransitChange(true)\">\n <span [nasClass]=\"getTravelDetailsClass('transit-icon')\"></span>\n <span [nasClass]=\"getTravelDetailsClass('title', 'small')\">{{directOnlyLabel}}</span>\n </button>\n </div>\n </nas-dropdown>\n </ng-container>\n </div>\n <div *ngIf=\"exists(enableDatepickers)\"\n [nasClass]=\"getDatePickersClass()\">\n <nas-datepicker-combo #datepickerCombo\n compact\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlNameOutbound]=\"nasFormControlNameOutbound\"\n [nasFormControlNameInbound]=\"nasFormControlNameInbound\"\n [availability]=\"availability\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [disablePastSelection]=\"disablePastSelection\"\n [locale]=\"locale\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [inboundAvailableDates]=\"inboundAvailableDates\"\n [inboundLabel]=\"inboundLabel\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [outboundAvailableDates]=\"outboundAvailableDates\"\n [outboundLabel]=\"outboundLabel\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [times]=\"times\"\n [outboundDisabled]=\"outboundDisabled\"\n [inboundDisabled]=\"inboundDisabled\"\n [outboundOnly]=\"tripType === 1\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNextChange($event)\"\n (focusOnPreviousChange)=\"onDatepickerFocusOnPrevious($event)\"\n (inboundMonthChange)=\"onInboundMonthChange($event)\"\n (outboundMonthChange)=\"onOutboundMonthChange($event)\"\n [(outboundOpen)]=\"outboundOpen\"\n [(inboundOpen)]=\"inboundOpen\"\n [(inboundSelectedDate)]=\"inboundSelectedDate\"\n [(outboundSelectedDate)]=\"outboundSelectedDate\">\n </nas-datepicker-combo>\n </div>\n <div *ngIf=\"subsidyDiscounts && subsidyDiscounts.length > 0\"\n [nasClass]=\"getFilterClass('subsidy-discount')\">\n <nas-subsidy-discount #subsidyDiscount\n [discounts]=\"subsidyDiscounts\"\n [selectedDiscount]=\"selectedSubsidyDiscount\"\n [label]=\"subsidyDiscountLabel\"\n (infoButtonClick)=\"onSubsidyDiscountInfoClick()\"\n (discountSelectChange)=\"onSubsidyDiscountSelectChange($event)\"\n (infoButtonKeydown)=\"onSubsidyDiscountInfoButtonKeydown($event)\"></nas-subsidy-discount>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BackdropComponent } from './backdrop.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n\n@NgModule({\n declarations: [BackdropComponent],\n imports: [\n CommonModule,\n NasClassModule\n ],\n exports: [BackdropComponent]\n})\nexport class BackdropModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SelectComponent } from './select.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { OptionComponent } from './option/option.component';\nimport { OptgroupComponent } from './optgroup/optgroup.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n NasClassModule\n ],\n declarations: [SelectComponent, OptionComponent, OptgroupComponent],\n exports: [SelectComponent, OptionComponent, OptgroupComponent]\n})\nexport class SelectModule { }\n","import { Component, Input, ViewEncapsulation, Renderer2, OnInit } from '@angular/core';\n\nimport { NasComponentBase } from '../../core';\n\n/**\n * @description\n * Norwegian Spinner Component | Layout\n*/\n@Component({\n selector: 'nas-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SpinnerComponent extends NasComponentBase implements OnInit {\n private enableValue: boolean;\n private loadingTimeout: any;\n private refreshLinkTimout: any;\n public showRefreshLink: boolean;\n private refreshSecondValue: number;\n\n /**\n * @description\n * An information message that is displayed on the spinner.\n * @example\n * ```html\n * <nas-spinner [text]=\"text\"></nas-spinner>\n * ```\n */\n @Input() text: string;\n\n /**\n * @description\n * An information message that is displayed on the refresh link.\n * @example\n * ```html\n * <nas-spinner [refreshText]=\"text\"></nas-spinner>\n * ```\n */\n @Input() refreshText: string;\n\n /**\n * @description\n * Sets small styling.\n * @example\n * ```html\n * <nas-select small></nas-select>\n * ```\n * or\n * ```html\n * <nas-select [small]=\"true\"></nas-select>\n * ```\n */\n @Input() small?: boolean;\n\n /**\n * @description\n * Sets overlay styling.\n * @example\n * ```html\n * <nas-select overlay></nas-select>\n * ```\n * or\n * ```html\n * <nas-select [overlay]=\"true\"></nas-select>\n * ```\n */\n @Input() overlay?: boolean;\n\n /**\n * @description\n * Enables the spinner after 500ms. If false again within 500ms, the spinner will not be displayed at all.\n * @example\n * ```html\n * <nas-spinner [enable]=\"enable\"></nas-spinner>\n * ```\n */\n @Input()\n get enable() {\n return this.enableValue;\n }\n set enable(enable: boolean) {\n this.enableValue = enable;\n this.setEnabled(this.enableValue);\n }\n\n /**\n * @descriptionp\n * Sets the number of seconds to wait before showing the refresh link.\n * @example\n * ```html\n * <nas-spinner [refresh]=\"10\"></nas-spinner>\n * ```\n */\n\n @Input()\n get refresh() {\n return this.refreshSecondValue;\n }\n set refresh(value: number) {\n if (value === 0 || value === null) {\n return;\n }\n this.refreshSecondValue = value;\n }\n\n /**\n * @description\n * Block page scrolling.\n * @example\n * ```html\n * <nas-select blockScrolling></nas-select>\n * ```\n * or\n * ```html\n * <nas-select [blockScrolling]=\"true\"></nas-select>\n * ```\n */\n @Input() blockScrolling = true;\n\n constructor(private renderer: Renderer2) {\n super('nas-spinner');\n }\n\n ngOnInit(): void {\n this.setEnabled(this.enableValue);\n }\n\n private setEnabled(enabled: boolean) {\n this.showRefreshLink = false;\n\n if (enabled) {\n this.loadingTimeout = setTimeout(() => {\n this.enableValue = true;\n if (this.blockScrolling) {\n this.renderer.addClass(document.body, 'block-scrolling');\n }\n }, 500);\n\n if (this.refresh > 0 && this.refreshText != null) {\n this.refreshLinkTimout = setTimeout(() => {\n this.showRefreshLink = true;\n }, this.refreshSecondValue * 1000);\n }\n } else {\n clearTimeout(this.loadingTimeout);\n clearTimeout(this.refreshLinkTimout);\n\n this.enableValue = false;\n this.showRefreshLink = false;\n\n if (this.blockScrolling) {\n this.renderer.removeClass(document.body, 'block-scrolling');\n }\n }\n }\n\n refreshPage() {\n window.location.reload();\n }\n}\n","<div [nasClass]=\"getClass('', [exists(overlay) && 'overlay', exists(small) && 'small'])\" *ngIf=\"enable\">\n <span [nasClass]=\"getClass('box')\">\n <span [nasClass]=\"getClass('border')\"></span>\n </span>\n <div *ngIf=\"text\" [nasClass]=\"getClass('text')\">\n <div>{{text}}</div>\n <div [nasClass]=\"getClass('refresh')\" *ngIf=\"showRefreshLink\" (click)=\"refreshPage()\"> <a> {{refreshText}} </a></div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { SpinnerComponent } from './spinner.component';\n\n@NgModule({\n declarations: [SpinnerComponent],\n imports: [CommonModule, NasClassModule],\n exports: [SpinnerComponent],\n})\nexport class SpinnerModule {}\n","import { DatePipe } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { DatepickerComponent } from './datepicker.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { BackdropModule } from '../backdrop/backdrop.module';\nimport { CoverModule } from '../cover/cover.module';\nimport { IconModule } from '../icon/icon.module';\nimport { SelectModule } from '../select/select.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\n\n@NgModule({\n declarations: [DatepickerComponent, CalendarComponent],\n imports: [\n CommonModule,\n CoverModule,\n SelectModule,\n IconModule,\n NasClassModule,\n FormsModule,\n SpinnerModule,\n ReactiveFormsModule,\n BackdropModule\n ],\n exports: [DatepickerComponent, CalendarComponent],\n providers: [DatePipe, DateHelper]\n})\nexport class DatepickerModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DatepickerComboComponent } from './datepicker-combo.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { DatepickerModule } from '../datepicker/datepicker.module';\n\n@NgModule({\n declarations: [DatepickerComboComponent],\n imports: [\n CommonModule,\n DatepickerModule,\n NasClassModule\n ],\n exports: [DatepickerComboComponent],\n providers: [DeviceHelper, DateHelper]\n})\nexport class DatepickerComboModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PassengerSelectComponent } from './passenger-select.component';\nimport { NumberFieldModule } from '../number-field/number-field.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NumberFieldModule,\n NasClassModule\n ],\n declarations: [PassengerSelectComponent],\n exports: [PassengerSelectComponent]\n})\nexport class PassengerSelectModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\nimport { SelectModule } from '../select/select.module';\nimport { SubsidyDiscountComponent } from './subsidy-discount.component';\n\n@NgModule({\n imports: [\n CommonModule,\n SelectModule,\n NasClassModule,\n IconModule,\n ButtonModule\n ],\n declarations: [SubsidyDiscountComponent],\n exports: [SubsidyDiscountComponent]\n})\nexport class SubsidyDiscountModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { ButtonModule } from '../button/button.module';\nimport { SuggestionsComponent } from './suggestions.component';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n ButtonModule,\n ],\n declarations: [SuggestionsComponent],\n exports: [SuggestionsComponent]\n})\nexport class SuggestionsModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FilterComponent } from './filter.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AbandonedBasketService } from '../../core/services/abandoned-basket/abandoned-basket.service';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { SortService } from '../../core/services/sort/sort.service';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { AirportSelectModule } from '../airport-select/airport-select.module';\nimport { ButtonModule } from '../button/button.module';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { DatepickerComboModule } from '../datepicker-combo/datepicker-combo.module';\nimport { DropdownModule } from '../dropdown/dropdown.module';\nimport { IconModule } from '../icon/icon.module';\nimport { PassengerSelectModule } from '../passenger-select/passenger-select.module';\nimport { SubsidyDiscountModule } from '../subsidy-discount/subsidy-discount.module';\nimport { SuggestionsModule } from '../suggestions/suggestions.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n AirportSelectModule,\n DropdownModule,\n PassengerSelectModule,\n AccordionModule,\n IconModule,\n DatepickerComboModule,\n CheckboxModule,\n ReactiveFormsModule,\n ButtonModule,\n SubsidyDiscountModule,\n SuggestionsModule\n ],\n declarations: [FilterComponent],\n exports: [FilterComponent],\n providers: [SortService, AbandonedBasketService, DateHelper, DeviceHelper]\n})\nexport class FilterModule { }\n","import { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase, ClassModel } from '../../core';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n} from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n * @description\n * Norwegian radio button Component | Form Controls\n */\n@Component({\n selector: 'nas-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class RadioComponent extends NasComponentBase {\n private checkedValue: boolean;\n\n /**\n * @description\n * The ID of the native input element\n */\n @Input() id: string;\n\n /**\n * @description\n * The value of the radio button, represented as a string\n */\n @Input() value: string;\n\n /**\n * @description\n * Sets the name attribute of the native radio input\n */\n @Input() name: string;\n\n /**\n * @description\n * Sets error styling of the radio input\n */\n @Input() error: boolean;\n\n /**\n * @description\n * Sets the radio input disabled with disabled styling. This will not work in combination with reactive forms.\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Sets the radio component to strong styling\n */\n @Input() strong: boolean;\n\n /**\n * @description\n * Sets the display css property to block\n */\n @Input() block: boolean;\n\n /**\n * @description\n * Removed the bottom margin\n */\n @Input() spaceless: boolean;\n\n /**\n * @description\n * String to set tabIndex on native input element\n */\n @Input() tabIndex: number;\n\n /**\n * @description\n * Sets required attribute on native radio input element\n */\n @Input() required: boolean;\n\n /**\n * @description\n * Used to set the 'aria-label' attribute on the underlying input element.\n */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * @description\n * The 'aria-labelledby' attribute takes precedence as the element's text alternative.\n */\n @Input('aria-describedby') ariaDescribedby: string;\n\n /**\n * @description\n * The 'aria-describedby' attribute is read after the element's label and field type.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /**\n * @description\n * Set the radio button checked.\n * @example\n * <nas-radio checked></nas-radio>\n */\n @Input()\n get checked() {\n return this.checkedValue;\n }\n set checked(input: boolean) {\n this.checkedValue = input;\n this.checkedChange.emit(this.checked);\n }\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * <nas-input [nasFormControlName]=\"'username'\"></nas-input>\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * <nas-input [nasFormGroup]=\"loginGroup\"></nas-input>\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Listen for checked change events.\n * @example\n * <nas-radio (checkedChange)=\"onCheckedChange($event)\"></nas-radio>\n */\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private componentId: number;\n\n get inputId(): string {\n return this.id ? this.id : `nas-radio-${this.componentId}`;\n }\n\n constructor() {\n super('nas-radio');\n this.componentId = nextId++;\n }\n\n mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.exists(this.block) && 'block',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.strong) && 'strong'\n ]);\n }\n\n onChange(event: Event): void {\n this.checked = (event.target as HTMLInputElement).checked;\n }\n}\n","<ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <label [nasClass]=\"mainClass()\">\n <input type=\"radio\"\n [disabled]=\"disabled\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [required]=\"required\"\n [checked]=\"exists(checked)\"\n (change)=\"onChange($event)\" />\n <span [nasClass]=\"getClass('indicator')\"></span>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-container>\n<ng-template #reactiveForm>\n <label [nasClass]=\"mainClass()\"\n [formGroup]=\"nasFormGroup\">\n <input type=\"radio\"\n [formControlName]=\"nasFormControlName\"\n [attr.id]=\"inputId\"\n [attr.name]=\"name\"\n [value]=\"value\"\n [tabIndex]=\"tabIndex\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [required]=\"required\"\n [checked]=\"exists(checked)\"\n (change)=\"onChange($event)\" />\n <span [nasClass]=\"getClass('indicator')\"></span>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { NasComponentBase } from '../../core';\nimport { SortModel } from '../../shared/models/sort.model';\nimport { SortOptionModel } from '../../shared/models/sort-option.model';\n\n/**\n * @description\n * Norwegian Sort Component | Functional\n */\n@Component({\n selector: 'nas-sort',\n templateUrl: './sort.component.html',\n styleUrls: ['./sort.component.scss']\n})\nexport class SortComponent extends NasComponentBase {\n\n checkedOptionObject: SortOptionModel;\n dropdownOpen: boolean;\n\n /**\n * @description\n * model for the sort component. containing all sort options and related meta data.\n */\n @Input() model: SortModel;\n\n /**\n * @description\n * popup open set & get.\n */\n @Input()\n get open(): boolean {\n return this.dropdownOpen;\n }\n set open(value: boolean) {\n this.dropdownOpen = value;\n }\n\n /**\n * @description\n * checked option set & get.\n */\n @Input()\n get selectedOption(): SortOptionModel {\n return this.checkedOptionObject;\n }\n set selectedOption(option: SortOptionModel) {\n if (!option) {\n return;\n }\n\n this.checkedOptionObject = option;\n }\n\n /**\n * @description\n * Listen for option change events.\n */\n @Output() selectedOptionChange = new EventEmitter<SortOptionModel>();\n\n\n /**\n * @description\n * Listen for apply button click events.\n */\n @Output() applyButtonClicked = new EventEmitter<SortOptionModel>();\n\n constructor() {\n super('nas-sort');\n }\n\n checkSpaceless(option: SortOptionModel, index: number) {\n if (option.spaceless) {\n return true;\n } else {\n return index === this.model.sortOptions.length - 1 && !this.model.applyButtonLabel?.length;\n }\n }\n\n applyButtonClick(): void {\n if (this.model && this.model.closeDropdownOnApplyClick) {\n this.open = false;\n }\n this.applyButtonClicked.emit(this.selectedOption);\n }\n\n optionChanged(option: SortOptionModel, isChecked: boolean): void {\n if (isChecked) {\n this.selectedOptionChange.emit(option);\n }\n if (this.model && this.model.closeDropdownOnOptionChange && this.open) {\n this.open = false;\n }\n }\n\n}\n","<div [nasClass]=\"getContainerClass('', exists(model?.right) && 'right')\" *ngIf=\"model\">\n <nas-dropdown [label]=\"model?.label\" [(open)]=\"open\">\n <nas-radio\n block\n [name]=\"model?.name\"\n [value]=\"option.value\"\n *ngFor=\"let option of model?.sortOptions; let optionIndex = index\"\n [nasFormControlName]=\"option?.nasFormControlName\"\n [nasFormGroup]=\"option?.nasFormGroup\"\n [required]=\"exists(option?.required)\"\n [spaceless]=\"checkSpaceless(option, optionIndex)\"\n [strong]=\"exists(option?.strong)\"\n [tabIndex]=\"option?.tabIndex\"\n [disabled]=\"exists(option?.disabled)\"\n [error]=\"exists(option?.error)\"\n [checked]=\"selectedOption?.value === option?.value\"\n (checkedChange)=\"optionChanged(option, $event)\"\n >\n {{option.title}}\n </nas-radio>\n <nas-button *ngIf=\"model?.applyButtonLabel && model?.applyButtonLabel.length\" primary compact spaceless (click)=\"applyButtonClick()\">{{model?.applyButtonLabel}}</nas-button>\n </nas-dropdown>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { NgModule } from '@angular/core';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, FormsModule, NasClassModule, ReactiveFormsModule],\n exports: [RadioComponent],\n})\nexport class RadioModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { SortComponent } from './sort.component';\nimport { DropdownModule } from '../dropdown/dropdown.module';\nimport { RadioModule } from '../radio/radio.module';\nimport { ButtonModule } from '../button/button.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n DropdownModule,\n RadioModule,\n ButtonModule\n ],\n declarations: [SortComponent],\n exports: [SortComponent]\n})\nexport class SortModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Grid Component | Layout\n */\n@Component({\n selector: 'nas-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class GridComponent extends NasComponentBase {\n /**\n * @description\n * Boolean to align items to the right\n */\n @Input() right: boolean;\n /**\n * @description\n * Boolean which will center the columns\n */\n @Input() center: boolean;\n /**\n * @description\n * Boolean to center the items\n */\n @Input() stretch: boolean;\n /**\n * @description\n * Boolean to stretch the items to the same height\n */\n @Input() wide: boolean;\n /**\n * @description\n * Boolean which will make smalles space between the columns\n */\n @Input() tight: boolean;\n /**\n * @description\n * Boolean to reduce space between items\n */\n @Input() xtight: boolean;\n /**\n * @description\n * Boolean to reduce space between items\n */\n @Input() xxtight: boolean;\n /**\n * @description\n * Boolean which will remove all right and left space of each column. Top and bottom space will be kept\n */\n @Input() spaceless: boolean;\n /**\n * @description\n * Removes padding on the right and left of grid.\n */\n\n @Input() mobileview: boolean;\n /**\n * @description\n * Boolean to vertical stack the columns when scaled to mobile view.\n */\n\n @Input() nopadding: boolean;\n /**\n * @description\n * Removes margin on the right and left of grid.\n */\n @Input() nomargin: boolean;\n\n /**\n * @description\n * Sets column width based on colGroup value (100/colGroup = result%)\n */\n @Input() colGroup: string | number;\n\n\n /**\n * @description\n * Represent a grid component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-grid');\n }\n\n /**\n * Set modifier array to be used by base class, based on property input\n */\n getModifiers(): Array<string> {\n return [\n this.exists(this.wide) && 'wide',\n this.exists(this.tight) && 'tight',\n this.exists(this.xtight) && 'xtight',\n this.exists(this.xxtight) && 'xxtight',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.right) && 'right',\n this.exists(this.center) && 'center',\n this.exists(this.stretch) && 'stretch',\n this.exists(this.nopadding) && 'nopadding',\n this.exists(this.nomargin) && 'nomargin',\n this.exists(this.mobileview) && 'mobileview',\n (this.colGroup === 0 || this.colGroup) && `col-group-${this.colGroup}`\n ];\n }\n}\n","<div [nasClass]=\"getClass('', getModifiers())\">\n <ng-content></ng-content>\n</div>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n Input,\n ElementRef,\n ViewEncapsulation,\n OnInit,\n} from '@angular/core';\nimport { NasComponentBase } from '../../../core/base/nas-component.base';\n\n@Component({\n selector: 'nas-col',\n templateUrl: './col.component.html',\n styleUrls: ['../grid.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ColComponent extends NasComponentBase implements OnInit {\n /**\n * @description\n * Sets column size for all screen sizes\n */\n @Input() base: string | number;\n /**\n * @description\n * Sets column size for all medium screen sizes and up\n */\n @Input() md: string | number;\n /**\n * @description\n * Sets column size for all large screen sizes and up\n */\n @Input() lg: string | number;\n /**\n * @description\n * Sets column size for all extra large screen sizes and up\n */\n @Input() xl: string | number;\n\n /**\n * @description\n * Sets specific size for each columns (100/colSize = result %)\n */\n @Input() colSize: string | number;\n\n /**\n * @description\n * Represent a column component.\n * Will initiate correct block style.\n */\n constructor(private elementRef: ElementRef) {\n super('nas-grid');\n }\n\n ngOnInit() {\n this.removeHostElement(this.elementRef);\n }\n\n classes() {\n const { base, md, lg, xl, colSize } = this;\n\n return this.getClass('item', [\n (base === 0 || base) && `col-${base}`,\n (md === 0 || md) && `col-${md}-md`,\n (lg === 0 || lg) && `col-${lg}-lg`,\n (xl === 0 || xl) && `col-${xl}-xl`,\n (colSize === 0 || colSize) && `col-size-${colSize}`,\n ]);\n }\n}\n","<div [nasClass]=\"classes()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { GridComponent } from './grid.component';\nimport { ColComponent } from './col/col.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n imports: [CommonModule, NasClassModule],\n declarations: [GridComponent, ColComponent],\n exports: [GridComponent, ColComponent],\n})\nexport class GridModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { IconListModel } from './icon-list.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\n\n/**\n * @description\n * Norwegian Icon Component | Layout\n*/\n@Component({\n selector: 'nas-icon-list',\n templateUrl: './icon-list.component.html',\n styleUrls: ['./icon-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class IconListComponent extends NasComponentBase {\n /**\n * Represent an iconList component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-icon-list');\n }\n\n /**\n * @description\n * The items for the list: [{icon, title, link*, description*}]\n */\n @Input() items: Array<IconListModel>;\n\n /**\n * @description\n * Small icons and no description\n */\n @Input() small?: boolean;\n\n /**\n * @description\n * Inline flow without breaks\n */\n @Input() inline?: boolean;\n\n /**\n * @description\n * Grid format, 2x2\n */\n @Input() grid?: boolean;\n\n /**\n * @description\n * No spacing in bottom (no margin-bottom)\n */\n @Input() spaceless?: boolean;\n\n getClasses(element?: string, modifiers?: any): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass(element, modifiers)\n ];\n return classes;\n }\n\n mainClass(): Array<ClassModel> {\n return this.getClasses('', [\n this.exists(this.small) && 'small',\n this.exists(this.grid) && 'grid',\n this.exists(this.inline) && 'inline',\n this.exists(this.spaceless) && 'spaceless',\n ]);\n }\n}\n","<ul [nasClass]=\"mainClass()\">\n <li *ngFor=\"let item of items\" [nasClass]=\"getClasses('item')\">\n <nas-icon\n [icon]=\"item.icon\"\n [nasClass]=\"getClasses('icon')\"\n [type]=\"small ? 'small' : 'medium'\"\n *ngIf=\"item.icon\">\n </nas-icon>\n <h3 [nasClass]=\"getClasses('title')\">\n <a [href]=\"item.link\" *ngIf=\"item.link\" [nasClass]=\"getClasses('link')\">\n {{item.title}}\n </a>\n <span *ngIf=\"!item.link\">{{item.title}}</span>\n </h3>\n\n <p [nasClass]=\"getClasses('description')\" *ngIf=\"!small\" [innerHtml]=\"item.description\"></p>\n </li>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '../icon/icon.module';\nimport { IconListComponent } from './icon-list.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [IconListComponent],\n imports: [CommonModule, IconModule, NasClassModule],\n exports: [IconListComponent],\n})\nexport class IconListModule {}\n","import { Component, Input, Output, ViewChild, ElementRef, EventEmitter } from '@angular/core';\nimport { InfoModel } from './models/info.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\n\n/**\n * @description\n * Norwegian info Component | Dialogs and Modals\n */\n@Component({\n selector: 'nas-info',\n templateUrl: './info.component.html',\n styleUrls: ['./info.component.scss']\n})\nexport class InfoComponent extends NasComponentBase {\n private infoValue: InfoModel;\n removeButtonPressed: boolean;\n @Output() showChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @ViewChild('infoContainer') infoContainer: ElementRef;\n\n /**\n * @description\n * A model that contains an optional title and an array of messages.\n * @example\n * ```html\n * <nas-info [info]=\"info\"></nas-info>\n * ```\n */\n @Input()\n get info() {\n return this.infoValue;\n }\n set info(info: InfoModel) {\n this.infoValue = info;\n this.scrollToInfo(info);\n }\n\n /**\n * @description\n * A boolean input value to set the accordion to primary style.\n * @example\n * ```html\n * <nas-info [info]=\"info\" error></nas-info>\n * ```\n * or\n * ```html\n * <nas-accordion [error]=\"isErrorProperty\"></nas-accordion>\n * ```\n */\n @Input() error?: boolean;\n\n /**\n * @description\n * A boolean input value to set the accordion to success info.\n * @example\n * ```html\n * <nas-info [info]=\"info\" success></nas-info>\n * ```\n * or\n * ```html\n * <nas-accordion [success]=\"isSuccessProperty\"></nas-accordion>\n * ```\n */\n @Input() success?: boolean;\n\n /**\n * @description\n * String to set stack trace label on the accordion.\n *\n * @example\n *\n * ```html\n * <nas-info [stackTraceLabel]=\"'Stack trace'\"></nas-info>\n * ```\n *\n */\n @Input() stackTraceLabel: string;\n\n /**\n * @description\n * A boolean input value to allow the remove icon in the Info UI.\n * @example\n * ```html\n * <nas-info [info]=\"info\" removeIcon></nas-info>\n * ```\n * or\n * ```html\n * <nas-accordion [removeIcon]=\"isremoveIconProperty\"></nas-accordion>\n * ```\n */\n @Input() removeIcon?: boolean;\n\n /**\n * @description\n * Flag for showing/hiding element. Defaults to true.\n */\n @Input() show = true;\n\n /**\n * @description\n * Flag for toggling on or off the HTML sanitizing. Defaults to true.\n */\n @Input() sanitized = true;\n\n constructor() {\n super('nas-info');\n }\n\n removeInfoBox(): void {\n this.show = false;\n this.showChange.emit(this.show);\n }\n\n getListClass(element?: string, modifiersInput?: any): ClassModel {\n let modifiers = modifiersInput;\n\n if (typeof modifiersInput === 'string') {\n modifiers = [modifiersInput];\n }\n\n return {\n block: 'list',\n element: element,\n modifiers: modifiers\n };\n }\n\n private scrollToInfo(info: InfoModel): void {\n setTimeout(() => {\n const scrolledPixelCount = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n if (!this.infoContainer) {\n return;\n }\n\n const offsetTop = this.infoContainer.nativeElement.offsetTop;\n if (info && ((info.messages && info.messages.length > 0) || info.title) && scrolledPixelCount > offsetTop) {\n window.scrollTo({\n behavior: 'smooth',\n left: 0,\n top: offsetTop\n });\n }\n }, 100);\n }\n\n get modifiers(): Array<string> {\n return [\n this.exists(this.error) && 'error',\n this.exists(this.success) && 'success',\n ];\n }\n}\n","<div *ngIf=\"exists(show)\" #infoContainer [nasClass]=\"getContainerClass()\">\n <div [nasClass]=\"getClass('content', modifiers)\">\n <div *ngIf=\"info?.timestamp\" [nasClass]=\"getClass('timestamp')\">\n <small>{{info?.timestamp | date:'full'}}</small>\n <small *ngIf=\"info?.server\"> ({{info?.server}})</small>\n </div>\n <div *ngIf=\"exists(error) || exists(success); else titleTemplate\" [nasClass]=\"getClass('error-title')\">\n <nas-icon *ngIf=\"exists(error)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--error\" type=\"small\"></nas-icon>\n <nas-icon *ngIf=\"exists(success)\" [nasClass]=\"getClass('error-icon')\" icon=\"alert--success\" type=\"small\"></nas-icon>\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n <ul *ngIf=\"info?.messages?.length > 0\" [nasClass]=\"getListClass('', 'spaceless')\">\n <li *ngFor=\"let message of info?.messages\"> \n <span *ngIf=\"exists(sanitized)\" [innerHTML]=\"message\"></span>\n <span *ngIf=\"!exists(sanitized)\">{{message}}</span>\n </li>\n </ul>\n <div [nasClass]=\"getClass('custom-content')\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"info?.link\">\n <nas-button link [href]=\"info.link.href\">{{info.link.text}}</nas-button>\n </div>\n <div *ngIf=\"info?.stackTrace\" [nasClass]=\"getClass('stack-trace')\">\n <nas-accordion simple [title]=\"stackTraceLabel\">\n {{info?.stackTrace}}\n </nas-accordion>\n </div>\n </div>\n <div [nasClass]=\"getClass('remove-box')\" *ngIf=\"exists(removeIcon);\">\n <nas-icon type=\"remove\" (click)=\"removeInfoBox()\"></nas-icon>\n </div>\n</div>\n\n<ng-template #titleTemplate>\n <h3 [nasClass]=\"getClass('title')\" [innerHTML]=\"info?.title\"></h3>\n</ng-template>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InfoComponent } from './info.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { IconModule } from '../icon/icon.module';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n AccordionModule,\n IconModule,\n ButtonModule\n ],\n declarations: [InfoComponent],\n exports: [InfoComponent]\n})\nexport class InfoModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { ClassModel } from '../../core';\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n AfterViewInit,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Input Component | Form Controls\n */\n@Component({\n selector: 'nas-input',\n templateUrl: './input.component.html',\n styleUrls: ['./input.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class InputComponent extends NasComponentBase implements AfterViewInit {\n\n @ViewChild('inputReactive') inputReactive: ElementRef<HTMLElement>;\n @ViewChild('inputNotReactive') inputNotReactive: ElementRef<HTMLElement>;\n\n /**\n * @description\n * The ID of the native input element\n */\n @Input() id: string;\n\n /**\n * @description\n * The value of the native input element\n */\n @Input() get model() {\n return this.modelValue;\n }\n set model(value: string) {\n this.modelValue = value;\n this.modelChange.emit(this.modelValue);\n }\n\n @Output() modelChange = new EventEmitter<string>(false);\n @Output() blur = new EventEmitter<string>(false);\n\n /**\n * @description\n * Whether the control is in an error state.\n */\n @Input() error: boolean;\n /**\n * @description\n * Whether the native input element is disabled or no, with disabled styling.\n */\n @Input()\n get disabled(): boolean {\n return this.disabledValue;\n }\n set disabled(value: boolean) {\n this.disabledValue = value;\n\n const inputElement = document.getElementById(this.inputId);\n\n if (!inputElement) {\n return;\n }\n\n if (this.exists(value)) {\n inputElement.setAttribute('disabled', 'disabled');\n } else {\n inputElement.removeAttribute('disabled');\n }\n }\n\n /**\n * @description\n * Set spaceless styling (removing spacing)\n */\n @Input() spaceless: boolean;\n /**\n * @description\n * Set loading styling of input\n */\n @Input() loading: boolean;\n /**\n * @description\n * Sets the label of the input\n */\n @Input() label: string;\n /**\n * @description\n * Sets the label of the input inside the white area\n */\n @Input() labelInside: boolean;\n /**\n * @description\n * The error message to display when error occur. Error attribute need to be true.\n */\n @Input() errorMessage: string;\n /**\n * @description\n * Sets placeholder text in the native input element\n */\n @Input() placeholder: string;\n /**\n * @description\n * Sets min length on the native input element.\n */\n @Input() minLength: number;\n /**\n * @description\n * Sets max length on the native input element.\n */\n @Input() maxLength: number;\n /**\n * @description\n * Sets the info text related to the input\n */\n @Input() info: string;\n /**\n * @description\n * Sets the icon on the input\n */\n @Input() icon: string;\n /**\n * @description\n * Input type of the element.\n */\n @Input() type = 'text';\n /**\n * @description\n * Whether the element is readonly.\n */\n @Input() readonly: boolean;\n /**\n * @description\n * String to set name on native input element.\n */\n @Input()\n get name(): string {\n return this.nameValue;\n }\n set name(value: string) {\n if (!value) {\n return;\n }\n this.nameValue = value;\n this.setNameAttribute();\n }\n /**\n * @description\n * Sets aria describedby for accessibility\n */\n @Input('aria-describedby') ariaDescribedby: string;\n /**\n * @description\n * Sets the required attribute on the native input element.\n */\n @Input() required: boolean;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * <nas-input [nasFormControlName]=\"'username'\"></nas-input>\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * <nas-input [nasFormGroup]=\"loginGroup\"></nas-input>\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * The minimum value to accept for this input.\n * @example\n * <nas-input [type]=\"'number'\" [min]=\"0\"></nas-input>\n */\n @Input() min: number;\n\n /**\n * @description\n * The maximum value to accept for this input.\n * @example\n * <nas-input [type]=\"'number'\" [max]=\"10\"></nas-input>\n */\n @Input() max: number;\n\n /**\n * @description\n * Adds a line below the input element. Default value is true.\n * @example\n * <nas-input [line]=\"false\"></nas-input>\n */\n @Input() line = true;\n\n /**\n * @description\n * Specifies a regular expression that the input value is checked against on form submission\n */\n @Input() pattern: string;\n\n get inputId(): string {\n return this.id ? this.id : `nas-input-${this.componentId}`;\n }\n\n get errorId(): string {\n return this.id ? this.id + '__error' : `nas-input-${this.componentId}__error`;\n }\n\n private componentId: number;\n private modelValue: string;\n private disabledValue: boolean;\n private nameValue: string;\n\n constructor() {\n super('nas-input');\n this.componentId = nextId++;\n }\n\n ngAfterViewInit(): void {\n if (this.exists(this.disabled)) {\n const inputElement = document.getElementById(this.inputId);\n inputElement.setAttribute('disabled', 'disabled');\n }\n this.setNameAttribute();\n }\n\n mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.exists(this.loading) && 'loading',\n this.exists(this.spaceless) && 'spaceless'\n ]);\n }\n\n private setNameAttribute() {\n if (this.nameValue) {\n if (!this.nasFormControlName || !this.nasFormGroup) {\n this.inputNotReactive?.nativeElement?.setAttribute('name', this.nameValue);\n } else {\n this.inputReactive?.nativeElement?.setAttribute('name', this.nameValue);\n }\n }\n }\n\n public onBlur(value: string) {\n this.blur.emit(value);\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [nasClass]=\"mainClass()\">\n <div [nasClass]=\"getClass('controls', exists(labelInside) && 'label-inside')\">\n <p [nasClass]=\"getClass('label')\"\n *ngIf=\"label\">{{label}}</p>\n <input #inputNotReactive [nasClass]=\"getClass('text')\"\n [attr.id]=\"inputId\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-required]=\"required\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.pattern]=\"pattern\"\n (blur)=\"onBlur($event.target.value)\"\n [(ngModel)]=\"model\" />\n <span [nasClass]=\"getClass('icon')\"\n *ngIf=\"exists(error)\">\n <nas-icon icon=\"alert--error\"></nas-icon>\n </span>\n <span [nasClass]=\"getClass('icon')\"\n *ngIf=\"icon && !error\">\n <nas-icon [icon]=\"icon\"></nas-icon>\n </span>\n </div>\n <span *ngIf=\"exists(line)\" [nasClass]=\"getClass('line')\"></span>\n <p [nasClass]=\"getClass('error')\" [id]=\"errorId\"\n *ngIf=\"exists(error) && errorMessage\">{{errorMessage}}</p>\n <span [nasClass]=\"getClass('info')\"\n *ngIf=\"info\">{{info}}</span>\n </label>\n</ng-container>\n<ng-template #reactiveForm>\n <label [nasClass]=\"mainClass()\"\n [formGroup]=\"nasFormGroup\">\n <div [nasClass]=\"getClass('controls', exists(labelInside) && 'label-inside')\">\n <p [nasClass]=\"getClass('label')\"\n *ngIf=\"label\">{{label}}</p>\n <input #inputReactive [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('text')\"\n [attr.id]=\"inputId\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder\"\n [attr.readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-required]=\"required\"\n [attr.minlength]=\"minLength\"\n [attr.maxlength]=\"maxLength\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.pattern]=\"pattern\"\n (blur)=\"onBlur($event.target.value)\"/>\n <span [nasClass]=\"getClass('icon')\"\n *ngIf=\"exists(error)\">\n <nas-icon icon=\"alert--error\"></nas-icon>\n </span>\n <span [nasClass]=\"getClass('icon')\"\n *ngIf=\"icon && !error\">\n <nas-icon [icon]=\"icon\"></nas-icon>\n </span>\n </div>\n <span *ngIf=\"exists(line)\" [nasClass]=\"getClass('line')\"></span>\n <p [nasClass]=\"getClass('error')\" [id]=\"errorId\"\n *ngIf=\"exists(error) && errorMessage\">{{errorMessage}}</p>\n <span [nasClass]=\"getClass('info')\"\n *ngIf=\"info\">{{info}}</span>\n </label>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { IconModule } from '../icon/icon.module';\nimport { InputComponent } from './input.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [InputComponent],\n imports: [CommonModule, IconModule, FormsModule, NasClassModule, ReactiveFormsModule],\n exports: [InputComponent],\n})\nexport class InputModule {}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Simple List Component | Layout\n */\n@Component({\n selector: 'nas-simple-list',\n templateUrl: './simple-list.component.html',\n styleUrls: ['./simple-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SimpleListComponent extends NasComponentBase {\n\n /**\n * @description\n * List with grey and blue check-icon markers\n */\n @Input() markers: boolean;\n /**\n * @description\n * List with note markers\n */\n @Input() note: boolean;\n /**\n * @description\n * List with green check-icon markers\n */\n @Input() positive: boolean;\n /**\n * @description\n * List with red x-icon markers\n */\n @Input() negative: boolean;\n /**\n * @description\n * List with goto (arrow) icon markers\n */\n @Input() goto: boolean;\n /**\n * @description\n * List styles as a table\n */\n @Input() table: boolean;\n /**\n * @description\n * List without margin at bottom\n */\n @Input() spaceless: boolean;\n /**\n * @description\n * The string elements within the list\n */\n @Input() items: Array<string>;\n\n constructor() {\n super('nas-simple-list');\n }\n\n mainClass() {\n return this.getClass('', [\n this.exists(this.markers) && 'markers',\n this.exists(this.note) && 'note',\n this.exists(this.positive) && 'positive',\n this.exists(this.negative) && 'negative',\n this.exists(this.goto) && 'goto',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.table) && 'table',\n ]);\n }\n}\n","<ul [nasClass]=\"mainClass()\">\n <li *ngFor=\"let item of items\">{{item}}</li>\n <ng-content></ng-content>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SimpleListComponent } from './simple-list.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [SimpleListComponent],\n imports: [CommonModule, NasClassModule],\n exports: [SimpleListComponent],\n})\nexport class SimpleListModule { }\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ElementRef,\n ViewChild,\n OnChanges,\n ChangeDetectorRef,\n Renderer2\n} from '@angular/core';\n\nimport { AnimateHelper } from '../../core/services/animate-helper/animate-helper.service';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Modal Component | Dialogs and Modals\n */\n@Component({\n selector: 'nas-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ModalComponent extends NasComponentBase implements OnInit, OnChanges {\n\n /**\n * @description\n * Form style on the modal.\n * @example\n * ```html\n * <nas-modal form></nas-modal>\n * ```\n * or\n * ```html\n * <nas-modal [form]=\"form\"></nas-modal>\n * ```\n */\n @Input() form?: boolean;\n\n /**\n * @description\n * Tight style on the modal.\n * @example\n * ```html\n * <nas-modal tight></nas-modal>\n * ```\n * or\n * ```html\n * <nas-modal [tight]=\"tight\"></nas-modal>\n * ```\n */\n @Input() tight?: boolean;\n\n /**\n * @description\n * Center style on the modal.\n * @example\n * ```html\n * <nas-modal center></nas-modal>\n * ```\n * or\n * ```html\n * <nas-modal [center]=\"center\"></nas-modal>\n * ```\n */\n @Input() center?: boolean;\n\n /**\n * @description\n * Outlined style on the modal.\n * @example\n * ```html\n * <nas-modal outlined></nas-modal>\n * ```\n * or\n * ```html\n * <nas-modal [outlined]=\"outlined\"></nas-modal>\n * ```\n */\n @Input() outlined?: boolean;\n\n /**\n * @description\n * Title on the modal.\n * @example\n * ```html\n * <nas-modal outlined></nas-modal>\n * ```\n * or\n * ```html\n * <nas-modal [outlined]=\"outlined\"></nas-modal>\n * ```\n */\n @Input() title: string;\n\n /**\n * @description\n * Close label for the modal.\n * @example\n * ```html\n * <nas-modal [closeLabel]=\"'Close'\"></nas-modal>\n * ```\n */\n @Input() closeLabel: string;\n\n /**\n * @description\n * Determines if the modal should be animated when shown. Defaults to true\n * @example\n * ```html\n * <nas-modal [animated]=\"'false'\"></nas-modal>\n * ```\n */\n @Input() animated = true;\n\n /**\n * @required\n * @description\n * Used to decide whether the modal should be diplayed or not.\n * @example\n * ```html\n * <nas-modal [(show)]=\"diplayModal\"></nas-modal>\n * ```\n */\n @Input()\n get show(): boolean {\n return this.showValue;\n }\n set show(show: boolean) {\n this.showValue = show;\n this.showChange.emit(show);\n\n if (show) {\n\n setTimeout(() => {\n this.renderer.addClass(document.body, 'block-scrolling');\n\n if (this.backdrop) {\n this.backdropStyle = {\n 'overflow-y': 'hidden'\n };\n }\n }, 100);\n } else {\n this.renderer.removeClass(document.body, 'block-scrolling');\n }\n }\n\n @Input() enableClose = true;\n\n @Output() showChange = new EventEmitter<boolean>();\n\n @ViewChild('content') content: ElementRef<HTMLElement>;\n @ViewChild('backdrop') backdrop: ElementRef<HTMLButtonElement>;\n\n fromElement: any;\n animation: any;\n showValue: boolean;\n backdropStyle: any;\n\n constructor(\n private animateHelper: AnimateHelper,\n private ref: ChangeDetectorRef,\n private renderer: Renderer2) {\n super('nas-modal');\n }\n\n ngOnInit() {\n this.animate = this.animate.bind(this);\n }\n\n ngOnChanges(changes: any) {\n if (!changes.show) {\n return;\n }\n\n if (changes.show.currentValue) {\n this.animate();\n }\n\n if (changes.show.currentValue === false && this.fromElement) {\n this.fromElement.focus();\n }\n\n this.fromElement = document.activeElement;\n this.ref.detectChanges();\n }\n\n onClose(): void {\n if (!this.enableClose) {\n return;\n }\n\n this.backdropStyle = {\n 'width': '100%',\n 'overflow-y': 'scroll'\n };\n\n this.show = false;\n this.ref.detectChanges();\n }\n\n private animate(): void {\n this.animation = { opacity: 0 };\n\n setTimeout(() => {\n if (!this.content || !this.show) {\n this.animation = {};\n return;\n }\n\n const contentElement = this.content.nativeElement;\n\n if (this.fromElement && contentElement) {\n const animation = this.animateHelper.animateFromElement(this.fromElement, contentElement, this.animated ? 800 : 0);\n\n setTimeout(() => {\n this.animation = { animation };\n this.ref.detectChanges();\n contentElement.focus();\n }, 50);\n } else {\n this.animation = { opacity: 1 };\n }\n }, 30);\n }\n}\n","<div [nasClass]=\"getClass('', [exists(form) && 'form', exists(tight) && 'tight', exists(center) && 'center'])\"\n *ngIf=\"show\">\n <div #content\n [nasClass]=\"getClass('content', [exists(outlined) && 'outlined'])\"\n [ngStyle]=\"animation\"\n tabindex=\"0\">\n <nas-button *ngIf=\"enableClose\"\n [overrideBaseCssClass]=\"true\"\n [cssClass]=\"getClass('close')\"\n [ariaLabel]=\"closeLabel\"\n (clickChange)=\"onClose()\">\n <nas-icon [type]=\"'remove'\"></nas-icon>\n </nas-button>\n <h2 [nasClass]=\"getClass('title')\"\n *ngIf=\"title\">{{title}}</h2>\n <ng-content></ng-content>\n </div>\n <button type=\"button\"\n #backdrop\n [disabled]=\"!enableClose\"\n [nasClass]=\"getClass('backdrop')\"\n (click)=\"onClose()\"\n [ngStyle]=\"backdropStyle\">{{closeLabel}}</button>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ModalComponent } from './modal.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AnimateHelper } from '../../core/services/animate-helper/animate-helper.service';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NasClassModule,\n ButtonModule,\n IconModule\n ],\n declarations: [ModalComponent],\n exports: [ModalComponent],\n providers: [AnimateHelper]\n})\nexport class ModalModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport {\n Component,\n Input,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { IconListModel } from '../icon-list/icon-list.model';\n\n/**\n * @description\n * Norwegian Page Footer Component | Navigation\n*/\n@Component({\n selector: 'nas-page-footer',\n templateUrl: './page-footer.component.html',\n styleUrls: ['./page-footer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageFooterComponent extends NasComponentBase {\n /**\n * @description\n * Links to be displayed in footer.\n *\n * @example\n * ```html\n * <nas-page-footer [links]=\"{text: 'Brukervilkår', url: '/brukervilkar'}\"></nas-page-footer>\n * ```\n */\n @Input() links: Array<IconListModel>;\n /**\n * @description\n * String to set Text on To Top Button.\n *\n * @example\n *\n * ```html\n * <nas-page-footer [buttonText]=\"'Til Toppen'\"></nas-page-footer>\n * ```\n */\n @Input() buttonText = 'To Top';\n /**\n * @description\n * Boolean to set hide To Top Button.\n *\n * @example\n *\n * ```html\n * <nas-page-footer [hideButton]=\"true\">Click on me!</nas-page-footer>\n * ```\n */\n @Input() hideButton?: boolean;\n /**\n * @description\n * String to set bottom text in footer.\n *\n * @example\n *\n * ```html\n * <nas-page-footer [bottomText]=\"bla bla\"></nas-page-footer>\n * ```\n */\n @Input() bottomText?: string;\n /**\n * Represent a page footer component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-page-footer');\n }\n\n scrollToTop() {\n window.scrollTo(0, 0);\n }\n}\n","<footer>\n <hr />\n <nas-grid>\n <nas-col>\n <nas-button *ngIf=\"!hideButton\"\n right\n (clickChange)=\"scrollToTop()\">{{buttonText}}<nas-icon icon=\"arrow-up\"></nas-icon>\n </nas-button>\n <ul class=\"list list--horizontal\">\n <li *ngFor=\"let link of links\">\n <a *ngIf=\"link.link\"\n href=\"{{link.link}}\">{{link.title}}</a>\n </li>\n </ul>\n </nas-col>\n <nas-col *ngIf=\"bottomText\">\n <div class=\"spacing-top\"\n [innerHTML]=\"bottomText\"></div>\n </nas-col>\n </nas-grid>\n</footer>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PageFooterComponent } from './page-footer.component';\nimport { IconModule } from '../icon/icon.module';\nimport { ButtonModule } from '../button/button.module';\nimport { GridModule } from '../grid/grid.module';\n\n\n@NgModule({\n declarations: [PageFooterComponent],\n imports: [CommonModule, IconModule, ButtonModule, GridModule],\n exports: [PageFooterComponent],\n})\nexport class PageFooterModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport {\n Component,\n Input,\n ElementRef,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { NasComponentBase } from '../../../core';\n\n@Component({\n selector: 'nas-search',\n templateUrl: './search.component.html',\n styleUrls: ['./search.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class SearchComponent extends NasComponentBase {\n /**\n * @description\n * Sets the search label for the search form. Default value is \"Search\"\n */\n @Input() searchText = 'Search';\n /**\n * @description\n * Url to the search form. Added to the action attribute on native form element.\n */\n @Input() searchForm: string;\n @ViewChild('input') inputElement: ElementRef;\n\n constructor() {\n super('nas-search');\n }\n\n expanded = false;\n\n blur() {\n const { nativeElement: input } = this.inputElement;\n\n setTimeout(() => {\n if (input.value === '') {\n this.expanded = false;\n }\n }, 100);\n }\n\n focus() {\n this.expanded = true;\n\n const { nativeElement: input } = this.inputElement;\n\n setTimeout(() => {\n input.focus();\n }, 50);\n }\n}\n","<form [action]=\"searchForm\" [nasClass]=\"getClass('', expanded && 'expanded')\" method=\"get\">\n <button type='button' [nasClass]=\"getClass('toggle')\" (click)=\"focus()\" (focus)=\"focus()\">\n <nas-icon icon=\"search\" [nasClass]=\"getClass('icon')\"></nas-icon>\n <span [nasClass]=\"getClass('toggle-text')\">{{searchText}}</span>\n </button>\n\n <input\n type=\"search\"\n [nasClass]=\"getClass('input')\"\n [placeholder]=\"searchText\"\n name=\"search\"\n (blur)=\"blur()\"\n #input\n />\n</form>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NasComponentBase } from '../../../core';\n\n@Component({\n selector: 'nas-hamburger',\n templateUrl: './hamburger.component.html',\n styleUrls: ['./hamburger.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class HamburgerComponent extends NasComponentBase {\n /**\n * @description\n * Sets the menu to be expanded\n */\n @Input() expanded: boolean;\n\n constructor() {\n super('nas-icon-hamburger');\n }\n}\n","<span [nasClass]=\"getClass('', expanded && 'close')\">\n <span [nasClass]=\"getClass('bar', 'first')\"></span>\n <span [nasClass]=\"getClass('bar')\"></span>\n <span [nasClass]=\"getClass('bar', 'last')\"></span>\n</span>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport {\n Component,\n Input,\n OnDestroy,\n ViewEncapsulation,\n ViewChild,\n ElementRef,\n AfterViewInit,\n ChangeDetectorRef, Output, EventEmitter,\n} from '@angular/core';\nimport { NasComponentBase } from '../../core';\nimport { IconListModel } from '../icon-list';\n\n/**\n * @description\n * Norwegian Page Header Component | Navigation\n*/\n@Component({\n selector: 'nas-page-header',\n templateUrl: './page-header.component.html',\n styleUrls: ['./page-header.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageHeaderComponent extends NasComponentBase implements OnDestroy, AfterViewInit {\n\n /**\n * @description\n * Sets the menu text. Defaults to \"Menu\".\n */\n @Input() menuText = 'Menu';\n\n /**\n * @description\n * Sets the close text. Defaults to \"Close\".\n */\n @Input() closeText = 'Close';\n\n /**\n * @description\n * Sets the search label for search field. Defaults to \"Search\".\n */\n @Input() searchText = 'Search';\n\n /**\n * @description\n * Url to the search form. Added to the action attribute on native form element.\n */\n @Input() searchForm: string;\n\n /**\n * @description\n * Show the profile section.\n */\n @Input() displayProfile: boolean;\n\n /**\n * @description\n * Will display the Norwegian Reward logo, set this to true display it. It's false by default.\n */\n @Input() reward = false;\n\n /**\n * @description\n * Is user authenticated. Only valid if displayProfile is true\n */\n @Input() isAuthenticated: boolean;\n\n /**\n * @description\n * Url to the front-/homepage.\n */\n @Input() frontPageUrl = '/';\n\n /**\n * @description\n * Use router link instead of href on links\n */\n @Input() useRouterLink: boolean;\n\n /**\n * @description\n * Sets z-index to 0\n */\n @Input() nozindex?: boolean;\n\n /**\n * @description\n * Link to logout.\n */\n @Input() logOutLink: IconListModel;\n\n /**\n * @description\n * Link to profile.\n */\n @Input() profileLink: IconListModel;\n\n /**\n * @description\n * links to display with icon in header.\n */\n @Input() links: Array<IconListModel>;\n\n /**\n * @description\n * Notifies consumer that menu is expanded or collapsed\n */\n @Output() openChange = new EventEmitter<boolean>();\n\n expanded = false;\n animateOut = false;\n displayHamburger = false;\n\n @ViewChild('menu') menuElement: ElementRef;\n\n constructor(private changeDetector: ChangeDetectorRef) {\n super('nas-page-header');\n this.handleToggle = this.handleToggle.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.menuClick = this.menuClick.bind(this);\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n ngAfterViewInit(): void {\n if (this.menuElement) {\n const menuHtmlElement = this.menuElement.nativeElement as HTMLElement;\n this.displayHamburger = menuHtmlElement.childNodes.length > 0;\n this.changeDetector.detectChanges();\n }\n }\n\n ngOnDestroy() {\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n menuClick({ target }: any): void {\n if (!!target.closest('a') || !!target.closest('button')) {\n this.handleToggle(false);\n }\n }\n\n handleToggle(force: boolean): any {\n if (force === false && this.expanded === false) {\n return;\n }\n\n const expanded = force === false ? force : !this.expanded;\n this.expanded = expanded;\n this.openChange.emit(expanded);\n\n if (expanded) {\n document.body.classList.add('block-scrolling__top-position');\n\n setTimeout(() => {\n const { nativeElement: menuElement } = this.menuElement;\n\n if (menuElement) {\n menuElement.focus();\n }\n }, 50);\n } else {\n document.body.classList.remove('block-scrolling__top-position');\n this.animateOut = true;\n\n setTimeout(() => {\n this.animateOut = false;\n }, 300);\n }\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (event && event.code === 'Escape') {\n this.handleToggle(false);\n }\n }\n}\n","<header>\n <div [nasClass]=\"getClass('')\" [style.zIndex]=\"exists(nozindex) && '0'\">\n <div [nasClass]=\"getClass('content')\">\n <button *ngIf=\"displayHamburger\" type=\"button\" [nasClass]=\"getClass('toggle')\" (click)=\"handleToggle(true)\">\n <span [nasClass]=\"getClass('toggle-icon')\">\n <nas-hamburger [expanded]=\"expanded\"></nas-hamburger>\n </span>\n <span *ngIf=\"!expanded\">{{menuText}}</span>\n <span *ngIf=\"expanded\">{{closeText}}</span>\n </button>\n </div>\n <div [nasClass]=\"getClass('right-content')\">\n <nas-search [searchText]=\"searchText\" [searchForm]=\"searchForm\" *ngIf=\"searchForm\"></nas-search>\n\n <ng-template #linksTemplate let-link=\"link\">\n <nas-icon [icon]=\"link.icon\" [nasClass]=\"getClass('link-icon')\" *ngIf=\"link.icon\"></nas-icon>\n <span [nasClass]=\"getClass('link-text')\">{{link.title}}</span>\n </ng-template>\n\n <ng-container *ngIf=\"useRouterLink; else linksHref\">\n <a [routerLink]=\"link.link\" [nasClass]=\"getClass('link')\" [title]=\"link.description\" *ngFor=\"let link of links\">\n <ng-container *ngTemplateOutlet=\"linksTemplate; context: { link: link }\"></ng-container>\n </a>\n </ng-container>\n\n <ng-template #linksHref>\n <a [href]=\"link.link\" [nasClass]=\"getClass('link')\" [title]=\"link.description\" *ngFor=\"let link of links\">\n <ng-container *ngTemplateOutlet=\"linksTemplate; context: { link: link }\"></ng-container>\n </a>\n </ng-template>\n\n <span [nasClass]=\"getClass('authentication')\" *ngIf=\"displayProfile\">\n <ng-template #profileLinksTemplate>\n <nas-icon [icon]=\"profileLink.icon\" [nasClass]=\"getClass('link-icon')\"></nas-icon>\n <span [nasClass]=\"getClass('link-text')\">{{profileLink.title}}</span>\n </ng-template>\n\n <ng-container *ngIf=\"useRouterLink; else profileHref\">\n <a [routerLink]=\"profileLink.link\" [nasClass]=\"getClass('link')\" [title]=\"profileLink.description\">\n <ng-container *ngTemplateOutlet=\"profileLinksTemplate\"></ng-container>\n </a>\n </ng-container>\n\n <ng-template #profileHref>\n <a [href]=\"profileLink.link\" [nasClass]=\"getClass('link')\" [title]=\"profileLink.description\">\n <ng-container *ngTemplateOutlet=\"profileLinksTemplate\"></ng-container>\n </a>\n </ng-template>\n\n <ng-template #logoutLinkTemplate let-link=\"link\">\n <span [nasClass]=\"getClass('link-logout')\">{{logOutLink.title}}</span>\n </ng-template>\n\n <ng-container *ngIf=\"useRouterLink; else logoutHref\">\n <a [routerLink]=\"logOutLink.link\" [nasClass]=\"getClass('link')\" *ngIf=\"isAuthenticated\"\n [title]=\"logOutLink.description\">\n <ng-container *ngTemplateOutlet=\"logoutLinkTemplate\"></ng-container>\n </a>\n </ng-container>\n\n <ng-template #logoutHref>\n <a [href]=\"logOutLink.link\" [nasClass]=\"getClass('link')\" *ngIf=\"isAuthenticated\"\n [title]=\"logOutLink.description\">\n <ng-container *ngTemplateOutlet=\"logoutLinkTemplate\"></ng-container>\n </a>\n </ng-template>\n </span>\n\n <a href=\"{{frontPageUrl}}\" [nasClass]=\"getClass('branding')\">\n <img *ngIf=\"!reward\"\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIxOTdweCIgaGVpZ2h0PSI0NS41cHgiIHZpZXdCb3g9IjAgMCAxOTcgNDUuNSIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTk3IDQ1LjUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiMwMDNENTAiIGQ9Ik0xNzUuNCwzMi4zYy0xNy41LDktMzQuNywxNC41LTQzLDEyLjhjLTcuMy0xLjUtMy43LTExLjUsNi43LTE5LjdsMi4yLDBjLTguMiw2LjktOC44LDE1LjUtMy42LDE2LjJjNS45LDAuNywyMS4xLTIuNSwzNi42LTkuN0wxNzUuNCwzMi4zeiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZmlsbD0iIzAwM0Q1MCIgZD0iTTE5My42LDE5LjljMC41LDAsMSwwLjEsMS40LDAuMmMwLjMsMC4xLDAuNCwwLjEsMC43LDAuM2MwLjEsMCwwLjIsMC4xLDAuMywwLjJjMC4yLDAuMSwwLjEsMC4yLDAuMiwwLjNjMC4xLDAuNC0wLjEsMC43LTAuMywxYy0wLjYsMS0xLjYsMS43LTIuNSwyLjRjLTEsMC44LTIsMS40LTMsMi4xYy0wLjIsMC4xLTAuNCwwLjMtMC42LDAuNGMwLjIsMC4xLDAuMywwLjEsMC41LDAuMmwwLDBjMCwwLDAuMSwwLjEsMC4yLDAuMWMwLjMtMC4xLDAuNS0wLjMsMC44LTAuNGMwLjMtMC4yLDAuNS0wLjIsMC44LTAuMWMwLjIsMC4xLDAuNSwwLjQsMC42LDAuNmMwLjEsMC40LDAuMSwwLjctMC4xLDEuMWMxLjMsMC42LDIuNSwxLjIsMy43LDEuOGMwLjMsMC4yLDAuNiwwLjMsMC45LDAuNWMwLjEsMC4yLTAuMSwwLjQtMC4zLDAuNWMtMC41LDAuMi0wLjksMC42LTEuNCwwLjZjLTAuNS0wLjEtMS0wLjItMS42LTAuNGMtMC44LTAuMi0xLjYtMC40LTIuNC0wLjVjLTAuNi0wLjEtMS4zLTAuMi0xLjktMC40Yy0wLjUtMC4xLTAuOS0wLjItMS40LTAuMmMtMC42LTAuMS0xLjItMC4xLTEuOS0wLjFjLTAuOCwwLTEuNSwwLTIuMy0wLjFjLTEuMiwwLjUtMi4zLDEuMS0zLjcsMS42Yy0wLjksMC4zLTEuNywwLjYtMi42LDAuOWMwLjMsMC40LDAuNywwLjUsMC45LDFjMCwwLjEtMC4xLDAuMS0wLjEsMC4xYy0wLjIsMC4xLTAuMywwLjEtMC41LDAuMmMtMC45LTAuMi0xLjctMC40LTIuNi0wLjdsLTAuMiwwYy0wLjQsMC4xLTEsMC41LTEuNCwwYzAtMC4xLTAuMS0wLjItMC4xLTAuNGMwLTAuMS0wLjEtMC4xLTAuMi0wLjJjLTAuMi0wLjEtMC4zLTAuMS0wLjQtMC4yYy0wLjMtMC4xLTAuNS0wLjItMC44LTAuM2MtMC42LTAuMi0xLjEtMC4zLTEuNi0wLjZjLTAuMS0wLjEtMC4yLTAuMiwwLTAuNGMwLjMtMC4yLDAuOC0wLjQsMS4yLTAuMmMwLjQsMCwwLjksMC4xLDEuMiwwLjFsMCwwYy0wLjUtMC41LTAuOS0xLTEuNC0xLjVjLTAuMS0wLjEtMC4yLTAuMi0wLjItMC40YzAtMC4xLDAuMS0wLjIsMC4yLTAuM2MwLjEtMC4xLDAuMi0wLjEsMC4zLTAuMWMwLjQtMC4yLDAuNS0wLjMsMC44LTAuMmMwLjksMC40LDEuNiwwLjcsMi42LDEuMWMwLjIsMC4xLDAuNCwwLjIsMC42LDAuMmMwLjMtMC4xLDAuNC0wLjIsMC42LTAuM2MwLjEsMCwwLjQtMC4yLDAuNS0wLjNjMC4zLTAuMiwwLjYtMC40LDAuOC0wLjVjMC42LTAuNCwwLjktMC42LDEuNC0wLjljLTAuNy0wLjMtMS41LTAuNy0yLjItMWMtMC44LTAuMi0xLTAuMy0xLjctMC41Yy0wLjUtMC4xLTEuMS0wLjMtMS4xLTAuM2MtMS0wLjItMS4yLTAuMy0yLjEtMC41Yy0wLjQtMC4yLTAuOS0wLjItMS40LTAuNGMwLTAuMSwwLTAuMSwwLTAuMmMwLjEtMC4yLDAuNC0wLjQsMC42LTAuNmMwLjMtMC4yLDAuNS0wLjQsMC45LTAuNWMwLjcsMCwxLjIsMC4xLDIsMC4yYzAuOSwwLjEsMS44LDAuMiwyLjYsMC4zYzEuMSwwLjEsMi40LDAuMiwzLjUsMC40YzAuMSwwLDAuMiwwLjEsMC4zLDBjMC4xLDAuMSwwLjIsMCwwLjMsMC4xYzAuMSwwLDAuMiwwLDAuMywwYzAuNS0wLjQsMS4xLTAuOSwxLjgtMS4xYzAuNCwwLDAuOCwwLjIsMSwwLjVjMS4zLTAuOSwyLjUtMS44LDMuOS0yLjVjMS4zLTAuNywyLjUtMS4yLDMuNS0xLjVjMC43LTAuMiwxLjUtMC4zLDIuMi0wLjRDMTkzLjMsMTkuOSwxOTMuNCwxOS45LDE5My42LDE5LjkiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xOTQuMywyMC43Yy0wLjYsMC4xLTEsMC4yLTEuNywwLjVjLTAuNiwwLjItMS41LDAuNi0yLjMsMWMtMS4xLDAuNS0yLDEuMS0zLjIsMS44Yy0wLjQsMC4zLTEuMywxLTEuNCwxLjFjLTAuNy0wLjEtMS4zLTAuMS0yLTAuMmwwLjEtMC4xYzAuOS0wLjcsMS42LTEuMiwyLjYtMS43YzAuOC0wLjUsMi4xLTEuMiwzLjEtMS42YzAuOS0wLjQsMS45LTAuNywyLjktMC44QzE5My4yLDIwLjUsMTkzLjgsMjAuNSwxOTQuMywyMC43Ii8+PC9nPjwvZz48Zz48Zz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTgxLjQsMjUuMWMwLjItMC4xLDAuMy0wLjIsMC41LTAuM2MwLjItMC4xLDAuMy0wLjIsMC40LTAuMmMtMC4xLDAuMy0wLjEsMC40LDAsMC43YzAsMC4yLDAuMiwwLjMsMC4yLDAuNGMtMC40LDAuMy0wLjgsMC41LTEuMiwwLjhjLTAuMS0wLjEtMC4yLTAuMi0wLjItMC40Yy0wLjEtMC4zLDAtMC41LDAuMS0wLjhMMTgxLjQsMjUuMXoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xODAuNywyOC40Yy0wLjUsMC4zLTEsMC42LTEuNSwwLjhjLTEsMC41LTIuMSwxLjEtMy42LDEuOGMtMC40LDAuMi0wLjgsMC4zLTEuMiwwLjJjLTAuMywwLTAuMywwLTAuNi0wLjFjLTAuNS0wLjUtMS4xLTEuMS0xLjYtMS42Yy0wLjEtMC4xLTAuMi0wLjItMC4yLTAuM2wwLjMtMC4yaDAuMWMwLjgsMC4zLDEuMywwLjYsMi4xLDFjMC4zLDAuMSwwLjYsMC4zLDAuOSwwLjRjMC4zLDAsMC42LTAuMSwwLjktMC4ybDAuMi0wLjFjMC40LTAuMywwLjYtMC40LDAuOC0wLjVjMC44LTAuNSwxLjUtMC45LDIuMy0xLjRsMC4yLTAuMUMxODAuMSwyOC4yLDE4MC4zLDI4LjMsMTgwLjcsMjguNCIvPjwvZz48L2c+PGc+PGc+PGc+PHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTAsNS40aDUuNXYxLjRjMi43LTIuNCw2LjItMi40LDguNC0xYzIuNCwxLjUsMi40LDMuOCwyLjQsNi40djcuN2gtNS41di02LjFjMC0xLjQsMC4xLTMuMi0xLjMtNC4xQzguOSw5LjIsNy42LDkuMiw2LjgsOS44Yy0xLjQsMS0xLjIsMi4yLTEuMiw0LjN2NS44SDBWNS40eiIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0yMi44LDYuMWMtMi4zLDEuMy0zLjUsMy4yLTMuOCw1LjZjLTAuMiwxLjksMC4yLDQuMiwxLjgsNS45YzIuOSwzLDgsMy4xLDEwLjksMi4xYzIuNC0wLjgsNC40LTIuMiw1LjItNS4zYzAuNS0yLDAuMy00LjEtMS02LjFjLTIuNC0zLjUtNy4zLTMuOC05LjMtMy41QzI1LjQsNS4xLDI0LDUuNCwyMi44LDYuMSBNMjcuMiw4LjhjMC45LTAuMiwyLjMsMCwzLjEsMWMwLjgsMC45LDEuMSwyLjMsMSwzLjNjLTAuMSwxLTAuNywyLjEtMS44LDIuN2MtMSwwLjUtMi40LDAuNS0zLjQtMC4yYy0wLjktMC42LTEuNC0xLjctMS41LTIuOGMwLTEsMC4yLTIuMiwxLjItMy4yQzI2LjQsOS4xLDI2LjgsOSwyNy4yLDguOCIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik02NS42LDEyLjFjMCwwLjMtMC4xLDAuNS0wLjUsMS40bC0yLjEsNi40aC01LjdMNTEuOSw1LjRINThsMS45LDYuMWMwLjMsMS4xLDAuNCwxLjMsMC40LDEuN2MwLTAuMywwLjEtMC42LDAuNC0xLjdsMS45LTYuMWg2bDEuOSw2LjFjMC4zLDEuMSwwLjQsMS4zLDAuNCwxLjdjMC0wLjMsMC4xLTAuNiwwLjQtMS43bDEuOS02LjFoNi4xbC01LjUsMTQuNWgtNS43bC0yLTYuM0M2NS43LDEyLjYsNjUuNywxMi40LDY1LjYsMTIuMSIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik05Ni40LDcuNmMtMi42LTMtOC0zLjEtMTAuNS0yLjRjLTIuNCwwLjctNC40LDIuMS01LjMsNS4yYy0wLjYsMi4zLTAuNCw0LjUsMSw2LjVjMi42LDMuNyw3LjYsMy41LDEwLDMuMmMxLjgtMC4zLDUuMS0xLjMsNi4zLTQuNWwwLjEtMC4xbC01LjUtMC42Yy0wLjIsMC4yLTAuMywwLjQtMC45LDAuOWMtMC45LDAuNy0yLjksMC42LTMuNywwLjNjLTAuOS0wLjQtMS43LTEuNS0xLjgtMi4yaDEyLjN2LTAuM0M5OC40LDExLjcsOTcuOCw5LjMsOTYuNCw3LjYgTTkyLjYsMTAuOEg4NmMwLjUtMS42LDEuNC0yLjEsMi41LTIuM0M4OS43LDguMyw5MS43LDguNiw5Mi42LDEwLjgiLz48L2c+PC9nPjwvZz48Zz48Zz48Zz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTAxLjUsMjAuN2MwLjEsMS4xLDAuNCwxLjgsMC41LDIuMWMxLjQsMi41LDMuOSwzLDcsM2MzLjEsMCw1LjUtMC4yLDcuMy0yLjNjMS42LTEuOSwxLjQtNC4yLDEuNC02LjRWNS42aC01LjV2MS4zYy0xLjItMS4yLTIuNS0xLjYtMy41LTEuN2MtMi0wLjMtNC44LDAuNC02LjUsMi42Yy0xLjQsMS44LTEuNiw0LjQtMS40LDYuMmMwLjMsMi4yLDEuNSwzLjgsMy41LDQuOWMyLjIsMS4yLDUuOCwwLjksNy44LTAuOGMwLDAuNiwwLDEuOS0wLjIsMi41Yy0wLjQsMC45LTEuMiwxLjItMS44LDEuM2MtMC42LDAuMS0yLjIsMC40LTIuOC0wLjdjLTAuMS0wLjItMC4yLTAuMy0wLjItMC41SDEwMS41eiBNMTA4LjUsOS44YzAuNy0wLjIsMi4zLTAuMSwzLjEsMC44YzAuNSwwLjUsMC44LDEuMiwwLjcsMS45Yy0wLjEsMC42LTAuNCwxLjQtMSwxLjhjLTAuOSwwLjYtMi41LDAuNi0zLjQsMC4xYy0wLjctMC40LTEuMi0wLjktMS4zLTEuN2MtMC4xLTAuNSwwLTEuNCwwLjUtMkMxMDcuNSwxMC4yLDEwNy45LDEwLDEwOC41LDkuOCIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xMjAuOCw1LjRoNS41djE0LjVoLTUuNVY1LjR6IE0xMjAuOCwwaDUuNXYzLjdoLTUuNVYweiIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xMzUuMiw5LjVjMC4xLTAuNCwwLjMtMC42LDAuNi0wLjljMC43LTAuNiwzLjQtMC40LDQuMS0wLjFjMC44LDAuNCwxLDEsMS4xLDJjMCwwLTEuNy0wLjEtMi45LTAuMWMtMS40LDAuMS0yLDAuMS0zLjIsMC4zYy0yLjQsMC4zLTQuOCwwLjctNS40LDMuNmMtMC40LDIsMC4yLDMuOCwyLjEsNWwwLjIsMC4xYzIuOCwxLjIsNi4zLDAuOCw5LjQtMWMwLDAsMCwwLjksMC4yLDEuM2w2LjQsMGMtMC43LTAuNi0xLTEuNi0xLTN2LTYuMmMwLTEuMiwwLjEtMi44LTAuNy0zLjdjLTEuMy0xLjctMy43LTIuMS03LjktMi4xYy0zLjQsMC01LjcsMC4yLTcsMS45Yy0wLjYsMC45LTAuOCwxLjYtMC44LDIuN0gxMzUuMnogTTE0MC44LDEzLjVjLTAuNSwxLjktMS42LDIuNS0zLDIuN2MtMC44LDAuMS0yLjEsMC4yLTIuNy0wLjljLTAuMS0wLjItMC4yLTAuOC0wLjEtMWMwLjQtMC44LDEuMS0wLjcsMi45LTAuOEwxNDAuOCwxMy41eiIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0xNTAuNSw1LjRoNS41djEuNGMyLjctMi40LDYuMi0yLjQsOC40LTFjMi40LDEuNSwyLjQsMy44LDIuNCw2LjR2Ny43aC01LjV2LTYuMWMwLTEuNCwwLjEtMy4yLTEuMy00LjFjLTAuNy0wLjQtMi4xLTAuNC0yLjgsMC4yYy0xLjQsMS0xLjIsMi4yLTEuMiw0LjN2NS44aC01LjVWNS40eiIvPjwvZz48L2c+PC9nPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik00OS4yLDUuMnY1LjZjLTEuNywwLTIuOCwwLjItMy45LDF2OC4xaC01LjVWNS40aDUuNXYxLjdjMC4zLTAuNSwxLTEuMSwxLjktMS41QzQ3LjUsNS40LDQ4LjUsNS4yLDQ5LjIsNS4yIi8+PC9nPjwvZz48L2c+PC9nPjwvc3ZnPg==\"\n alt=\"Logo: Norwegian\" [nasClass]=\"getClass('branding-img', 'large')\" />\n <img *ngIf=\"reward\" \n src=\"data:image/svg+xml;charset=UTF-8,%3c?xml version='1.0' standalone='no'?%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'%3e%3csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' id='body_1' width='1024' height='768'%3e%3cg transform='matrix(5.496511 0 0 5.496511 2121.6533 -1156.9468)'%3e%3cg%3e%3c/g%3e%3cg%3e%3cg%3e%3cg%3e%3cg%3e%3cpath d='M-376.9 295.6L-377 295.5C -377.3 294.9 -377.3 294 -377.3 293.5C -377.4 291.6 -377.59998 290.3 -379.3 290.3L-379.3 290.3L-379.5 290.3L-383.7 290.3L-383.7 295.59998L-385.30002 295.59998L-385.30002 283.19998L-379.50003 283.19998C -377.10004 283.19998 -375.60004 284.49997 -375.60004 286.49997C -375.60004 287.89996 -376.20004 288.89996 -377.30005 289.49997C -376.20004 289.99997 -375.90005 291.09998 -375.80005 292.19998C -375.80005 292.4 -375.80005 292.59998 -375.70004 292.9C -375.60004 293.69998 -375.60004 294.8 -375.20004 295.19998L-375.20004 295.19998L-374.90005 295.59998L-376.9 295.59998L-376.9 295.6zM-379.6 289C -378.4 289 -377.2 288.3 -377.2 286.9C -377.2 285.5 -378 284.8 -379.6 284.8L-379.6 284.8L-383.6 284.8L-383.6 289L-379.6 289z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-379.5 283.5C -377.5 283.5 -375.9 284.5 -375.9 286.6C -375.9 288.1 -376.69998 289.30002 -378.19998 289.6C -376.59998 289.80002 -376.19998 290.9 -376.09998 292.30002C -375.99997 293.1 -375.99997 294.80002 -375.49997 295.40002L-375.49997 295.40002L-376.79996 295.40002C -377.09995 294.90002 -377.09995 294.00003 -377.09995 293.50003C -377.19995 291.80002 -377.29996 290.10004 -379.29996 290.10004C -379.39996 290.10004 -379.39996 290.10004 -379.49997 290.10004L-379.49997 290.10004L-383.89996 290.10004L-383.89996 295.40002L-384.99997 295.40002L-384.99997 283.50003L-379.5 283.50003L-379.5 283.5zM-383.9 289.2L-379.6 289.2C -378.2 289.2 -377 288.30002 -377 286.90002C -377 285.40002 -377.9 284.50003 -379.6 284.50003L-379.6 284.50003L-383.9 284.50003L-383.9 289.2zM-379.5 283L-385 283L-385.5 283L-385.5 283.5L-385.5 295.4L-385.5 295.9L-385 295.9L-383.9 295.9L-383.4 295.9L-383.4 295.4L-383.4 290.6L-379.5 290.6C -379.4 290.6 -379.4 290.6 -379.3 290.6C -377.9 290.6 -377.69998 291.5 -377.59998 293.5C -377.59998 294.2 -377.59998 295.1 -377.19998 295.6L-377.19998 295.6L-377.09998 295.80002L-376.8 295.80002L-375.5 295.80002L-374.4 295.80002L-375.1 295.00003C -375.4 294.70004 -375.5 293.50003 -375.5 292.80002C -375.5 292.50003 -375.5 292.30002 -375.6 292.1C -375.7 291.1 -375.9 290 -376.80002 289.4C -375.90002 288.8 -375.40002 287.69998 -375.40002 286.4C -375.4 284.4 -377 283 -379.5 283zM-383.4 285L-379.6 285C -378.2 285 -377.5 285.6 -377.5 286.9C -377.5 288.1 -378.6 288.69998 -379.6 288.69998L-379.6 288.69998L-383.4 288.69998L-383.4 285z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3cg%3e%3cpath d='M-368.9 295.8L-368.9 283.3L-360.1 283.3L-360.1 284.8L-367.3 284.8L-367.3 288.5L-360.5 288.5L-360.5 290L-367.3 290L-367.3 294.3L-360 294.3L-360 295.8L-368.9 295.8' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-360.4 283.5L-360.4 284.5L-367.5 284.5L-367.5 288.8L-360.8 288.8L-360.8 289.8L-367.5 289.8L-367.5 294.5L-360.3 294.5L-360.3 295.5L-368.59998 295.5L-368.59998 283.5L-360.4 283.5zM-368.6 283.5L-368.7 283.5L-368.6 283.5zM-359.9 283L-360.4 283L-368.6 283L-368.7 283L-369.1 283L-369.1 283.5L-369.1 295.5L-369.1 296L-368.6 296L-360.30002 296L-359.80002 296L-359.80002 295.5L-359.80002 294.5L-359.80002 294L-360.30002 294L-367.00003 294L-367.00003 290.3L-360.80002 290.3L-360.30002 290.3L-360.30002 289.8L-360.30002 288.8L-360.30002 288.3L-360.80002 288.3L-367.00003 288.3L-367.00003 285L-360.40002 285L-359.90002 285L-359.90002 284.5L-359.90002 283.5L-359.90002 283L-359.9 283z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3cg%3e%3cpath d='M-344.6 295.8L-347.4 285.7L-350.2 295.8L-351.8 295.8L-355.2 283.3L-353.5 283.3L-351 293L-348.2 283.3L-346.4 283.3L-343.7 293L-341.2 283.3L-339.6 283.3L-343 295.8L-344.6 295.8' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-339.9 283.5L-343.19998 295.5L-344.4 295.5L-347.4 284.8L-350.4 295.5L-351.6 295.5L-354.9 283.5L-353.69998 283.5L-350.99997 294L-347.99997 283.5L-346.59998 283.5L-343.69998 294L-340.99997 283.5L-339.9 283.5zM-339.2 283L-339.90002 283L-341.00003 \n 283L-341.40002 283L-341.50003 283.4L-343.70004 292.1L-346.10004 283.4L-346.20004 283L-346.60004 283L-348.00003 283L-348.40002 283L-348.50003 283.4L-351.00003 292.1L-353.20004 283.4L-353.30005 283L-353.70004 283L-354.90005 283L-355.60007 283L-355.40005 283.6L-352.10007 295.6L-352.00006 296L-351.60007 296L-350.40005 296L-350.00006 296L-349.90005 295.6L-347.40005 286.6L-344.90005 295.6L-344.80005 296L-344.40005 296L-343.20004 296L-342.80005 296L-342.70004 295.6L-339.40005 283.6L-339.2 283z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3cg%3e%3cpath d='M-325.6 295.8L-327.1 292.09998L-332.2 292.09998L-333.6 295.8L-335.4 295.8L-330.4 283.3L-328.8 283.3L-323.9 295.8L-325.6 295.8zM-327.7 290.5L-329.6 285.3L-331.6 290.5L-327.7 290.5z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-328.9 283.5L-324.19998 295.5L-325.4 295.5L-326.9 291.8L-332.3 291.8L-333.69998 295.5L-334.99997 295.5L-330.19998 283.5L-328.9 283.5zM-332 290.8L-327.3 290.8L-329.59998 284.69998L-332 290.8zM-328.6 283L-328.9 283L-330.19998 283L-330.49997 283L-330.59998 283.3L-335.39996 295.3L-335.69995 296L-334.99994 296L-333.69995 296L-333.39996 296L-333.29996 295.7L-331.99997 292.30002L-327.29996 292.30002L-325.89996 295.7L-325.79996 296L-325.49997 296L-324.29996 296L-323.59995 296L-323.89993 295.3L-328.59995 283.3L-328.6 283zM-331.3 290.3L-329.59998 286.09998L-327.99997 290.3L-331.3 290.3z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3cg%3e%3cpath d='M-310 295.6L-310.1 295.5C -310.4 294.9 -310.4 294 -310.4 293.5C -310.5 291.6 -310.69998 290.3 -312.4 290.3L-312.4 290.3L-312.6 290.3L-316.7 290.3L-316.7 295.59998L-318.30002 295.59998L-318.30002 283.19998L-312.7 283.19998C -310.30002 283.19998 -308.80002 284.49997 -308.80002 286.49997C -308.80002 287.89996 -309.40002 288.89996 -310.50003 289.49997C -309.40002 289.99997 -309.10004 291.09998 -309.00003 292.19998C -309.00003 292.4 -309.00003 292.59998 -308.90002 292.9C -308.80002 293.69998 -308.80002 294.8 -308.40002 295.19998L-308.40002 295.19998L-308.10004 295.59998L-310 295.59998L-310 295.6zM-312.6 289C -311.4 289 -310.2 288.3 -310.2 286.9C -310.2 285.5 -311 284.8 -312.6 284.8L-312.6 284.8L-316.6 284.8L-316.6 289L-312.6 289z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-312.6 283.5C -310.6 283.5 -309 284.5 -309 286.6C -309 288.1 -309.8 289.30002 -311.3 289.6C -309.69998 289.80002 -309.3 290.9 -309.19998 292.30002C -309.09998 293.1 -309.09998 294.80002 -308.59998 295.40002L-308.59998 295.40002L-309.89996 295.40002C -310.19995 294.90002 -310.19995 294.00003 -310.19995 293.50003C -310.29996 291.80002 -310.39996 290.10004 -312.39996 290.10004C -312.49997 290.10004 -312.49997 290.10004 -312.59998 290.10004L-312.59998 290.10004L-316.89996 290.10004L-316.89996 295.40002L-317.99997 295.40002L-317.99997 283.50003L-312.6 283.50003L-312.6 283.5zM-316.9 289.2L-312.6 289.2C -311.2 289.2 -310 288.30002 -310 286.90002C -310 285.40002 -310.9 284.50003 -312.6 284.50003L-312.6 284.50003L-316.9 284.50003L-316.9 289.2zM-318 283.5L-318.1 283.5L-318 283.5zM-312.6 283L-318 283L-318.1 283L-318.5 283L-318.5 283.5L-318.5 295.4L-318.5 295.9L-318 295.9L-316.9 295.9L-316.4 295.9L-316.4 295.4L-316.4 290.6L-312.6 290.6C -312.5 290.6 -312.5 290.6 -312.4 290.6C -311 290.6 -310.8 291.5 -310.69998 293.5C -310.69998 294.2 -310.69998 295.1 -310.3 295.6L-310.3 295.6L-310.19998 295.80002L-309.9 295.80002L-308.6 295.80002L-307.5 295.80002L-308.2 295.00003C -308.5 294.70004 -308.6 293.50003 -308.6 292.80002C -308.6 292.50003 -308.6 292.30002 -308.7 292.1C -308.80002 291.1 -309 290 -309.90002 289.4C -309.00003 288.8 -308.50003 287.69998 -308.50003 286.4C -308.5 284.4 -310.1 283 -312.6 283zM-316.4 285L-312.6 285C -311.2 285 -310.5 285.6 -310.5 286.9C -310.5 288.1 -311.6 288.69998 -312.6 288.69998L-312.6 288.69998L-316.4 288.69998L-316.4 285z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3cg%3e%3cpath d='M-302 295.8L-302 283.3L-297.7 283.3C -293.90002 283.4 -291.90002 285.59998 -291.90002 289.59998C -291.90002 293.59998 -293.90002 295.69998 -297.60004 295.89996L-297.60004 295.89996L-302 295.89996L-302 295.8zM-298.3 294.3C -295 294.3 -293.69998 293 -293.69998 289.5C -293.69998 286 -294.99997 284.7 -298.3 284.7L-298.3 284.7L-300.5 284.7L-300.5 294.2L-298.3 294.2z' stroke='none' fill='%23FFFFFF' \n fill-rule='nonzero' /%3e%3cpath d='M-297.7 283.5C -294.1 283.6 -292.2 285.6 -292.2 289.5C -292.2 293.4 -294.1 295.4 -297.7 295.5L-297.7 295.5L-301.80002 295.5L-301.80002 283.5L-297.7 283.5zM-300.7 294.5L-298.30002 294.5C -294.90002 294.5 -293.40002 293.1 -293.40002 289.5C -293.40002 285.9 -294.90002 284.5 -298.30002 284.5L-298.30002 284.5L-300.7 284.5L-300.7 294.5zM-297.7 283L-301.80002 283L-302.30002 283L-302.30002 283.5L-302.30002 295.5L-302.30002 296L-301.80002 296L-297.7 296C -293.80002 295.9 -291.7 293.6 -291.7 289.5C -291.7 285.4 -293.8 283.1 -297.7 283zM-300.2 285L-298.30002 285C -295.1 285 -293.90002 286.2 -293.90002 289.5C -293.90002 292.8 -295.10004 294 -298.30002 294L-298.30002 294L-300.2 294L-300.2 285z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3c/g%3e%3c/g%3e%3cg%3e%3cg%3e%3cg%3e%3cg%3e%3cg%3e%3cpath d='M-386 264.4L-380.8 264.4L-380.8 265.8C -378.3 263.59998 -375 263.5 -372.9 264.8C -370.6 266.19998 -370.6 268.4 -370.6 270.8L-370.6 270.8L-370.6 278L-375.80002 278L-375.80002 272.2C -375.80002 270.90002 -375.7 269.2 -377.00003 268.30002C -377.60004 268.00003 -378.90002 268.00003 -379.60004 268.50003C -380.90002 269.50003 -380.80005 270.60004 -380.80005 272.50003L-380.80005 272.50003L-380.80005 278.00003L-386.00006 278.00003L-386.00006 264.4L-386 264.4z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-360.1 267.6C -359.30002 267.4 -358 267.6 -357.2 268.5C -356.40002 269.4 -356.1 270.6 -356.30002 271.6C -356.40002 272.6 -357.00003 273.6 -358.00003 274.2C -358.90002 274.7 -360.20004 274.7 -361.20004 274C -362.00003 273.4 -362.50003 272.4 -362.60004 271.4C -362.60004 270.5 -362.50003 269.3 -361.50003 268.3C -360.9 267.9 -360.5 267.7 -360.1 267.6zM-364.2 265C -366.40002 266.2 -367.5 268 -367.7 270.3C -367.90002 272.09998 -367.5 274.3 -366 275.9C -363.3 278.69998 -358.5 278.8 -355.8 277.9C -353.59998 277.1 -351.69998 275.9 -350.9 273C -350.4 271.1 -350.6 269.1 -351.9 267.3C -354.1 264 -358.69998 263.69998 -360.6 264C -361.7 264.1 -363.1 264.4 -364.2 265z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-324 270.7C -324 271 -324.1 271.2 -324.4 272.1L-324.4 272.1L-326.3 278.1L-331.59998 278.1L-336.8 264.4L-331.09998 264.4L-329.3 270.1C -329 271.1 -328.9 271.4 -328.9 271.7C -328.9 271.40002 -328.8 271.2 -328.5 270.1L-328.5 270.1L-326.7 264.4L-321.1 264.4L-319.30002 270.1C -319.00003 271.1 -319.00003 271.4 -319.00003 271.7C -319.00003 271.40002 -318.90002 271.2 -318.60004 270.1L-318.60004 270.1L-316.80005 264.4L-311.10004 264.4L-316.30005 278L-321.60004 278L-323.50003 272.1C -323.9 271.1 -323.9 271 -324 270.7z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-298.3 269.5L-304.4 269.5C -304 268 -303.1 267.5 -302.1 267.3C -301 267.1 -299.1 267.4 -298.3 269.5zM-294.7 266.5C -297.2 263.6 -302.2 263.5 -304.6 264.3C -306.9 265 -308.80002 266.19998 -309.6 269.19998C -310.2 271.4 -309.9 273.4 -308.7 275.3C -306.30002 278.8 -301.5 278.59998 -299.30002 278.3C -297.6 278 -294.50003 277.09998 -293.40002 274.09998L-293.40002 274.09998L-293.30002 273.99997L-298.40002 273.39996C -298.60004 273.59998 -298.7 273.79996 -299.2 274.19995C -300.1 274.79996 -301.90002 274.69995 -302.7 274.49994C -303.6 274.09995 -304.30002 273.09995 -304.40002 272.39993L-304.40002 272.39993L-292.90002 272.39993L-292.90002 272.19992C -292.8 270.3 -293.3 268 -294.7 266.5z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-283.7 268.4C -283 268.19998 -281.5 268.3 -280.80002 269.19998C -280.30002 269.69998 -280.1 270.3 -280.1 270.99997C -280.2 271.59998 -280.5 272.29996 -281.1 272.69998C -282 273.3 -283.4 273.19998 -284.30002 272.8C -284.90002 272.4 -285.40002 272 -285.50003 271.19998C -285.60004 270.69998 -285.50003 269.9 -285.00003 269.3C -284.6 268.8 -284.2 268.5 -283.7 268.4zM-290.2 278.6C -290.1 279.6 -289.80002 280.30002 -289.7 280.6C -288.40002 282.9 -286 283.4 -283.1 283.4C -280.2 283.4 -277.9 283.19998 -276.2 281.3C -274.7 279.5 -274.90002 277.3 -274.90002 275.3L-274.90002 275.3L-274.90002 264.4L-280.10004 264.4L-280.10004 265.6C -281.30005 264.5 -282.50003 264.1 -283.40002 264C -285.30002 263.7 -287.90002 264.4 -289.50003 266.4C -290.80002 268.1 -291.00003 270.5 -290.80002 272.19998C -290.50003 274.3 -289.40002 275.8 -287.50003 276.8C -285.40002 277.9 -282.10004 277.69998 -280.20004 276.09998C \n -280.20004 276.69998 -280.20004 277.89996 -280.40005 278.39996C -280.80005 279.19995 -281.50006 279.49997 -282.10007 279.59998C -282.60007 279.69998 -284.20007 279.99997 -284.70007 278.89996C -284.80008 278.69995 -284.80008 278.59998 -284.9001 278.49997L-284.9001 278.49997L-290.2 278.6z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-271 259.3L-265.8 259.3L-265.8 262.8L-271 262.8L-271 259.3zM-271 264.4L-265.8 264.4L-265.8 278L-271 278L-271 264.4z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-251.9 272C -252.4 273.7 -253.4 274.3 -254.7 274.5C -255.4 274.6 -256.7 274.7 -257.3 273.7C -257.4 273.5 -257.5 272.90002 -257.4 272.7C -257 271.90002 -256.3 272 -254.7 272L-254.7 272L-251.9 272zM-257.2 268.2C -257.1 267.90002 -257 267.6 -256.7 267.40002C -256 266.90002 -253.50002 267.00003 -252.90001 267.40002C -252.1 267.80002 -252.00002 268.40002 -251.90001 269.30002C -251.90001 269.30002 -253.50002 269.2 -254.6 269.30002C -255.90001 269.40002 -256.4 269.40002 -257.6 269.6C -259.9 269.9 -262.1 270.30002 -262.7 273C -263.1 274.9 -262.6 276.6 -260.80002 277.7L-260.80002 277.7L-260.7 277.80002C -258.1 278.90002 -254.80002 278.50003 -251.90001 276.80002C -251.90001 276.80002 -251.90001 277.6 -251.70001 278.00003L-251.70001 278.00003L-245.70001 278.00003C -246.30002 277.40002 -246.6 276.50003 -246.6 275.20004L-246.6 275.20004L-246.6 269.30005C -246.6 268.20004 -246.5 266.70004 -247.20001 265.80005C -248.40001 264.20004 -250.70001 263.80005 -254.6 263.80005C -257.80002 263.80005 -260 263.90005 -261.2 265.60004C -261.80002 266.40002 -261.90002 267.10004 -262 268.20004L-262 268.20004L-257.2 268.20004z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-242.7 264.4L-237.5 264.4L-237.5 265.8C -235 263.59998 -231.7 263.5 -229.6 264.8C -227.3 266.19998 -227.3 268.4 -227.3 270.8L-227.3 270.8L-227.3 278L-232.5 278L-232.5 272.2C -232.5 270.90002 -232.4 269.2 -233.7 268.40002C -234.3 268.00003 -235.59999 268.00003 -236.4 268.60004C -237.7 269.60004 -237.59999 270.70004 -237.59999 272.60004L-237.59999 272.60004L-237.59999 278.10004L-242.79999 278.10004L-242.7 264.4z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3c/g%3e%3c/g%3e%3cpath d='M-338.6 264.2L-338.6 269.5C -340.2 269.5 -341.30002 269.7 -342.30002 270.4L-342.30002 270.4L-342.30002 278L-347.50003 278L-347.50003 264.4L-342.30002 264.4L-342.30002 266C -342.00003 265.5 -341.40002 265 -340.50003 264.6C -340.2 264.4 -339.2 264.2 -338.6 264.2z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3c/g%3e%3cg%3e%3cpath d='M-220 289.7C -236.4 298.2 -252.6 303.40002 -260.4 301.80002C -267.19998 300.40002 -263.9 291.00003 -254.09999 283.30002L-254.09999 283.30002L-252.09999 283.30002C -259.8 289.80002 -260.4 297.90002 -255.49998 298.50003C -249.89998 299.20004 -235.69998 296.10004 -221.09998 289.40002L-221.09998 289.40002L-220 289.7z' stroke='none' fill='%23003D50' fill-rule='nonzero' /%3e%3cg%3e%3cpath d='M-203 278C -202.6 278 -202.1 278.1 -201.7 278.2C -201.4 278.30002 -201.3 278.30002 -201.09999 278.40002C -200.99998 278.40002 -200.9 278.50003 -200.79999 278.60004C -200.69998 278.70004 -200.69998 278.80005 -200.59999 278.90002C -200.49998 279.30002 -200.7 279.60004 -200.9 279.80002C -201.5 280.7 -202.4 281.40002 -203.29999 282.1C -204.19998 282.80002 -205.19998 283.4 -206.09999 284.1C -206.29999 284.2 -206.49998 284.30002 -206.7 284.4C -206.5 284.5 -206.4 284.5 -206.2 284.6C -206.2 284.6 -206.09999 284.7 -206 284.7C -205.7 284.6 -205.6 284.40002 -205.2 284.30002C -204.9 284.1 -204.7 284.1 -204.5 284.2C -204.3 284.30002 -204 284.5 -204 284.80002C -203.9 285.1 -203.9 285.40002 -204.1 285.80002C -202.90001 286.40002 -201.8 286.90002 -200.6 287.50003C -200.3 287.60004 -200.1 287.70004 -199.8 287.90002C -199.7 288.10004 -199.90001 288.30002 -200 288.40002C -200.4 288.60004 -200.8 288.90002 -201.3 289.00003C -201.8 288.90002 -202.3 288.80002 -202.8 288.70004C -203.6 288.50003 -204.3 288.40005 -205.1 288.20004C -205.70001 288.10004 -206.3 288.00003 -206.90001 287.90005C -207.40001 287.80005 -207.8 287.70004 -208.3 287.70004C -208.90001 287.60004 -209.5 287.60004 -210.1 287.60004C -210.8 287.60004 -211.5 287.60004 -212.3 287.50003C -213.40001 288.00003 -214.5 288.50003 -215.8 289.00003C -216.6 289.30002 -217.40001 289.60004 -218.2 289.80002C -217.9 290.1 -217.5 \n 290.30002 -217.4 290.7C -217.4 290.80002 -217.5 290.80002 -217.5 290.80002C -217.7 290.90002 -217.8 290.90002 -218 291.00003C -218.8 290.80002 -219.6 290.60004 -220.4 290.40002L-220.4 290.40002L-220.59999 290.40002C -220.99998 290.50003 -221.59999 290.90002 -221.9 290.40002C -221.9 290.30002 -222 290.2 -222 290.10004C -222 290.00003 -222.1 290.00003 -222.2 289.90002C -222.4 289.80002 -222.5 289.80002 -222.59999 289.80002C -222.9 289.7 -223.09999 289.6 -223.29999 289.6C -223.9 289.4 -224.4 289.30002 -224.9 289.1C -225 289 -225 288.9 -224.9 288.7C -224.59999 288.5 -224.2 288.40002 -223.79999 288.5C -223.4 288.5 -222.99998 288.6 -222.69998 288.6C -223.19998 288.1 -223.59998 287.7 -223.99998 287.2C -224.09999 287.1 -224.19998 287 -224.19998 286.80002C -224.19998 286.7 -224.09998 286.6 -223.99998 286.50003C -223.89998 286.40002 -223.79999 286.40002 -223.69998 286.40002C -223.39998 286.2 -223.19998 286.10004 -222.89998 286.2C -222.09998 286.6 -221.39998 286.90002 -220.49998 287.30002C -220.29999 287.40002 -220.09999 287.50003 -219.89998 287.50003C -219.59998 287.40002 -219.59998 287.30002 -219.29997 287.20004C -219.19997 287.20004 -218.99997 287.00003 -218.89998 286.90005C -218.59998 286.70004 -218.39998 286.60007 -218.19998 286.40005C -217.69998 286.00006 -217.29999 285.80005 -216.89998 285.50006C -217.59998 285.20007 -218.29997 284.80005 -218.99998 284.50006C -219.69998 284.30005 -219.89998 284.20007 -220.59999 284.10007C -220.99998 284.00006 -221.59999 283.90005 -221.59999 283.80008C -222.49998 283.60007 -222.79999 283.5001 -223.59999 283.30008C -223.99998 283.10007 -224.49998 283.10007 -224.9 282.9001C -224.9 282.80008 -224.9 282.80008 -224.9 282.70007C -224.79999 282.50006 -224.5 282.30008 -224.29999 282.20007C -223.99998 282.10007 -223.79999 281.80008 -223.49998 281.70007C -222.79999 281.70007 -222.29999 281.80008 -221.59999 281.9001C -220.79999 282.0001 -219.9 282.1001 -219.09999 282.20007C -217.99998 282.30008 -216.9 282.4001 -215.79999 282.60007C -215.69998 282.60007 -215.59999 282.70007 -215.49998 282.60007C -215.39998 282.60007 -215.29999 282.60007 -215.19998 282.70007C -215.09998 282.70007 -214.99998 282.70007 -214.89998 282.70007C -214.39998 282.30008 -213.79997 281.80008 -213.19998 281.70007C -212.79999 281.70007 -212.49998 281.9001 -212.29999 282.20007C -211.09999 281.30008 -209.9 280.50006 -208.59999 279.9001C -207.4 279.30008 -206.29999 278.80008 -205.29999 278.5001C -204.59999 278.30008 -203.9 278.2001 -203.19998 278.1001C -203.2 278 -203.1 278 -203 278z' stroke='none' fill='%23003D50' fill-rule='nonzero' /%3e%3cpath d='M-202.2 278.7C -202.8 278.80002 -203.09999 278.90002 -203.8 279.2C -204.3 279.40002 -205.2 279.80002 -205.90001 280.1C -206.90001 280.6 -207.8 281.1 -208.90001 281.80002C -209.3 282.1 -210.1 282.7 -210.20001 282.80002C -210.80002 282.7 -211.40001 282.7 -212.00002 282.6L-212.00002 282.6L-211.90001 282.5C -211.1 281.8 -210.40001 281.4 -209.50002 280.9C -208.70001 280.4 -207.50002 279.8 -206.50002 279.4C -205.60002 279.1 -204.70001 278.8 -203.80002 278.6C -203.3 278.6 -202.8 278.6 -202.2 278.7z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-214.4 282.9C -214.2 282.8 -214.09999 282.69998 -213.9 282.6C -213.7 282.5 -213.59999 282.4 -213.5 282.4C -213.6 282.69998 -213.6 282.8 -213.5 283.1C -213.5 283.30002 -213.3 283.4 -213.3 283.4C -213.7 283.6 -214 283.9 -214.40001 284.1C -214.50002 284 -214.6 283.9 -214.6 283.7C -214.6 283.40002 -214.6 283.2 -214.6 283L-214.6 283L-214.4 282.9z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3cpath d='M-215.1 286C -215.6 286.3 -216.1 286.5 -216.5 286.8C -217.4 287.3 -218.5 287.9 -219.8 288.5C -220.2 288.7 -220.5 288.8 -220.90001 288.7C -221.20001 288.7 -221.20001 288.7 -221.50002 288.6C -222.00002 288.1 -222.50002 287.6 -223.00002 287.1C -223.10002 287 -223.20001 286.9 -223.20001 286.80002L-223.20001 286.80002L-222.90001 286.6L-222.8 286.6C -222.1 286.9 -221.6 287.2 -220.90001 287.5C -220.6 287.6 -220.3 287.8 -220.1 287.9C -219.8 287.9 -219.6 287.8 -219.3 287.69998L-219.3 287.69998L-219.1 287.59998C -218.70001 287.3 -218.5 287.3 -218.3 287.09998C -217.5 286.59998 -216.90001 286.19998 -216.2 285.8L-216.2 285.8L-216 285.69998C -215.6 285.8 -215.4 285.9 -215.1 286z' stroke='none' fill='%23FFFFFF' fill-rule='nonzero' /%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"\n alt=\"Logo: Norwegian\" [nasClass]=\"getClass('reward branding-img', 'large')\" />\n <img\n src=\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIzNi43cHgiIGhlaWdodD0iMzNweCIgdmlld0JveD0iLTI3MS42IDQwNC45IDM2LjcgMzMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgLTI3MS42IDQwNC45IDM2LjcgMzMiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0tMjcwLjksNDA2LjJoMTEuOXYzYzUuOC01LjIsMTMuNC01LjIsMTguMi0yLjJjNS4yLDMuMiw1LjIsOC4yLDUuMiwxNHYxNi43aC0xMS44di0xMy4zYzAtMywwLjItNi45LTIuOC05Yy0xLjMtMS4xLTQuMS0xLjEtNS44LDAuMmMtMywyLjItMi42LDQuOC0yLjYsOS4zdjEyLjVoLTEyLjJ2LTMxLjJILTI3MC45eiIvPjwvZz48L2c+PC9nPjwvZz48Zz48Zz48cGF0aCBmaWxsPSIjMDAzRDUwIiBkPSJNLTI0MCw0MTIuMmMwLjYsMCwxLjMsMC4yLDEuOSwwLjNjMC40LDAuMSwwLjYsMC4yLDAuOSwwLjNjMC4xLDAuMSwwLjMsMC4xLDAuNCwwLjJjMC4yLDAuMiwwLjIsMC4zLDAuMiwwLjRjMC4xLDAuNS0wLjIsMC45LTAuNCwxLjNjLTAuOCwxLjMtMi4xLDIuMy0zLjQsMy4zYy0xLjMsMS0yLjcsMS45LTQsMi44Yy0wLjMsMC4xLTAuNSwwLjMtMC44LDAuNWMwLjIsMC4xLDAuNCwwLjIsMC42LDAuM2wwLDBjMC4xLDAsMC4xLDAuMSwwLjIsMC4xYzAuNC0wLjIsMC42LTAuNCwxLjEtMC42YzAuNC0wLjIsMC43LTAuMiwxLTAuMmMwLjMsMC4xLDAuNywwLjUsMC43LDAuOGMwLjIsMC41LDAuMSwwLjktMC4xLDEuNGMxLjcsMC44LDMuMywxLjYsNSwyLjRjMC40LDAuMiwwLjgsMC4zLDEuMiwwLjZjMC4xLDAuMy0wLjEsMC41LTAuMywwLjdjLTAuNiwwLjMtMS4yLDAuNy0xLjksMC44Yy0wLjctMC4yLTEuNC0wLjMtMi4xLTAuNWMtMS4xLTAuMi0yLjEtMC41LTMuMi0wLjdjLTAuOS0wLjEtMS44LTAuMy0yLjYtMC41Yy0wLjctMC4xLTEuMi0wLjItMS45LTAuMmMtMC44LTAuMS0xLjctMC4xLTIuNS0wLjFjLTEsMC0yLTAuMS0zLjEtMC4yYy0xLjYsMC43LTMuMSwxLjUtNC45LDIuMWMtMS4xLDAuNC0yLjMsMC44LTMuNCwxLjFjMC40LDAuNSwxLDAuNywxLjIsMS4zYzAsMC4xLTAuMSwwLjItMC4xLDAuMmMtMC4yLDAuMS0wLjQsMC4yLTAuNywwLjJjLTEuMS0wLjMtMi4zLTAuNi0zLjQtMC45bC0wLjMtMC4xYy0wLjYsMC4xLTEuNCwwLjYtMS45LDBjLTAuMS0wLjItMC4xLTAuMy0wLjEtMC41YzAtMC4xLTAuMS0wLjItMC4zLTAuMmMtMC4yLTAuMS0wLjQtMC4yLTAuNS0wLjJjLTAuMy0wLjEtMC43LTAuMi0xLTAuM2MtMC44LTAuMi0xLjUtMC40LTIuMi0wLjdjLTAuMi0wLjEtMC4yLTAuMy0wLjEtMC41YzAuNC0wLjMsMS4xLTAuNSwxLjYtMC4zYzAuNSwwLjEsMS4xLDAuMSwxLjYsMC4ybDAsMGMtMC43LTAuNy0xLjMtMS4zLTEuOS0yYy0wLjEtMC4yLTAuMy0wLjMtMC4zLTAuNWMwLTAuMiwwLjEtMC4zLDAuMy0wLjRjMC4xLTAuMSwwLjItMC4xLDAuNC0wLjJjMC41LTAuMiwwLjctMC40LDEuMS0wLjNjMS4xLDAuNSwyLjEsMC45LDMuNCwxLjVjMC4zLDAuMSwwLjUsMC4zLDAuOCwwLjJjMC40LTAuMSwwLjUtMC4yLDAuOC0wLjRjMC4xLTAuMSwwLjUtMC4zLDAuNi0wLjRjMC40LTAuMywwLjgtMC41LDEtMC43YzAuOC0wLjUsMS4yLTAuOCwxLjgtMS4zYy0xLTAuNC0xLjktMS0yLjktMS40Yy0xLTAuMy0xLjMtMC40LTIuMy0wLjZjLTAuNi0wLjEtMS40LTAuMy0xLjQtMC40Yy0xLjMtMC4zLTEuNi0wLjQtMi44LTAuN2MtMC42LTAuMi0xLjItMC4zLTEuOC0wLjZjLTAuMS0wLjEtMC4xLTAuMiwwLTAuM2MwLjItMC4zLDAuNi0wLjUsMC44LTAuOGMwLjQtMC4yLDAuNy0wLjYsMS4yLTAuNmMwLjktMC4xLDEuNiwwLjEsMi42LDAuMmMxLjIsMC4xLDIuMywwLjMsMy41LDAuNWMxLjUsMC4yLDMuMSwwLjMsNC43LDAuNmMwLjEsMCwwLjIsMC4xLDAuNCwwLjFjMC4xLDAuMSwwLjMsMCwwLjQsMC4xYzAuMSwwLDAuMywwLDAuNCwwLjFjMC43LTAuNiwxLjUtMS4zLDIuNC0xLjRjMC41LTAuMSwxLDAuMywxLjMsMC43YzEuNy0xLjIsMy40LTIuNCw1LjItMy4zYzEuNy0wLjksMy4zLTEuNiw0LjYtMmMxLTAuMywxLjktMC41LDIuOS0wLjVDLTI0MC4zLDQxMi4yLTI0MC4yLDQxMi4yLTI0MCw0MTIuMiIvPjwvZz48Zz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNLTIzOSw0MTMuM2MtMC44LDAuMi0xLjMsMC4zLTIuMiwwLjdjLTAuOCwwLjMtMiwwLjgtMywxLjNjLTEuNSwwLjctMi43LDEuNC00LjMsMi40Yy0wLjYsMC40LTEuOCwxLjQtMS44LDEuNGMtMC45LTAuMS0xLjgtMC4xLTIuNi0wLjJsMC4yLTAuMWMxLjEtMC45LDIuMi0xLjYsMy40LTIuM2MxLjEtMC43LDIuOC0xLjYsNC4yLTIuMmMxLjItMC41LDIuNS0wLjksMy45LTEuMUMtMjQwLjUsNDEzLjEtMjM5LjgsNDEzLTIzOSw0MTMuMyIvPjwvZz48Zz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNLTI1Ni4yLDQxOS4xYzAuMi0wLjIsMC40LTAuMywwLjYtMC41YzAuMi0wLjEsMC40LTAuMiwwLjYtMC4zYy0wLjEsMC40LTAuMSwwLjUsMC4xLDFjMC4xLDAuMiwwLjIsMC40LDAuMywwLjVjLTAuNSwwLjMtMSwwLjctMS41LDFjLTAuMi0wLjEtMC4yLTAuMy0wLjMtMC41Yy0wLjEtMC40LTAuMS0wLjcsMC4xLTFMLTI1Ni4yLDQxOS4xeiIvPjwvZz48Zz48cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNLTI1Ny4yLDQyMy42Yy0wLjcsMC40LTEuNCwwLjgtMiwxLjFjLTEuMywwLjctMi44LDEuNS00LjcsMi40Yy0wLjUsMC4yLTEsMC40LTEuNiwwLjNjLTAuNC0wLjEtMC41LDAtMC44LTAuMWMtMC43LTAuNy0xLjUtMS40LTIuMi0yLjFjLTAuMS0wLjEtMC4zLTAuMi0wLjMtMC40bDAuNS0wLjNoMC4yYzEsMC41LDEuNywwLjgsMi43LDEuM2MwLjQsMC4yLDAuOCwwLjQsMS4yLDAuNWMwLjUsMCwwLjctMC4yLDEuMi0wLjNsMC4zLTAuMmMwLjYtMC40LDAuOC0wLjUsMS4xLTAuN2MxLjEtMC43LDEuOS0xLjIsMy0xLjlsMC4yLTAuMUMtMjU3LjksNDIzLjMtMjU3LjcsNDIzLjQtMjU3LjIsNDIzLjYiLz48L2c+PC9nPjwvc3ZnPg==\"\n alt=\"Logo: Norwegian\" [nasClass]=\"getClass('branding-img', 'small')\" />\n </a>\n </div>\n </div>\n <nav [nasClass]=\"getClass('menu', animateOut && 'animate-out')\"\n [style.display]=\"expanded || animateOut ? 'block' : 'none'\" (click)=\"menuClick($event)\" tabIndex=\"-1\" #menu>\n <ng-content></ng-content>\n </nav>\n</header>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconModule } from '../icon/icon.module';\n\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { SearchComponent } from './search/search.component';\nimport { HamburgerComponent } from './hamburger/hamburger.component';\nimport { PageHeaderComponent } from './page-header.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n declarations: [PageHeaderComponent, HamburgerComponent, SearchComponent],\n imports: [CommonModule, IconModule, NasClassModule, RouterModule],\n exports: [PageHeaderComponent],\n})\nexport class PageHeaderModule {}\n","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\n\nimport { UntypedFormGroup } from '@angular/forms';\nimport { OptionModel } from './models/options.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Toogle Component | Buttons and Indicators\n*/\n@Component({\n selector: 'nas-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss']\n})\nexport class ToggleComponent extends NasComponentBase implements OnInit {\n\n /**\n * @description\n * Toggle options.\n * @example\n * ```html\n * <nas-toggle [options]=\"options\"></nas-toggle>\n * ```\n */\n @Input() options: Array<OptionModel>;\n\n /**\n * @description\n * Set icon size large.\n * @example\n * ```html\n * <nas-toggle large></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [large]=\"true\"></nas-toggle>\n * ```\n */\n @Input() large?: boolean;\n\n /**\n * @description\n * Set compact styling.\n * @example\n * ```html\n * <nas-toggle compact></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [compact]=\"true\"></nas-toggle>\n * ```\n */\n @Input() compact?: boolean;\n\n /**\n * @description\n * Set light styling.\n * @example\n * ```html\n * <nas-toggle light></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [light]=\"true\"></nas-toggle>\n * ```\n */\n @Input() light?: boolean;\n\n /**\n * @description\n * Set rounded styling.\n * @example\n * ```html\n * <nas-toggle rounded></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [rounded]=\"true\"></nas-toggle>\n * ```\n */\n @Input() rounded?: boolean;\n\n /**\n * @description\n * Set small size of rounded styling.\n * @example\n * ```html\n * <nas-toggle rounded small></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [rounded]=\"true\" [small]=\"true\"></nas-toggle>\n * ```\n */\n@Input() small?: boolean;\n\n /**\n * @description\n * Set big size of rounded styling.\n * @example\n * ```html\n * <nas-toggle rounded big></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [rounded]=\"true\" [big]=\"true\"></nas-toggle>\n * ```\n */\n@Input() big?: boolean;\n\n /**\n * @description\n * Set the selected option.\n * @example\n * ```html\n * <nas-toggle [selectedValue]=\"selectedValue\"></nas-toggle>\n * ```\n */\n @Input() selectedValue: string;\n\n /**\n * @description\n * The label for toggle.\n * @example\n * ```html\n * <nas-toggle [label]=\"'Toggle label'\"></nas-toggle>\n */\n @Input() label: string;\n\n /**\n * @description\n * Set vertical styling.\n * @example\n * ```html\n * <nas-toggle vertical></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [vertical]=\"true\"></nas-toggle>\n * ```\n */\n @Input() vertical?: boolean;\n\n /**\n * @description\n * Set grouped styling.\n * @example\n * ```html\n * <nas-toggle grouped></nas-toggle>\n * ```\n * or\n * ```html\n * <nas-toggle [grouped]=\"true\"></nas-toggle>\n * ```\n */\n @Input() grouped?: boolean;\n\n /**\n * @description\n * Toggle group name.\n * @example\n * ```html\n * <nas-toggle [group]=\"'Group name'\"></nas-toggle>\n */\n @Input() group: string;\n\n /**\n * @description\n * An event that is fired every time a toggle is performed.\n * @example\n * ```html\n * <nas-toggle (handleChange)=\"onHandleChange($event)\"></nas-toggle>\n * ```\n */\n @Output() handleChange = new EventEmitter<OptionModel>();\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * <nas-toggle [nasFormControlName]=\"'summer'\"></nas-toggle>\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * <nas-toggle [nasFormGroup]=\"formGroup\"></nas-toggle>\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * To set horizontal scroll.\n * @example\n * <nas-toggle scrollable></nas-toggle>\n */\n @Input() scrollable = false;\n\n iconType: string;\n\n isRounded: boolean;\n\n constructor() {\n super('nas-toggle');\n }\n\n ngOnInit(): void {\n this.iconType = this.exists(this.rounded) && this.exists(this.small) ? 'small' :\n this.exists(this.large) || this.exists(this.rounded) ? 'medium' : 'small';\n this.isRounded = this.exists(this.rounded) ? true : false;\n }\n\n getIcon(option: OptionModel): string {\n if (this.selectedValue != null && option.value === this.selectedValue) {\n return option.icon + '--light';\n }\n return option.icon;\n }\n\n getOptionId(option: OptionModel): string {\n return this.group + '-' + option.name;\n }\n\n onChange(option: OptionModel) {\n const selectedOption = this.options.find(x => x.value === option.value);\n this.selectedValue = selectedOption.value;\n this.handleChange.emit(selectedOption);\n }\n\n mainClasses() {\n return this.getClass('', [\n this.exists(this.large) && 'large',\n this.exists(this.compact) && 'compact',\n this.exists(this.light) && 'light',\n this.exists(this.vertical) && 'vertical',\n this.exists(this.grouped) && 'grouped',\n this.exists(this.rounded) && 'rounded',\n this.exists(this.big) && 'big',\n this.exists(this.small) && 'small',\n this.exists(this.scrollable) && 'scrollable'\n ]);\n }\n}\n","<div [nasClass]=\"mainClasses()\" *ngIf=\"!nasFormControlName; else reactiveForm\">\n <h3 [nasClass]=\"getClass('title')\">{{label}}</h3>\n <div [nasClass]=\"getClass('items')\">\n <span [nasClass]=\"getClass('item')\" *ngFor=\"let option of options\">\n <input [nasClass]=\"getClass('radio')\" [attr.id]=\"getOptionId(option)\" [checked]=\"option.value === selectedValue\" [attr.name]=\"group\" type=\"radio\" [attr.value]=\"option.value\" (change)=\"onChange(option)\">\n <label [nasClass]=\"getClass('label')\" [attr.for]=\"getOptionId(option)\">\n <nas-icon [icon]=\"getIcon(option)\" [type]=\"iconType\"></nas-icon>\n <span [nasClass]=\"getClass('text')\" *ngIf=\"!isRounded\">{{option.text}}</span>\n </label>\n <span [nasClass]=\"getClass('text')\" *ngIf=\"isRounded\">{{option.text}}</span>\n </span>\n </div>\n</div>\n<ng-template #reactiveForm>\n <div [nasClass]=\"mainClasses()\" >\n <h3 [nasClass]=\"getClass('title')\">{{label}}</h3>\n <div [nasClass]=\"getClass('items')\" [formGroup]=\"nasFormGroup\">\n <span [nasClass]=\"getClass('item')\" *ngFor=\"let option of options\">\n <input [formControlName]=\"nasFormControlName\" [nasClass]=\"getClass('radio')\" [attr.id]=\"getOptionId(option)\" [checked]=\"option.value === selectedValue\" [name]=\"group\" type=\"radio\" [value]=\"option.value\" (change)=\"onChange(option)\">\n <label [nasClass]=\"getClass('label')\" [attr.for]=\"getOptionId(option)\">\n <nas-icon [icon]=\"getIcon(option)\" [type]=\"iconType\"></nas-icon>\n <span [nasClass]=\"getClass('text')\" *ngIf=\"!isRounded\">{{option.text}}</span>\n </label>\n <span [nasClass]=\"getClass('text')\" *ngIf=\"isRounded\">{{option.text}}</span>\n </span>\n </div>\n</div>\n</ng-template>\n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\n\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { OptionModel } from '../toggle/models/options.model';\n\n/**\n * @description\n * Norwegian Premium Toggle Component | Functional\n*/\n@Component({\n selector: 'nas-premium-toggle',\n templateUrl: './premium-toggle.component.html',\n styleUrls: ['./premium-toggle.component.scss']\n})\nexport class PremiumToggleComponent extends NasComponentBase implements OnInit {\n selectedValue: OptionModel;\n options: Array<OptionModel>;\n\n /**\n * @description\n * Sets the initial selected value on the toggle. Is either 'standard' or 'premium'.\n * @example\n * ```html\n * <nas-premium-toggle [defaultValue]=\"'premium'\"></nas-premium-toggle>\n * ```\n */\n @Input() defaultValue: string;\n\n /**\n * @description\n * A label for the standard alternative.\n * @example\n * ```html\n * <nas-premium-toggle [standardLabel]=\"'Standard'\"></nas-premium-toggle>\n * ```\n */\n @Input() standardLabel: string;\n\n /**\n * @description\n * A label for the premium alternative.\n * @example\n * ```html\n * <nas-premium-toggle [premiumLabel]=\"'Premium'\"></nas-premium-toggle>\n * ```\n */\n @Input() premiumLabel: string;\n\n /**\n * @description\n * An event that is fired every time a toggle is performed.\n * @example\n * ```html\n * <nas-premium-toggle (handleChange)=\"onHandleChange($event)\"></nas-premium-toggle>\n * ```\n */\n @Output() handleChange = new EventEmitter<string>();\n\n constructor() {\n super('premium-toggle');\n }\n\n ngOnInit(): void {\n this.options = [\n {\n value: 'standard',\n name: 'standard',\n text: this.standardLabel,\n icon: 'seat-reservation',\n },\n {\n value: 'premium',\n name: 'premium',\n text: this.premiumLabel,\n icon: 'premium',\n }\n ];\n\n const value = this.options.find(x => x.value === this.defaultValue);\n\n if (value) {\n this.selectedValue = value;\n } else {\n this.selectedValue = this.options[0];\n }\n }\n\n reset() {\n this.selectedValue = this.options[0];\n }\n\n onChange(option: OptionModel) {\n const value = this.options.find(x => x.value === option.value);\n this.selectedValue = value;\n this.handleChange.emit(this.selectedValue.value);\n }\n}\n","<div [nasClass]=\"getClass()\">\n <nas-toggle [group]=\"'premium'\" [selectedValue]=\"selectedValue\" [compact]=\"true\" (handleChange)=\"onChange($event)\" [options]=\"options\"></nas-toggle>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { IconModule } from '../icon/icon.module';\nimport { ToggleComponent } from './toggle.component';\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n NasClassModule,\n FormsModule,\n ReactiveFormsModule\n ],\n declarations: [ToggleComponent],\n exports: [ToggleComponent]\n})\nexport class ToggleModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PremiumToggleComponent } from './premium-toggle.component';\nimport { ToggleModule } from '../toggle/toggle.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n\n@NgModule({\n imports: [\n CommonModule,\n ToggleModule,\n NasClassModule\n ],\n declarations: [PremiumToggleComponent],\n exports: [PremiumToggleComponent]\n})\nexport class PremiumToggleModule { }\n","import {\n AfterViewInit,\n Component,\n Input,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\n\n/**\n * @description\n * Norwegian Weather Component | Buttons and Indicators\n*/\n@Component({\n selector: 'nas-weather-icon',\n templateUrl: './weather-icon.component.html',\n styleUrls: ['./weather-icon.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\n\nexport class WeatherIconComponent extends NasComponentBase implements AfterViewInit, OnInit {\n /**\n * @required\n * @description\n * String representing the type of weather; cloud-and-sun, rain, thunder, ssnow, sun, cloudy\n */\n @Input() weather: string;\n /**\n * @description\n * Number representing the temperature\n */\n @Input() temperature: number;\n /**\n * @description\n * Sets the text above the temperature. \"Ex. Avg.:\". Default value is \"Avg.\";\n */\n @Input() temperatureText = 'Avg.';\n /**\n * @description\n * Boolean which sets the icon to have a small size\n */\n @Input() small: boolean;\n /**\n * @description\n * Boolean which sets the icon to have a medium size\n */\n @Input() medium: boolean;\n /**\n * @description\n * Boolean which sets the icon to have a light styling (used on dark backgrounds)\n */\n @Input() light: boolean;\n\n showTemperature: boolean;\n\n /**\n * @description\n * Represent a weather icon component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-weather-icon');\n }\n\n ngOnInit(): void {\n this.showTemperature = !isNaN(this.temperature);\n }\n\n ngAfterViewInit(): void {\n this.temperature = !isNaN(this.temperature) ? this.temperature : null;\n this.temperatureText = this.temperatureText.substring(0, 4);\n }\n\n showModifier(value: string): string {\n return value === this.weather ? 'show' : 'hide';\n }\n\n mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.small) && 'small',\n this.exists(this.medium) && 'medium',\n this.exists(this.light) && 'light'\n ]);\n }\n}\n","<figure [nasClass]=\"mainClass()\">\n <svg viewBox=\"0 0 170 150\" [nasClass]=\"getClass('svg')\">\n <g [nasClass]=\"getClass('group', showModifier('rain'))\" >\n <g>\n <path [nasClass]=\"getClass('drop')\" d=\"M93,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S93,115.2,93,118z\"></path>\n <path [nasClass]=\"getClass('drop')\" d=\"M104,100c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S104,97.2,104,100z\"></path>\n <path [nasClass]=\"getClass('drop')\" d=\"M81,100c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S81,97.2,81,100z\"></path>\n <path [nasClass]=\"getClass('drop')\" d=\"M47,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S47,115.2,47,118z\"></path>\n <path [nasClass]=\"getClass('drop')\" d=\"M58,100c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S58,97.2,58,100z\"></path>\n <path [nasClass]=\"getClass('drop')\" d=\"M70,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S70,115.2,70,118z\"></path>\n </g>\n <path [nasClass]=\"getClass('cloud')\" d=\"M150.9,81c2-3.6,3.1-7.7,3.1-12.1c0-13.7-11-24.9-24.7-25.1c0-0.5,0-0.9,0-1.4c0-16.2-13.1-29.3-29.3-29.3 c-12.5,0-23.1,7.8-27.4,18.7c-3-1.8-6.6-2.9-10.4-2.9c-11.1,0-20,9-20,20c0,1.4,0.2,2.8,0.5,4.2C29,53.3,18,64.5,18,78.2 c0,0.9,0.1,1.9,0.2,2.8H150.9z\"></path>\n </g>\n <g [nasClass]=\"getClass('group', showModifier('snow'))\">\n <g>\n <path [nasClass]=\"getClass('drop')\" d=\"M68.3,96.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L60,99l1.1-3.4 l3.7,1.2V93h3.5V96.8z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M91.3,96.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L83,99l1.1-3.4 l3.7,1.2V93h3.5V96.8z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M114.3,96.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L106,99l1.1-3.4 l3.7,1.2V93h3.5V96.8z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M57.3,114.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L49,117l1.1-3.4 l3.7,1.2V111h3.5V114.8z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M80.3,114.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L72,117l1.1-3.4 l3.7,1.2V111h3.5V114.8z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M103.3,114.8l3.7-1.2l1.1,3.4l-3.7,1.3l2.3,3.1l-2.9,2.1l-2.2-3.2l-2.2,3.2l-2.9-2.1l2.3-3.1L95,117l1.1-3.4 l3.7,1.2V111h3.5V114.8z\"/>\n </g>\n <path [nasClass]=\"getClass('cloud', showModifier('light'))\"\n d=\"M152,73.5c0-12.4-10.1-22.5-22.5-22.5c-1.5,0-3.1,0.2-4.5,0.5c0-0.2,0-0.3,0-0.5c0-17.4-14.1-31.5-31.5-31.5 c-1.7,0-3.4,0.1-5,0.4C86.7,11.9,79.5,6,71,6c-7.8,0-14.5,5-17,12c-0.3,0-0.7,0-1,0c-14.9,0-27,12.1-27,27c0,3.5,0.7,6.9,1.9,9.9 C16.4,58.1,8,68.5,8,81h142.7C151.5,78.7,152,76.1,152,73.5z\"/>\n <path [nasClass]=\"getClass('cloud')\"\n d=\"M155.9,81c2-3.6,3.1-7.7,3.1-12.1c0-13.7-11-24.9-24.7-25.1c0-0.5,0-0.9,0-1.4c0-16.2-13.1-29.3-29.3-29.3 c-12.5,0-23.1,7.8-27.4,18.7c-3-1.8-6.6-2.9-10.4-2.9c-11.1,0-20,9-20,20c0,1.4,0.2,2.8,0.5,4.2C34,53.3,23,64.5,23,78.2 c0,0.9,0.1,1.9,0.2,2.8H155.9z\"/>\n </g>\n <g [nasClass]=\"getClass('group', showModifier('thunder'))\">\n <g>\n <path [nasClass]=\"getClass('drop')\" d=\"M81,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S81,115.2,81,118z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M92,100c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S92,97.2,92,100z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M69,100c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S69,97.2,69,100z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M35,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S35,115.2,35,118z\"/>\n <path [nasClass]=\"getClass('drop')\" d=\"M46,100c0,2.8,2.2,5,5,5s5-2.2,5-5s-5-9-5-9S46,97.2,46,100z\" />\n <path [nasClass]=\"getClass('drop')\" d=\"M58,118c0,2.8,2.2,5,5,5c2.8,0,5-2.2,5-5s-5-9-5-9S58,115.2,58,118z\"/>\n <polygon [nasClass]=\"getClass('thunder')\" points=\"115.8,88 106.6,113.7 118.8,112.4 110.7,142 133.8,106 123.4,106 136.1,88\"/>\n </g>\n <path [nasClass]=\"getClass('cloud')\" d=\"M150.9,81c2-3.6,3.1-7.7,3.1-12.1c0-13.7-11-24.9-24.7-25.1c0-0.5,0-0.9,0-1.4c0-16.2-13.1-29.3-29.3-29.3 c-12.5,0-23.1,7.8-27.4,18.7c-3-1.8-6.6-2.9-10.4-2.9c-11.1,0-20,9-20,20c0,1.4,0.2,2.8,0.5,4.2C29,53.3,18,64.5,18,78.2 c0,0.9,0.1,1.9,0.2,2.8H150.9z\"/>\n </g>\n <g [nasClass]=\"getClass('group', showModifier('cloud-and-sun'))\">\n <g [nasClass]=\"getClass('sun', 'cloudy')\">\n <path [nasClass]=\"getClass('fill')\" d=\"M133.2,0v11.3c0,1.6,1.2,2.8,2.8,2.8c1.6,0,2.8-1.2,2.8-2.8V0H133.2z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M138.8,68V56.7c0-1.6-1.2-2.8-2.8-2.8c-1.6,0-2.8,1.2-2.8,2.8V68H138.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M110,12l8,7.9c1.1,1.1,2.8,1.1,4.1,0c1.1-1.1,1.1-2.8,0-4.1l-8-7.9L110,12z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M162,55.8l-8-7.9c-1.1-1.1-2.8-1.1-4.1,0c-1.1,1.1-1.1,2.8,0,4.1l8,7.9L162,55.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M102,36.8h11.3c1.6,0,2.8-1.2,2.8-2.8c0-1.6-1.2-2.8-2.8-2.8H102V36.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M170,31.2h-11.3c-1.6,0-2.8,1.2-2.8,2.8c0,1.6,1.2,2.8,2.8,2.8H170V31.2z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M114,59.9l8-7.9c1.1-1.1,1.1-2.8,0-4.1c-1.1-1.1-2.8-1.1-4.1,0l-8,7.9L114,59.9z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M158,7.9l-8,7.9c-1.1,1.1-1.1,2.8,0,4.1c1.1,1.1,2.8,1.1,4.1,0l8-7.9L158,7.9z\" />\n <ellipse [nasClass]=\"getClass('fill')\" cx=\"136\" cy=\"33.9\" rx=\"14.2\" ry=\"14.1\" />\n </g>\n <path\n [nasClass]=\"getClass('cloud')\"\n d=\"M146.9,81c2-3.6,3.1-7.7,3.1-12.1c0-13.7-11-24.9-24.7-25.1c0-0.5,0-0.9,0-1.4C125.3,26.1,112.2,13,96,13 c-12.5,0-23.1,7.8-27.4,18.7c-3-1.8-6.6-2.9-10.4-2.9c-11.1,0-20,9-20,20c0,1.4,0.2,2.8,0.5,4.2C25,53.3,14,64.5,14,78.2 c0,0.9,0.1,1.9,0.2,2.8H146.9z\"\n />\n <path\n [nasClass]=\"getClass('cloud', 'light')\" d=\"M136.8,81c0.1-0.7,0.2-1.5,0.2-2.3c0-7.5-6.1-13.7-13.7-13.7c-1.4,0-2.7,0.2-3.9,0.6 c-1.8-7.5-8.5-13.1-16.6-13.1c-7.8,0-14.4,5.3-16.4,12.5c0,0,0,0-0.1,0c-8.5,0-15.4,6.9-15.4,15.4c0,0.2,0,0.4,0,0.6H136.8z\"\n />\n </g>\n <g [nasClass]=\"getClass('group', showModifier('sun'))\">\n <g [nasClass]=\"getClass('sun')\">\n <path [nasClass]=\"getClass('fill')\" d=\"M82.2,33v11.3c0,1.6,1.2,2.8,2.8,2.8c1.6,0,2.8-1.2,2.8-2.8V33H82.2z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M87.8,101V89.7c0-1.6-1.2-2.8-2.8-2.8c-1.6,0-2.8,1.2-2.8,2.8V101H87.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M59,45l8,7.9C68,54,69.8,54,71,53c1.1-1.1,1.1-2.8,0-4.1l-8-7.9L59,45z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M111,88.8l-8-7.9c-1.1-1.1-2.8-1.1-4.1,0c-1.1,1.1-1.1,2.8,0,4.1l8,7.9L111,88.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M51,69.8h11.3c1.6,0,2.8-1.2,2.8-2.8c0-1.6-1.2-2.8-2.8-2.8H51V69.8z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M119,64.2h-11.3c-1.6,0-2.8,1.2-2.8,2.8c0,1.6,1.2,2.8,2.8,2.8H119V64.2z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M63,92.9l8-7.9c1.1-1.1,1.1-2.8,0-4.1c-1.1-1.1-2.8-1.1-4.1,0l-8,7.9L63,92.9z\" />\n <path [nasClass]=\"getClass('fill')\" d=\"M107,40.9l-8,7.9c-1.1,1.1-1.1,2.8,0,4.1c1.1,1.1,2.8,1.1,4.1,0l8-7.9L107,40.9z\" />\n <ellipse [nasClass]=\"getClass('fill')\" cx=\"85\" cy=\"66.9\" rx=\"14.2\" ry=\"14.1\"/>\n </g>\n </g>\n <g [nasClass]=\"getClass('group', showModifier('cloudy'))\">\n <path\n [nasClass]=\"getClass('cloud', 'light')\"\n d=\"M118.8,56.8c0.1-1.1,0.2-2.2,0.2-3.3c0-12.9-9.6-23.6-22-25.3C96.8,20.4,90.4,14,82.5,14 c-6.6,0-12.2,4.4-13.9,10.5c-3.3-1.6-7.1-2.5-11.1-2.5C43.4,22,32,33.4,32,47.5c0,1.3,0.1,2.5,0.3,3.7C20.3,52.6,11,61.6,11,72.5 c0,3,0.7,5.9,2,8.5h127C139.7,69.4,130.8,59.7,118.8,56.8z\"\n />\n <path\n [nasClass]=\"getClass('cloud')\"\n d=\"M157.9,81c2-3.6,3.1-7.7,3.1-12.1c0-13.7-11-24.9-24.7-25.1c0-0.5,0-0.9,0-1.4c0-16.2-13.1-29.3-29.3-29.3 c-12.5,0-23.1,7.8-27.4,18.7c-3-1.8-6.6-2.9-10.4-2.9c-11.1,0-20,9-20,20c0,1.4,0.2,2.8,0.5,4.2C36,53.3,25,64.5,25,78.2 c0,0.9,0.1,1.9,0.2,2.8H157.9z\"\n />\n </g>\n </svg>\n <figcaption *ngIf=\"showTemperature\" [nasClass]=\"getClass('details')\">\n {{temperatureText}}:\n <strong [nasClass]=\"getClass('temperature')\">{{temperature}}°</strong>\n </figcaption>\n</figure>\n","import { NgModule, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { WeatherIconComponent } from './weather-icon.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [WeatherIconComponent],\n imports: [CommonModule, NasClassModule],\n exports: [WeatherIconComponent],\n})\nexport class WeatherIconModule {}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input, ViewEncapsulation, ElementRef, AfterContentChecked } from '@angular/core';\n\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\n/**\n * @description\n * Norwegian Airport List Component | Layout\n */\n@Component({\n selector: 'nas-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ListComponent extends NasComponentBase implements AfterContentChecked {\n\n /**\n * @description\n * List with grey and blue check-icon markers\n */\n @Input() markers: boolean;\n\n /**\n * @description\n * List with note markers\n */\n @Input() note: boolean;\n\n /**\n * @description\n * List with green check-icon markers\n */\n @Input() positive: boolean;\n\n /**\n * @description\n * List with red x-icon markers\n */\n @Input() negative: boolean;\n\n /**\n * @description\n * List with goto (arrow) icon markers\n */\n @Input() goto: boolean;\n\n /**\n * @description\n * List styles as a table\n */\n @Input() table: boolean;\n\n /**\n * @description\n * List without margin at bottom\n */\n @Input() spaceless: boolean;\n\n /**\n * @description\n * The string elements within the list\n */\n @Input() items: Array<string>;\n\n constructor(private elementRef: ElementRef<HTMLElement>) {\n super('nas-list');\n }\n\n mainClass() {\n return this.getClass('', [\n this.exists(this.markers) && 'markers',\n this.exists(this.note) && 'note',\n this.exists(this.positive) && 'positive',\n this.exists(this.negative) && 'negative',\n this.exists(this.goto) && 'goto',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.table) && 'table',\n ]);\n }\n\n ngAfterContentChecked(): void {\n if (this.elementRef.nativeElement.firstElementChild) {\n this.removeEmptyListItems();\n }\n }\n\n /**\n * @description\n * Angular generates 'nas-list-item' as the parent element which when is put into UL or OL breaks the semantics of\n * HTML. This solution keeps the element and encapsulates it with LI element, which is correct semantically and\n * let the list tempalte update/manipulte. But since we are manually adding LI elements in nas-list-item,\n * so those are not removed by angular automatically when data(model) is removed/reduced.\n * This function looks up for the empty LI elements when the content is updated and removes them manually.\n */\n removeEmptyListItems(): void {\n const currentList = this.elementRef.nativeElement.firstElementChild;\n let currentListItem = currentList.firstElementChild;\n const totalChildren = currentList.childElementCount;\n let nextListItem = currentListItem;\n for (let childCount = 0; childCount < totalChildren; childCount++) {\n nextListItem = currentListItem.nextElementSibling;\n if (currentListItem.innerHTML.length === 0) {\n currentListItem.parentElement.removeChild(currentListItem);\n }\n currentListItem = nextListItem;\n }\n\n }\n\n}\n","<ul [nasClass]=\"mainClass()\">\n <ng-content></ng-content>\n</ul>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, OnInit, ElementRef, Input, ViewEncapsulation } from '@angular/core';\n\nimport { NasComponentBase } from '../../../core/base/nas-component.base';\nimport { ClassModel } from '../../../core/models/class.model';\n\n@Component({\n selector: 'nas-list-item',\n templateUrl: './list-item.component.html',\n styleUrls: ['./list-item.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ListItemComponent extends NasComponentBase implements OnInit {\n\n/**\n * @description\n * Adds custom CSS class to the list item. List item will sett additional custom styling.\n *\n * @example\n * ```html\n * <nas-list-item [cssClass]=\"'my-custom-class'\">Earn 2-12% CashPoints on Premium Tickets</nas-button>\n * ```\n */\n @Input() cssClass?: ClassModel;\n\n constructor(private elementRef: ElementRef) {\n super('nas-list-item');\n }\n\n ngOnInit() {\n this.nasListItemToListItemElement();\n }\n\n/**\n * @description\n * Angular generates 'nas-list-item' as the parent element which when is put into UL or OL breaks the semantics of\n * HTML, Initial solution we adopted was to remove 'nas-list-item' and add 'LI' as the parent element. which then\n * produced the problem of List template not being updated when the model(data) is upadted after initialization.\n * This solution keeps the element and encapsulates it with LI element, which is correct semantically and\n * let the list template update/manipulate.\n */\n nasListItemToListItemElement(): void {\n const newParent = document.createElement('li');\n const item = this.elementRef.nativeElement;\n\n if (item.parentElement && item.parentElement.tagName === 'LI') {\n item.parentElement.insertAdjacentElement('afterend', newParent);\n } else {\n item.insertAdjacentElement('afterend', newParent);\n }\n newParent.appendChild(item);\n }\n\n getClasses(): Array<ClassModel> {\n const classes: Array<ClassModel> = [this.getClass()];\n\n if (this.cssClass) {\n classes.push(this.cssClass);\n }\n\n return classes;\n }\n}\n","<div [nasClass]=\"getClasses()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ListComponent } from './list.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { ListItemComponent } from './list-item/list-item.component';\n\n@NgModule({\n declarations: [ListComponent, ListItemComponent],\n imports: [CommonModule, NasClassModule],\n exports: [ListComponent, ListItemComponent]\n})\nexport class ListModule { }\n","export enum AvailabilitySortOption {\n fastest = 1,\n directOnly = 2,\n departureTime = 3,\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, SimpleChanges, OnChanges } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { JourneyModel } from './models/journey.model';\nimport { ClassModel } from '../../core/models/class.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { JourneyFlightModel } from './models/journey-flight.model';\nimport { DatePipe } from '@angular/common';\nimport { UtcDate } from '../../core/models/utc-date.model';\n\n/**\n * @description\n * Norwegian journey Component | Functional\n */\n@Component({\n selector: 'nas-journey',\n templateUrl: './journey.component.html',\n styleUrls: ['./journey.component.scss']\n})\nexport class JourneyComponent extends NasComponentBase implements OnChanges {\n\n currentJourney: {\n departureTime: string; arrivalTime: string;\n departureDate: string; arrivalDate: string;\n estimatedArrivalTime?: string; estimatedDepartureTime?: string;\n estimatedArrivalDate?: string; estimatedDepartureDate?: string;\n };\n\n /**\n * @description\n * A record containing Journey details.\n * @required\n * @example\n * ```html\n * <nas-journey [journeyModel]=\"journeyModel\"></nas-journey>\n * ```\n */\n @Input() journeyModel: JourneyModel;\n\n /**\n * @description\n * A string representing date display format, if not provided, default formatting on date will be applied\n * i.e 'dd MMM yyyy', which will result in displaying date like '21, Feb 2019'.\n * @example\n * ```html\n * <nas-journey [dateFormat]=\"'dd, MMM yyyy'\"></nas-journey>\n * ```\n */\n @Input() dateFormat = 'dd, MMM yyyy';\n\n /**\n * @description\n * A string representing time display format, if not provided, default formatting on date will be applied\n * i.e 'HH:mm' , which will result in displaying time like '09:23'.\n * @example\n * ```html\n * <nas-journey [timeFormat]=\"'HH:mm'\"></nas-journey>\n * ```\n */\n @Input() timeFormat = 'HH:mm';\n\n /**\n * @description\n * A string representing arrival label, it will be displayed before the arrival time.\n * @example\n * ```html\n * <nas-journey [arrivalLabel]=\"'Arrival'\"></nas-journey>\n * ```\n */\n @Input() arrivalLabel: string;\n\n /**\n * @description\n * A string representing departure label, it will be displayed before the departure time.\n * @example\n * ```html\n * <nas-journey [departureLabel]=\"'Departure'\"></nas-journey>\n * ```\n */\n @Input() departureLabel: string;\n\n /**\n * @description\n * A string representing delayed arrival label, it will be displayed before the delayed arrival time.\n * @example\n * ```html\n * <nas-journey [arrivalEstimatedLabel]=\"'New time'\"></nas-journey>\n * ```\n */\n @Input() arrivalEstimatedLabel: string;\n\n /**\n * @description\n * A string representing delayed departure label, it will be displayed before the delayed departure time.\n * @example\n * ```html\n * <nas-journey [departureEstimatedLabel]=\"'New time'\"></nas-journey>\n * ```\n */\n @Input() departureEstimatedLabel: string;\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n * @example\n * ```html\n * <nas-journey [locale]=\"'es'\"></nas-journey>\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * User can input the timezone to localize the date.\n * Default is set to UTC and it will by default show the date exactly what is passed to it.\n * @example\n * ```html\n * <nas-journey [timeZone]=\"'UTC'\"></nas-journey>\n */\n @Input() timeZone = 'UTC';\n\n\n constructor(private datePipe: DatePipe, private dateService: DateHelper) {\n super('nas-journey');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.setDisplayDates();\n }\n\n public getTimeClass(journeyFlight: JourneyFlightModel): ClassModel {\n if (!journeyFlight) {\n return;\n }\n\n if (journeyFlight.estimatedTime || journeyFlight.estimatedDate) {\n return this.getClass('', ['crossed-time']);\n } else {\n return this.getClass('', ['time']);\n }\n }\n\n public getLineClass(): ClassModel {\n if (!this.journeyModel || !this.journeyModel.arrival) {\n return;\n }\n\n if (this.journeyModel.arrival.estimatedTime || this.journeyModel.arrival.estimatedDate) {\n return this.getClass('line', ['delayed']);\n } else {\n return this.getClass('line');\n }\n }\n\n private setDisplayDates(): void {\n if (this.journeyModel) {\n this.currentJourney = {\n departureTime: this.transformDate(this.journeyModel.departure.time, this.timeFormat),\n arrivalTime: this.transformDate(this.journeyModel.arrival.time, this.timeFormat),\n departureDate: this.transformDate(this.journeyModel.departure.date, this.dateFormat),\n arrivalDate: this.transformDate(this.journeyModel.arrival.date, this.dateFormat),\n estimatedDepartureDate: this.transformDate(this.journeyModel.departure.estimatedDate, this.dateFormat),\n estimatedArrivalDate: this.transformDate(this.journeyModel.arrival.estimatedDate, this.dateFormat),\n estimatedDepartureTime: this.transformDate(this.journeyModel.departure.estimatedTime, this.timeFormat),\n estimatedArrivalTime: this.transformDate(this.journeyModel.arrival.estimatedTime, this.timeFormat)\n };\n }\n }\n\n private transformDate(date: UtcDate, format: string): string {\n return this.datePipe.transform(this.dateService.date(date), format, this.timeZone, this.locale);\n }\n}\n","<div [nasClass]=\"getClass()\" *ngIf=\"journeyModel\">\n <span [nasClass]=\"getLineClass()\"></span>\n\n <div [nasClass]=\"getClass('body')\">\n <div [nasClass]=\"getClass('flight-details', ['departure'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.departure?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.departure?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.departure)\">\n {{ departureLabel }}\n <span\n >{{ currentJourney?.departureDate }}\n {{ currentJourney?.departureTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ departureEstimatedLabel }}\n {{ currentJourney?.estimatedDepartureDate }}\n {{ currentJourney?.estimatedDepartureTime }}\n </div>\n </div>\n\n <div [nasClass]=\"getClass('journey-details')\">\n <ng-content></ng-content>\n </div>\n\n <div [nasClass]=\"getClass('flight-details', ['arrival'])\">\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyModel?.arrival?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyModel?.arrival?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getTimeClass(journeyModel?.arrival)\">\n {{ arrivalLabel }}\n <span\n >{{ currentJourney?.arrivalDate }}\n {{ currentJourney?.arrivalTime }}</span\n >\n </div>\n <div\n [nasClass]=\"getClass('', ['estimated-time'])\"\n *ngIf=\"\n journeyModel?.departure?.estimatedTime ||\n journeyModel?.departure?.estimatedDate\n \"\n >\n {{ arrivalEstimatedLabel }} {{ currentJourney?.estimatedArrivalDate }}\n {{ currentJourney?.estimatedArrivalTime }}\n </div>\n </div>\n </div>\n</div>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { JourneyStopoverModel } from '../../shared/models/journey-stopover.model';\nimport { StopoverTimeModel } from './models/stopover-time.model';\nimport { ClassModel } from '../../core/models/class.model';\nimport { DatePipe } from '@angular/common';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { UtcDate } from '../../core/models/utc-date.model';\n\n/**\n * @description\n * Norwegian journey-stopover Component | Functional\n */\n@Component({\n selector: 'nas-journey-stopover',\n templateUrl: './journey-stopover.component.html',\n styleUrls: ['./journey-stopover.component.scss']\n})\nexport class JourneyStopoverComponent extends NasComponentBase implements OnChanges {\n\n stopoverTime: StopoverTimeModel;\n currentStopover: {\n departureTime: string; arrivalTime: string;\n departureDate: string; arrivalDate: string;\n estimatedArrivalTime?: string; estimatedDepartureTime?: string;\n estimatedArrivalDate?: string; estimatedDepartureDate?: string;\n };\n\n /**\n * @description\n * A record containing Journey-stopover details.\n * @required\n * @example\n * ```html\n * <nas-journey-stopover [journeyStopoverModel]=\"journeyStopoverModel\"></nas-journey-stopover>\n * ```\n */\n @Input() journeyStopoverModel: JourneyStopoverModel;\n\n /**\n * @description\n * A string representing label placed before transit stop time.\n * @example\n * ```html\n * <nas-journey-stopover [transitLabel]=\"'Transit stop'\"></nas-journey-stopover>\n * ```\n */\n @Input() transitLabel: string;\n\n\n /**\n * @description\n * A string representing the label placed before arrival time.\n * @example\n * ```html\n * <nas-journey-stopover [arrivalTimeLabel]=\"'Arrival'\"></nas-journey-stopover>\n * ```\n */\n @Input() arrivalTimeLabel: string;\n\n\n /**\n * @description\n * A string representing the label placed before departure time.\n * @example\n * ```html\n * <nas-journey-stopover [departureTimeLabel]=\"'Departure'\"></nas-journey-stopover>\n * ```\n */\n @Input() departureTimeLabel: string;\n\n /**\n * @description\n * A string representing time display format, if not provided, default formatting on date will be applied\n * i.e 'HH:mm' , which will result in displaying time like '09:23'.\n * @example\n * ```html\n * <nas-journey-stopover [timeFormat]='HH:mm'></nas-journey-stopover>\n * ```\n */\n @Input() timeFormat = 'HH:mm';\n\n /**\n * @description\n * A string representing date display format, if not provided, default formatting on date will be applied\n * i.e 'dd MMM,' , which will result in displaying time like '21 Feb,'.\n * @example\n * ```html\n * <nas-journey-stopover [dateFormat]='dd MMM,'></nas-journey-stopover>\n * ```\n */\n @Input() dateFormat = 'dd MMM,';\n\n /**\n* @description\n* A string representing Transit Hour indicator.\n* if not provided, transit time will not be shown\n* @example\n* ```html\n* <nas-journey-stopover [transitHoursIndicator]='h'></nas-journey-stopover>\n* ```\n*/\n @Input() transitHoursIndicator: string;\n\n /**\n* @description\n* A string representing Transit Minutes indicator.\n* if not provided, transit time will not be shown\n* @example\n* ```html\n* <nas-journey-stopover [transitMinutesIndicator]='m'></nas-journey-stopover>\n* ```\n*/\n @Input() transitMinutesIndicator: string;\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n * @example\n * ```html\n * <nas-journey-stopover [locale]=\"'es'\"></nas-journey-stopover>\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * User can input the timezone to localize the date.\n * Default is set to UTC and it will by default show the date exactly what is passed to it.\n * @example\n * ```html\n * <nas-journey-stopover [timeZone]=\"'UTC'\"></nas-journey-stopover>\n */\n @Input() timeZone = 'UTC';\n\n get displayStopoverTime(): boolean {\n return this.transitMinutesIndicator?.length > 0\n && this.transitHoursIndicator?.length > 0\n && (this.stopoverTime?.numberOfHours > 0 || this.stopoverTime?.numberOfMinutes > 0);\n }\n\n get lineClass(): ClassModel {\n if (this.displayStopoverTime) {\n return this.getClass('line');\n } else {\n return this.getClass('line', ['transit-label']);\n }\n }\n\n constructor(private datePipe: DatePipe, private dateService: DateHelper) {\n super('nas-journey-stopover');\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.setDisplayDates();\n }\n\n private setDisplayDates(): void {\n if (this.journeyStopoverModel) {\n\n this.stopoverTime = this.getStopoverTime(this.dateService.date(this.journeyStopoverModel.localDepartureTime),\n this.dateService.date(this.journeyStopoverModel.localArrivalTime));\n\n this.currentStopover = {\n departureTime: this.transformDate(this.journeyStopoverModel.localDepartureTime, this.timeFormat),\n arrivalTime: this.transformDate(this.journeyStopoverModel.localArrivalTime, this.timeFormat),\n departureDate: this.transformDate(this.journeyStopoverModel.localDepartureDate, this.dateFormat),\n arrivalDate: this.transformDate(this.journeyStopoverModel.localArrivalDate, this.dateFormat),\n estimatedDepartureDate: this.transformDate(this.journeyStopoverModel.estimatedDepartureTime, this.dateFormat),\n estimatedArrivalDate: this.transformDate(this.journeyStopoverModel.estimatedArrivalTime, this.dateFormat)\n };\n }\n }\n\n private transformDate(date: UtcDate, format: string): string {\n return this.datePipe.transform(this.dateService.date(date), format, this.timeZone, this.locale);\n }\n\n private getStopoverTime(departureTime: Date, arrivalTime: Date): StopoverTimeModel {\n const differenceInMinutes = (((departureTime.getTime()) - (arrivalTime.getTime())) / (1000 * 60));\n return {\n numberOfHours: Math.floor(differenceInMinutes / 60),\n numberOfMinutes: Math.floor(differenceInMinutes % 60)\n };\n }\n}\n","<div [nasClass]=\"getClass()\" *ngIf=\"journeyStopoverModel\">\n <span [nasClass]=\"lineClass\"></span>\n\n <div [nasClass]=\"getClass('stopover-details')\">\n <div\n [nasClass]=\"getClass('', ['stopover-time'])\"\n *ngIf=\"displayStopoverTime\"\n >\n {{ transitLabel }}\n (<span *ngIf=\"stopoverTime?.numberOfHours\"\n >{{ stopoverTime?.numberOfHours\n }}{{ transitHoursIndicator }}&nbsp;</span\n >\n <span *ngIf=\"stopoverTime?.numberOfMinutes\"\n >{{ stopoverTime?.numberOfMinutes }}{{ transitMinutesIndicator }}</span\n >)\n </div>\n <div [nasClass]=\"getClass('', ['place'])\">\n {{ journeyStopoverModel?.airportName }}\n <span [nasClass]=\"getClass('airport-code')\">{{\n journeyStopoverModel?.airportCode\n }}</span>\n </div>\n <div [nasClass]=\"getClass('', ['arrival'])\">\n {{ arrivalTimeLabel }} {{ currentStopover?.arrivalDate }}\n {{ currentStopover?.arrivalTime }}\n </div>\n <div [nasClass]=\"getClass('', ['departure'])\">\n {{ departureTimeLabel }} {{ currentStopover?.departureDate }}\n {{ currentStopover?.departureTime }}\n </div>\n </div>\n</div>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { TripSummaryModel } from '../../shared/models/trip-summary.model';\nimport { JourneyModel } from '../journey/models/journey.model';\nimport { JourneyStopoverModel } from '../../shared/models/journey-stopover.model';\n\n/**\n * @description\n * Norwegian Trip Summary Component | Functional\n */\n@Component({\n selector: 'nas-trip-summary',\n templateUrl: './trip-summary.component.html',\n styleUrls: ['./trip-summary.component.scss']\n})\nexport class TripSummaryComponent extends NasComponentBase implements OnChanges {\n\n journeyModel: JourneyModel;\n journeyStopoverModelArray: JourneyStopoverModel;\n\n /**\n * @description\n * A record containing trip summary record.\n * @required\n * @example\n * ```html\n * <nas-trip-summary [tripSummaryModel]=\"tripSummaryModel\"></nas-trip-summary>\n * ```\n */\n @Input() tripSummaryModel: TripSummaryModel;\n\n /**\n * @description\n * A boolean vlaue to set whether the trip summary details are expanded/minimized.\n * Default is false\n * @example\n * ```html\n * <nas-trip-summary [expanded]=\"true\"></nas-trip-summary>\n * ```\n */\n @Input() expanded = false;\n\n\n /**\n * @description\n * A boolean value to enable expanding/collapsing the trip summary details. Default value is false\n * @example\n * ```html\n * <nas-trip-summary [collapsable]=\"true\"></nas-trip-summary>\n * ```\n */\n @Input() collapsable = true;\n\n\n /**\n * @description\n * A boolean value to show minimum summary.\n * @example\n * ```html\n * <nas-trip-summary [displayMinimumInfo]=\"true\"></nas-trip-summary>\n * or\n * <nas-trip-summary displayMinimumInfo></nas-trip-summary>\n * ```\n */\n @Input() displayMinimumInfo: boolean;\n\n\n /**\n * @description\n * A string represents the title of the expand/collase action.\n * @example\n * ```html\n * <nas-trip-summary [expandTitle]=\"'Details'\"></nas-trip-summary>\n * ```\n */\n @Input() expandTitle = 'Details';\n\n /**\n * @description\n * A string represents the Label before arrival time.\n * @example\n * ```html\n * <nas-trip-summary [arrivalLabel]=\"'Arrival'\"></nas-trip-summary>\n * ```\n */\n @Input() arrivalLabel: string;\n\n /**\n * @description\n * A string represents the label before departure time.\n * @example\n * ```html\n * <nas-trip-summary [departureLabel]=\"'Departure'\"></nas-trip-summary>\n * ```\n */\n @Input() departureLabel: string;\n\n\n /**\n * @description\n * A string represents the Label before delayed arrival time for journey component.\n * @example\n * ```html\n * <nas-trip-summary [arrivalEstimatedLabel]=\"'New time'\"></nas-trip-summary>\n * ```\n */\n @Input() arrivalEstimatedLabel: string;\n\n /**\n * @description\n * A string represents the label before delayed departure time for journey component.\n * @example\n * ```html\n * <nas-trip-summary [departureEstimatedLabel]=\"'New time'\"></nas-trip-summary>\n * ```\n */\n @Input() departureEstimatedLabel: string;\n\n /**\n * @description\n * A string representing date display format, if not provided, default formatting on date will be applied\n * i.e 'dd MMM yyyy', which will result in displaying date like '21, Feb 2019'.\n * @example\n * ```html\n * <nas-trip-summary [dateFormat]=\"'dd, MMM yyyy'\"></nas-trip-summary>\n * ```\n */\n @Input() dateFormat = 'dd, MMM yyyy';\n\n /**\n * @description\n * A string representing time display format, if not provided, default formatting on date will be applied\n * i.e 'HH:mm' , which will result in displaying time like '09:23'.\n * @example\n * ```html\n * <nas-trip-summary [timeFormat]=\"'HH:mm'\"></nas-trip-summary>\n * ```\n */\n @Input() timeFormat = 'HH:mm';\n\n\n /**\n* @description\n* A string representing Transit Hour indicator.\n* if not provided, transit time will not be shown\n* @example\n* ```html\n* <nas-trip-summary [transitHoursIndicator]=\"'h'\"></nas-trip-summary>\n* ```\n*/\n @Input() transitHoursIndicator: string;\n\n /**\n* @description\n* A string representing Transit Minutes indicator.\n* if not provided, transit time will not be shown\n* @example\n* ```html\n* <nas-trip-summary [transitMinutesIndicator]=\"'m'\"></nas-trip-summary>\n* ```\n*/\n @Input() transitMinutesIndicator: string;\n\n /**\n * @description\n * A string representing label placed before transit stop time.\n * @example\n * ```html\n * <nas-trip-summary [transitLabel]=\"'Transit stop'\"></nas-trip-summary>\n * ```\n */\n @Input() transitLabel: string;\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n * @example\n * ```html\n * <nas-trip-summary [locale]=\"'es'\"></nas-trip-summary>\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * User can input the timezone to localize the date.\n * Default is set to UTC and it will by default show the date exactly what is passed to it.\n * @example\n * ```html\n * <nas-trip-summary [timeZone]=\"'UTC'\"></nas-trip-summary>\n */\n @Input() timeZone = 'UTC';\n\n constructor() {\n super('nas-trip-summary');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.tripSummaryModel && this.tripSummaryModel.flightList && this.tripSummaryModel.flightList.length) {\n this.makeJourneyModel();\n\n if (this.tripSummaryModel.flightList.length > 1) {\n this.addStopovers();\n }\n }\n }\n\n makeJourneyModel(): void {\n const first = this.tripSummaryModel.flightList[0];\n const last = this.tripSummaryModel.flightList[this.tripSummaryModel.flightList.length - 1];\n this.journeyModel = {\n departure: {\n airportName: first.originName,\n airportCode: first.origin,\n date: first.localDepartureDate,\n time: first.localDepartureTime,\n estimatedDate: first.estimatedDepartureDate,\n estimatedTime: first.estimatedDepartureTime\n },\n arrival: {\n airportName: last.destinationName,\n airportCode: last.destination,\n date: last.localArrivalDate,\n time: last.localArrivalTime,\n estimatedDate: last.estimatedArrivalDate,\n estimatedTime: last.estimatedArrivalDate\n }\n };\n }\n addStopovers(): void {\n let flight;\n for (let counter = 1; counter < this.tripSummaryModel.flightList.length; counter++) {\n flight = this.tripSummaryModel.flightList[counter - 1];\n flight.stopover = {\n airportName: flight.destinationName,\n airportCode: flight.destination,\n localArrivalTime: flight.localArrivalTime,\n localArrivalDate: flight.localArrivalDate,\n localDepartureTime: this.tripSummaryModel.flightList[counter].localDepartureTime,\n localDepartureDate: this.tripSummaryModel.flightList[counter].localDepartureDate\n };\n }\n }\n}\n","<div [nasClass]=\"getContainerClass()\" *ngIf=\"tripSummaryModel && journeyModel\">\n\n <nas-journey [timeZone]=\"timeZone\" [locale]=\"locale\" [journeyModel]=\"journeyModel\" [dateFormat]=\"dateFormat\" [timeFormat]=\"timeFormat\" [arrivalLabel]=\"arrivalLabel\"\n [departureLabel]=\"departureLabel\" [arrivalEstimatedLabel]=\"arrivalEstimatedLabel\" [departureEstimatedLabel]=\"departureEstimatedLabel\">\n\n <div *ngIf=\"exists(collapsable); else tripDetailsRef;\">\n <nas-accordion simple [title]=\"expandTitle\" [expanded]=\"expanded\">\n <ng-template [ngTemplateOutlet]=\"tripDetailsRef\"></ng-template>\n </nas-accordion>\n </div>\n\n <ng-template #tripDetailsRef>\n <div [nasClass]=\"getClass('details')\" *ngFor=\"let tripSummary of tripSummaryModel.flightList;\">\n\n <div [nasClass]=\"getClass('view')\" *ngFor=\"let detail of tripSummary.flightDetailList;index as flightDetailsIndex\">\n\n <div *ngIf=\"exists(displayMinimumInfo) && flightDetailsIndex < 2 || !exists(displayMinimumInfo)\">\n <div>\n\n <div [nasClass]=\"getClass('item')\">\n <div [nasClass]=\"getClass('',['title'])\">\n {{detail.header}}\n </div>\n <div [nasClass]=\"getClass('',['explanation'])\" *ngFor=\"let explanation of detail.itemDetailList\">\n <span [nasClass]=\"getClass('',['text'])\">\n {{explanation.text}}\n </span>\n <span [nasClass]=\"getClass('',['link'])\" *ngIf=\"explanation?.link?.text.length\">\n <a href=\"{{explanation?.link?.url}}\">{{explanation?.link?.text}}</a>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tripSummary.stopover\" [nasClass]=\"getClass('stopover')\">\n <nas-journey-stopover [timeZone]=\"timeZone\" [locale]=\"locale\" \n [journeyStopoverModel]=\"tripSummary.stopover\" [dateFormat]=\"dateFormat\"\n [transitHoursIndicator]=\"transitHoursIndicator\" [transitMinutesIndicator]=\"transitMinutesIndicator\"\n [timeFormat]=\"timeFormat\" [transitLabel]=\"transitLabel\" [arrivalTimeLabel]=\"arrivalLabel\"\n [departureTimeLabel]=\"departureLabel\">\n </nas-journey-stopover>\n </div>\n\n </div>\n\n </ng-template>\n </nas-journey>\n</div>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n Input,\n OnChanges,\n SimpleChanges,\n Output,\n EventEmitter,\n OnInit\n} from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { JourneyAvailabilityModel } from '../../shared/models/journey-availability.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\n\n/**\n * @description\n * Norwegian Journey Availability Component | Functional\n */\n@Component({\n selector: 'nas-journey-availability',\n templateUrl: './journey-availability.component.html',\n styleUrls: ['./journey-availability.component.scss']\n})\nexport class JourneyAvailabilityComponent extends NasComponentBase\n implements OnInit, OnChanges {\n currentJourney: any;\n private displayJourneyDetailsValue: boolean;\n isSmallScreen: boolean;\n\n /**\n * @required\n * @description\n * A record containing all the data required to show journey availability UI, look at 'RouteModel' for details.\n * @example\n * ```html\n * <nas-journey-availability [journeyAvailabilityModel]=\"journeyAvailabilityModel\"></nas-journey-availability>\n * ```\n */\n @Input() model: JourneyAvailabilityModel;\n\n /**\n * @description\n * A boolean value, when set to true will show journey availability UI in selected format.\n * @example\n * ```html\n * <nas-journey-availability [selected]=\"true\"></nas-journey-availability>\n * ```\n */\n @Input() selected: boolean;\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n * @example\n * ```html\n * <nas-journey-availability [locale]=\"'es'\"></nas-journey-availability>\n */\n @Input() locale = 'en-US';\n\n /**\n * @description\n * Time display format, Default is HH:mm\n * @example\n * ```html\n * <nas-journey-availability [timeDisplayFormat]=\"'HH:mm'\"></nas-journey-availability>\n */\n @Input() timeDisplayFormat = 'HH:mm';\n\n /**\n * @description\n * User can input the timezone to localize the date.\n * Default is set to UTC and it will by default show the date exactly what is passed to it.\n * @example\n * ```html\n * <nas-journey-availability [timeZone]=\"'UTC'\"></nas-journey-availability>\n */\n @Input() timeZone = 'UTC';\n\n /**\n * @description\n * Setter and getter when the flight info popup shows/hidden.\n */\n @Input()\n get displayJourneyDetails(): boolean {\n return this.displayJourneyDetailsValue;\n }\n set displayJourneyDetails(value: boolean) {\n if (this.displayJourneyDetailsValue !== value) {\n this.displayJourneyDetailsValue = value;\n this.displayJourneyDetailsChange.emit(value);\n }\n }\n\n /**\n *\n * @description\n * An Event which Emitts boolean when Flight info popup is toggled.\n */\n @Output() displayJourneyDetailsChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Event emits when user click on journey availability for selection.\n */\n @Output() journeyAvailabilityClick = new EventEmitter<KeyboardEvent>();\n\n constructor(\n private datePipe: DatePipe,\n private deviceService: DeviceHelper,\n private dateService: DateHelper\n ) {\n super('nas-journey-availability');\n }\n\n ngOnInit(): void {\n this.isSmallScreen = this.deviceService.isTabletWindow();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.model) {\n this.currentJourney = {\n departureTime: this.datePipe.transform(\n this.dateService.date(this.model.departureTime),\n this.timeDisplayFormat,\n this.timeZone,\n this.locale\n ),\n arrivalTime: this.datePipe.transform(\n this.dateService.date(this.model.arrivalTime),\n this.timeDisplayFormat,\n this.timeZone,\n this.locale\n )\n };\n }\n }\n\n emitClick(event: KeyboardEvent): void {\n this.journeyAvailabilityClick.emit(event);\n }\n\n toggleJourneyInfoDetails(event: KeyboardEvent): void {\n this.displayJourneyDetails = !this.displayJourneyDetails;\n this.displayJourneyDetailsChange.emit(this.displayJourneyDetails);\n event.stopPropagation();\n }\n\n getIconType(): string {\n if (\n !this.model.journeyTransitInfo ||\n !this.model.journeyTransitInfo.transitCount\n ) {\n return '';\n } else if (this.model.journeyTransitInfo.transitCount === 1) {\n return 'one-stop-arrow';\n } else {\n return 'two-stops-arrow';\n }\n }\n}\n","<div *ngIf=\"model\" [nasClass]=\"getClass()\">\n <div [nasClass]=\"getClass('journey-details')\">\n <nas-modal [(show)]=\"displayJourneyDetails\" animated center>\n <nas-trip-summary [tripSummaryModel]=\"model?.tripSummary\" [expandTitle]=\"model?.journeyDetails?.expandTitle\"\n [transitLabel]=\"model?.journeyDetails?.transitLabel\" [arrivalLabel]=\"model?.journeyDetails?.arrivalLabel\"\n [departureLabel]=\"model?.journeyDetails?.departureLabel\"\n [transitHoursIndicator]=\"model?.journeyDetails?.hoursIndicator\"\n [transitMinutesIndicator]=\"model?.journeyDetails?.minutesIndicator\">\n </nas-trip-summary>\n </nas-modal>\n </div>\n\n <div [nasClass]=\"getClass('item', selected && 'selected')\" (click)=\"emitClick($event)\" role=\"button\"\n aria-pressed=\"false\" tabindex=\"0\">\n <article [nasClass]=\"getClass('trigger', model?.badge && 'badge-padding')\">\n <div [nasClass]=\"getClass('badge')\" *ngIf=\"model?.badge\">\n <span [nasClass]=\"getClass('badge-label')\">\n {{ model?.badgeLabel }}\n </span>\n </div>\n\n <div [nasClass]=\"getClass('overview')\">\n <div [nasClass]=\"getClass('overview-details')\">\n <section [nasClass]=\"getClass('flight-time')\" #journeyDetails>\n <div [nasClass]=\"getClass('flight-time-from-to')\">\n <div [nasClass]=\"getClass('flight-time-when')\">\n <div [nasClass]=\"getClass('flight-time-when-departure')\">\n <time #departureTimeText>\n {{ currentJourney?.departureTime }}\n </time>\n </div>\n\n <span>&nbsp;-&nbsp;</span>\n <div [nasClass]=\"getClass('flight-time-when-arrival')\">\n <time>{{ currentJourney?.arrivalTime }}</time>\n </div>\n </div>\n <div *ngIf=\"!isSmallScreen\">\n <ng-container *ngTemplateOutlet=\"TotalFlightTime\"></ng-container>\n </div>\n <ng-container *ngIf=\"isSmallScreen\">\n <ng-container *ngTemplateOutlet=\"airportCodes\"></ng-container>\n </ng-container>\n </div>\n <div [nasClass]=\"getClass('flight-time-info')\" *ngIf=\"model?.journeyInfoLabel\">\n <span [nasClass]=\"getClass('flight-time-info-link-wrapper')\" (click)=\"toggleJourneyInfoDetails($event)\">\n <a [nasClass]=\"getClass('flight-time-info-link')\">\n {{ model?.journeyInfoLabel }}\n </a>\n </span>\n </div>\n </section>\n\n <div [nasClass]=\"getClass('selected-info')\">\n <div [nasClass]=\"getClass('selected-info', 'time-duration')\">\n <section *ngIf=\"!isSmallScreen\" [nasClass]=\"getClass('selected-info-graph')\"></section>\n <section [nasClass]=\"getClass('journey')\">\n <ng-container *ngIf=\"!isSmallScreen\">\n <div [nasClass]=\"getClass('journey-info')\" *ngIf=\"\n model?.journeyTransitInfo?.transitCount;\n else directFlightLabel\n \">\n <mark [nasClass]=\"getClass('journey-info-stops')\">\n {{ model?.journeyTransitInfo?.transitCount }}\n {{ model?.journeyTransitInfo?.transitLabel }}\n </mark>\n\n <span *ngIf=\"isSmallScreen\">,&nbsp;</span>\n\n <mark [nasClass]=\"getClass('journey-info-stops-details')\">\n {{ model?.journeyTransitInfo?.transitDetails }}\n </mark>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"isSmallScreen\">\n <ng-container *ngTemplateOutlet=\"TotalFlightTime\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!isSmallScreen\">\n <ng-container *ngTemplateOutlet=\"airportCodes\"></ng-container>\n </ng-container>\n\n <ng-template #airportCodes>\n <summary [nasClass]=\"getClass('flight-time-when-airports')\">\n {{ model?.origin }}-\n\n <span [nasClass]=\"\n getClass('flight-time-when-airports-stopovers')\n \" *ngIf=\"model?.stopovers\">\n <ng-container *ngFor=\"let stop of model?.stopovers\">\n {{ stop }} -\n </ng-container>\n </span>\n {{ model?.destination }}\n </summary>\n </ng-template>\n\n <ng-template #directFlightLabel>\n <div [nasClass]=\"getClass('journey-info')\">\n <mark [nasClass]=\"getClass('journey-info-stops')\">\n {{ model?.directLabel\n }}<span [nasClass]=\"getClass('journey-info-stops-format')\">,&nbsp;</span>\n </mark>\n </div>\n </ng-template>\n\n <figure *ngIf=\"!isSmallScreen; else journeyIcon\" [nasClass]=\"getClass('md-icon')\">\n <nas-icon *ngIf=\"model?.journeyTransitInfo?.transitCount\" [type]=\"getIconType()\"></nas-icon>\n </figure>\n </section>\n </div>\n <div [nasClass]=\"getClass('operated-by')\" *ngIf=\"model?.operatingCarriers\">\n <label>{{ model?.operatingCarriers?.label }}\n <mark *ngFor=\"\n let operator of model?.operatingCarriers.operators;\n index as operatorIndex\n \">\n {{ operator\n }}<span *ngIf=\"\n model?.operatingCarriers?.operators?.length >\n operatorIndex + 1\n \">,</span>\n </mark>\n </label>\n </div>\n </div>\n\n <ng-template #TotalFlightTime>\n <section [nasClass]=\"getClass('flight-time-details')\">\n <label [nasClass]=\"getClass('flight-time-details-label')\">\n {{ model?.duration?.durationLabel }}\n </label>\n <time [nasClass]=\"getClass('flight-time-details-text')\">\n {{ model?.duration?.durationText }}\n </time>\n <time [nasClass]=\"getClass('flight-time-details-count')\" *ngIf=\"model?.duration?.dayCount\">\n +{{ model.duration.dayCount }} {{ model.duration.dayLabel }}\n </time>\n </section>\n </ng-template>\n\n <ng-template #journeyIcon>\n <figure [nasClass]=\"getClass('mobile-icon')\">\n <nas-icon *ngIf=\"model?.journeyTransitInfo?.transitCount\" [type]=\"getIconType()\"></nas-icon>\n </figure>\n </ng-template>\n </div>\n </div>\n </article>\n </div>\n</div>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { JourneyAvailabilityModel } from '../../shared/models/journey-availability.model';\nimport { SortModel } from '../../shared/models/sort.model';\nimport { JourneyAvailabilitySortModel } from '../../shared/models/journey-availability-sort.model';\nimport { SortOptionModel } from '../../shared/models/sort-option.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { AvailabilitySortOption } from './enums/availability-sort-option.enum';\n\n/**\n * @description\n * Norwegian Journey availability list Component | Functional\n */\n@Component({\n selector: 'nas-journey-availability-list',\n templateUrl: './journey-availability-list.component.html',\n styleUrls: ['./journey-availability-list.component.scss']\n})\nexport class JourneyAvailabilityListComponent extends NasComponentBase {\n\n activeIndex: number;\n sortMetaData: SortModel;\n sortSelectedOptionObject: SortOptionModel;\n /**\n * @required\n * @description\n * A record containing all the data required to show availability results, look at 'journeyAvailabilityModel' for details.\n * @example\n * ```html\n * <nas-journey-availability-list [model]=\"journeyAvailabilityData\"></nas-journey-availability-list>\n * ```\n */\n @Input() model: Array<JourneyAvailabilityModel>;\n\n /**\n * @description\n * An optional model for sort popup options.\n */\n @Input()\n set sortModel(model: JourneyAvailabilitySortModel) {\n if (!model) {\n return;\n }\n this.sortMetaData = {\n sortOptions: [\n { title: model.fastestLabel, value: '1' },\n { title: model.directOnlyLabel, value: '2' },\n { title: model.departureTimeLabel, value: '3' }],\n label: model.sortLabel,\n right: true,\n closeDropdownOnOptionChange: true,\n name: model.name\n };\n }\n\n /**\n * @description\n * set or get selected sort option.\n */\n @Input()\n get sortSelectedOption(): SortOptionModel {\n return this.sortSelectedOptionObject;\n }\n set sortSelectedOption(option: SortOptionModel) {\n if (!option) {\n return;\n }\n this.sortChange(option);\n this.sortSelectedOptionObject = option;\n this.sortSelectedOptionChange.emit(option);\n }\n\n /**\n * @description\n * Event that fires when the sort option changes.\n */\n @Output() sortSelectedOptionChange = new EventEmitter<SortOptionModel>();\n\n /**\n * @description\n * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.\n * This requires that registerLocaleData is called with the respective locale.\n * @example\n * ```html\n * <nas-journey-availability-list [locale]=\"'es'\"></nas-journey-availability-list>\n */\n @Input() locale = 'en-US';\n\n /**\n * @required\n * @description\n * A string to give the user feedback when there no data available for the availability result for specified parameters\n * @example\n * ```html\n * <nas-journey-availability-list [noDataCaption]=\"noDataCaption\"></nas-journey-availability-list>\n * ```\n */\n @Input() noDataCaption: string;\n\n /**\n * @description\n * Time display format.\n * @example\n * ```html\n * <nas-journey-availability-list [timeDisplayFormat]=\"'HH:mm'\"></nas-journey-availability-list>\n */\n @Input() timeDisplayFormat = 'HH:mm';\n\n /**\n *\n * @description\n * A JourneyModel type record the represents selected journey data;\n * @example\n * ```html\n * <nas-journey-availability-list (selectedJourney)=\"onselectedJourney($event)\"></nas-journey-availability-list>\n * ```\n */\n @Output() selectedJourney = new EventEmitter<JourneyAvailabilityModel>();\n\n /**\n *\n * @description\n * A selected index of selected journey data;\n * @example\n * ```html\n * <nas-journey-availability-list (selectedIndexChange)=\"onSelectedIndexChange($event)\"></nas-journey-availability-list>\n * ```\n */\n @Output() selectedIndexChange = new EventEmitter<number>();\n\n /**\n *\n * @description\n * A number that sets the SelectedIndex from the JourneyList array in journeyAvailabilityListModel\n * @example\n * ```html\n * <nas-journey-availability-list [(selectIndex)]=\"selectIndex\"></nas-journey-availability-list>\n * ```\n */\n @Input()\n get selectedIndex(): number {\n return this.activeIndex;\n }\n set selectedIndex(index: number) {\n this.activeIndex = index;\n this.selectedIndexChange.emit(index);\n }\n\n /**\n *\n * @description\n * An Event which Emitts boolean when Flight info popup is toggled.\n */\n @Output() displayJourneyDetailsChange = new EventEmitter<boolean>();\n\n constructor(private dateService: DateHelper) {\n super('nas-journey-availability-list');\n }\n\n displayJourneyDetailsChanged(value: boolean) {\n this.displayJourneyDetailsChange.emit(value);\n }\n\n isAvailabilityJourneySelected(journeyAvailabilityIndex: number): boolean {\n return this.activeIndex === journeyAvailabilityIndex;\n }\n\n emitSelected(flightIndex: number): void {\n this.selectedIndex = flightIndex;\n\n if (!this.model || !this.model.length) {\n return;\n }\n\n const selectedFlight = this.model[flightIndex];\n\n if (selectedFlight) {\n this.selectedJourney.emit(selectedFlight);\n }\n\n }\n\n sortChange(option: SortOptionModel): void {\n if (!option) {\n return;\n }\n switch (parseInt(option.value, 10)) {\n case AvailabilitySortOption.fastest:\n this.model = this.model.sort((a, b) => a.duration.durationInMinutes - b.duration.durationInMinutes);\n break;\n\n case AvailabilitySortOption.directOnly:\n this.model = this.model.sort((a, b) => a.journeyTransitInfo.transitCount - b.journeyTransitInfo.transitCount);\n break;\n\n case AvailabilitySortOption.departureTime:\n this.model = this.model.sort((a, b) =>\n this.dateService.date(a.departureTime).getTime() - this.dateService.date(b.departureTime).getTime());\n break;\n\n default:\n break;\n }\n }\n}\n\n\n\n","<div [nasClass]=\"getContainerClass()\" *ngIf=\"model && model?.length\" role=\"list\">\n <div *ngIf=\"sortMetaData\" [nasClass]=\"getClass('sort-popup')\">\n <nas-sort [model]=\"sortMetaData\" (selectedOptionChange)=\"sortChange($event)\"\n [(selectedOption)]=\"sortSelectedOption\">\n </nas-sort>\n </div>\n\n <div [nasClass]=\"getClass('single-result')\"\n *ngFor=\"let journeyAvailabilityModel of model; index as journeyAvailabilityIndex\" role=\"listitem\">\n <nas-journey-availability (displayJourneyDetailsChange)=\"displayJourneyDetailsChanged($event)\"\n (journeyAvailabilityClick)=\"emitSelected(journeyAvailabilityIndex)\"\n [selected]=\"isAvailabilityJourneySelected(journeyAvailabilityIndex)\" [model]=\"journeyAvailabilityModel\"\n [timeDisplayFormat]=\"timeDisplayFormat\" [locale]=\"locale\">\n </nas-journey-availability>\n </div>\n\n <label [nasClass]=\"getClass('no-results')\" *ngIf=\"!model?.length\">\n <p>{{ noDataCaption }}</p>\n </label>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { JourneyComponent } from './journey.component';\n\n@NgModule({\n declarations: [JourneyComponent],\n imports: [\n CommonModule,\n NasClassModule,\n AccordionModule\n ],\n exports: [JourneyComponent]\n})\nexport class JourneyModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { JourneyStopoverComponent } from './journey-stopover.component';\n\n@NgModule({\n declarations: [JourneyStopoverComponent],\n imports: [\n CommonModule,\n NasClassModule,\n AccordionModule\n ],\n exports: [JourneyStopoverComponent]\n})\nexport class JourneyStopoverModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { AccordionModule } from '../accordion/accordion.module';\nimport { JourneyModule } from '../journey/journey.module';\nimport { TripSummaryComponent } from './trip-summary.component';\nimport { JourneyStopoverModule } from '../journey-stopover/journey-stopover.module';\n\n@NgModule({\n declarations: [TripSummaryComponent],\n imports: [\n CommonModule,\n NasClassModule,\n AccordionModule,\n JourneyModule,\n JourneyStopoverModule\n ],\n exports: [TripSummaryComponent]\n})\nexport class TripSummaryModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { JourneyAvailabilityComponent } from './journey-availability.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { IconModule } from '../icon/icon.module';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { ModalModule } from '../modal/modal.module';\nimport { TripSummaryModule } from '../trip-summary/trip-summary.module';\n\n@NgModule({\n declarations: [JourneyAvailabilityComponent],\n imports: [\n CommonModule,\n NasClassModule,\n IconModule,\n ModalModule,\n TripSummaryModule\n ],\n exports: [JourneyAvailabilityComponent],\n providers: [DateHelper, DeviceHelper]\n})\nexport class JourneyAvailabilityModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { JourneyAvailabilityListComponent } from './journey-availability-list.component';\nimport { JourneyAvailabilityModule } from '../journey-availability/journey-availability.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { CoverModule } from '../cover/cover.module';\nimport { SortModule } from '../sort/sort.module';\n\n@NgModule({\n imports: [\n CommonModule,\n JourneyAvailabilityModule,\n NasClassModule,\n CoverModule,\n SortModule\n ],\n declarations: [JourneyAvailabilityListComponent],\n exports: [JourneyAvailabilityListComponent]\n})\nexport class JourneyAvailabilityListModule { }\n\n\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, OnInit, Input } from '@angular/core';\n\nimport { NasComponentBase, ClassModel } from '../../core';\n\n/**\n * @description\n * Norwegian Chip Component | Buttons and Indicators\n */\n@Component({\n selector: 'nas-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss']\n})\nexport class ChipComponent extends NasComponentBase implements OnInit {\n\n /**\n * @description\n * Boolean to set primary style of the chip (red).\n *\n * @example\n *\n * ```html\n * <nas-chip primary>Primary</nas-chip>\n * ```\n *\n */\n @Input() primary?: boolean;\n\n /**\n * @description\n * Boolean to set approve style of the chip (green).\n *\n * @example\n *\n * ```html\n * <nas-chip approve>Approve</nas-chip>\n * ```\n *\n */\n @Input() approve?: boolean;\n\n /**\n * @description\n * Property to set custom styling on button.\n *\n * @example\n *\n * ```html\n * <nas-chip [cssStyle]=\"{'width': '300px', 'height': '40px'}\"></nas-chip>\n * ```\n *\n */\n @Input() cssStyle: any = {};\n\n /**\n * @description\n * Boolean to set the component style to small.\n *\n * @example\n * ```html\n * <nas-chip small>Small</nas-chip>\n * ```\n */\n @Input() small?: boolean;\n\n constructor() {\n super('nas-chip');\n }\n\n ngOnInit() {\n }\n\n getChipClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.approve) && 'approve',\n this.exists(this.primary) && 'primary'\n ]);\n }\n\n}\n","<small *ngIf=\"exists(small); else defaultChip\" [nasClass]=\"getChipClass()\" [ngStyle]=\"cssStyle\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</small>\n\n<ng-template #defaultChip>\n <span [nasClass]=\"getChipClass()\" [ngStyle]=\"cssStyle\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n</ng-template>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ChipComponent } from './chip.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [ChipComponent],\n imports: [\n CommonModule,\n NasClassModule\n ],\n exports: [ChipComponent]\n})\nexport class ChipModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NasComponentBase } from '../../../core/base/nas-component.base';\nimport { ClassModel } from '../../../core/models/class.model';\n\n@Component({\n selector: 'nas-tab',\n templateUrl: './tab.component.html',\n styleUrls: ['./tab.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TabComponent extends NasComponentBase implements OnInit {\n @ViewChild('tab') tab: ElementRef;\n\n private sizeValue: number | null;\n private groupIdValue: number | null;\n private selectedValue = false;\n index = 0;\n\n get groupId() {\n return this.groupIdValue;\n }\n set groupId(input: number) {\n this.groupIdValue = input;\n this.changeDetector.detectChanges();\n }\n\n get size() {\n return this.sizeValue;\n }\n set size(input: number) {\n this.sizeValue = input;\n this.changeDetector.detectChanges();\n }\n\n get selected() {\n return this.selectedValue;\n }\n set selected(input: boolean) {\n this.selectedValue = input;\n this.changeDetector.detectChanges();\n\n if (input) {\n setTimeout(() => {\n this.tab.nativeElement.focus();\n }, 100);\n }\n }\n\n /**\n * @description\n * An icon for the tab.\n * @example\n * ```html\n * <nas-tab [icon]=\"'flight-tickets'\"></nas-tab>\n * ```\n */\n @Input() icon: string;\n\n /**\n * @description\n * A label for the tab.\n * @example\n * ```html\n * <nas-tab [label]=\"'Flight'\"></nas-tab>\n * ```\n */\n @Input() label: string;\n\n /**\n * @description\n * Removes shadow effect on tab content\n * @example\n * ```html\n * <nas-tab shadowless></nas-tab>\n * ```\n */\n @Input() shadowless: boolean;\n\n /**\n * @description\n * Aria label for the tab.\n * @example\n * ```html\n * <nas-tab aria-label=\"'Flight tickets'\"></nas-tab>\n * ```\n */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * @description\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n * @example\n * ```html\n * <nas-tab aria-labelledby=\"flightTicketsId\"></nas-tab>\n * ```\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n @Output() tabClick = new EventEmitter<number>();\n @Output() focusOnNext = new EventEmitter<number>();\n @Output() focusOnPrevious = new EventEmitter<number>();\n\n constructor(private elementRef: ElementRef, private changeDetector: ChangeDetectorRef) {\n super('nas-tab');\n }\n\n ngOnInit(): void {\n this.removeHostElement(this.elementRef);\n }\n\n getDropdownClass(): ClassModel {\n return this.getClass('dropdown', [this.selected && 'selected']);\n }\n\n getDropdownIconType(): string {\n return 'dropdown' + (!this.selected ? '--light' : '');\n }\n\n onTabClick(): void {\n if (this.selected) {\n return;\n }\n\n this.selected = true;\n this.tabClick.emit(this.index);\n }\n\n onArrowRightClick(): void {\n if (!this.selected) {\n return;\n }\n\n this.focusOnNext.emit(this.index);\n }\n\n onArrowLeftClick(): void {\n if (!this.selected) {\n return;\n }\n\n this.focusOnPrevious.emit(this.index);\n }\n\n displayDropdownIcon(): boolean {\n return window.innerWidth < 1000;\n }\n\n getIcon(): string {\n return !this.selected ? this.icon + '--light' : this.icon;\n }\n\n getTabIndex(): number {\n return this.selected ? 0 : -1;\n }\n\n getTabContentId(): string {\n if (this.groupId === undefined || this.index === undefined) {\n return null;\n }\n\n return `nas-tab-content-${this.groupId}-${this.index}`;\n }\n\n getLabelId(): string {\n if (this.groupId === undefined || this.index === undefined) {\n return null;\n }\n\n return `nas-tab-label-${this.groupId}-${this.index}`;\n }\n\n getContentClass(): ClassModel {\n return this.getClass('content', [\n this.selected && 'selected',\n this.exists(this.shadowless) && 'shadowless']);\n }\n}\n","<a #tab\n role=\"tab\"\n [nasClass]=\"getClass('label', [selected && 'selected'])\"\n [id]=\"getLabelId()\"\n [attr.tabIndex]=\"getTabIndex()\"\n [attr.aria-posinset]=\"index + 1\"\n [attr.aria-setsize]=\"size\"\n [attr.aria-controls]=\"getTabContentId()\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"(!ariaLabel && ariaLabelledby) ? ariaLabelledby : null\"\n (click)=\"onTabClick()\"\n (keyup.arrowright)=\"onArrowRightClick()\"\n (keyup.arrowleft)=\"onArrowLeftClick()\">\n <nas-icon *ngIf=\"icon\"\n [icon]=\"getIcon()\"></nas-icon>\n {{label}}\n <ng-container *ngIf=\"displayDropdownIcon()\">\n <nas-icon [nasClass]=\"getDropdownClass()\"\n [type]=\"getDropdownIconType()\"></nas-icon>\n </ng-container>\n</a>\n<div [nasClass]=\"getContentClass()\"\n [id]=\"getTabContentId()\"\n [attr.aria-labelledby]=\"getLabelId()\">\n <ng-content></ng-content>\n</div>","import { Component, QueryList, ContentChildren, Input, ViewEncapsulation, AfterViewInit } from '@angular/core';\n\nimport { NasComponentBase } from '../../core';\nimport { TabComponent } from './tab/tab.component';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Tab Group Component | Layout\n*/\n@Component({\n selector: 'nas-tab-group',\n templateUrl: './tab-group.component.html',\n styleUrls: ['./tab-group.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TabGroupComponent extends NasComponentBase implements AfterViewInit {\n private selectedIndexValue = 0;\n private groupId = 0;\n\n @ContentChildren(TabComponent) tabs: QueryList<TabComponent>;\n\n /**\n * @description\n * The selected index for the tab group. Default value is 0.\n */\n @Input()\n get selectedIndex() {\n return this.selectedIndexValue;\n }\n set selectedIndex(value: number) {\n if (value < 0 || (this.tabs && value > this.tabs.length - 1)) {\n return;\n }\n\n this.selectedIndexValue = value;\n\n setTimeout(() => {\n if (this.tabs && this.tabs.length > 0) {\n let tabIndex = 0;\n\n this.tabs.forEach(tab => {\n tab.selected = false;\n\n if (tabIndex === this.selectedIndex) {\n tab.selected = true;\n }\n\n tabIndex++;\n });\n }\n });\n }\n\n /**\n * @description\n * Makes the tabgroup fit to its container, no width restrictions\n */\n @Input() fit: boolean;\n\n /**\n * @description\n * Removes shadow effect on tab content\n */\n @Input() shadowless: boolean;\n\n constructor() {\n super('nas-tab-group');\n this.groupId = nextId++;\n }\n\n ngAfterViewInit(): void {\n let tabIndex = 0;\n this.tabs.forEach(tab => {\n tab.index = tabIndex;\n tab.size = this.tabs.length;\n tab.groupId = this.groupId;\n tab.shadowless = this.exists(this.shadowless);\n\n if (tabIndex === this.selectedIndex) {\n tab.selected = true;\n }\n\n ++tabIndex;\n });\n\n this.tabs.forEach(x => {\n x.tabClick.subscribe((index: number) => {\n this.tabs.forEach(tab => {\n if (tab.index !== index) {\n tab.selected = false;\n }\n });\n });\n\n x.focusOnNext.subscribe((index: number) => {\n this.selectedIndex = ++index;\n });\n\n x.focusOnPrevious.subscribe((index: number) => {\n this.selectedIndex = --index;\n });\n });\n }\n}\n","<div role=\"tablist\"\n [nasClass]=\"getClass('', [exists(fit) && 'fit'])\">\n <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TabGroupComponent } from './tab-group.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { IconModule } from '../icon/icon.module';\nimport { TabComponent } from './tab/tab.component';\n\n@NgModule({\n declarations: [TabGroupComponent, TabComponent],\n imports: [\n CommonModule,\n NasClassModule,\n IconModule\n ],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class TabGroupModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { SelectOptionModel } from '../select/models/select-option.model';\nimport { ClassModel } from '../../core/models/class.model';\nimport { UntypedFormGroup } from '@angular/forms';\n\n/**\n * @description\n * Norwegian Phone number Component | Form Controls\n */\n@Component({\n selector: 'nas-phone-number',\n templateUrl: './phone-number.component.html',\n styleUrls: ['./phone-number.component.scss']\n})\nexport class PhoneNumberComponent extends NasComponentBase {\n\n /**\n * @description\n * A record containing country codes.\n * @example\n * ```html\n * <nas-phone-number [options]=\"options\"></nas-phone-number>\n * ```\n */\n @Input() options: Array<SelectOptionModel>;\n\n /**\n * @description\n * Preferred options will be listed on top.\n * @example\n * ```html\n * <nas-phone-number [preferred-options]=\"preferredOptions\"></nas-phone-number>\n * ```\n */\n @Input() preferredOptions: Array<SelectOptionModel>;\n\n /**\n * @description\n * Single Phone number prefix/country code, if exists will replace the dropdown selector for countrycode\n * @example\n * ```html\n * <nas-phone-number [prefixCountryCode]=\"'+47'\"></nas-phone-number>\n * ```\n */\n @Input() prefixCountryCode: string;\n\n /**\n * @description\n * A record containing label for phone number.\n * @example\n * ```html\n * <nas-phone-number [label]=\"phone number\"></nas-phone-number>\n * ```\n */\n @Input() label: string;\n\n /**\n * @description\n * A record containing label for options. Only in use when preferredOptions are used.\n * @example\n * ```html\n * <nas-phone-number><nas-optgroup [label]=\"optionsLabel\">...</nas-phone-number>\n * ```\n */\n @Input() optionsLabel: string;\n\n /**\n * @description\n * A record containing label for preferredOptions. Only in use when preferredOptions are used.\n * @example\n * ```html\n * <nas-phone-number><nas-optgroup [label]=\"preferredOptionsLabel\">...</nas-phone-number>\n * ```\n */\n @Input() preferredOptionsLabel: string;\n\n /**\n* @description\n* A record containing place holder for native input element of phone number.\n* @example\n* ```html\n* <nas-phone-number [placeholder]=\"phone number\"></nas-phone-number>\n* ```\n*/\n @Input() placeholder: string;\n\n /**\n * @description\n * The ID of the native input element\n * @example\n * ```html\n * <nas-phone-number [id]=\"'phoneNumber'\"></nas-phone-number>\n * ```\n */\n @Input() id: string;\n\n /**\n * @description\n * The type of the native input element. Default value is number\n * @example\n * ```html\n * <nas-phone-number [type]=\"'text'\"></nas-phone-number>\n * ```\n */\n @Input() type = 'number';\n\n /**\n * @description\n * Whether the control is in an error state.\n * @example\n * ```html\n * <nas-phone-number error></nas-phone-number>\n * ```\n */\n @Input() error: boolean;\n\n /**\n * @description\n * Whether the native input element is disabled or no, with disabled styling.\n * @example\n * ```html\n * <nas-phone-number disabled></nas-phone-number>\n * ```\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Set spaceless styling (removing spacing)\n * @example\n * ```html\n * <nas-phone-number spaceless></nas-phone-number>\n * ```\n */\n @Input() spaceless: boolean;\n\n /**\n * @description\n * Set loading styling of input\n * @example\n * ```html\n * <nas-phone-number loading></nas-phone-number>\n * ```\n */\n @Input() loading: boolean;\n\n /**\n * @description\n * The error message to display when error occur. Error attribute need to be true.\n * @example\n * ```html\n * <nas-phone-number [errorMessage]=\"'please fill in the phone number field'\"></nas-phone-number>\n * ```\n */\n @Input() errorMessage: string;\n\n\n /**\n * @description\n * Sets the info text related to the input\n * @example\n * ```html\n * <nas-phone-number [info]=\"'please write 8 digit phone number without spaces'\"></nas-phone-number>\n * ```\n */\n @Input() info: string;\n\n /**\n * @description\n * Sets the icon on the input\n * @example\n * ```html\n * <nas-phone-number [icon]=\"'remove'\"></nas-phone-number>\n * ```\n */\n @Input() icon: string;\n\n /**\n * @description\n * Whether the element is readonly.\n * @example\n * ```html\n * <nas-phone-number readonly></nas-phone-number>\n * ```\n */\n @Input() readonly: boolean;\n\n /**\n * @description\n * Sets aria describedby for accessibility\n * @example\n * ```html\n * <nas-phone-number [aria-describedby]=\"'phone number field'\"></nas-phone-number>\n * ```\n */\n @Input('aria-describedby') ariaDescribedby: string;\n\n /**\n * @description\n * Sets the required attribute on the native input element.\n * @example\n * ```html\n * <nas-phone-number required></nas-phone-number>\n * ```\n */\n @Input() required: boolean;\n /**\n * @description\n * Sets a formControlName directive to the select.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * ```html\n * <nas-phone-number [nasFormControlName]=\"'phoneNumber'\"></nas-phone-number>\n * ```\n */\n @Input() nasFormControlName: string;\n /**\n * @description\n * Sets a formControlName directive to the select.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * ```html\n * <nas-phone-number [nasFormControlNamePrefix]=\"'phoneNumberPrefix'\"></nas-phone-number>\n * ```\n */\n @Input() nasFormControlNamePrefix: string;\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * ```html\n * <nas-phone-number [nasFormGroup]=\"myForm\"></nas-phone-number>\n * ```\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * A model binded with native input element of phone number component.\n * @example\n * ```html\n * <nas-phone-number [(model)]=\"model\"></nas-phone-number>\n * ```\n */\n private modelValue: string;\n @Input() get model() {\n return this.modelValue;\n }\n set model(value: string) {\n this.modelValue = value;\n this.modelChange.emit(this.modelValue);\n }\n\n /**\n * @description\n * An output event that fies when input value changes.\n * @example\n * ```html\n * <nas-phone-number (modelChange)=\"onModelChange()\"></nas-phone-number>\n * ```\n */\n @Output() modelChange = new EventEmitter<string>();\n\n /**\n * @description\n * Add custom CSS class to the selector.\n * @example\n * ```html\n * <nas-phone-number [cssClass]=\"cssClass\"></nas-phone-number>\n * ```\n */\n @Input() cssClass: ClassModel;\n\n\n /**\n * @description\n * The default selected value.\n * @example\n * ```html\n * <nas-phone-number [selectedValue]=\"selectedValue\"></nas-phone-number>\n * ```\n */\n @Input() selectedValue: SelectOptionModel;\n\n /**\n * @description\n * Gets or sets the selected value.\n * @example\n * ```html\n * <nas-phone-number [(selected)]=\"selected\"></nas-phone-number>\n * ```\n */\n @Input()\n get selected(): SelectOptionModel {\n return this.selectedValue;\n }\n set selected(option: SelectOptionModel) {\n if (!option) {\n return;\n }\n this.selectedValue = option;\n this.selectedChange.emit(this.selectedValue);\n }\n\n /**\n * @description\n * An event that is fired every time a selection is done.\n * @example\n * ```html\n * <nas-phone-number (selectedChange)=\"onSelectedChange($event)\"></nas-phone-number>\n * ```\n */\n @Output() selectedChange = new EventEmitter<SelectOptionModel>();\n\n constructor() {\n super('nas-phone-number');\n }\n\n mainClass(): ClassModel {\n const { error, disabled, loading, spaceless } = this;\n\n return this.getClass('', [\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.exists(this.loading) && 'loading',\n this.exists(this.spaceless) && 'spaceless'\n ]);\n }\n\n}\n","<div [nasClass]=\"mainClass()\">\n <label [nasClass]=\"getClass('label')\" *ngIf=\"label\" [attr.for]=\"id\">{{label}}</label>\n\n <div [nasClass]=\"getClass('controls')\">\n <ng-container *ngIf=\"!nasFormGroup || !nasFormControlName; else reactiveForm\">\n <div [nasClass]=\"getClass('prefix')\" *ngIf=\"prefixCountryCode else selectCountryCode\">\n {{prefixCountryCode}}\n </div>\n <ng-template #selectCountryCode>\n <div [nasClass]=\"getClass('country-code')\">\n <nas-select *ngIf=\"!preferredOptions\" [options]=\"options\" [error]=\"error\" [disabled]=\"disabled\"\n [spaceless]=\"spaceless\" [cssClass]=\"cssClass\" [selectedValue]=\"selectedValue\" [(selected)]=\"selected\">\n </nas-select>\n <nas-select *ngIf=\"preferredOptions\" [error]=\"error\" [disabled]=\"disabled\" [spaceless]=\"spaceless\"\n [cssClass]=\"cssClass\" [selectedValue]=\"selectedValue\" [(selected)]=\"selected\">\n <nas-optgroup [label]=\"preferredOptionsLabel\">\n <nas-option *ngFor=\"let option of preferredOptions\" [option]=\"option\"></nas-option>\n </nas-optgroup>\n <nas-optgroup [label]=\"optionsLabel\">\n <nas-option *ngFor=\"let option of options\" [option]=\"option\"></nas-option>\n </nas-optgroup>\n </nas-select>\n </div>\n </ng-template>\n <div [nasClass]=\"getClass('number')\">\n <input [nasClass]=\"getClass('text')\" [attr.id]=\"id\" [attr.type]=\"type\" [attr.disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\" [attr.readonly]=\"readonly\" [required]=\"required\"\n [attr.aria-describedby]=\"ariaDescribedby\" [attr.aria-invalid]=\"error\" [attr.aria-required]=\"required\"\n [(ngModel)]=\"model\" />\n </div>\n </ng-container>\n <ng-template #reactiveForm>\n <div [nasClass]=\"getClass('prefix')\" *ngIf=\"prefixCountryCode else selectCountryCodeReactive\">\n {{prefixCountryCode}}\n </div>\n <ng-template #selectCountryCodeReactive>\n <div [nasClass]=\"getClass('country-code')\">\n <nas-select *ngIf=\"!preferredOptions\" [options]=\"options\" [error]=\"error\" [disabled]=\"disabled\"\n [spaceless]=\"spaceless\" [cssClass]=\"cssClass\" [nasFormControlName]=\"nasFormControlNamePrefix\"\n [nasFormGroup]=\"nasFormGroup\">\n </nas-select>\n <nas-select *ngIf=\"preferredOptions\" [error]=\"error\" [disabled]=\"disabled\" [spaceless]=\"spaceless\"\n [cssClass]=\"cssClass\" [nasFormControlName]=\"nasFormControlNamePrefix\" [nasFormGroup]=\"nasFormGroup\">\n <nas-optgroup [label]=\"preferredOptionsLabel\">\n <nas-option *ngFor=\"let option of preferredOptions\" [option]=\"option\"></nas-option>\n </nas-optgroup>\n <nas-optgroup [label]=\"optionsLabel\">\n <nas-option *ngFor=\"let option of options\" [option]=\"option\"></nas-option>\n </nas-optgroup>\n </nas-select>\n </div>\n </ng-template>\n <div [nasClass]=\"getClass('number')\" [formGroup]=\"nasFormGroup\">\n <input [nasClass]=\"getClass('text')\" [attr.id]=\"id\" [attr.type]=\"type\" [attr.disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\" [attr.readonly]=\"readonly\" [required]=\"required\"\n [attr.aria-describedby]=\"ariaDescribedby\" [attr.aria-invalid]=\"error\" [attr.aria-required]=\"required\"\n [formControlName]=\"nasFormControlName\" />\n </div>\n </ng-template>\n </div>\n <span [nasClass]=\"getClass('icon')\" *ngIf=\"exists(error)\">\n <nas-icon icon=\"alert--error\"></nas-icon>\n </span>\n\n <span [nasClass]=\"getClass('icon')\" *ngIf=\"icon && !exists(error)\">\n <nas-icon [icon]=\"icon\"></nas-icon>\n </span>\n <span [nasClass]=\"getClass('line')\"></span>\n\n <p [nasClass]=\"getClass('error')\" *ngIf=\"exists(error) && errorMessage\">{{errorMessage}}</p>\n\n <span [nasClass]=\"getClass('info')\" *ngIf=\"info\">{{info}}</span>\n\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PhoneNumberComponent } from './phone-number.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { SelectModule } from '../select/select.module';\nimport { InputModule } from '../input/input.module';\nimport { FormsModule } from '@angular/forms';\nimport { IconModule } from '../icon/icon.module';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [PhoneNumberComponent],\n imports: [\n CommonModule,\n NasClassModule,\n SelectModule,\n InputModule,\n FormsModule,\n IconModule,\n ReactiveFormsModule,\n ],\n exports: [PhoneNumberComponent]\n})\nexport class PhoneNumberModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { AutocompleteModel } from './models/autocomplete.model';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n OnInit\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { NasComponentBase } from '../../core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Airport Select Component | Form Controls\n */\n@Component({\n selector: 'nas-autocomplete',\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss']\n})\nexport class AutocompleteComponent extends NasComponentBase implements OnInit {\n filteredItems: Array<AutocompleteModel> = this.items;\n focused: AutocompleteModel;\n\n get showBackdrop(): boolean {\n return !this.exists(this.disableBackdrop) && this.open;\n }\n set showBackdrop(value: boolean) {\n if (!value) {\n this.blur();\n }\n }\n\n @ViewChild('input') input: ElementRef;\n @ViewChild('results') results: ElementRef;\n\n /**\n * @description\n * A label that will appear inside the text field.\n */\n @Input() label: string;\n\n /**\n * @description\n * A placeholder that will appear inside the text field.\n */\n @Input() placeholder = '';\n\n /**\n * @description\n * An icon that will appear inside the text field.\n */\n @Input() icon: string;\n\n /**\n * @description\n * An array of items that will appear inside the dropdown list.\n */\n @Input()\n get items(): Array<AutocompleteModel> {\n return this.itemsValue;\n }\n set items(items: Array<AutocompleteModel>) {\n if (!items || items.length <= 0) {\n return;\n }\n\n this.itemsValue = items;\n\n this.filter();\n }\n\n /**\n * @description\n * Can set and listen to wheather the dropdown list is or should be open or not.\n */\n @Input()\n get open() {\n return this.openValue;\n }\n set open(open: boolean) {\n if (this.open === open || !this.items) {\n return;\n }\n\n this.openValue = open;\n this.openChange.emit(open);\n }\n\n /**\n * @description\n * Can set and listen to changes in the model of the text field.\n */\n @Input()\n get model(): string {\n return this.modelValue;\n }\n set model(model: string) {\n if (this.modelValue === model) {\n return;\n }\n\n this.modelValue = model;\n\n if (model && this.filteredItems) {\n this.index = this.filteredItems.findIndex(x => x.title === model);\n }\n\n this.pathReactiveFormControl(model);\n\n this.modelChange.emit(model);\n }\n\n /**\n * @description\n * Disables the backdrop on focus.\n */\n @Input() disableBackdrop: boolean;\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Adds an aria-label attribute to the backdrop button.\n */\n @Input() ariaLabelBackdrop: string;\n\n /**\n * @description\n * Adds 'aria-label' on the clear button inside input.\n */\n @Input() ariaLabelClear: string;\n\n /**\n * @description\n * Is fired when the next element should be focused.\n */\n @Output() focusOnNext = new EventEmitter();\n\n /**\n * @description\n * Is fired when the user selects an item in the dropdown list.\n */\n @Output() selectedChange = new EventEmitter<AutocompleteModel>();\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() modelChange = new EventEmitter<string>();\n\n private index = -1;\n private openValue = false;\n private itemsValue: Array<AutocompleteModel>;\n private modelValue: string;\n private componentId: number;\n\n constructor(@Inject(DOCUMENT) private document: any) {\n super('nas-autocomplete');\n this.componentId = nextId++;\n }\n\n ngOnInit(): void {\n if (!this.ariaLabelClear) {\n this.warnMissingAccessibiltyInput('ariaLabelClear');\n }\n\n if (!this.ariaLabelBackdrop) {\n this.warnMissingAccessibiltyInput('ariaLabelBackdrop');\n }\n }\n\n getResultsId(): string {\n return `nas-autocomplete-results-${this.componentId}`;\n }\n\n getLabelId(): string {\n return `nas-autocomplete-label-${this.componentId}`;\n }\n\n getInputId(): string {\n return `nas-autocomplete-input-${this.componentId}`;\n }\n\n setOpen(): void {\n this.input.nativeElement.select();\n this.open = true;\n }\n\n filter(): void {\n if (!this.items) {\n return;\n }\n\n if (!this.model && (!this.nasFormGroup || !this.nasFormControlName)) {\n this.filteredItems = this.items;\n return;\n }\n\n let currentModel = this.model;\n\n if (this.nasFormGroup && this.nasFormControlName) {\n const control = this.nasFormGroup.get(this.nasFormControlName);\n\n currentModel = control.value;\n }\n\n this.filteredItems = this.items.filter(x =>\n (x.title && x.title.toLowerCase().includes(currentModel.toLowerCase())) ||\n (x.preamble && x.preamble.toLowerCase().includes(currentModel.toLowerCase())));\n\n if (currentModel === '' || this.input.nativeElement.value === '') {\n this.filteredItems = this.items;\n }\n\n this.index = 0;\n if (this.filteredItems) {\n this.focused = this.filteredItems[this.index];\n this.open = true;\n } else {\n this.open = false;\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n this.open = false;\n this.blur();\n break;\n case 'Tab':\n case 'Enter':\n if (!event.shiftKey) {\n event.preventDefault();\n this.focusOnNext.emit(event);\n }\n\n if (this.focused) {\n this.modelValue = this.focused.title;\n this.selectedChange.emit(this.focused);\n this.pathReactiveFormControl(this.modelValue);\n }\n\n this.blur();\n break;\n case 'ArrowDown':\n case 'Down':\n this.focusDown();\n break;\n case 'ArrowUp':\n case 'Up':\n this.focusUp();\n break;\n default:\n break;\n }\n }\n\n clearSelected(event: any): void {\n event.preventDefault();\n\n this.focused = null;\n this.filteredItems = this.items;\n this.model = '';\n this.open = true;\n this.index = -1;\n\n this.input.nativeElement.focus();\n\n }\n\n select(item: AutocompleteModel): void {\n this.focused = item;\n this.model = item.title;\n this.selectedChange.emit(item);\n\n if (this.filteredItems) {\n this.index = this.filteredItems.findIndex(x => x.id === item.id);\n }\n\n this.open = false;\n this.focusOnNext.emit();\n }\n\n blur(): void {\n this.open = false;\n this.openChange.emit(false);\n }\n\n private focusDown(): void {\n ++this.index;\n\n if (this.filteredItems) {\n if (!this.filteredItems[this.index]) {\n this.index = 0;\n }\n\n this.focused = this.filteredItems[this.index];\n }\n\n if (this.index === 0) {\n this.autoScroll(0);\n } else {\n this.autoScroll(131);\n }\n }\n\n private focusUp(): void {\n --this.index;\n\n if (this.index < 0) {\n this.index = 0;\n this.blur();\n return;\n }\n\n if (this.filteredItems) {\n this.focused = this.filteredItems[this.index];\n }\n\n this.autoScroll(0);\n }\n\n private pathReactiveFormControl(model: string): void {\n if (this.nasFormGroup && this.nasFormControlName) {\n const formControl = this.nasFormGroup.get(this.nasFormControlName);\n formControl.patchValue(model);\n }\n }\n\n private autoScroll(extraOffset: number): void {\n if (!this.results) {\n return;\n }\n const results = this.results.nativeElement;\n const focusedItem = this.document.querySelector('.nas-autocomplete__list-item--focus');\n\n if (focusedItem) {\n results.scrollTo(0, 0);\n results.scrollTo(0, focusedItem.offsetTop + extraOffset - results.clientHeight);\n }\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [id]=\"getLabelId()\"\n [attr.aria-label]=\"label\"\n [nasClass]=\"getClass('wrapper')\">\n <span [nasClass]=\"getClass('label')\">{{label}}</span>\n <input #input\n type=\"text\"\n role=\"combobox\"\n aria-haspopup=\"true\"\n aria-autocomplete=\"none\"\n autocomplete=\"off\"\n [id]=\"getInputId()\"\n [attr.aria-controls]=\"getResultsId()\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\"\n [attr.aria-owns]=\"getResultsId()\"\n [nasClass]=\"getClass('input')\"\n [(ngModel)]=\"model\"\n [placeholder]=\"placeholder\"\n (focus)=\"setOpen()\"\n (input)=\"filter()\"\n (click)=\"setOpen()\"\n (keydown)=\"onKeyDown($event)\" />\n <span [nasClass]=\"getClass('icon')\">\n <button type=\"button\"\n role=\"button\"\n tabindex=\"-1\"\n *ngIf=\"model; else isEmpty\"\n [attr.aria-label]=\"ariaLabelClear\"\n (click)=\"clearSelected($event)\">\n <nas-icon [type]=\"'remove'\"></nas-icon>\n </button>\n <ng-template #isEmpty>\n <nas-icon [type]=\"'small'\"\n [icon]=\"icon\"></nas-icon>\n </ng-template>\n </span>\n <span [nasClass]=\"getClass('input-line')\"></span>\n </label>\n</ng-container>\n<ng-template #reactiveForm>\n <label [id]=\"getLabelId()\"\n [attr.aria-label]=\"label\"\n [nasClass]=\"getClass('wrapper')\"\n [formGroup]=\"nasFormGroup\">\n <span [nasClass]=\"getClass('label')\">{{label}}</span>\n <input #input\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"none\"\n autocomplete=\"off\"\n [id]=\"getInputId()\"\n [attr.aria-controls]=\"getResultsId()\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\"\n [attr.aria-owns]=\"getResultsId()\"\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('input')\"\n [placeholder]=\"placeholder\"\n (focus)=\"setOpen()\"\n (input)=\"filter()\"\n (click)=\"setOpen()\"\n (keydown)=\"onKeyDown($event)\" />\n <span [nasClass]=\"getClass('icon')\">\n <button type=\"button\"\n role=\"button\"\n tabindex=\"-1\"\n *ngIf=\"model; else isEmpty\"\n [attr.aria-label]=\"ariaLabelClear\"\n (click)=\"clearSelected($event)\">\n <nas-icon [type]=\"'remove'\"></nas-icon>\n </button>\n <ng-template #isEmpty>\n <nas-icon [type]=\"'small'\"\n [icon]=\"icon\"></nas-icon>\n </ng-template>\n </span>\n <span [nasClass]=\"getClass('input-line')\"></span>\n </label>\n</ng-template>\n<div [id]=\"getResultsId()\"\n [nasClass]=\"getClass('results-wrapper')\"\n [attr.aria-expanded]=\"open ? 'true' : 'false'\">\n <ul #results\n role=\"listbox\"\n *ngIf=\"open\"\n [attr.aria-labelledby]=\"getLabelId()\"\n [nasClass]=\"getClass('results')\">\n <li role=\"option\"\n *ngFor=\"let item of filteredItems\"\n [id]=\"item.id\"\n [nasClass]=\"getClass('list-item', item.id === focused?.id && 'focus')\">\n <button type=\"button\"\n [nasClass]=\"getClass('item', item.id === focused?.id && 'focus')\"\n (click)=\"select(item)\"\n tabindex=\"-1\">\n <span [nasClass]=\"getClass('title')\">{{item.title}}</span>\n <span [nasClass]=\"getClass('preamble')\">{{item.preamble}}</span>\n </button>\n </li>\n </ul>\n</div>\n\n<nas-backdrop *ngIf=\"!exists(disableBackdrop)\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { AutocompleteComponent } from './autocomplete.component';\nimport { IconModule } from '../icon/icon.module';\nimport { SpinnerModule } from '../spinner/spinner.module';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { BackdropModule } from '../backdrop/backdrop.module';\n\n@NgModule({\n declarations: [AutocompleteComponent],\n imports: [\n CommonModule,\n NasClassModule,\n FormsModule,\n IconModule,\n SpinnerModule,\n BackdropModule,\n ReactiveFormsModule\n ],\n exports: [AutocompleteComponent]\n})\nexport class AutocompleteModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NasComponentBase, ClassModel } from '../../core';\nimport { UntypedFormGroup } from '@angular/forms';\n\n/**\n * @description\n * Norwegian Textarea Component | Form Controls\n */\n@Component({\n selector: 'nas-textarea',\n templateUrl: './textarea.component.html',\n styleUrls: ['./textarea.component.scss']\n})\nexport class TextareaComponent extends NasComponentBase {\n\n /**\n * @description\n * Sets the label of the input\n */\n @Input() label: string;\n\n /**\n * @description\n * Should input field be resizeable in the vertical space, defaults to false\n */\n @Input() resizable: boolean;\n\n /**\n * @description\n * Overrides default height of textarea, in pixels\n */\n @Input() height: number;\n\n /**\n * @description\n * If resizable, sets the max-height of vertical resizing\n */\n @Input() maxHeight: number;\n\n /**\n * @description\n * Sets aria describedby for accessibility\n */\n @Input('aria-describedby') ariaDescribedby: string;\n\n /**\n * @description\n * Whether the native input element is disabled or not, with disabled styling.\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Whether the control is in an error state.\n */\n @Input() error: boolean;\n\n /**\n * @description\n * The error message to display when error occur. Error attribute need to be true.\n */\n @Input() errorMessage: string;\n\n /**\n * @description\n * The ID of the native input element\n */\n @Input() id: string;\n\n /**\n * @description\n * Sets the info text related to the input\n */\n @Input() info: string;\n\n /**\n * @description\n * Set loading styling of input\n */\n @Input() loading: boolean;\n\n /**\n * @description\n * Sets max length on the native input element.\n */\n @Input() maxLength: number;\n\n /**\n * @description\n * The value of the native input element\n */\n private modelValue: string;\n @Input() get model() {\n return this.modelValue;\n }\n set model(value: string) {\n this.modelValue = value;\n this.modelChange.emit(this.modelValue);\n }\n\n @Output() modelChange = new EventEmitter<string>(false);\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n * @example\n * ```html\n * <nas-textarea [nasFormControlName]=\"'username'\"></nas-textarea>\n * ```\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n * @example\n * ```html\n * <nas-textarea [nasFormGroup]=\"loginGroup\"></nas-textarea>\n * ```\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Whether the element is readonly.\n */\n @Input() readonly: boolean;\n\n /**\n * @description\n * Sets the required attribute on the native input element.\n */\n @Input() required: boolean;\n\n /**\n * @description\n * Set spaceless styling (removing spacing)\n */\n @Input() spaceless: boolean;\n\n constructor() {\n super('nas-textarea');\n }\n\n mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.error) && 'error',\n this.exists(this.disabled) && 'disabled',\n this.exists(this.loading) && 'loading',\n this.exists(this.spaceless) && 'spaceless',\n this.exists(this.resizable) && 'resizeable',\n ]);\n }\n\n textareaStyle(): Map<string, any> {\n const { height, maxHeight } = this;\n const style: Map<string, any> = new Map();\n\n if (height != null) {\n style.set('height.px', height);\n }\n\n if (maxHeight != null) {\n style.set('max-height.px', maxHeight);\n }\n\n return style;\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [nasClass]=\"mainClass()\">\n <p [nasClass]=\"getClass('label')\"\n *ngIf=\"label\">{{label}}</p>\n <textarea [nasClass]=\"getClass('text')\"\n [ngStyle]=\"textareaStyle()\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"error\"\n [attr.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.maxlength]=\"maxLength\"\n [attr.readonly]=\"readonly\"\n [required]=\"required\"\n [(ngModel)]=\"model\"\n >\n </textarea>\n <span [nasClass]=\"getClass('line')\"></span>\n <p [nasClass]=\"getClass('error')\"\n *ngIf=\"exists(error) && errorMessage\">{{errorMessage}}</p>\n <span [nasClass]=\"getClass('info')\"\n *ngIf=\"info\">{{info}}</span>\n </label>\n</ng-container>\n<ng-template #reactiveForm>\n <label [nasClass]=\"mainClass()\" [formGroup]=\"nasFormGroup\">\n <p [nasClass]=\"getClass('label')\"\n *ngIf=\"label\">{{label}}</p>\n <textarea [nasClass]=\"getClass('text')\"\n [ngStyle]=\"textareaStyle()\"\n [formControlName]=\"nasFormControlName\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-invalid]=\"error\"\n [attr.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [attr.maxlength]=\"maxLength\"\n [attr.readonly]=\"readonly\"\n [required]=\"required\"\n >\n </textarea>\n <span [nasClass]=\"getClass('line')\"></span>\n <p [nasClass]=\"getClass('error')\"\n *ngIf=\"exists(error) && errorMessage\">{{errorMessage}}</p>\n <span [nasClass]=\"getClass('info')\"\n *ngIf=\"info\">{{info}}</span>\n </label>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TextareaComponent } from './textarea.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [TextareaComponent],\n imports: [\n CommonModule,\n NasClassModule,\n FormsModule,\n ReactiveFormsModule\n ],\n exports: [TextareaComponent]\n})\nexport class TextareaModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { DatePipe } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { JourneySelectionModel } from './models/journey-selection.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { UtcDate } from '../../core/models/utc-date.model';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * @description\n * Norwegian Journey Selection Component | Functional\n */\n@Component({\n selector: 'nas-journey-selection',\n templateUrl: './journey-selection.component.html',\n styleUrls: ['./journey-selection.component.scss']\n})\nexport class JourneySelectionComponent extends NasComponentBase implements OnChanges {\n\n animateDown: boolean;\n isCollapsed: boolean;\n @ViewChild('imageMain') imageMain: ElementRef;\n @ViewChild('destinationCode') destinationCode: ElementRef;\n\n /**\n * @description\n * Input data required to build the component.\n */\n @Input() model: JourneySelectionModel;\n\n @Output() collapseChange = new EventEmitter<boolean>();\n\n\n /**\n * @description\n * A boolean that changes how journey selection component looks/behaves based on journey selected/not-selected.\n */\n @Input()\n get collapse(): boolean {\n return this.isCollapsed;\n }\n set collapse(value: boolean) {\n if (value || typeof (this.animateDown) !== 'undefined') {\n this.animateDown = !value;\n }\n this.isCollapsed = value;\n this.collapseChange.emit(value);\n }\n\n /**\n * @description\n * If exists, it removes the marin accross.\n */\n @Input() compact: boolean;\n\n /**\n * @description\n * Aria label for the component.\n * For example, it is needed to distinguish Outbound journey selection from inbound journey selection\n * when this component is used twice in the page.\n */\n @Input() ariaLabel: string;\n\n /**\n * @description\n * User can input the timezone to localize the date.\n * Default is set to UTC and it will by default show the date exactly what is passed to it.\n * @example\n * ```html\n * <nas-journey-availability [timeZone]=\"'UTC'\"></nas-journey-availability>\n */\n @Input() timeZone = 'UTC';\n\n /**\n * @description\n * this event emits when button is clicked or date changes by nevigation icons.\n */\n @Output() selectedDateChanged = new EventEmitter<UtcDate>();\n\n\n constructor(\n private dateService: DateHelper,\n private datePipe: DatePipe,\n public deviceService: DeviceHelper,\n private sanitizer: DomSanitizer) {\n super('nas-journey-selection');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.model) {\n setTimeout(() => {\n this.setupBackground(this.imageMain, this.model.backgroundImageUrl);\n this.setupBackground(this.destinationCode, this.model.thumbnailUrl);\n });\n }\n }\n\n changeFlightDate(): void {\n this.collapse = false;\n }\n\n setupBackground(element: ElementRef, url: string): void {\n if (!element) {\n return;\n }\n if (url) {\n element.nativeElement.style.backgroundImage = `url(${url})`;\n }\n }\n\n transformDisplayDate(format: string): string {\n if (this.model) {\n return this.datePipe.transform(this.dateService.date(this.model.date),\n format, this.timeZone, this.model.locale);\n }\n }\n\n getDestinationCode(): SafeHtml {\n if (this.model && this.model.expanded) {\n if (this.model.expanded.destination && this.model.expanded.destination.length > 3) {\n return this.sanitizer.bypassSecurityTrustHtml(this.model.expanded.destination.substr(0, 3)\n + '<br />' + this.model.expanded.destination.substr(3));\n }\n return this.sanitizer.bypassSecurityTrustHtml(this.model.expanded.destination);\n }\n }\n\n}\n","<div [nasClass]=\"getClass()\">\n <div *ngIf=\"collapse; else expandedSelection\"\n [nasClass]=\"getClass('collapsed', [animateDown === false && 'animate-up', exists(compact) && 'compact'])\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\n\n <div [nasClass]=\"getClass('destination')\">\n <div [nasClass]=\"getClass('destination-image')\" #imageMain>\n <label [nasClass]=\"getClass('destination-image-content')\">\n <ng-container *ngIf=\"!deviceService?.isMobileWidth();\">\n <ng-container *ngTemplateOutlet=\"flightInfo\"></ng-container>\n </ng-container>\n\n <div [nasClass]=\"getClass('destination-image-sm')\" *ngIf=\"deviceService?.isMobileWidth()\">\n <span [nasClass]=\"getClass('mobile-icon')\">\n <nas-icon [icon]=\"model?.icon\" [type]=\"'small'\" [lightCircularBackground]=\"true\"></nas-icon>\n </span>\n <div [nasClass]=\"getClass('airport')\">\n <span>{{model?.collapsed?.origin}}&nbsp; - &nbsp;</span>\n <span [nasClass]=\"getClass('stopover')\" *ngIf=\"model?.collapsed?.stopverAirportCodes\">\n <ng-container *ngFor=\"let stop of model?.collapsed?.stopverAirportCodes\">\n {{stop}}&nbsp;-&nbsp;\n </ng-container>\n </span>\n <span>{{model?.collapsed?.destination}}</span>\n </div>\n </div>\n </label>\n </div>\n </div>\n\n <section [nasClass]=\"getClass('flights')\">\n <div [nasClass]=\"getClass('flights-information')\">\n <div [nasClass]=\"getClass('airport')\">\n <span>{{model?.collapsed?.origin}}&nbsp; - &nbsp;</span>\n\n <span [nasClass]=\"getClass('stopover')\" *ngIf=\"model?.collapsed?.stopverAirportCodes\">\n <ng-container *ngFor=\"let stop of model?.collapsed?.stopverAirportCodes\">\n {{stop}}&nbsp;-&nbsp;\n </ng-container>\n </span>\n\n\n <span>{{model?.collapsed?.destination}}</span>\n </div>\n <div *ngIf=\"model?.collapsed?.operatingCarriers\" [nasClass]=\"getClass('operators')\">\n <label [nasClass]=\"getClass('operators', 'label')\">\n {{model?.collapsed?.operatingCarriers?.label}}&nbsp;\n </label>\n <span [nasClass]=\"getClass('operators', 'text')\">\n {{model?.collapsed?.operatingCarriers?.operators[0]}}\n </span>\n <output *ngIf=\"model?.collapsed?.operatingCarriers?.operators?.length > 1\"\n [nasClass]=\"getClass('operators', 'count')\">\n &nbsp; +{{model?.collapsed?.operatingCarriers?.operators?.length - 1}}\n </output>\n </div>\n </div>\n\n <div [nasClass]=\"getClass('change-flight')\">\n\n <label [nasClass]=\"getClass('change-flight-content')\" *ngIf=\"deviceService?.isMobileWidth()\">\n <ng-container *ngTemplateOutlet=\"flightInfo\"></ng-container>\n </label>\n\n <ng-template #flightInfo>\n <summary [nasClass]=\"getClass('destination-image-caption')\">\n <header [nasClass]=\"getClass('sub-title')\">\n {{model?.collapsed?.title}}\n </header>\n </summary>\n\n <section [nasClass]=\"getClass('journey')\">\n <legend [nasClass]=\"getClass('journey-information')\">\n\n <label>\n {{model?.collapsed?.departureLabel}}:&nbsp;\n </label>\n <time>{{transformDisplayDate(model?.dateFormat)}}</time>\n </legend>\n <div>\n <legend [nasClass]=\"getClass('journey-information')\">\n <label>{{model?.fromLabel}}:&nbsp;</label>\n <span>{{model?.collapsed?.originDisplayName}}&nbsp;({{model?.collapsed?.origin}})</span>\n </legend>\n <legend [nasClass]=\"getClass('journey-information')\">\n <label>{{model?.collapsed?.durationLabel}}:&nbsp;</label>\n <time>{{model?.collapsed?.durationTimeInfo}},&nbsp;{{model?.collapsed?.transitionInfo}} </time>\n </legend>\n </div>\n </section>\n </ng-template>\n <nas-button compact secondary (click)=\"changeFlightDate()\">{{model?.collapsed?.changeFlightLabel}}</nas-button>\n </div>\n </section>\n </div>\n\n <ng-template #expandedSelection>\n <div [nasClass]=\"getClass('expanded', [animateDown && 'animate-down', exists(compact) && 'compact'])\" role=\"region\" [attr.aria-label]=\"ariaLabel\">\n <figure [nasClass]=\"getClass('destination-code')\" #destinationCode>\n <figcaption [nasClass]=\"getClass('destination-code-value', model?.expanded?.destination?.length > 3 && 'wrap-text')\" [innerHTML]=\"getDestinationCode()\">\n </figcaption>\n </figure>\n <div [nasClass]=\"getClass('selection')\">\n <label [nasClass]=\"getClass('heading')\">\n\n <ng-container *ngIf=\"deviceService.isMobileWidth(); else desktopIcon\">\n <ng-container *ngTemplateOutlet=\"desktopIcon\"></ng-container>\n </ng-container>\n\n <header [nasClass]=\"getClass('heading-text')\">\n {{model?.expanded?.title}}\n </header>\n <span [nasClass]=\"getClass('heading-join')\">&nbsp;-&nbsp;</span>\n <time [nasClass]=\"getClass('heading-time')\">\n {{transformDisplayDate(model?.expanded?.dateFormat)}}\n </time>\n\n <ng-template #desktopIcon>\n <span [nasClass]=\"getClass('heading-icon')\">\n <nas-icon [icon]=\"model?.icon\" [type]=\"'small'\"></nas-icon>\n </span>\n </ng-template>\n\n </label>\n <summary [nasClass]=\"getClass('details')\">\n <div>\n <label [nasClass]=\"getClass('details-label')\">{{model?.fromLabel}}:</label>\n <span [nasClass]=\"getClass('details-value')\">{{model?.expanded?.originDisplayName}} ({{model?.expanded?.origin}})</span>\n <span> | </span>\n <label [nasClass]=\"getClass('details-label')\">{{model?.expanded?.toLabel}}:</label>\n <span [nasClass]=\"getClass('details-value')\">{{model?.expanded?.destinationDisplayName}} ({{model?.expanded?.destination}})</span>\n </div>\n </summary>\n </div>\n </div>\n </ng-template>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { JourneySelectionComponent } from './journey-selection.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { DateHelper } from '../../core/services/date/date-helper.service';\nimport { DeviceHelper } from '../../core/services/device/device-helper.service';\nimport { ButtonModule } from '../button/button.module';\nimport { IconModule } from '../icon/icon.module';\n\n@NgModule({\n declarations: [JourneySelectionComponent],\n imports: [\n CommonModule,\n NasClassModule,\n ButtonModule,\n IconModule\n ],\n exports: [JourneySelectionComponent],\n providers: [DateHelper, DeviceHelper]\n})\nexport class JourneySelectionModule { }\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\nimport { ClassModel } from '../../core/models/class.model';\nimport { UntypedFormGroup } from '@angular/forms';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Slide Toogle Component | Buttons and Indicators\n*/\n@Component({\n selector: 'nas-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SlideToggleComponent extends NasComponentBase implements OnInit {\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * Boolean to disable the slide toggle.\n */\n @Input() disabled: boolean;\n\n /**\n * @description\n * Sets the Id of the native input element.\n */\n @Input()\n get inputId() {\n return this.inputIdValue ? this.inputIdValue : `nas-slide-toggle-input-${this.componentId}`;\n }\n set inputId(value: string) {\n this.inputIdValue = value;\n }\n\n /**\n * @description\n * Set the toggle value.\n */\n @Input()\n get toggle() {\n return this.toggleValue;\n }\n set toggle(value: boolean) {\n if (value !== this.toggleValue) {\n this.toggleValue = value;\n this.toggleChange.emit(this.toggle);\n }\n }\n\n /**\n * @description\n * Toggle change events.\n */\n @Output() toggleChange = new EventEmitter<boolean>();\n\n /**\n * @description\n * Emits when the focus should be on the previous element.\n */\n @Output() focusOnPrevious = new EventEmitter<KeyboardEvent>();\n\n get mainClass(): ClassModel {\n return this.getClass('', [\n this.exists(this.disabled) && 'disabled'\n ]);\n }\n\n private toggleValue: boolean;\n private componentId: number;\n private inputIdValue: string;\n\n constructor() {\n super('nas-slide-toggle');\n this.componentId = nextId++;\n }\n\n ngOnInit() {\n if (this.nasFormGroup && this.nasFormControlName) {\n const toggleControl = this.nasFormGroup.get(this.nasFormControlName);\n\n if (!toggleControl) {\n return;\n }\n\n if (this.exists(this.disabled)) {\n toggleControl.disable();\n }\n\n this.toggle = toggleControl.value;\n\n toggleControl.valueChanges.subscribe((value: boolean) => {\n if (!this.exists(this.disabled)) {\n this.toggle = value;\n }\n });\n }\n }\n\n inputChanged(event: Event): void {\n event.stopPropagation();\n }\n\n inputClicked(event: Event): void {\n event.stopPropagation();\n\n if (this.exists(this.disabled)) {\n return;\n }\n\n this.toggle = !this.toggle;\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Tab':\n if (event.shiftKey) {\n this.focusOnPrevious.emit(event);\n }\n }\n }\n}\n","<ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label [nasClass]=\"mainClass\">\n <div [nasClass]=\"getClass('thumb-container', exists(toggle) && 'toggled')\">\n <input type=\"checkbox\"\n role=\"switch\"\n [id]=\"inputId\"\n [checked]=\"exists(toggle)\"\n [attr.aria-checked]=\"exists(toggle)\"\n [disabled]=\"exists(disabled)\"\n (change)=\"inputChanged($event)\"\n (click)=\"inputClicked($event)\">\n <div [nasClass]=\"getClass('thumb')\"></div>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-container>\n\n<ng-template #reactiveForm>\n <label [nasClass]=\"mainClass\" [formGroup]=\"nasFormGroup\">\n <div [nasClass]=\"getClass('thumb-container', exists(toggle) && 'toggled')\">\n <input type=\"checkbox\"\n role=\"switch\"\n [formControlName]=\"nasFormControlName\"\n [id]=\"inputId\"\n [checked]=\"exists(toggle)\"\n [attr.aria-checked]=\"exists(toggle)\"\n (keydown)=\"onKeydown($event)\">\n <div [nasClass]=\"getClass('thumb')\"></div>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n</ng-template>\n\n<ng-template #content>\n <span [nasClass]=\"getClass('content')\">\n <ng-content></ng-content>\n </span>\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SlideToggleComponent } from './slide-toggle.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [SlideToggleComponent],\n imports: [\n CommonModule,\n NasClassModule,\n ReactiveFormsModule,\n FormsModule\n ],\n exports: [SlideToggleComponent]\n})\nexport class SlideToggleModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { AfterViewChecked, AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n\nlet nextId = 0;\n\n/**\n * @description\n * Norwegian Slider Component | Form Controls\n*/\n@Component({\n selector: 'nas-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss']\n})\nexport class SliderComponent extends NasComponentBase implements OnInit, AfterViewInit, AfterViewChecked {\n @ViewChild('slider') slider?: ElementRef<HTMLInputElement>;\n @ViewChild('rangeMin') rangeMin?: ElementRef<HTMLInputElement>;\n @ViewChild('rangeMax') rangeMax?: ElementRef<HTMLInputElement>;\n @ViewChild('bubble') bubble?: ElementRef<HTMLInputElement>;\n\n /**\n * @description\n * The ID of the slider\n */\n @Input() id: string;\n\n /**\n * @description\n * The ID of the slider\n */\n @Input() range?: boolean;\n\n /**\n * @description\n * Name attribute of the slider\n */\n @Input() name: string;\n\n /**\n * @description\n * Sets the title of the slider\n */\n @Input() title?: string;\n\n /**\n * @description\n * The value of the slider\n */\n @Input()\n get value(): number {\n return this.valueValue;\n }\n set value(value: number) {\n if (value === this.valueValue) {\n return;\n }\n\n this.valueValue = value;\n this.cdr.detectChanges();\n this.valueChange.emit(value);\n }\n\n /**\n * @description\n * The selected minimum value of the range-slider\n */\n @Input()\n get selectedMinValue(): number | null {\n return this.rangeMinValue;\n }\n set selectedMinValue(value: number | null) {\n if (value === this.rangeMinValue) {\n return;\n }\n this.rangeMinValue = value;\n this.cdr.detectChanges();\n this.selectedMinValueChange.emit(value);\n }\n\n /**\n * @description\n * The selected maximum value of the range-slider\n */\n @Input()\n get selectedMaxValue(): number {\n return this.rangeMaxValue;\n }\n set selectedMaxValue(value: number) {\n if (value === this.rangeMaxValue) {\n return;\n }\n this.rangeMaxValue = value;\n this.cdr.detectChanges();\n this.selectedMaxValueChange.emit(value);\n }\n\n /**\n * @description\n * The minimum difference of min and max range-slider.\n */\n @Input()\n get minDiffRange(): number {\n return this.minDifferenceRange;\n }\n\n set minDiffRange(value: number) {\n if (!value || value === this.minDifferenceRange) {\n return;\n }\n\n this.minDifferenceRange = Number(value);\n }\n\n /**\n * @description\n * The suffix/ending of the value that the slider can have.\n */\n @Input()\n get suffix(): string {\n if (this.suffixLabelValue) {\n return this.suffixLabelValue;\n } else {\n return this.suffixLabelValue = '';\n }\n }\n\n set suffix(value: string) {\n this.suffixLabelValue = value;\n }\n\n /**\n * @description\n * Overwrites the suffix and adds at the beginning of the value that the slider can have.\n */\n @Input() isPrefix?: boolean;\n\n /**\n * @description\n * The minimum value that the slider can have. The default value is 0.\n */\n @Input()\n get min(): number {\n return this.minValue;\n }\n set min(value: number) {\n if (!value || value === this.minValue) {\n return;\n }\n\n this.minValue = value;\n }\n\n /**\n * @description\n * A custom label for the minimum value. The actual value is still specified by min input.\n */\n @Input()\n get minLabel(): string | number {\n if (this.minLabelValue) {\n return this.minLabelValue;\n } else {\n return this.min;\n }\n }\n set minLabel(value: string | number) {\n this.minLabelValue = value;\n }\n\n /**\n * @description\n * The maximum value that the slider can have. The default value is 100.\n */\n @Input()\n get max(): number {\n return this.maxValue;\n }\n set max(value: number) {\n if (!value || value === this.maxValue) {\n return;\n }\n\n this.maxValue = value;\n }\n\n /**\n * @description\n * A custom label for the maximum value. The actual value is still specified by max input.\n */\n @Input()\n get maxLabel(): string | number {\n if (this.maxLabelValue) {\n return this.maxLabelValue;\n } else {\n return this.max;\n }\n }\n set maxLabel(value: string | number) {\n this.maxLabelValue = value;\n }\n\n /**\n * @description\n * The values at which the thumb will snap\n */\n @Input()\n get step(): number | null {\n return this.stepValue;\n }\n set step(value: number | null) {\n if (value === this.stepValue) {\n return;\n }\n\n this.stepValue = Number(value);\n }\n\n /**\n * @description\n * Whether the component is disabled\n */\n @Input()\n get disabled(): boolean {\n return this.disabledValue;\n }\n set disabled(value: boolean) {\n if (value === this.disabledValue) {\n return;\n }\n\n if (this.slider?.nativeElement && !this.nasFormControlName) {\n this.slider.nativeElement.disabled = value;\n }\n\n this.disabledValue = value;\n }\n\n /**\n * @description\n * Sets a formControlName directive to the input.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlName: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input of range-slider minimum value.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlMin: string;\n\n /**\n * @description\n * Sets a formControlName directive to the input of range-slider maximum value.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It requiers that the nasFormGroup input is filled.\n */\n @Input() nasFormControlMax: string;\n\n /**\n * @description\n * Adds the parent's form group.\n * It requires that the consumer included ReactiveFormsModule in it's module.\n * It is requiered to be filled if nasFormControlName added.\n */\n @Input() nasFormGroup: UntypedFormGroup;\n\n /**\n * @description\n * An event that is fired every time the silder value changes\n */\n @Output() valueChange = new EventEmitter<number | null>();\n\n /**\n * @description\n * An event that is fired every time the silder minimum value changes\n */\n @Output() selectedMinValueChange = new EventEmitter<number | null>();\n\n /**\n * @description\n * An event that is fired every time the silder maximum value changes\n */\n @Output() selectedMaxValueChange = new EventEmitter<number | null>();\n\n isRange: boolean;\n showBubble: boolean;\n bubbleValue: string | number;\n isIEOrEdge = /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\n showBubbleSuffix: boolean;\n\n get sliderId(): string {\n return this.id ? this.id : `nas-slider-${this.componentId}`;\n }\n\n get isBubbleActive(): boolean {\n return this.isBubbleActiveValue;\n }\n set isBubbleActive(value: boolean) {\n if (!value) {\n let timeout: any = null;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n this.isBubbleActiveValue = false;\n }, 250);\n } else {\n setTimeout(() => {\n this.isBubbleActiveValue = true;\n }, 100);\n }\n }\n\n get middleLabel(): string {\n const sum = this.min + this.max;\n const middleSum = sum / 2;\n if (sum % 2 === 1) {\n return null;\n }\n return middleSum.toString();\n }\n\n get showMinLabelSuffix(): boolean {\n return typeof (this.minLabel) === 'number';\n }\n\n get showMaxLabelSuffix(): boolean {\n return typeof (this.maxLabel) === 'number';\n }\n\n private isBubbleActiveValue = false;\n private valueValue: number | null;\n private minValue = 0;\n private maxValue = 100;\n private rangeMaxValue: number | null;\n private rangeMinValue: number | null;\n private minDifferenceRange = 2;\n private stepValue: number | null;\n private disabledValue: boolean;\n private componentId: number;\n private isViewInit = false;\n private minLabelValue: string | number;\n private maxLabelValue: string | number;\n private suffixLabelValue: string;\n private maxSelected: number;\n private minSelected: number;\n\n constructor(private cdr: ChangeDetectorRef) {\n super('nas-slider');\n this.componentId = nextId++;\n }\n\n ngOnInit(): void {\n if (this.nasFormGroup && this.nasFormControlName) {\n const sliderControl = this.nasFormGroup.get(this.nasFormControlName);\n\n if (!sliderControl) {\n return;\n }\n\n if (this.exists(this.disabled)) {\n sliderControl.disable();\n return;\n } else {\n sliderControl.enable();\n }\n\n this.value = sliderControl.value;\n\n sliderControl.valueChanges.subscribe((value: number | null) => {\n if (!this.exists(this.disabled)) {\n this.value = value;\n }\n this.activateBubble(value, 'slider');\n });\n }\n\n if (this.nasFormGroup && this.nasFormControlMin && this.nasFormControlMax) {\n const sliderMinControl = this.nasFormGroup.get(this.nasFormControlMin);\n const sliderMaxControl = this.nasFormGroup.get(this.nasFormControlMax);\n\n if (!sliderMinControl || !sliderMaxControl) {\n return;\n }\n\n if (this.exists(this.disabled)) {\n sliderMinControl.disable();\n sliderMaxControl.disable();\n return;\n } else {\n sliderMinControl.enable();\n sliderMaxControl.enable();\n }\n\n this.selectedMinValue = sliderMinControl.value;\n this.selectedMaxValue = sliderMaxControl.value;\n\n sliderMinControl.valueChanges.subscribe((value: number | null) => {\n if (!this.exists(this.disabled) && value > this.selectedMaxValue - this.minDiffRange) {\n sliderMinControl.setValue(this.selectedMinValue);\n return;\n }\n this.bubbleValue = this.setBubbleValue(value);\n this.activateBubble(value, 'range-slider-min');\n });\n\n sliderMaxControl.valueChanges.subscribe((value: number | null) => {\n if (!this.exists(this.disabled) && value < this.selectedMinValue + this.minDiffRange) {\n sliderMaxControl.setValue(this.selectedMaxValue);\n return;\n }\n this.bubbleValue = this.setBubbleValue(value);\n this.activateBubble(value, 'range-slider-max');\n });\n }\n this.isRange = this.exists(this.range) ? true : false;\n this.showBubble = false;\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.isViewInit = true;\n }, 100);\n\n if (!this.slider?.nativeElement) {\n return;\n }\n\n let detectChanges = false;\n\n if (!this.value) {\n this.value = Number(this.slider.nativeElement.min);\n detectChanges = true;\n }\n\n if (!this.selectedMinValue) {\n this.selectedMinValue = Number(this.slider.nativeElement.min);\n detectChanges = true;\n }\n\n if (!this.selectedMaxValue) {\n this.selectedMaxValue = Number(this.slider.nativeElement.max);\n detectChanges = true;\n }\n\n if (!this.min) {\n this.min = Number(this.slider.nativeElement.min);\n detectChanges = true;\n }\n\n if (!this.max) {\n this.max = Number(this.slider.nativeElement.max);\n detectChanges = true;\n }\n\n if (detectChanges) {\n this.cdr.detectChanges();\n }\n\n if (this.isRange && !this.nasFormControlMin && !this.nasFormControlMax && !this.nasFormGroup) {\n this.rangeMin.nativeElement.value = this.selectedMinValue.toString();\n this.rangeMax.nativeElement.value = this.selectedMaxValue.toString();\n }\n }\n\n ngAfterViewChecked(): void {\n this.setBubbleStyle();\n }\n\n onSliderInput(event: any, type: string): void {\n if (!event?.target) {\n return;\n }\n this.showBubble = true;\n const eventValue = Number(event.target.value);\n\n switch (type) {\n case 'slider':\n this.value = eventValue;\n break;\n case 'range-slider-min':\n this.selectedMinValue = this.minSelected ? this.minSelected : eventValue;\n break;\n case 'range-slider-max':\n this.selectedMaxValue = this.maxSelected ? this.maxSelected : eventValue;\n break;\n default:\n return;\n }\n }\n\n onSliderChange(event: any, type?: string): void {\n this.onSliderInput(event, type);\n this.isBubbleActive = false;\n }\n\n private setBubbleStyle(value?: number, type?: string) {\n if (!this.bubble) {\n return;\n }\n\n const inputWidth = this.slider?.nativeElement?.offsetWidth;\n const minValue = Number(this.min);\n const maxValue = Number(this.max);\n let valueType;\n\n switch (type) {\n case 'slider':\n this.bubbleValue = this.setBubbleValue(value);\n valueType = value;\n break;\n case 'range-slider-min':\n case 'range-slider-max':\n valueType = value;\n break;\n default:\n return;\n }\n\n const ratio = (valueType - minValue) / (maxValue - minValue);\n const thumbWidth = 36;\n const thumbHalfWidth = thumbWidth / 2;\n const left = (((ratio) * ((inputWidth - thumbHalfWidth) - thumbHalfWidth)) + thumbHalfWidth) - 45;\n\n this.bubble.nativeElement.style.left = `${left}px`;\n }\n\n public onDisplayBubble(event?: any, type?: string) {\n if (!event?.target) {\n return;\n }\n\n if (this.isViewInit) {\n this.validateRangerSlider(Number(event.target.value), type);\n this.activateBubble(Number(event.target.value), type);\n }\n }\n\n private validateRangerSlider(value: number, type: string) {\n let eventValue = value;\n const mathMin = Math.min(value, this.selectedMaxValue - this.minDiffRange);\n const mathMax = Math.max(value, this.selectedMinValue + this.minDiffRange);\n\n switch (type) {\n case 'range-slider-min':\n this.bubbleValue = this.setBubbleValue(mathMin);\n eventValue = mathMin;\n this.minSelected = eventValue;\n if (eventValue >= (this.selectedMaxValue - this.minDiffRange)) {\n this.rangeMin.nativeElement.value = mathMin.toString();\n return;\n }\n break;\n case 'range-slider-max':\n this.bubbleValue = this.setBubbleValue(mathMax);\n eventValue = mathMax;\n this.maxSelected = eventValue;\n if (eventValue <= (this.selectedMinValue + this.minDiffRange)) {\n this.rangeMax.nativeElement.value = mathMax.toString();\n return;\n }\n break;\n default:\n return;\n }\n }\n\n private activateBubble(value: number, type: string) {\n this.showBubble = true;\n this.isBubbleActive = true;\n this.setBubbleStyle(value, type);\n this.isBubbleActive = false;\n }\n\n private setBubbleValue(value: number): string | number {\n if (value === this.min && typeof (this.minLabel) === 'string') {\n this.showBubbleSuffix = false;\n return this.minLabel;\n } else if (value === this.max && typeof (this.maxLabel) === 'string') {\n this.showBubbleSuffix = false;\n return this.maxLabel;\n }\n this.showBubbleSuffix = true;\n return value;\n }\n\n\n}\n","<div [nasClass]=\"getClass('wrapper')\" *ngIf=\"!isRange\">\n <div #bubble [nasClass]=\"getClass('bubble', isBubbleActive ? 'active' : '')\">\n <span [nasClass]=\"getClass('bubble-value')\" *ngIf=\"bubbleValue != null\">\n <span *ngIf=\"showBubbleSuffix && exists(isPrefix)\">{{suffix}}</span>{{bubbleValue}}<span \n *ngIf=\"showBubbleSuffix && !exists(isPrefix)\">{{suffix}}</span>\n </span>\n </div>\n <ng-container *ngIf=\"!nasFormControlName; else reactiveForm\">\n <label>\n <span [nasClass]=\"getClass('title')\"\n *ngIf=\"title\">{{title}}</span>\n <input #slider\n [nasClass]=\"getClass('slider', exists(disabled) ? 'disabled' : '')\"\n type=\"range\"\n [id]=\"sliderId\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.suffix]=\"suffix\"\n [attr.step]=\"step\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [disabled]=\"disabled\"\n (input)=\"onDisplayBubble($event,'slider')\"\n (mouseup)=\"onSliderChange($event, 'slider')\"\n (touchend)=\"onSliderChange($event, 'slider')\"\n (keyup)=\"onSliderChange($event, 'slider')\" />\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </label>\n </ng-container>\n <ng-template #reactiveForm>\n <label [formGroup]=\"nasFormGroup\">\n <p [nasClass]=\"getClass('title')\"\n *ngIf=\"title\">{{title}}</p>\n <input #slider\n [formControlName]=\"nasFormControlName\"\n [nasClass]=\"getClass('slider', nasFormGroup?.get(nasFormControlName)?.disabled ? 'disabled' : '')\"\n type=\"range\"\n [id]=\"sliderId\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.suffix]=\"suffix\"\n [attr.step]=\"step\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"value\"\n [attr.disabled]=\"disabled\"\n (input)=\"onSliderInput($event, 'slider')\"\n (change)=\"onSliderChange($event, 'slider')\" \n />\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </label>\n </ng-template>\n <ng-template #label>\n <div [nasClass]=\"getClass('label-wrapper')\">\n <span [nasClass]=\"getClass('label')\">\n <span *ngIf=\"showMinLabelSuffix && exists(isPrefix)\">{{suffix}}</span>{{minLabel}}<span \n *ngIf=\"showMinLabelSuffix && !exists(isPrefix)\">{{suffix}}</span>\n </span>\n <span [nasClass]=\"getClass('label', 'middle')\" *ngIf=\"middleLabel\">\n <span *ngIf=\"exists(isPrefix)\">{{suffix}}</span>{{middleLabel}}<span \n *ngIf=\"!exists(isPrefix)\">{{suffix}}</span>\n </span>\n <span [nasClass]=\"getClass('label', 'max')\">\n <span *ngIf=\"showMaxLabelSuffix && exists(isPrefix)\">{{suffix}}</span>{{maxLabel}}<span \n *ngIf=\"showMaxLabelSuffix && !exists(isPrefix)\">{{suffix}}</span>\n </span>\n </div>\n </ng-template>\n</div>\n\n<div [nasClass]=\"getClass('wrapper-range')\" *ngIf=\"isRange && !isIEOrEdge\">\n <div #bubble [nasClass]=\"getClass('bubble', isBubbleActive ? 'active' : '')\" *ngIf=\"showBubble\">\n <span [nasClass]=\"getClass('bubble-value')\" *ngIf=\"bubbleValue != null\">\n <span *ngIf=\"showBubbleSuffix && exists(isPrefix)\">{{suffix}}</span>{{bubbleValue}}<span \n *ngIf=\"showBubbleSuffix && !exists(isPrefix)\">{{suffix}}</span></span>\n </div>\n <ng-container *ngIf=\"!nasFormControlMin && !nasFormControlMax; else reactiveForm\">\n <label >\n <span [nasClass]=\"getClass('title')\"\n *ngIf=\"title\">{{title}}</span>\n <div [nasClass]=\"getClass('range-slider')\">\n <input #slider #rangeMin\n [nasClass]=\"getClass('range-slider-min', exists(disabled) ? 'disabled' : '')\" \n type=\"range\"\n [id]=\"sliderId\"\n [attr.name]=\"name\"\n [attr.value]=\"selectedMinValue\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [attr.suffix]=\"suffix\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"selectedMinValue\"\n [disabled]=\"disabled\"\n (input)=\"onDisplayBubble($event,'range-slider-min')\"\n (mouseup)=\"onSliderChange($event, 'range-slider-min')\"\n (touchend)=\"onSliderChange($event, 'range-slider-min')\"\n (keyup)=\"onSliderChange($event, 'range-slider-min')\"\n />\n\n <input #slider #rangeMax\n [nasClass]=\"getClass('range-slider-max', exists(disabled) ? 'disabled' : '')\" \n type=\"range\"\n [id]=\"sliderId\"\n [attr.name]=\"name\" \n [attr.value]=\"selectedMaxValue\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [attr.suffix]=\"suffix\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"selectedMaxValue\"\n [disabled]=\"disabled\"\n (input)=\"onDisplayBubble($event,'range-slider-max')\"\n (mouseup)=\"onSliderChange($event, 'range-slider-max')\"\n (touchend)=\"onSliderChange($event, 'range-slider-max')\"\n (keyup)=\"onSliderChange($event, 'range-slider-max')\"\n />\n </div>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n </label>\n </ng-container>\n \n <ng-template #reactiveForm>\n <label [formGroup]=\"nasFormGroup\">\n <p [nasClass]=\"getClass('title')\" *ngIf=\"title\">{{title}}</p>\n <div [nasClass]=\"getClass('range-slider')\">\n <input #slider #rangeMin\n [nasClass]=\"getClass('range-slider-min', exists(disabled) ? 'disabled' : '')\" \n [formControlName]=\"nasFormControlMin\"\n type=\"range\"\n [id]=\"sliderId\"\n [attr.name]=\"name\"\n [attr.value]=\"selectedMinValue\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [attr.suffix]=\"suffix\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"selectedMinValue\"\n [attr.disabled]=\"disabledValue ? '' : null\"\n (input)=\"onSliderInput($event, 'range-slider-min')\" \n (change)=\"onSliderChange($event, 'range-slider-min')\"\n />\n \n <input #slider #rangeMax\n [nasClass]=\"getClass('range-slider-max', exists(disabled) ? 'disabled' : '')\" \n [formControlName]=\"nasFormControlMax\"\n type=\"range\"\n [attr.name]=\"name\" \n [attr.value]=\"selectedMaxValue\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n [attr.suffix]=\"suffix\"\n [attr.aria-valuemin]=\"min\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"selectedMaxValue\"\n [attr.disabled]=\"disabledValue ? '' : null\"\n (input)=\"onSliderInput($event, 'range-slider-max')\" \n (change)=\"onSliderChange($event, 'range-slider-max')\"\n />\n </div>\n <ng-container *ngTemplateOutlet=\"label\"></ng-container>\n</label>\n</ng-template>\n <ng-template #label>\n <div [nasClass]=\"getClass('label-wrapper')\">\n <span [nasClass]=\"getClass('label')\">\n <span *ngIf=\"showMinLabelSuffix && exists(isPrefix)\">{{suffix}}</span>{{minLabel}}<span \n *ngIf=\"showMinLabelSuffix && !exists(isPrefix)\">{{suffix}}</span>\n </span>\n <span [nasClass]=\"getClass('label', 'middle')\" *ngIf=\"middleLabel\">\n <span *ngIf=\"exists(isPrefix)\">{{suffix}}</span>{{middleLabel}}<span \n *ngIf=\"!exists(isPrefix)\">{{suffix}}</span>\n </span>\n <span [nasClass]=\"getClass('label', 'max')\">\n <span *ngIf=\"showMaxLabelSuffix && exists(isPrefix)\">{{suffix}}</span>{{maxLabel}}<span \n *ngIf=\"showMaxLabelSuffix && !exists(isPrefix)\">{{suffix}}</span>\n </span>\n </div>\n </ng-template>\n \n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\nimport { SliderComponent } from './slider.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n ReactiveFormsModule\n ],\n declarations: [SliderComponent],\n exports: [ SliderComponent ]\n})\nexport class SliderModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, OnInit, Input } from '@angular/core';\nimport { NasComponentBase } from '../../core';\n\n/**\n * @description\n * Norwegian Table Component | Layout | Beta\n*/\n@Component({\n selector: 'nas-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss']\n})\nexport class TableComponent extends NasComponentBase implements OnInit {\n /**\n * @description\n * Add caption to the table\n * @example\n * <nas-table [caption]=\"'Awesome caption'\"></nas-table>\n */\n @Input() caption: string;\n\n constructor() {\n super('nas-table');\n }\n\n ngOnInit(): void {\n }\n}\n","<table [nasClass]=\"getClass()\">\n <caption *ngIf=\"caption\">{{caption}}</caption>\n <ng-content select=\"nas-column-group\"></ng-content>\n <ng-content select=\"nas-table-row\"></ng-content>\n <ng-content select=\"nas-table-head\"></ng-content>\n <ng-content select=\"nas-table-body\"></ng-content>\n <ng-content select=\"nas-table-foot\"></ng-content>\n</table>","export { };\ndeclare global {\n interface HTMLElement {\n replaceWith(...nodes: (Node | string)[]): void;\n }\n}\n\nfunction ReplaceWithPolyfill() {\n 'use-strict'; // For safari, and IE > 10\n const parent = this.parentNode;\n let i = arguments.length;\n let currentNode: { parentNode: { removeChild: (arg0: any) => void } };\n\n if (!parent) {\n return;\n}\n if (!i) { // if there are no arguments\n parent.removeChild(this);\n }\n while (i--) { // i-- decrements i and returns the value of i before the decrement\n currentNode = arguments[i];\n if (typeof currentNode !== 'object') {\n currentNode = this.ownerDocument.createTextNode(currentNode);\n } else if (currentNode.parentNode) {\n currentNode.parentNode.removeChild(currentNode);\n }\n // the value of \"i\" below is after the decrement\n if (!i) { // if currentNode is the first argument (currentNode === arguments[0])\n parent.replaceChild(currentNode, this);\n } else { // if currentNode isn't the first\n parent.insertBefore(currentNode, this.nextSibling);\n }\n }\n}\n\nHTMLElement.prototype.replaceWith = ReplaceWithPolyfill;\n","import { Injectable } from '@angular/core';\nimport '../../../core/extensions/html-element.extension';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TableService {\n\n constructor() { }\n\n replaceNativeElement(raplaceTagName: string, nativeElement: HTMLElement): void {\n const replaceElement = document.createElement(raplaceTagName);\n const item = nativeElement;\n\n replaceElement.insertAdjacentHTML(\n 'afterbegin',\n item.innerHTML.replace(/nas-table-row/g, 'tr').replace(/nas-table-header/g, 'th').replace(/nas-table-data/g, 'td'));\n\n nativeElement.replaceWith(replaceElement);\n }\n}\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, ElementRef, AfterViewInit } from '@angular/core';\nimport { TableService } from '../services/table.service';\n\n@Component({\n selector: 'nas-table-row',\n templateUrl: './table-row.component.html',\n styleUrls: ['./table-row.component.scss']\n})\nexport class TableRowComponent implements AfterViewInit {\n constructor(private elementRef: ElementRef<HTMLElement>, private tableService: TableService) { }\n\n ngAfterViewInit(): void {\n this.tableService.replaceNativeElement('tr', this.elementRef.nativeElement);\n }\n\n}\n","<ng-content select=\"nas-table-header\"></ng-content>\n<ng-content select=\"nas-table-data\"></ng-content>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'nas-table-header',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss']\n})\nexport class TableHeaderComponent {\n}\n","<ng-content></ng-content>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'nas-table-data',\n templateUrl: './table-data.component.html',\n styleUrls: ['./table-data.component.scss']\n})\nexport class TableDataComponent {\n}\n","<ng-content></ng-content>","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, ElementRef, AfterViewInit } from '@angular/core';\nimport { TableService } from '../services/table.service';\n\n@Component({\n selector: 'nas-table-head',\n templateUrl: './table-head.component.html',\n styleUrls: ['./table-head.component.scss']\n})\nexport class TableHeadComponent implements AfterViewInit {\n\n constructor(private elementRef: ElementRef<HTMLElement>, private tableService: TableService) { }\n\n ngAfterViewInit(): void {\n this.tableService.replaceNativeElement('thead', this.elementRef.nativeElement);\n }\n\n}\n","<ng-content select=\"nas-table-row\"></ng-content>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, ElementRef, AfterViewInit } from '@angular/core';\nimport { TableService } from '../services/table.service';\n\n@Component({\n selector: 'nas-table-body',\n templateUrl: './table-body.component.html',\n styleUrls: ['./table-body.component.scss']\n})\nexport class TableBodyComponent implements AfterViewInit {\n\n constructor(private elementRef: ElementRef<HTMLElement>, private tableService: TableService) { }\n\n ngAfterViewInit(): void {\n this.tableService.replaceNativeElement('tbody', this.elementRef.nativeElement);\n }\n\n}\n","<ng-content select=\"nas-table-row\"></ng-content>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, ElementRef, AfterViewInit } from '@angular/core';\nimport { TableService } from '../services/table.service';\n\n@Component({\n selector: 'nas-table-foot',\n templateUrl: './table-foot.component.html',\n styleUrls: ['./table-foot.component.scss']\n})\nexport class TableFootComponent implements AfterViewInit {\n\n constructor(private elementRef: ElementRef<HTMLElement>, private tableService: TableService) { }\n\n ngAfterViewInit(): void {\n this.tableService.replaceNativeElement('tfoot', this.elementRef.nativeElement);\n }\n\n}\n","<ng-content select=\"nas-table-row\"></ng-content>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component, OnInit, ElementRef, Input } from '@angular/core';\nimport '../../../core/extensions/html-element.extension';\n\n@Component({\n selector: 'nas-column-group',\n templateUrl: './column-group.component.html',\n styleUrls: ['./column-group.component.scss']\n})\nexport class ColumnGroupComponent implements OnInit {\n @Input() span: number;\n\n constructor(private elementRef: ElementRef<HTMLElement>) { }\n\n ngOnInit(): void {\n const element = document.createElement('colgroup');\n\n if (this.span) {\n element.setAttribute('span', this.span.toString());\n }\n\n const item = this.elementRef.nativeElement;\n\n element.insertAdjacentHTML('afterbegin', item.innerHTML.replace(/nas-column/g, 'col'));\n\n this.elementRef.nativeElement.replaceWith(element);\n }\n\n}\n","<ng-content select=\"nas-column\"></ng-content>\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'nas-column',\n templateUrl: './column.component.html',\n styleUrls: ['./column.component.scss']\n})\nexport class ColumnComponent {\n constructor() { }\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TableComponent } from './table.component';\nimport { NasClassModule } from '../../core';\nimport { TableRowComponent } from './table-row/table-row.component';\nimport { TableHeaderComponent } from './table-row/table-header/table-header.component';\nimport { TableDataComponent } from './table-row/table-data/table-data.component';\nimport { TableHeadComponent } from './table-head/table-head.component';\nimport { TableBodyComponent } from './table-body/table-body.component';\nimport { TableFootComponent } from './table-foot/table-foot.component';\nimport { ColumnGroupComponent } from './column-group/column-group.component';\nimport { ColumnComponent } from './column/column.component';\n\n@NgModule({\n declarations: [\n TableComponent,\n TableRowComponent,\n TableHeaderComponent,\n TableDataComponent,\n TableHeadComponent,\n TableBodyComponent,\n TableFootComponent,\n ColumnGroupComponent,\n ColumnComponent\n ],\n imports: [\n CommonModule,\n NasClassModule\n ],\n exports: [\n TableComponent,\n TableRowComponent,\n TableHeaderComponent,\n TableDataComponent,\n TableHeadComponent,\n TableBodyComponent,\n TableFootComponent,\n ColumnGroupComponent,\n ColumnComponent\n ]\n})\nexport class TableModule { }\n","/**\n * @license\n * Copyright Norwegian Air Shuttle. All Rights Reserved.\n */\n\nimport { Component, Input } from '@angular/core';\nimport { ClassModel } from '../../core/models/class.model';\nimport { NasComponentBase } from '../../core/base/nas-component.base';\n/**\n * @description\n * Norwegian Divider Component | Layout\n */\n@Component({\n selector: 'nas-divider',\n templateUrl: './divider.component.html',\n styleUrls: ['./divider.component.scss']\n})\n\nexport class DividerComponent extends NasComponentBase {\n /**\n * @description\n * Sets text on the divider. If set to false the divider will not display any text.\n */\n @Input() text: string;\n /**\n * @description\n * Boolean to give the divider a double look.\n */\n @Input() double: boolean;\n /**\n * @description\n * Boolean to give the divider a dotted look.\n */\n @Input() dotted: boolean;\n /**\n * @description\n * Boolean to give the divider a dashed look.\n */\n @Input() dashed: boolean;\n /**\n * @description\n * Boolean to give the divider large spacing.\n */\n @Input() spaceLarge: boolean;\n /**\n * @description\n * Boolean to give the divider light color.\n */\n @Input() light: boolean;\n /**\n * @description\n * Boolean to give the divider dark color.\n */\n @Input() dark: boolean;\n /**\n * @description\n * Boolean to give the divider secondary color.\n */\n @Input() secondary: boolean;\n /**\n * @description\n * Boolean to give the divider primary color.\n */\n @Input() primary: boolean;\n\n constructor() {\n super('nas-divider');\n }\n\n getModifiers(): Array<string> {\n return [\n this.exists(this.double) && 'double',\n this.exists(this.dotted) && 'dotted',\n this.exists(this.dashed) && 'dashed',\n this.exists(this.spaceLarge) && 'spaceLarge',\n this.exists(this.light) && 'light',\n this.exists(this.dark) && 'dark',\n this.exists(this.secondary) && 'secondary',\n this.exists(this.primary) && 'primary',\n ];\n }\n\n getClasses(element?: string, modifiers?: any): Array<ClassModel> {\n const classes: Array<ClassModel> = [\n this.getClass(element, modifiers)\n ];\n return classes;\n }\n}\n","<div [nasClass]=\"getClasses('', getModifiers())\">\n <div [nasClass]=\"getClass('line')\"></div>\n <div *ngIf=\"text\" [nasClass]=\"getClass('text')\">{{text}}</div>\n <div [nasClass]=\"getClass('line')\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { DividerComponent } from './divider.component';\nimport { NasClassModule } from '../../core/directives/nas-class/nas-class.module';\n\n@NgModule({\n declarations: [DividerComponent],\n imports: [CommonModule, NasClassModule, RouterModule],\n exports: [DividerComponent],\n})\nexport class DividerModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GetPositionService {\n get(element: any) {\n let el = element;\n let lx: number;\n let ly: number;\n\n for (\n lx = 0, ly = 0;\n el !== null;\n lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent\n ) { }\n\n return {\n x: lx,\n y: ly,\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BemHelper","i1.NasClassDirective","i2.IconComponent","i3.NasClassDirective","nextId","i2.NasClassDirective","i1.AirportSelectService","i2.AirportSelectDropdownService","i3.GeolocationService","i4","i5","i6.NasClassDirective","i7.IconComponent","i8.ButtonComponent","i3.IconComponent","i4.AirportSelectDropdownComponent","i2","i1.ViewPortService","i3.ButtonComponent","i4.NasClassDirective","i5.IconComponent","i4.ButtonComponent","i2.NumberFieldComponent","i1","i2.DateHelper","i1.DateHelper","i3.CalendarService","i4.SelectComponent","i3.SelectComponent","i4.OptionComponent","i7","i8.BackdropComponent","i9.CalendarComponent","i2.DeviceHelper","i3","i4.DatepickerComponent","i5.NasClassDirective","i1.SelectComponent","i1.DeviceHelper","i2.SortService","i3.AbandonedBasketService","i4.DateHelper","i7.AirportSelectComponent","i8.DropdownComponent","i9.PassengerSelectComponent","i10.AccordionComponent","i11.IconComponent","i12.DatepickerComboComponent","i13.SubsidyDiscountComponent","i14.SuggestionsComponent","i3.DropdownComponent","i4.RadioComponent","i5.ButtonComponent","i3.AccordionComponent","i4.IconComponent","i1.AnimateHelper","i4.GridComponent","i5.ColComponent","i1.IconComponent","i5.HamburgerComponent","i6.SearchComponent","i1.ToggleComponent","i4.JourneyComponent","i5.JourneyStopoverComponent","i3.DateHelper","i6.ModalComponent","i7.TripSummaryComponent","i3.JourneyAvailabilityComponent","i5.SortComponent","i5.OptgroupComponent","i6","i5.BackdropComponent","i3.DeviceHelper","i6.ButtonComponent","i1.TableService"],"mappings":"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"}