@norwegian/core-components 5.1.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 (1004) hide show
  1. package/README.md +78 -0
  2. package/assets/documentation/accordion/accordion.md +1 -0
  3. package/assets/documentation/airport-select/airport-select.md +0 -0
  4. package/assets/documentation/autocomplete/autocomplete.md +1 -0
  5. package/assets/documentation/box/box.md +1 -0
  6. package/assets/documentation/button/button.md +10 -0
  7. package/assets/documentation/checkbox/checkbox.md +7 -0
  8. package/assets/documentation/chip/chip.md +1 -0
  9. package/assets/documentation/container/container.md +1 -0
  10. package/assets/documentation/continue/continue.md +1 -0
  11. package/assets/documentation/cover/cover.md +1 -0
  12. package/assets/documentation/datepicker/calendar/calendar.md +3 -0
  13. package/assets/documentation/datepicker/datepicker.md +3 -0
  14. package/assets/documentation/datepicker-combo/datepicker-combo.md +1 -0
  15. package/assets/documentation/dropdown/dropdown.md +3 -0
  16. package/assets/documentation/filter/filter.md +0 -0
  17. package/assets/documentation/grid/grid.md +1 -0
  18. package/assets/documentation/icon/icon.md +4 -0
  19. package/assets/documentation/icon-list/icon-list.md +1 -0
  20. package/assets/documentation/info/info.md +1 -0
  21. package/assets/documentation/input/input.md +1 -0
  22. package/assets/documentation/journey/journey.md +1 -0
  23. package/assets/documentation/journey-availability/journey-availability.md +3 -0
  24. package/assets/documentation/journey-availability-list/journey-availability-list.md +9 -0
  25. package/assets/documentation/journey-selection/journey-selection.md +1 -0
  26. package/assets/documentation/journey-stopover/journey-stopover.md +1 -0
  27. package/assets/documentation/list/list.md +1 -0
  28. package/assets/documentation/modal/modal.md +0 -0
  29. package/assets/documentation/number-field/number-field.md +1 -0
  30. package/assets/documentation/page-footer/page-footer.md +1 -0
  31. package/assets/documentation/page-header/page-header.md +1 -0
  32. package/assets/documentation/passenger-select/passenger-select.md +1 -0
  33. package/assets/documentation/phone-number/phone-number.md +2 -0
  34. package/assets/documentation/premium-toggle/premium-toggle.md +9 -0
  35. package/assets/documentation/radio/radio.md +7 -0
  36. package/assets/documentation/select/select.md +1 -0
  37. package/assets/documentation/simple-list/simple-list.md +1 -0
  38. package/assets/documentation/slide-toggle/slide-toggle.md +1 -0
  39. package/assets/documentation/slider/slider.md +1 -0
  40. package/assets/documentation/sort/sort.md +1 -0
  41. package/assets/documentation/spinner/spinner.md +1 -0
  42. package/assets/documentation/subsidy-discount/subsidy-discount.md +3 -0
  43. package/assets/documentation/suggestions/suggestions.md +1 -0
  44. package/assets/documentation/tab-group/tab-group.md +1 -0
  45. package/assets/documentation/table/table.md +8 -0
  46. package/assets/documentation/textarea/textarea.md +1 -0
  47. package/assets/documentation/toggle/toggle.md +5 -0
  48. package/assets/documentation/trip-summary/trip-summary.md +2 -0
  49. package/assets/documentation/weather-icon/weather-icon.md +1 -0
  50. package/assets/fonts/TiemposHeadlineWeb-Bold.eot +0 -0
  51. package/assets/fonts/TiemposHeadlineWeb-Bold.woff +0 -0
  52. package/assets/fonts/TiemposHeadlineWeb-Bold.woff2 +0 -0
  53. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.eot +0 -0
  54. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff +0 -0
  55. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff2 +0 -0
  56. package/assets/fonts/TiemposText-Medium.eot +0 -0
  57. package/assets/fonts/TiemposText-Medium.woff +0 -0
  58. package/assets/fonts/TiemposText-Medium.woff2 +0 -0
  59. package/assets/fonts/TiemposTextWeb-Italic.eot +0 -0
  60. package/assets/fonts/TiemposTextWeb-Italic.woff +0 -0
  61. package/assets/fonts/TiemposTextWeb-Italic.woff2 +0 -0
  62. package/assets/fonts/TiemposTextWeb-Regular.eot +0 -0
  63. package/assets/fonts/TiemposTextWeb-Regular.woff +0 -0
  64. package/assets/fonts/TiemposTextWeb-Regular.woff2 +0 -0
  65. package/assets/fonts/apercu_bold_italic_pro-web.eot +0 -0
  66. package/assets/fonts/apercu_bold_italic_pro-web.svg +12420 -0
  67. package/assets/fonts/apercu_bold_italic_pro-web.ttf +0 -0
  68. package/assets/fonts/apercu_bold_italic_pro-web.woff +0 -0
  69. package/assets/fonts/apercu_bold_italic_pro-web.woff2 +0 -0
  70. package/assets/fonts/apercu_bold_italic_pro.otf +0 -0
  71. package/assets/fonts/apercu_bold_pro-web.eot +0 -0
  72. package/assets/fonts/apercu_bold_pro-web.svg +10193 -0
  73. package/assets/fonts/apercu_bold_pro-web.ttf +0 -0
  74. package/assets/fonts/apercu_bold_pro-web.woff +0 -0
  75. package/assets/fonts/apercu_bold_pro-web.woff2 +0 -0
  76. package/assets/fonts/apercu_bold_pro.otf +0 -0
  77. package/assets/fonts/apercu_light_italic_pro-web.eot +0 -0
  78. package/assets/fonts/apercu_light_italic_pro-web.svg +12831 -0
  79. package/assets/fonts/apercu_light_italic_pro-web.ttf +0 -0
  80. package/assets/fonts/apercu_light_italic_pro-web.woff +0 -0
  81. package/assets/fonts/apercu_light_italic_pro-web.woff2 +0 -0
  82. package/assets/fonts/apercu_light_pro-web.eot +0 -0
  83. package/assets/fonts/apercu_light_pro-web.svg +9704 -0
  84. package/assets/fonts/apercu_light_pro-web.ttf +0 -0
  85. package/assets/fonts/apercu_light_pro-web.woff +0 -0
  86. package/assets/fonts/apercu_light_pro-web.woff2 +0 -0
  87. package/assets/fonts/apercu_medium_italic_pro-web.eot +0 -0
  88. package/assets/fonts/apercu_medium_italic_pro-web.svg +12354 -0
  89. package/assets/fonts/apercu_medium_italic_pro-web.ttf +0 -0
  90. package/assets/fonts/apercu_medium_italic_pro-web.woff +0 -0
  91. package/assets/fonts/apercu_medium_italic_pro-web.woff2 +0 -0
  92. package/assets/fonts/apercu_medium_italic_pro.otf +0 -0
  93. package/assets/fonts/apercu_medium_pro-web.eot +0 -0
  94. package/assets/fonts/apercu_medium_pro-web.svg +12254 -0
  95. package/assets/fonts/apercu_medium_pro-web.ttf +0 -0
  96. package/assets/fonts/apercu_medium_pro-web.woff +0 -0
  97. package/assets/fonts/apercu_medium_pro-web.woff2 +0 -0
  98. package/assets/fonts/apercu_medium_pro.otf +0 -0
  99. package/assets/fonts/apercu_mono_pro-web.eot +0 -0
  100. package/assets/fonts/apercu_mono_pro-web.svg +538 -0
  101. package/assets/fonts/apercu_mono_pro-web.ttf +0 -0
  102. package/assets/fonts/apercu_mono_pro-web.woff +0 -0
  103. package/assets/fonts/apercu_mono_pro-web.woff2 +0 -0
  104. package/assets/fonts/apercu_regular_italic_pro-web.eot +0 -0
  105. package/assets/fonts/apercu_regular_italic_pro-web.svg +13059 -0
  106. package/assets/fonts/apercu_regular_italic_pro-web.ttf +0 -0
  107. package/assets/fonts/apercu_regular_italic_pro-web.woff +0 -0
  108. package/assets/fonts/apercu_regular_italic_pro-web.woff2 +0 -0
  109. package/assets/fonts/apercu_regular_italic_pro.otf +0 -0
  110. package/assets/fonts/apercu_regular_pro-web.eot +0 -0
  111. package/assets/fonts/apercu_regular_pro-web.svg +11356 -0
  112. package/assets/fonts/apercu_regular_pro-web.ttf +0 -0
  113. package/assets/fonts/apercu_regular_pro-web.woff +0 -0
  114. package/assets/fonts/apercu_regular_pro-web.woff2 +0 -0
  115. package/assets/fonts/apercu_regular_pro.otf +0 -0
  116. package/assets/icons/flags/ar.svg +20 -0
  117. package/assets/icons/flags/br.svg +30 -0
  118. package/assets/icons/flags/ca.svg +18 -0
  119. package/assets/icons/flags/de.svg +20 -0
  120. package/assets/icons/flags/dk.svg +20 -0
  121. package/assets/icons/flags/en.svg +20 -0
  122. package/assets/icons/flags/es.svg +20 -0
  123. package/assets/icons/flags/fi.svg +20 -0
  124. package/assets/icons/flags/fr.svg +20 -0
  125. package/assets/icons/flags/ie.svg +22 -0
  126. package/assets/icons/flags/it.svg +20 -0
  127. package/assets/icons/flags/nl.svg +20 -0
  128. package/assets/icons/flags/no.svg +20 -0
  129. package/assets/icons/flags/pl.svg +20 -0
  130. package/assets/icons/flags/se.svg +20 -0
  131. package/assets/icons/flags/uk.svg +20 -0
  132. package/assets/icons/flags/us.svg +20 -0
  133. package/assets/icons/icon-add--light.svg +11 -0
  134. package/assets/icons/icon-add.svg +7 -0
  135. package/assets/icons/icon-arrow-left--light.svg +7 -0
  136. package/assets/icons/icon-arrow-left.svg +7 -0
  137. package/assets/icons/icon-arrow-right--light.svg +7 -0
  138. package/assets/icons/icon-arrow-right.svg +6 -0
  139. package/assets/icons/icon-check.svg +7 -0
  140. package/assets/icons/icon-chevron-down.svg +1 -0
  141. package/assets/icons/icon-chevron-left--light.svg +1 -0
  142. package/assets/icons/icon-chevron-left-outlined.svg +4 -0
  143. package/assets/icons/icon-chevron-left.svg +1 -0
  144. package/assets/icons/icon-chevron-right--light.svg +1 -0
  145. package/assets/icons/icon-chevron-right-outlined.svg +4 -0
  146. package/assets/icons/icon-chevron-right.svg +1 -0
  147. package/assets/icons/icon-dropdown-arrow--disabled.svg +8 -0
  148. package/assets/icons/icon-dropdown-arrow--light.svg +8 -0
  149. package/assets/icons/icon-dropdown-arrow.svg +8 -0
  150. package/assets/icons/icon-error.svg +11 -0
  151. package/assets/icons/icon-flight-direct.svg +8 -0
  152. package/assets/icons/icon-flight-one-stop.svg +8 -0
  153. package/assets/icons/icon-flight-two-stops.svg +9 -0
  154. package/assets/icons/icon-geolocation--disabled.svg +8 -0
  155. package/assets/icons/icon-geolocation--light.svg +8 -0
  156. package/assets/icons/icon-geolocation.svg +8 -0
  157. package/assets/icons/icon-goto.svg +8 -0
  158. package/assets/icons/icon-home.svg +1 -0
  159. package/assets/icons/icon-marker.svg +8 -0
  160. package/assets/icons/icon-menu--dark.svg +9 -0
  161. package/assets/icons/icon-menu.svg +9 -0
  162. package/assets/icons/icon-nav_right--large.svg +7 -0
  163. package/assets/icons/icon-nav_right--small.svg +7 -0
  164. package/assets/icons/icon-nav_right.svg +7 -0
  165. package/assets/icons/icon-negative.svg +11 -0
  166. package/assets/icons/icon-ol_li.svg +7 -0
  167. package/assets/icons/icon-one-stop-arrow.svg +8 -0
  168. package/assets/icons/icon-passenger--children.svg +1 -0
  169. package/assets/icons/icon-passenger--female.svg +1 -0
  170. package/assets/icons/icon-passenger--infant.svg +1 -0
  171. package/assets/icons/icon-passenger--male.svg +1 -0
  172. package/assets/icons/icon-positive.svg +10 -0
  173. package/assets/icons/icon-red-circle.svg +7 -0
  174. package/assets/icons/icon-remove.svg +8 -0
  175. package/assets/icons/icon-share_facebook.svg +10 -0
  176. package/assets/icons/icon-share_instagram.svg +12 -0
  177. package/assets/icons/icon-share_twitter.svg +13 -0
  178. package/assets/icons/icon-share_youtube.svg +11 -0
  179. package/assets/icons/icon-star.svg +9 -0
  180. package/assets/icons/icon-subtract--light.svg +12 -0
  181. package/assets/icons/icon-subtract.svg +9 -0
  182. package/assets/icons/icon-switch--secondary.svg +1 -0
  183. package/assets/icons/icon-switch.svg +1 -0
  184. package/assets/icons/icon-two-stops-arrow.svg +10 -0
  185. package/assets/icons/large/baggage-hand-baggage.svg +41 -0
  186. package/assets/icons/large/baggage.svg +75 -0
  187. package/assets/icons/large/car-rentals.svg +61 -0
  188. package/assets/icons/large/cashpoints.svg +92 -0
  189. package/assets/icons/large/celebration.svg +77 -0
  190. package/assets/icons/large/central-airports.svg +44 -0
  191. package/assets/icons/large/customer-service.svg +47 -0
  192. package/assets/icons/large/destinations.svg +78 -0
  193. package/assets/icons/large/direct-flights.svg +73 -0
  194. package/assets/icons/large/entertainment.svg +89 -0
  195. package/assets/icons/large/family.svg +88 -0
  196. package/assets/icons/large/fast-track.svg +57 -0
  197. package/assets/icons/large/food.svg +48 -0
  198. package/assets/icons/large/from-a-to-b.svg +66 -0
  199. package/assets/icons/large/hotels.svg +84 -0
  200. package/assets/icons/large/lounge.svg +67 -0
  201. package/assets/icons/large/new-aircrafts.svg +60 -0
  202. package/assets/icons/large/personnel.svg +54 -0
  203. package/assets/icons/large/premium.svg +49 -0
  204. package/assets/icons/large/wifi.svg +112 -0
  205. package/assets/icons/list--journey.svg +207 -0
  206. package/assets/icons/medium/accommodation--light.svg +16 -0
  207. package/assets/icons/medium/accommodation.svg +15 -0
  208. package/assets/icons/medium/alert--error.svg +11 -0
  209. package/assets/icons/medium/alert--light.svg +10 -0
  210. package/assets/icons/medium/alert--success.svg +9 -0
  211. package/assets/icons/medium/alert.svg +11 -0
  212. package/assets/icons/medium/arrow-down--light.svg +11 -0
  213. package/assets/icons/medium/arrow-down.svg +11 -0
  214. package/assets/icons/medium/arrow-left--light.svg +11 -0
  215. package/assets/icons/medium/arrow-left.svg +11 -0
  216. package/assets/icons/medium/arrow-right--light.svg +11 -0
  217. package/assets/icons/medium/arrow-right.svg +11 -0
  218. package/assets/icons/medium/arrow-up--light.svg +11 -0
  219. package/assets/icons/medium/arrow-up.svg +11 -0
  220. package/assets/icons/medium/baggage--light.svg +10 -0
  221. package/assets/icons/medium/baggage-checked-in--light.svg +19 -0
  222. package/assets/icons/medium/baggage-checked-in.svg +20 -0
  223. package/assets/icons/medium/baggage-hand-baggage--light.svg +32 -0
  224. package/assets/icons/medium/baggage-hand-baggage.svg +36 -0
  225. package/assets/icons/medium/baggage-special-baggage--light.svg +21 -0
  226. package/assets/icons/medium/baggage-special-baggage.svg +23 -0
  227. package/assets/icons/medium/baggage-sports-equipment--light.svg +18 -0
  228. package/assets/icons/medium/baggage-sports-equipment.svg +21 -0
  229. package/assets/icons/medium/baggage.svg +11 -0
  230. package/assets/icons/medium/baggages--light.svg +1 -0
  231. package/assets/icons/medium/baggages.svg +1 -0
  232. package/assets/icons/medium/car-rental--light.svg +26 -0
  233. package/assets/icons/medium/car-rental.svg +26 -0
  234. package/assets/icons/medium/card--light.svg +18 -0
  235. package/assets/icons/medium/card.svg +18 -0
  236. package/assets/icons/medium/cashpoints--light.svg +29 -0
  237. package/assets/icons/medium/cashpoints.svg +31 -0
  238. package/assets/icons/medium/central-airports--light.svg +25 -0
  239. package/assets/icons/medium/central-airports.svg +25 -0
  240. package/assets/icons/medium/customer-service--light.svg +19 -0
  241. package/assets/icons/medium/customer-service.svg +22 -0
  242. package/assets/icons/medium/direct-flights--light.svg +24 -0
  243. package/assets/icons/medium/direct-flights.svg +25 -0
  244. package/assets/icons/medium/direct-to-gate--light.svg +18 -0
  245. package/assets/icons/medium/direct-to-gate.svg +18 -0
  246. package/assets/icons/medium/docs--light.svg +10 -0
  247. package/assets/icons/medium/docs.svg +10 -0
  248. package/assets/icons/medium/entertainment--light.svg +71 -0
  249. package/assets/icons/medium/entertainment.svg +81 -0
  250. package/assets/icons/medium/facebook.svg +12 -0
  251. package/assets/icons/medium/family.svg +29 -0
  252. package/assets/icons/medium/fast-track--light.svg +19 -0
  253. package/assets/icons/medium/fast-track.svg +23 -0
  254. package/assets/icons/medium/flexible-tickets--light.svg +16 -0
  255. package/assets/icons/medium/flexible-tickets.svg +18 -0
  256. package/assets/icons/medium/flight-arrival--light.svg +16 -0
  257. package/assets/icons/medium/flight-arrival.svg +15 -0
  258. package/assets/icons/medium/flight-departure--light.svg +12 -0
  259. package/assets/icons/medium/flight-departure.svg +12 -0
  260. package/assets/icons/medium/flight-oneway--light.svg +12 -0
  261. package/assets/icons/medium/flight-oneway.svg +13 -0
  262. package/assets/icons/medium/flight-outbound--light.svg +11 -0
  263. package/assets/icons/medium/flight-outbound.svg +11 -0
  264. package/assets/icons/medium/flight-return--light.svg +11 -0
  265. package/assets/icons/medium/flight-return-trip.svg +13 -0
  266. package/assets/icons/medium/flight-return.svg +11 -0
  267. package/assets/icons/medium/flight-tickets--light.svg +22 -0
  268. package/assets/icons/medium/flight-tickets.svg +21 -0
  269. package/assets/icons/medium/food--light.svg +16 -0
  270. package/assets/icons/medium/food.svg +19 -0
  271. package/assets/icons/medium/frequent-departures--light.svg +16 -0
  272. package/assets/icons/medium/frequent-departures.svg +16 -0
  273. package/assets/icons/medium/from-a-to-b--light.svg +17 -0
  274. package/assets/icons/medium/from-a-to-b.svg +17 -0
  275. package/assets/icons/medium/in-flight-entertainment--light.svg +20 -0
  276. package/assets/icons/medium/in-flight-entertainment.svg +21 -0
  277. package/assets/icons/medium/instagram.svg +14 -0
  278. package/assets/icons/medium/linkedin.svg +17 -0
  279. package/assets/icons/medium/lounge--light.svg +19 -0
  280. package/assets/icons/medium/lounge.svg +21 -0
  281. package/assets/icons/medium/mobile--light.svg +10 -0
  282. package/assets/icons/medium/mobile.svg +9 -0
  283. package/assets/icons/medium/my-profile-female.svg +55 -0
  284. package/assets/icons/medium/my-profile-male.svg +48 -0
  285. package/assets/icons/medium/new-airplanes--light.svg +14 -0
  286. package/assets/icons/medium/new-airplanes.svg +14 -0
  287. package/assets/icons/medium/personnel--light.svg +19 -0
  288. package/assets/icons/medium/personnel.svg +27 -0
  289. package/assets/icons/medium/phone--light.svg +15 -0
  290. package/assets/icons/medium/phone.svg +15 -0
  291. package/assets/icons/medium/premium--light.svg +23 -0
  292. package/assets/icons/medium/premium.svg +23 -0
  293. package/assets/icons/medium/print--light.svg +14 -0
  294. package/assets/icons/medium/printer.svg +14 -0
  295. package/assets/icons/medium/relax--light.svg +27 -0
  296. package/assets/icons/medium/relax.svg +28 -0
  297. package/assets/icons/medium/rewards--light.svg +19 -0
  298. package/assets/icons/medium/rewards-fast-track.svg +17 -0
  299. package/assets/icons/medium/rewards-luggage.svg +22 -0
  300. package/assets/icons/medium/rewards-seat.svg +21 -0
  301. package/assets/icons/medium/rewards.svg +19 -0
  302. package/assets/icons/medium/route-network--light.svg +28 -0
  303. package/assets/icons/medium/route-network.svg +28 -0
  304. package/assets/icons/medium/seat-reservation--light.svg +16 -0
  305. package/assets/icons/medium/seat-reservation.svg +16 -0
  306. package/assets/icons/medium/special-needs--light.svg +15 -0
  307. package/assets/icons/medium/special-needs.svg +15 -0
  308. package/assets/icons/medium/transit-stop--light.svg +30 -0
  309. package/assets/icons/medium/transit-stop.svg +33 -0
  310. package/assets/icons/medium/trash--light.svg +7 -0
  311. package/assets/icons/medium/trash.svg +7 -0
  312. package/assets/icons/medium/travel-deals--light.svg +24 -0
  313. package/assets/icons/medium/travel-deals.svg +24 -0
  314. package/assets/icons/medium/twitter.svg +17 -0
  315. package/assets/icons/medium/type-asia--light.svg +19 -0
  316. package/assets/icons/medium/type-asia.svg +19 -0
  317. package/assets/icons/medium/type-city-vibes--light.svg +14 -0
  318. package/assets/icons/medium/type-city-vibes.svg +14 -0
  319. package/assets/icons/medium/type-greece--light.svg +24 -0
  320. package/assets/icons/medium/type-greece.svg +28 -0
  321. package/assets/icons/medium/type-norway--light.svg +18 -0
  322. package/assets/icons/medium/type-norway.svg +18 -0
  323. package/assets/icons/medium/type-scandinavia--light.svg +32 -0
  324. package/assets/icons/medium/type-scandinavia.svg +32 -0
  325. package/assets/icons/medium/type-shopping--light.svg +20 -0
  326. package/assets/icons/medium/type-shopping.svg +20 -0
  327. package/assets/icons/medium/type-skiing--light.svg +32 -0
  328. package/assets/icons/medium/type-skiing.svg +32 -0
  329. package/assets/icons/medium/type-spain--light.svg +12 -0
  330. package/assets/icons/medium/type-spain.svg +12 -0
  331. package/assets/icons/medium/type-sun-and-sea--light.svg +34 -0
  332. package/assets/icons/medium/type-sun-and-sea.svg +34 -0
  333. package/assets/icons/medium/type-usa--light.svg +46 -0
  334. package/assets/icons/medium/type-usa.svg +46 -0
  335. package/assets/icons/medium/wifi--light.svg +15 -0
  336. package/assets/icons/medium/wifi.svg +15 -0
  337. package/assets/icons/medium/youtube.svg +12 -0
  338. package/assets/icons/mobile-landscape.svg +12 -0
  339. package/assets/icons/mobile-portrait.svg +12 -0
  340. package/assets/icons/small/accommodation--light.svg +15 -0
  341. package/assets/icons/small/accommodation.svg +21 -0
  342. package/assets/icons/small/alert--error.svg +7 -0
  343. package/assets/icons/small/alert--light.svg +10 -0
  344. package/assets/icons/small/alert.svg +10 -0
  345. package/assets/icons/small/arrow-down--light.svg +11 -0
  346. package/assets/icons/small/arrow-down.svg +11 -0
  347. package/assets/icons/small/arrow-left--light.svg +10 -0
  348. package/assets/icons/small/arrow-left.svg +10 -0
  349. package/assets/icons/small/arrow-right--light.svg +11 -0
  350. package/assets/icons/small/arrow-right.svg +11 -0
  351. package/assets/icons/small/arrow-up--light.svg +10 -0
  352. package/assets/icons/small/arrow-up.svg +10 -0
  353. package/assets/icons/small/baggage--light.svg +8 -0
  354. package/assets/icons/small/baggage-checked-in--light.svg +16 -0
  355. package/assets/icons/small/baggage-checked-in.svg +16 -0
  356. package/assets/icons/small/baggage-hand-baggage--light.svg +11 -0
  357. package/assets/icons/small/baggage-hand-baggage.svg +11 -0
  358. package/assets/icons/small/baggage-special-baggage--light.svg +20 -0
  359. package/assets/icons/small/baggage-special-baggage.svg +20 -0
  360. package/assets/icons/small/baggage-sports-equipment--light.svg +25 -0
  361. package/assets/icons/small/baggage-sports-equipment.svg +25 -0
  362. package/assets/icons/small/baggage.svg +10 -0
  363. package/assets/icons/small/baggages--light.svg +1 -0
  364. package/assets/icons/small/baggages.svg +1 -0
  365. package/assets/icons/small/calendar--disabled.svg +14 -0
  366. package/assets/icons/small/calendar--light.svg +14 -0
  367. package/assets/icons/small/calendar.svg +14 -0
  368. package/assets/icons/small/car-rental--light.svg +14 -0
  369. package/assets/icons/small/car-rental.svg +14 -0
  370. package/assets/icons/small/card--light.svg +8 -0
  371. package/assets/icons/small/card.svg +8 -0
  372. package/assets/icons/small/cashpoints--light.svg +21 -0
  373. package/assets/icons/small/cashpoints.svg +21 -0
  374. package/assets/icons/small/central-airports--light.svg +10 -0
  375. package/assets/icons/small/central-airports.svg +10 -0
  376. package/assets/icons/small/check-in--light.svg +11 -0
  377. package/assets/icons/small/check-in.svg +11 -0
  378. package/assets/icons/small/customer-service--light.svg +18 -0
  379. package/assets/icons/small/customer-service.svg +18 -0
  380. package/assets/icons/small/destination--light.svg +9 -0
  381. package/assets/icons/small/destination.svg +9 -0
  382. package/assets/icons/small/direct-flights--light.svg +16 -0
  383. package/assets/icons/small/direct-flights.svg +16 -0
  384. package/assets/icons/small/docs--light.svg +10 -0
  385. package/assets/icons/small/docs.svg +10 -0
  386. package/assets/icons/small/duty-free.svg +24 -0
  387. package/assets/icons/small/email.svg +1 -0
  388. package/assets/icons/small/facebook.svg +12 -0
  389. package/assets/icons/small/family.svg +24 -0
  390. package/assets/icons/small/fast-track--light.svg +15 -0
  391. package/assets/icons/small/fast-track.svg +15 -0
  392. package/assets/icons/small/flexible-tickets--light.svg +12 -0
  393. package/assets/icons/small/flexible-tickets.svg +12 -0
  394. package/assets/icons/small/flight-arrival--light.svg +13 -0
  395. package/assets/icons/small/flight-arrival.svg +16 -0
  396. package/assets/icons/small/flight-departure--light.svg +18 -0
  397. package/assets/icons/small/flight-departure-ground.svg +22 -0
  398. package/assets/icons/small/flight-departure-left.svg +18 -0
  399. package/assets/icons/small/flight-departure.svg +18 -0
  400. package/assets/icons/small/flight-outbound--light.svg +14 -0
  401. package/assets/icons/small/flight-outbound.svg +14 -0
  402. package/assets/icons/small/flight-return--light.svg +14 -0
  403. package/assets/icons/small/flight-return.svg +14 -0
  404. package/assets/icons/small/flight-tickets--light.svg +17 -0
  405. package/assets/icons/small/flight-tickets.svg +17 -0
  406. package/assets/icons/small/food--light.svg +15 -0
  407. package/assets/icons/small/food.svg +15 -0
  408. package/assets/icons/small/from-a-to-b--light.svg +21 -0
  409. package/assets/icons/small/from-a-to-b.svg +23 -0
  410. package/assets/icons/small/google-plus.svg +1 -0
  411. package/assets/icons/small/hotel--light.svg +10 -0
  412. package/assets/icons/small/hotel.svg +11 -0
  413. package/assets/icons/small/in-flight-entertainment--light.svg +10 -0
  414. package/assets/icons/small/in-flight-entertainment.svg +10 -0
  415. package/assets/icons/small/info--light.svg +4 -0
  416. package/assets/icons/small/info--outlined.svg +4 -0
  417. package/assets/icons/small/info.svg +4 -0
  418. package/assets/icons/small/instagram.svg +14 -0
  419. package/assets/icons/small/linkedin.svg +18 -0
  420. package/assets/icons/small/lounge--light.svg +18 -0
  421. package/assets/icons/small/lounge.svg +18 -0
  422. package/assets/icons/small/mail--light.svg +9 -0
  423. package/assets/icons/small/mail.svg +9 -0
  424. package/assets/icons/small/mobile--light.svg +8 -0
  425. package/assets/icons/small/mobile.svg +8 -0
  426. package/assets/icons/small/my-profile--light.svg +14 -0
  427. package/assets/icons/small/my-profile-female--light.svg +49 -0
  428. package/assets/icons/small/my-profile-female.svg +48 -0
  429. package/assets/icons/small/my-profile-male--light.svg +49 -0
  430. package/assets/icons/small/my-profile-male.svg +50 -0
  431. package/assets/icons/small/my-profile.svg +14 -0
  432. package/assets/icons/small/new-airplanes--light.svg +14 -0
  433. package/assets/icons/small/new-airplanes.svg +14 -0
  434. package/assets/icons/small/personnel--light.svg +14 -0
  435. package/assets/icons/small/personnel.svg +14 -0
  436. package/assets/icons/small/pintrest.svg +1 -0
  437. package/assets/icons/small/premium--light.svg +17 -0
  438. package/assets/icons/small/premium.svg +17 -0
  439. package/assets/icons/small/print.svg +14 -0
  440. package/assets/icons/small/reddit.svg +1 -0
  441. package/assets/icons/small/rewards--light.svg +19 -0
  442. package/assets/icons/small/rewards-fast-track.svg +17 -0
  443. package/assets/icons/small/rewards-luggage.svg +22 -0
  444. package/assets/icons/small/rewards-seat.svg +22 -0
  445. package/assets/icons/small/rewards.svg +19 -0
  446. package/assets/icons/small/route-network--light.svg +25 -0
  447. package/assets/icons/small/route-network.svg +25 -0
  448. package/assets/icons/small/search--light.svg +16 -0
  449. package/assets/icons/small/search.svg +16 -0
  450. package/assets/icons/small/seat-reservation--light.svg +14 -0
  451. package/assets/icons/small/seat-reservation.svg +14 -0
  452. package/assets/icons/small/skis--light.svg +24 -0
  453. package/assets/icons/small/skis.svg +24 -0
  454. package/assets/icons/small/special-needs--light.svg +16 -0
  455. package/assets/icons/small/special-needs.svg +16 -0
  456. package/assets/icons/small/sun--light.svg +17 -0
  457. package/assets/icons/small/sun.svg +19 -0
  458. package/assets/icons/small/transit-stop--light.svg +19 -0
  459. package/assets/icons/small/transit-stop.svg +21 -0
  460. package/assets/icons/small/trash--light.svg +7 -0
  461. package/assets/icons/small/trash.svg +7 -0
  462. package/assets/icons/small/travel-deals--light.svg +9 -0
  463. package/assets/icons/small/travel-deals.svg +9 -0
  464. package/assets/icons/small/twitter.svg +17 -0
  465. package/assets/icons/small/type-asia--light.svg +20 -0
  466. package/assets/icons/small/type-asia.svg +20 -0
  467. package/assets/icons/small/type-city-vibes--light.svg +10 -0
  468. package/assets/icons/small/type-city-vibes.svg +10 -0
  469. package/assets/icons/small/type-greece--light.svg +22 -0
  470. package/assets/icons/small/type-greece.svg +22 -0
  471. package/assets/icons/small/type-norway--light.svg +15 -0
  472. package/assets/icons/small/type-norway.svg +15 -0
  473. package/assets/icons/small/type-scandinavia--light.svg +17 -0
  474. package/assets/icons/small/type-scandinavia.svg +35 -0
  475. package/assets/icons/small/type-shopping--light.svg +13 -0
  476. package/assets/icons/small/type-shopping.svg +13 -0
  477. package/assets/icons/small/type-skiing--light.svg +18 -0
  478. package/assets/icons/small/type-skiing.svg +18 -0
  479. package/assets/icons/small/type-spain--light.svg +12 -0
  480. package/assets/icons/small/type-spain.svg +12 -0
  481. package/assets/icons/small/type-sun-and-sea--light.svg +59 -0
  482. package/assets/icons/small/type-sun-and-sea.svg +59 -0
  483. package/assets/icons/small/type-usa--light.svg +24 -0
  484. package/assets/icons/small/type-usa.svg +24 -0
  485. package/assets/icons/small/wifi--light.svg +17 -0
  486. package/assets/icons/small/wifi.svg +17 -0
  487. package/assets/icons/small/youtube.svg +11 -0
  488. package/assets/icons/tablet-landscape.svg +12 -0
  489. package/assets/icons/tablet-portrait.svg +12 -0
  490. package/assets/icons/upgrade.svg +8 -0
  491. package/assets/icons/weather/humidity.svg +1 -0
  492. package/assets/icons/weather/sun.svg +1 -0
  493. package/assets/icons/weather/sunrise.svg +1 -0
  494. package/assets/icons/weather/sunset.svg +1 -0
  495. package/assets/icons/weather/temperature.svg +1 -0
  496. package/assets/icons/weather/weather--cloud.svg +1 -0
  497. package/assets/icons/weather/weather--rain-sun.svg +1 -0
  498. package/assets/icons/weather/weather--rain.svg +1 -0
  499. package/assets/icons/weather/weather--storm.svg +1 -0
  500. package/assets/icons/weather/weather--sun-cloud.svg +1 -0
  501. package/assets/icons/weather/weather--sun.svg +1 -0
  502. package/assets/images/cloud-1.svg +1 -0
  503. package/assets/images/logo--mobile.svg +50 -0
  504. package/assets/images/logo.svg +135 -0
  505. package/assets/images/slider-bar.svg +7 -0
  506. package/assets/images/slider-thumb-disabled.svg +19 -0
  507. package/assets/images/slider-thumb.svg +14 -0
  508. package/bundles/norwegian-core-components.umd.js +11898 -0
  509. package/bundles/norwegian-core-components.umd.js.map +1 -0
  510. package/esm2015/lib/components/accordion/accordion.component.js +118 -0
  511. package/esm2015/lib/components/accordion/accordion.module.js +15 -0
  512. package/esm2015/lib/components/accordion/index.js +3 -0
  513. package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +583 -0
  514. package/esm2015/lib/components/airport-select/airport-select.component.js +400 -0
  515. package/esm2015/lib/components/airport-select/airport-select.module.js +27 -0
  516. package/esm2015/lib/components/airport-select/index.js +4 -0
  517. package/esm2015/lib/components/airport-select/models/airport.model.js +2 -0
  518. package/esm2015/lib/components/airport-select/models/results-labels.model.js +3 -0
  519. package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +34 -0
  520. package/esm2015/lib/components/airport-select/services/airport-select.service.js +29 -0
  521. package/esm2015/lib/components/autocomplete/autocomplete.component.js +265 -0
  522. package/esm2015/lib/components/autocomplete/autocomplete.module.js +26 -0
  523. package/esm2015/lib/components/autocomplete/index.js +4 -0
  524. package/esm2015/lib/components/autocomplete/models/autocomplete.model.js +2 -0
  525. package/esm2015/lib/components/backdrop/backdrop.component.js +54 -0
  526. package/esm2015/lib/components/backdrop/backdrop.module.js +17 -0
  527. package/esm2015/lib/components/backdrop/index.js +3 -0
  528. package/esm2015/lib/components/box/box.component.js +61 -0
  529. package/esm2015/lib/components/box/box.module.js +14 -0
  530. package/esm2015/lib/components/box/index.js +3 -0
  531. package/esm2015/lib/components/button/button.component.js +140 -0
  532. package/esm2015/lib/components/button/button.module.js +15 -0
  533. package/esm2015/lib/components/button/index.js +3 -0
  534. package/esm2015/lib/components/checkbox/checkbox.component.js +125 -0
  535. package/esm2015/lib/components/checkbox/checkbox.module.js +15 -0
  536. package/esm2015/lib/components/checkbox/index.js +3 -0
  537. package/esm2015/lib/components/chip/chip.component.js +50 -0
  538. package/esm2015/lib/components/chip/chip.module.js +17 -0
  539. package/esm2015/lib/components/chip/index.js +3 -0
  540. package/esm2015/lib/components/container/container.component.js +47 -0
  541. package/esm2015/lib/components/container/container.module.js +14 -0
  542. package/esm2015/lib/components/container/index.js +3 -0
  543. package/esm2015/lib/components/continue/continue.component.js +173 -0
  544. package/esm2015/lib/components/continue/continue.module.js +23 -0
  545. package/esm2015/lib/components/continue/index.js +3 -0
  546. package/esm2015/lib/components/cover/cover.component.js +61 -0
  547. package/esm2015/lib/components/cover/cover.module.js +16 -0
  548. package/esm2015/lib/components/cover/index.js +3 -0
  549. package/esm2015/lib/components/datepicker/calendar/calendar-date.model.js +2 -0
  550. package/esm2015/lib/components/datepicker/calendar/calendar.component.js +560 -0
  551. package/esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js +6 -0
  552. package/esm2015/lib/components/datepicker/calendar/models/day.model.js +2 -0
  553. package/esm2015/lib/components/datepicker/calendar/models/select-option.model.js +2 -0
  554. package/esm2015/lib/components/datepicker/calendar/models/week.model.js +2 -0
  555. package/esm2015/lib/components/datepicker/datepicker.component.js +511 -0
  556. package/esm2015/lib/components/datepicker/datepicker.module.js +34 -0
  557. package/esm2015/lib/components/datepicker/index.js +5 -0
  558. package/esm2015/lib/components/datepicker/services/calendar.service.js +217 -0
  559. package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +306 -0
  560. package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +22 -0
  561. package/esm2015/lib/components/datepicker-combo/index.js +3 -0
  562. package/esm2015/lib/components/dropdown/dropdown.component.js +146 -0
  563. package/esm2015/lib/components/dropdown/dropdown.module.js +21 -0
  564. package/esm2015/lib/components/dropdown/index.js +3 -0
  565. package/esm2015/lib/components/filter/enums/trip-type.enum.js +8 -0
  566. package/esm2015/lib/components/filter/filter.component.js +1100 -0
  567. package/esm2015/lib/components/filter/filter.module.js +44 -0
  568. package/esm2015/lib/components/filter/index.js +4 -0
  569. package/esm2015/lib/components/grid/col/col.component.js +47 -0
  570. package/esm2015/lib/components/grid/grid.component.js +55 -0
  571. package/esm2015/lib/components/grid/grid.module.js +15 -0
  572. package/esm2015/lib/components/grid/index.js +4 -0
  573. package/esm2015/lib/components/icon/icon.component.js +42 -0
  574. package/esm2015/lib/components/icon/icon.module.js +17 -0
  575. package/esm2015/lib/components/icon/index.js +3 -0
  576. package/esm2015/lib/components/icon-list/icon-list.component.js +46 -0
  577. package/esm2015/lib/components/icon-list/icon-list.model.js +2 -0
  578. package/esm2015/lib/components/icon-list/icon-list.module.js +15 -0
  579. package/esm2015/lib/components/icon-list/index.js +4 -0
  580. package/esm2015/lib/components/index.js +49 -0
  581. package/esm2015/lib/components/info/index.js +4 -0
  582. package/esm2015/lib/components/info/info.component.js +81 -0
  583. package/esm2015/lib/components/info/info.module.js +21 -0
  584. package/esm2015/lib/components/info/models/info.model.js +2 -0
  585. package/esm2015/lib/components/input/index.js +3 -0
  586. package/esm2015/lib/components/input/input.component.js +139 -0
  587. package/esm2015/lib/components/input/input.module.js +16 -0
  588. package/esm2015/lib/components/journey/index.js +3 -0
  589. package/esm2015/lib/components/journey/journey.component.js +122 -0
  590. package/esm2015/lib/components/journey/journey.module.js +19 -0
  591. package/esm2015/lib/components/journey/models/journey-flight.model.js +2 -0
  592. package/esm2015/lib/components/journey/models/journey.model.js +2 -0
  593. package/esm2015/lib/components/journey-availability/index.js +3 -0
  594. package/esm2015/lib/components/journey-availability/journey-availability.component.js +125 -0
  595. package/esm2015/lib/components/journey-availability/journey-availability.module.js +26 -0
  596. package/esm2015/lib/components/journey-availability-list/enums/availability-sort-option.enum.js +7 -0
  597. package/esm2015/lib/components/journey-availability-list/index.js +3 -0
  598. package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +175 -0
  599. package/esm2015/lib/components/journey-availability-list/journey-availability-list.module.js +23 -0
  600. package/esm2015/lib/components/journey-selection/index.js +6 -0
  601. package/esm2015/lib/components/journey-selection/journey-selection.component.js +110 -0
  602. package/esm2015/lib/components/journey-selection/journey-selection.module.js +24 -0
  603. package/esm2015/lib/components/journey-selection/models/journey-selection-collapsed.model.js +2 -0
  604. package/esm2015/lib/components/journey-selection/models/journey-selection-common.model.js +2 -0
  605. package/esm2015/lib/components/journey-selection/models/journey-selection-expanded.model.js +2 -0
  606. package/esm2015/lib/components/journey-selection/models/journey-selection.model.js +2 -0
  607. package/esm2015/lib/components/journey-stopover/index.js +3 -0
  608. package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +121 -0
  609. package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +19 -0
  610. package/esm2015/lib/components/journey-stopover/models/stopover-time.model.js +2 -0
  611. package/esm2015/lib/components/list/index.js +4 -0
  612. package/esm2015/lib/components/list/list-item/list-item.component.js +56 -0
  613. package/esm2015/lib/components/list/list.component.js +75 -0
  614. package/esm2015/lib/components/list/list.module.js +15 -0
  615. package/esm2015/lib/components/modal/index.js +3 -0
  616. package/esm2015/lib/components/modal/modal.component.js +131 -0
  617. package/esm2015/lib/components/modal/modal.module.js +25 -0
  618. package/esm2015/lib/components/number-field/index.js +3 -0
  619. package/esm2015/lib/components/number-field/number-field.component.js +118 -0
  620. package/esm2015/lib/components/number-field/number-field.module.js +24 -0
  621. package/esm2015/lib/components/page-footer/index.js +3 -0
  622. package/esm2015/lib/components/page-footer/page-footer.component.js +49 -0
  623. package/esm2015/lib/components/page-footer/page-footer.module.js +16 -0
  624. package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +24 -0
  625. package/esm2015/lib/components/page-header/index.js +5 -0
  626. package/esm2015/lib/components/page-header/page-header.component.js +119 -0
  627. package/esm2015/lib/components/page-header/page-header.module.js +18 -0
  628. package/esm2015/lib/components/page-header/search/search.component.js +47 -0
  629. package/esm2015/lib/components/passenger-select/enums/passenger-type.enum.js +7 -0
  630. package/esm2015/lib/components/passenger-select/index.js +5 -0
  631. package/esm2015/lib/components/passenger-select/models/passengers.model.js +2 -0
  632. package/esm2015/lib/components/passenger-select/passenger-select.component.js +204 -0
  633. package/esm2015/lib/components/passenger-select/passenger-select.module.js +19 -0
  634. package/esm2015/lib/components/phone-number/index.js +3 -0
  635. package/esm2015/lib/components/phone-number/phone-number.component.js +115 -0
  636. package/esm2015/lib/components/phone-number/phone-number.module.js +27 -0
  637. package/esm2015/lib/components/premium-toggle/index.js +3 -0
  638. package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +66 -0
  639. package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +19 -0
  640. package/esm2015/lib/components/radio/index.js +3 -0
  641. package/esm2015/lib/components/radio/radio.component.js +79 -0
  642. package/esm2015/lib/components/radio/radio.module.js +15 -0
  643. package/esm2015/lib/components/select/index.js +6 -0
  644. package/esm2015/lib/components/select/models/select-option.model.js +2 -0
  645. package/esm2015/lib/components/select/optgroup/optgroup.component.js +31 -0
  646. package/esm2015/lib/components/select/option/option.component.js +29 -0
  647. package/esm2015/lib/components/select/select.component.js +316 -0
  648. package/esm2015/lib/components/select/select.module.js +21 -0
  649. package/esm2015/lib/components/simple-list/index.js +3 -0
  650. package/esm2015/lib/components/simple-list/simple-list.component.js +42 -0
  651. package/esm2015/lib/components/simple-list/simple-list.module.js +14 -0
  652. package/esm2015/lib/components/slide-toggle/index.js +3 -0
  653. package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +105 -0
  654. package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +20 -0
  655. package/esm2015/lib/components/slider/index.js +3 -0
  656. package/esm2015/lib/components/slider/slider.component.js +447 -0
  657. package/esm2015/lib/components/slider/slider.module.js +19 -0
  658. package/esm2015/lib/components/sort/index.js +3 -0
  659. package/esm2015/lib/components/sort/sort.component.js +87 -0
  660. package/esm2015/lib/components/sort/sort.module.js +23 -0
  661. package/esm2015/lib/components/spinner/index.js +3 -0
  662. package/esm2015/lib/components/spinner/spinner.component.js +57 -0
  663. package/esm2015/lib/components/spinner/spinner.module.js +14 -0
  664. package/esm2015/lib/components/subsidy-discount/index.js +4 -0
  665. package/esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js +2 -0
  666. package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +101 -0
  667. package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +23 -0
  668. package/esm2015/lib/components/suggestions/index.js +3 -0
  669. package/esm2015/lib/components/suggestions/suggestions.component.js +40 -0
  670. package/esm2015/lib/components/suggestions/suggestions.module.js +19 -0
  671. package/esm2015/lib/components/tab-group/index.js +4 -0
  672. package/esm2015/lib/components/tab-group/tab/tab.component.js +123 -0
  673. package/esm2015/lib/components/tab-group/tab-group.component.js +85 -0
  674. package/esm2015/lib/components/tab-group/tab-group.module.js +20 -0
  675. package/esm2015/lib/components/table/column/column.component.js +17 -0
  676. package/esm2015/lib/components/table/column-group/column-group.component.js +34 -0
  677. package/esm2015/lib/components/table/index.js +11 -0
  678. package/esm2015/lib/components/table/services/table.service.js +20 -0
  679. package/esm2015/lib/components/table/table-body/table-body.component.js +27 -0
  680. package/esm2015/lib/components/table/table-foot/table-foot.component.js +27 -0
  681. package/esm2015/lib/components/table/table-head/table-head.component.js +27 -0
  682. package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +15 -0
  683. package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +15 -0
  684. package/esm2015/lib/components/table/table-row/table-row.component.js +27 -0
  685. package/esm2015/lib/components/table/table.component.js +29 -0
  686. package/esm2015/lib/components/table/table.module.js +45 -0
  687. package/esm2015/lib/components/textarea/index.js +3 -0
  688. package/esm2015/lib/components/textarea/textarea.component.js +73 -0
  689. package/esm2015/lib/components/textarea/textarea.module.js +20 -0
  690. package/esm2015/lib/components/toggle/index.js +3 -0
  691. package/esm2015/lib/components/toggle/models/options.model.js +3 -0
  692. package/esm2015/lib/components/toggle/toggle.component.js +77 -0
  693. package/esm2015/lib/components/toggle/toggle.module.js +22 -0
  694. package/esm2015/lib/components/trip-summary/index.js +3 -0
  695. package/esm2015/lib/components/trip-summary/trip-summary.component.js +152 -0
  696. package/esm2015/lib/components/trip-summary/trip-summary.module.js +23 -0
  697. package/esm2015/lib/components/weather-icon/index.js +3 -0
  698. package/esm2015/lib/components/weather-icon/weather-icon.component.js +56 -0
  699. package/esm2015/lib/components/weather-icon/weather-icon.module.js +14 -0
  700. package/esm2015/lib/core/base/nas-component.base.js +48 -0
  701. package/esm2015/lib/core/decorators/debounce.decorator.js +12 -0
  702. package/esm2015/lib/core/directives/index.js +3 -0
  703. package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +75 -0
  704. package/esm2015/lib/core/directives/nas-class/nas-class.module.js +17 -0
  705. package/esm2015/lib/core/extensions/html-element.extension.js +31 -0
  706. package/esm2015/lib/core/index.js +5 -0
  707. package/esm2015/lib/core/models/abandoned-basket-item.model.js +2 -0
  708. package/esm2015/lib/core/models/animate.model.js +2 -0
  709. package/esm2015/lib/core/models/class.model.js +2 -0
  710. package/esm2015/lib/core/models/index.js +7 -0
  711. package/esm2015/lib/core/models/link.model.js +2 -0
  712. package/esm2015/lib/core/models/position.model.js +2 -0
  713. package/esm2015/lib/core/models/utc-date.model.js +40 -0
  714. package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +55 -0
  715. package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +47 -0
  716. package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +41 -0
  717. package/esm2015/lib/core/services/date/date-compare.enum.js +7 -0
  718. package/esm2015/lib/core/services/date/date-helper.service.js +196 -0
  719. package/esm2015/lib/core/services/device/device-helper.service.js +43 -0
  720. package/esm2015/lib/core/services/geolocation/geolocation-state.enum.js +8 -0
  721. package/esm2015/lib/core/services/geolocation/geolocation.service.js +60 -0
  722. package/esm2015/lib/core/services/index.js +10 -0
  723. package/esm2015/lib/core/services/language/language-helper.service.js +162 -0
  724. package/esm2015/lib/core/services/sort/sort.service.js +19 -0
  725. package/esm2015/lib/core/services/viewport/viewport.service.js +29 -0
  726. package/esm2015/lib/index.js +5 -0
  727. package/esm2015/lib/services/get-position.service.js +21 -0
  728. package/esm2015/lib/services/index.js +2 -0
  729. package/esm2015/lib/shared/index.js +2 -0
  730. package/esm2015/lib/shared/models/flight-details.js +3 -0
  731. package/esm2015/lib/shared/models/index.js +5 -0
  732. package/esm2015/lib/shared/models/journey-availability-sort.model.js +2 -0
  733. package/esm2015/lib/shared/models/journey-availability.model.js +2 -0
  734. package/esm2015/lib/shared/models/journey-details.model.js +2 -0
  735. package/esm2015/lib/shared/models/journey-duration.model.js +2 -0
  736. package/esm2015/lib/shared/models/journey-stopover.model.js +2 -0
  737. package/esm2015/lib/shared/models/journey-transit-info.model.js +2 -0
  738. package/esm2015/lib/shared/models/operating-carrier.model.js +2 -0
  739. package/esm2015/lib/shared/models/sort-option.model.js +2 -0
  740. package/esm2015/lib/shared/models/sort.model.js +2 -0
  741. package/esm2015/lib/shared/models/trip-item-details.model.js +2 -0
  742. package/esm2015/lib/shared/models/trip-summary-details.model.js +2 -0
  743. package/esm2015/lib/shared/models/trip-summary.model.js +2 -0
  744. package/esm2015/norwegian-core-components.js +12 -0
  745. package/esm2015/public_api.js +2 -0
  746. package/fesm2015/norwegian-core-components.js +10595 -0
  747. package/fesm2015/norwegian-core-components.js.map +1 -0
  748. package/lib/components/accordion/accordion.component.d.ts +205 -0
  749. package/lib/components/accordion/accordion.module.d.ts +2 -0
  750. package/lib/components/accordion/index.d.ts +2 -0
  751. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +94 -0
  752. package/lib/components/airport-select/airport-select.component.d.ts +256 -0
  753. package/lib/components/airport-select/airport-select.module.d.ts +2 -0
  754. package/lib/components/airport-select/index.d.ts +3 -0
  755. package/lib/components/airport-select/models/airport.model.d.ts +10 -0
  756. package/lib/components/airport-select/models/results-labels.model.d.ts +7 -0
  757. package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +7 -0
  758. package/lib/components/airport-select/services/airport-select.service.d.ts +5 -0
  759. package/lib/components/autocomplete/autocomplete.component.d.ts +115 -0
  760. package/lib/components/autocomplete/autocomplete.module.d.ts +2 -0
  761. package/lib/components/autocomplete/index.d.ts +3 -0
  762. package/lib/components/autocomplete/models/autocomplete.model.d.ts +5 -0
  763. package/lib/components/backdrop/backdrop.component.d.ts +32 -0
  764. package/lib/components/backdrop/backdrop.module.d.ts +2 -0
  765. package/lib/components/backdrop/index.d.ts +2 -0
  766. package/lib/components/box/box.component.d.ts +69 -0
  767. package/lib/components/box/box.module.d.ts +2 -0
  768. package/lib/components/box/index.d.ts +2 -0
  769. package/lib/components/button/button.component.d.ts +238 -0
  770. package/lib/components/button/button.module.d.ts +2 -0
  771. package/lib/components/button/index.d.ts +2 -0
  772. package/lib/components/checkbox/checkbox.component.d.ts +119 -0
  773. package/lib/components/checkbox/checkbox.module.d.ts +2 -0
  774. package/lib/components/checkbox/index.d.ts +2 -0
  775. package/lib/components/chip/chip.component.d.ts +61 -0
  776. package/lib/components/chip/chip.module.d.ts +2 -0
  777. package/lib/components/chip/index.d.ts +2 -0
  778. package/lib/components/container/container.component.d.ts +47 -0
  779. package/lib/components/container/container.module.d.ts +2 -0
  780. package/lib/components/container/index.d.ts +2 -0
  781. package/lib/components/continue/continue.component.d.ts +154 -0
  782. package/lib/components/continue/continue.module.d.ts +2 -0
  783. package/lib/components/continue/index.d.ts +2 -0
  784. package/lib/components/cover/cover.component.d.ts +112 -0
  785. package/lib/components/cover/cover.module.d.ts +2 -0
  786. package/lib/components/cover/index.d.ts +2 -0
  787. package/lib/components/datepicker/calendar/calendar-date.model.d.ts +5 -0
  788. package/lib/components/datepicker/calendar/calendar.component.d.ts +156 -0
  789. package/lib/components/datepicker/calendar/enums/week-start.enum.d.ts +4 -0
  790. package/lib/components/datepicker/calendar/models/day.model.d.ts +9 -0
  791. package/lib/components/datepicker/calendar/models/select-option.model.d.ts +4 -0
  792. package/lib/components/datepicker/calendar/models/week.model.d.ts +5 -0
  793. package/lib/components/datepicker/datepicker.component.d.ts +235 -0
  794. package/lib/components/datepicker/datepicker.module.d.ts +2 -0
  795. package/lib/components/datepicker/index.d.ts +4 -0
  796. package/lib/components/datepicker/services/calendar.service.d.ts +24 -0
  797. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +246 -0
  798. package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +2 -0
  799. package/lib/components/datepicker-combo/index.d.ts +2 -0
  800. package/lib/components/dropdown/dropdown.component.d.ts +64 -0
  801. package/lib/components/dropdown/dropdown.module.d.ts +2 -0
  802. package/lib/components/dropdown/index.d.ts +2 -0
  803. package/lib/components/filter/enums/trip-type.enum.d.ts +6 -0
  804. package/lib/components/filter/filter.component.d.ts +693 -0
  805. package/lib/components/filter/filter.module.d.ts +2 -0
  806. package/lib/components/filter/index.d.ts +3 -0
  807. package/lib/components/grid/col/col.component.d.ts +37 -0
  808. package/lib/components/grid/grid.component.d.ts +61 -0
  809. package/lib/components/grid/grid.module.d.ts +2 -0
  810. package/lib/components/grid/index.d.ts +3 -0
  811. package/lib/components/icon/icon.component.d.ts +57 -0
  812. package/lib/components/icon/icon.module.d.ts +2 -0
  813. package/lib/components/icon/index.d.ts +2 -0
  814. package/lib/components/icon-list/icon-list.component.d.ts +41 -0
  815. package/lib/components/icon-list/icon-list.model.d.ts +7 -0
  816. package/lib/components/icon-list/icon-list.module.d.ts +2 -0
  817. package/lib/components/icon-list/index.d.ts +3 -0
  818. package/lib/components/index.d.ts +48 -0
  819. package/lib/components/info/index.d.ts +3 -0
  820. package/lib/components/info/info.component.d.ts +71 -0
  821. package/lib/components/info/info.module.d.ts +2 -0
  822. package/lib/components/info/models/info.model.d.ts +7 -0
  823. package/lib/components/input/index.d.ts +2 -0
  824. package/lib/components/input/input.component.d.ts +163 -0
  825. package/lib/components/input/input.module.d.ts +2 -0
  826. package/lib/components/journey/index.d.ts +2 -0
  827. package/lib/components/journey/journey.component.d.ts +119 -0
  828. package/lib/components/journey/journey.module.d.ts +2 -0
  829. package/lib/components/journey/models/journey-flight.model.d.ts +10 -0
  830. package/lib/components/journey/models/journey.model.d.ts +5 -0
  831. package/lib/components/journey-availability/index.d.ts +2 -0
  832. package/lib/components/journey-availability/journey-availability.component.d.ts +90 -0
  833. package/lib/components/journey-availability/journey-availability.module.d.ts +2 -0
  834. package/lib/components/journey-availability-list/enums/availability-sort-option.enum.d.ts +5 -0
  835. package/lib/components/journey-availability-list/index.d.ts +2 -0
  836. package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +116 -0
  837. package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +2 -0
  838. package/lib/components/journey-selection/index.d.ts +5 -0
  839. package/lib/components/journey-selection/journey-selection.component.d.ts +70 -0
  840. package/lib/components/journey-selection/journey-selection.module.d.ts +2 -0
  841. package/lib/components/journey-selection/models/journey-selection-collapsed.model.d.ts +11 -0
  842. package/lib/components/journey-selection/models/journey-selection-common.model.d.ts +7 -0
  843. package/lib/components/journey-selection/models/journey-selection-expanded.model.d.ts +5 -0
  844. package/lib/components/journey-selection/models/journey-selection.model.d.ts +14 -0
  845. package/lib/components/journey-stopover/index.d.ts +2 -0
  846. package/lib/components/journey-stopover/journey-stopover.component.d.ts +132 -0
  847. package/lib/components/journey-stopover/journey-stopover.module.d.ts +2 -0
  848. package/lib/components/journey-stopover/models/stopover-time.model.d.ts +4 -0
  849. package/lib/components/list/index.d.ts +3 -0
  850. package/lib/components/list/list-item/list-item.component.d.ts +32 -0
  851. package/lib/components/list/list.component.d.ts +65 -0
  852. package/lib/components/list/list.module.d.ts +2 -0
  853. package/lib/components/modal/index.d.ts +2 -0
  854. package/lib/components/modal/modal.component.d.ts +119 -0
  855. package/lib/components/modal/modal.module.d.ts +2 -0
  856. package/lib/components/number-field/index.d.ts +2 -0
  857. package/lib/components/number-field/number-field.component.d.ts +96 -0
  858. package/lib/components/number-field/number-field.module.d.ts +2 -0
  859. package/lib/components/page-footer/index.d.ts +2 -0
  860. package/lib/components/page-footer/page-footer.component.d.ts +57 -0
  861. package/lib/components/page-footer/page-footer.module.d.ts +2 -0
  862. package/lib/components/page-header/hamburger/hamburger.component.d.ts +9 -0
  863. package/lib/components/page-header/index.d.ts +4 -0
  864. package/lib/components/page-header/page-header.component.d.ts +84 -0
  865. package/lib/components/page-header/page-header.module.d.ts +2 -0
  866. package/lib/components/page-header/search/search.component.d.ts +23 -0
  867. package/lib/components/passenger-select/enums/passenger-type.enum.d.ts +5 -0
  868. package/lib/components/passenger-select/index.d.ts +4 -0
  869. package/lib/components/passenger-select/models/passengers.model.d.ts +9 -0
  870. package/lib/components/passenger-select/passenger-select.component.d.ts +111 -0
  871. package/lib/components/passenger-select/passenger-select.module.d.ts +2 -0
  872. package/lib/components/phone-number/index.d.ts +2 -0
  873. package/lib/components/phone-number/phone-number.component.d.ts +278 -0
  874. package/lib/components/phone-number/phone-number.module.d.ts +2 -0
  875. package/lib/components/premium-toggle/index.d.ts +2 -0
  876. package/lib/components/premium-toggle/premium-toggle.component.d.ts +51 -0
  877. package/lib/components/premium-toggle/premium-toggle.module.d.ts +2 -0
  878. package/lib/components/radio/index.d.ts +2 -0
  879. package/lib/components/radio/radio.component.d.ts +115 -0
  880. package/lib/components/radio/radio.module.d.ts +2 -0
  881. package/lib/components/select/index.d.ts +5 -0
  882. package/lib/components/select/models/select-option.model.d.ts +4 -0
  883. package/lib/components/select/optgroup/optgroup.component.d.ts +22 -0
  884. package/lib/components/select/option/option.component.d.ts +21 -0
  885. package/lib/components/select/select.component.d.ts +156 -0
  886. package/lib/components/select/select.module.d.ts +2 -0
  887. package/lib/components/simple-list/index.d.ts +2 -0
  888. package/lib/components/simple-list/simple-list.component.d.ts +49 -0
  889. package/lib/components/simple-list/simple-list.module.d.ts +2 -0
  890. package/lib/components/slide-toggle/index.d.ts +2 -0
  891. package/lib/components/slide-toggle/slide-toggle.component.d.ts +60 -0
  892. package/lib/components/slide-toggle/slide-toggle.module.d.ts +2 -0
  893. package/lib/components/slider/index.d.ts +2 -0
  894. package/lib/components/slider/slider.component.d.ts +177 -0
  895. package/lib/components/slider/slider.module.d.ts +2 -0
  896. package/lib/components/sort/index.d.ts +2 -0
  897. package/lib/components/sort/sort.component.d.ts +47 -0
  898. package/lib/components/sort/sort.module.d.ts +2 -0
  899. package/lib/components/spinner/index.d.ts +2 -0
  900. package/lib/components/spinner/spinner.component.d.ts +58 -0
  901. package/lib/components/spinner/spinner.module.d.ts +2 -0
  902. package/lib/components/subsidy-discount/index.d.ts +3 -0
  903. package/lib/components/subsidy-discount/models/subsidy-discount.model.d.ts +4 -0
  904. package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +57 -0
  905. package/lib/components/subsidy-discount/subsidy-discount.module.d.ts +2 -0
  906. package/lib/components/suggestions/index.d.ts +2 -0
  907. package/lib/components/suggestions/suggestions.component.d.ts +30 -0
  908. package/lib/components/suggestions/suggestions.module.d.ts +2 -0
  909. package/lib/components/tab-group/index.d.ts +3 -0
  910. package/lib/components/tab-group/tab/tab.component.d.ts +84 -0
  911. package/lib/components/tab-group/tab-group.component.d.ts +30 -0
  912. package/lib/components/tab-group/tab-group.module.d.ts +2 -0
  913. package/lib/components/table/column/column.component.d.ts +3 -0
  914. package/lib/components/table/column-group/column-group.component.d.ts +12 -0
  915. package/lib/components/table/index.d.ts +10 -0
  916. package/lib/components/table/services/table.service.d.ts +5 -0
  917. package/lib/components/table/table-body/table-body.component.d.ts +12 -0
  918. package/lib/components/table/table-foot/table-foot.component.d.ts +12 -0
  919. package/lib/components/table/table-head/table-head.component.d.ts +12 -0
  920. package/lib/components/table/table-row/table-data/table-data.component.d.ts +2 -0
  921. package/lib/components/table/table-row/table-header/table-header.component.d.ts +2 -0
  922. package/lib/components/table/table-row/table-row.component.d.ts +12 -0
  923. package/lib/components/table/table.component.d.ts +21 -0
  924. package/lib/components/table/table.module.d.ts +2 -0
  925. package/lib/components/textarea/index.d.ts +2 -0
  926. package/lib/components/textarea/textarea.component.d.ts +121 -0
  927. package/lib/components/textarea/textarea.module.d.ts +2 -0
  928. package/lib/components/toggle/index.d.ts +2 -0
  929. package/lib/components/toggle/models/options.model.d.ts +6 -0
  930. package/lib/components/toggle/toggle.component.d.ts +183 -0
  931. package/lib/components/toggle/toggle.module.d.ts +2 -0
  932. package/lib/components/trip-summary/index.d.ts +2 -0
  933. package/lib/components/trip-summary/trip-summary.component.d.ts +173 -0
  934. package/lib/components/trip-summary/trip-summary.module.d.ts +2 -0
  935. package/lib/components/weather-icon/index.d.ts +2 -0
  936. package/lib/components/weather-icon/weather-icon.component.d.ts +51 -0
  937. package/lib/components/weather-icon/weather-icon.module.d.ts +2 -0
  938. package/lib/core/base/nas-component.base.d.ts +11 -0
  939. package/lib/core/decorators/debounce.decorator.d.ts +1 -0
  940. package/lib/core/directives/index.d.ts +2 -0
  941. package/lib/core/directives/nas-class/nas-class.directive.d.ts +11 -0
  942. package/lib/core/directives/nas-class/nas-class.module.d.ts +2 -0
  943. package/lib/core/extensions/html-element.extension.d.ts +6 -0
  944. package/lib/core/index.d.ts +4 -0
  945. package/lib/core/models/abandoned-basket-item.model.d.ts +14 -0
  946. package/lib/core/models/animate.model.d.ts +6 -0
  947. package/lib/core/models/class.model.d.ts +6 -0
  948. package/lib/core/models/index.d.ts +6 -0
  949. package/lib/core/models/link.model.d.ts +4 -0
  950. package/lib/core/models/position.model.d.ts +4 -0
  951. package/lib/core/models/utc-date.model.d.ts +13 -0
  952. package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +7 -0
  953. package/lib/core/services/animate-helper/animate-helper.service.d.ts +6 -0
  954. package/lib/core/services/bem-helper/bem-helper.service.d.ts +4 -0
  955. package/lib/core/services/date/date-compare.enum.d.ts +5 -0
  956. package/lib/core/services/date/date-helper.service.d.ts +19 -0
  957. package/lib/core/services/device/device-helper.service.d.ts +13 -0
  958. package/lib/core/services/geolocation/geolocation-state.enum.d.ts +6 -0
  959. package/lib/core/services/geolocation/geolocation.service.d.ts +6 -0
  960. package/lib/core/services/index.d.ts +9 -0
  961. package/lib/core/services/language/language-helper.service.d.ts +9 -0
  962. package/lib/core/services/sort/sort.service.d.ts +3 -0
  963. package/lib/core/services/viewport/viewport.service.d.ts +8 -0
  964. package/lib/index.d.ts +4 -0
  965. package/lib/services/get-position.service.d.ts +6 -0
  966. package/lib/services/index.d.ts +1 -0
  967. package/lib/shared/index.d.ts +1 -0
  968. package/lib/shared/models/flight-details.d.ts +22 -0
  969. package/lib/shared/models/index.d.ts +4 -0
  970. package/lib/shared/models/journey-availability-sort.model.d.ts +8 -0
  971. package/lib/shared/models/journey-availability.model.d.ts +25 -0
  972. package/lib/shared/models/journey-details.model.d.ts +8 -0
  973. package/lib/shared/models/journey-duration.model.d.ts +7 -0
  974. package/lib/shared/models/journey-stopover.model.d.ts +11 -0
  975. package/lib/shared/models/journey-transit-info.model.d.ts +5 -0
  976. package/lib/shared/models/operating-carrier.model.d.ts +4 -0
  977. package/lib/shared/models/sort-option.model.d.ts +11 -0
  978. package/lib/shared/models/sort.model.d.ts +10 -0
  979. package/lib/shared/models/trip-item-details.model.d.ts +12 -0
  980. package/lib/shared/models/trip-summary-details.model.d.ts +5 -0
  981. package/lib/shared/models/trip-summary.model.d.ts +4 -0
  982. package/norwegian-core-components.d.ts +11 -0
  983. package/norwegian-core-components.metadata.json +1 -0
  984. package/package.json +19 -0
  985. package/public_api.d.ts +1 -0
  986. package/styles/1__settings/_colors.scss +65 -0
  987. package/styles/1__settings/_mixins.scss +226 -0
  988. package/styles/1__settings/_type.scss +53 -0
  989. package/styles/1__settings/_vars.scss +62 -0
  990. package/styles/2__generic/_fonts.scss +99 -0
  991. package/styles/2__generic/_reset.scss +275 -0
  992. package/styles/3__base/_animations.scss +138 -0
  993. package/styles/3__base/_body.scss +23 -0
  994. package/styles/3__base/_fixes.scss +5 -0
  995. package/styles/3__base/_form.scss +18 -0
  996. package/styles/3__base/_grid.scss +115 -0
  997. package/styles/3__base/_heading.scss +110 -0
  998. package/styles/3__base/_hr.scss +30 -0
  999. package/styles/3__base/_input.scss +38 -0
  1000. package/styles/3__base/_link.scss +48 -0
  1001. package/styles/3__base/_table.scss +44 -0
  1002. package/styles/3__base/_type.scss +69 -0
  1003. package/styles/_helpers.scss +4 -0
  1004. package/styles/_index.scss +15 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"norwegian-core-components.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../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/accordion/accordion.component.ts","../../../projects/core-components/src/lib/components/icon/icon.component.ts","../../../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/airport-select.component.ts","../../../projects/core-components/src/lib/components/airport-select/services/airport-select-dropdown.service.ts","../../../projects/core-components/src/lib/components/airport-select/services/airport-select.service.ts","../../../projects/core-components/src/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.ts","../../../projects/core-components/src/lib/components/button/button.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/checkbox/checkbox.component.ts","../../../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.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.module.ts","../../../projects/core-components/src/lib/components/cover/cover.component.ts","../../../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/number-field/number-field.component.ts","../../../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/filter/filter.component.ts","../../../projects/core-components/src/lib/components/datepicker-combo/datepicker-combo.component.ts","../../../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/datepicker.component.ts","../../../projects/core-components/src/lib/components/backdrop/backdrop.component.ts","../../../projects/core-components/src/lib/components/backdrop/backdrop.module.ts","../../../projects/core-components/src/lib/components/select/option/option.component.ts","../../../projects/core-components/src/lib/components/select/optgroup/optgroup.component.ts","../../../projects/core-components/src/lib/components/select/select.component.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.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/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.module.ts","../../../projects/core-components/src/lib/components/subsidy-discount/subsidy-discount.component.ts","../../../projects/core-components/src/lib/components/subsidy-discount/subsidy-discount.module.ts","../../../projects/core-components/src/lib/components/suggestions/suggestions.component.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/sort/sort.component.ts","../../../projects/core-components/src/lib/components/radio/radio.component.ts","../../../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/col/col.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/info/info.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/simple-list/simple-list.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/page-footer/page-footer.component.ts","../../../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/hamburger/hamburger.component.ts","../../../projects/core-components/src/lib/components/page-header/page-header.component.ts","../../../projects/core-components/src/lib/components/page-header/page-header.module.ts","../../../projects/core-components/src/lib/components/premium-toggle/premium-toggle.component.ts","../../../projects/core-components/src/lib/components/toggle/toggle.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/list/list.component.ts","../../../projects/core-components/src/lib/components/list/list-item/list-item.component.ts","../../../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-availability-list/journey-availability-list.component.ts","../../../projects/core-components/src/lib/components/journey-availability/journey-availability.component.ts","../../../projects/core-components/src/lib/components/journey/journey.component.ts","../../../projects/core-components/src/lib/components/journey/journey.module.ts","../../../projects/core-components/src/lib/components/trip-summary/trip-summary.component.ts","../../../projects/core-components/src/lib/components/journey-stopover/journey-stopover.component.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.module.ts","../../../projects/core-components/src/lib/components/tab-group/tab/tab.component.ts","../../../projects/core-components/src/lib/components/tab-group/tab-group.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/autocomplete/autocomplete.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/journey-selection/journey-selection.component.ts","../../../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.module.ts","../../../projects/core-components/src/lib/components/slider/slider.component.ts","../../../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/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-header/table-header.component.ts","../../../projects/core-components/src/lib/components/table/table-row/table-data/table-data.component.ts","../../../projects/core-components/src/lib/components/table/table-head/table-head.component.ts","../../../projects/core-components/src/lib/components/table/table-body/table-body.component.ts","../../../projects/core-components/src/lib/components/table/table-foot/table-foot.component.ts","../../../projects/core-components/src/lib/components/table/column-group/column-group.component.ts","../../../projects/core-components/src/lib/components/table/column/column.component.ts","../../../projects/core-components/src/lib/components/table/table.module.ts","../../../projects/core-components/src/lib/services/get-position.service.ts","../../../projects/core-components/src/norwegian-core-components.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","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, true, true) === 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 localePt from '@angular/common/locales/pt';\nimport localeEsAr from '@angular/common/locales/es-AR';\nimport localeEnCa from '@angular/common/locales/en-CA';\nimport localeFrCa from '@angular/common/locales/fr-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 localeFr from '@angular/common/locales/fr';\nimport localeEnIe from '@angular/common/locales/en-IE';\nimport localeIt from '@angular/common/locales/it';\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 frenchLanguageCode = 'fr';\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 'ar':\n this.languageCodeValue = 'es-AR';\n this.fallbackLanguageCodeValue = spanishLanguageCode;\n this.defaultCountryValue = 'AR';\n registerLocaleData(localeEsAr, this.languageCodeValue);\n break;\n case 'br':\n this.languageCodeValue = 'pt-BR';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'BR';\n registerLocaleData(localePt, this.languageCodeValue);\n break;\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 'fr-ca':\n this.languageCodeValue = 'fr-CA';\n this.fallbackLanguageCodeValue = frenchLanguageCode;\n this.defaultCountryValue = 'CA';\n registerLocaleData(localeFrCa, 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 'fr':\n this.languageCodeValue = frenchLanguageCode;\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'FR';\n registerLocaleData(localeFr, 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 'it':\n this.languageCodeValue = 'it';\n this.fallbackLanguageCodeValue = englishLanguageCode;\n this.defaultCountryValue = 'IT';\n registerLocaleData(localeIt, 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 as any);\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, EventEmitter, Output } 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 {\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 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 * @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\n /**\n * @description\n * Represent a accordion component.\n * Will initiate correct block style.\n */\n constructor() {\n super('nas-accordion');\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 ];\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","/**\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","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","/**\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 { FormGroup } 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: FormGroup;\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","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","import { Injectable } from '@angular/core';\n\nimport { AirportModel } from '../models/airport.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AirportSelectService {\n\n constructor() { }\n\n filter(airports: Array<AirportModel>, name: string): Array<AirportModel> {\n let result = new Array<AirportModel>();\n\n if (name && airports) {\n result = airports.filter(x => {\n return (x.displayName && x.displayName.toLowerCase().includes(name.toLowerCase())) ||\n (x.normalizedAirportName && x.normalizedAirportName.toLowerCase().includes(name.toLowerCase())) ||\n (x.code && x.code.toLowerCase().includes(name.toLowerCase())) ||\n (x.countryName && x.countryName.toLowerCase().includes(name.toLowerCase())) ||\n (x.airportName && x.airportName.toLowerCase().includes(name.toLowerCase()));\n });\n }\n\n if (result.length === 0) {\n result = airports;\n }\n\n return result;\n }\n}\n","/**\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 { FormGroup } 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: FormGroup;\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","/**\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","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","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 { FormGroup } 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: FormGroup;\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.outlined) && 'outlined',\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","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","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","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","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 * 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('', [this.exists(this.inline) && 'inline'])\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","/**\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 { FormGroup } 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: FormGroup;\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","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","/**\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 { FormGroup } 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: 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() 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 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 = 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 });\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 { this.inboundMonthChange.emit(month); }\n onOutboundMonthChange(month: UtcDate): void { this.outboundMonthChange.emit(month); }\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.airportSelect.origin\n && this.airportSelect.origin.code\n && this.airportSelect.destination\n && this.airportSelect.destination.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 => {\n return unique.some(x => x.originCode.toLowerCase() === airport.code.toLowerCase());\n });\n\n const latestSearchesDestination = airports.filter(airport => {\n return unique.some(x => x.destinationCode.toLowerCase() === airport.code.toLowerCase());\n });\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","/**\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} 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 } from 'rxjs';\nimport { CalendarDateModel } from '../datepicker/calendar/calendar-date.model';\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 {\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\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 const outbound = this.nasFormGroup.get(this.nasFormControlNameOutbound).value as CalendarDateModel;\n this.outboundSelectedDate = outbound.date;\n }\n if (this.nasFormControlNameInbound) {\n const inbound = this.nasFormGroup.get(this.nasFormControlNameInbound).value as CalendarDateModel;\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 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","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 { FormGroup } 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: FormGroup;\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","/**\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 { FormGroup } 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: 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() 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.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.activeDate), 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","/**\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","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","/**\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","/**\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","/**\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 { FormControl, FormGroup } 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 FormControl();\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 * 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 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: FormGroup;\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 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.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","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 } 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 {\n private enableValue: boolean;\n private loadingTimeout: any;\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 * 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.setEnabled(enable);\n }\n\n constructor(private renderer: Renderer2) {\n super('nas-spinner');\n }\n\n private setEnabled(enabled: boolean) {\n if (enabled) {\n this.loadingTimeout = setTimeout(() => {\n this.enableValue = true;\n this.renderer.addClass(document.body, 'block-scrolling');\n }, 500);\n } else {\n clearTimeout(this.loadingTimeout);\n this.enableValue = false;\n this.renderer.removeClass(document.body, 'block-scrolling');\n }\n }\n}\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","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 { FormGroup } 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: 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() 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 (groupBookingControl.value !== this.isGroupBooking) {\n groupBookingControl.patchValue(this.isGroupBooking);\n }\n }\n }\n}\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 { 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","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","/**\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","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","/**\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","import { FormGroup } 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: FormGroup;\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","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 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 @Input() nopadding: boolean;\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.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 ];\n }\n}\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 * 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 } = 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 ]);\n }\n}\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","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 * 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 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}\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';\n\n@NgModule({\n imports: [\n CommonModule,\n NasClassModule,\n AccordionModule,\n IconModule\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 { FormGroup } 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\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: FormGroup;\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 get inputId(): string {\n return this.id ? this.id : `nas-input-${this.componentId}`;\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","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","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","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","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","/**\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","/**\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 * 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 * 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');\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');\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","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, 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","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\n\nimport { FormGroup } 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: FormGroup;\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 ]);\n }\n}\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","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","/**\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","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, 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","/**\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","/**\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","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","/**\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","/**\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","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","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","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","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 { FormGroup } 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: FormGroup;\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","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 { FormGroup } 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: FormGroup;\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","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 { FormGroup } 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: FormGroup;\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","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","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 { FormGroup } 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: FormGroup;\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","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 { FormGroup } 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 | Beta\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 if (this.isViewInit) {\n this.isBubbleActive = true;\n this.setBubbleStyle('slider');\n this.isBubbleActive = false;\n }\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 if (this.isViewInit) {\n this.isBubbleActive = true;\n this.setBubbleStyle('range-slider-min');\n this.isBubbleActive = false;\n }\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 if (this.isViewInit) {\n this.isBubbleActive = true;\n this.setBubbleStyle('range-slider-max');\n this.isBubbleActive = false;\n }\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 = 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 * 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 {\n if (this.minLabelValue) {\n return this.minLabelValue;\n } else {\n return this.min?.toString();\n }\n }\n set minLabel(value: string) {\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 {\n if (this.maxLabelValue) {\n return this.maxLabelValue;\n } else {\n return this.max?.toString();\n }\n }\n set maxLabel(value: string) {\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 = 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: FormGroup;\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 bubbleRangeValue: number;\n isIEOrEdge = /msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent);\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;\n\n clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n this.isBubbleActiveValue = false;\n }, 250);\n } else {\n this.isBubbleActiveValue = true;\n }\n }\n\n get bubbleValue(): string {\n if (this.value === this.min) {\n return this.minLabelValue;\n } else if (this.value === this.max) {\n return this.maxLabelValue;\n } else if (!this.value) {\n return null;\n } else {\n return this.value.toString();\n }\n }\n\n get middleLabel(): string {\n const sum = parseInt(this.min?.toString(), 10) + parseInt(this.max?.toString(), 10);\n return (sum / 2).toString();\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;\n private maxLabelValue: string;\n private suffixLabelValue: string;\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 });\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 });\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 });\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\n event.stopPropagation();\n event.preventDefault();\n this.showBubble = true;\n\n let eventValue = Number(event.target.value);\n const mathMin = Math.min(eventValue, this.selectedMaxValue - this.minDiffRange);\n const mathMax = Math.max(eventValue, this.selectedMinValue + this.minDiffRange);\n\n switch (type) {\n case 'slider' :\n this.value = eventValue;\n break;\n case 'range-slider-min' :\n this.bubbleRangeValue = mathMin;\n eventValue = mathMin;\n this.selectedMinValue = eventValue;\n if ( eventValue >= this.selectedMaxValue - this.minDiffRange) {\n this.rangeMin.nativeElement.value = this.selectedMinValue.toString();\n }\n break;\n case 'range-slider-max' :\n this.bubbleRangeValue = mathMax;\n eventValue = mathMax;\n this.selectedMaxValue = eventValue;\n if ( eventValue <= this.selectedMinValue + this.minDiffRange) {\n this.rangeMax.nativeElement.value = this.selectedMaxValue.toString();\n }\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(type?: string) {\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 valueType = this.value;\n break;\n case 'range-slider-min':\n valueType = this.selectedMinValue;\n break;\n case 'range-slider-max':\n valueType = this.selectedMaxValue;\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","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","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) { return; }\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","/**\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","/**\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","/**\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","/**\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","/**\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","/**\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","/**\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","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","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\nexport {AirportSelectDropdownComponent as ɵb} from './lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component';\nexport {AirportSelectDropdownService as ɵd} from './lib/components/airport-select/services/airport-select-dropdown.service';\nexport {AirportSelectService as ɵc} from './lib/components/airport-select/services/airport-select.service';\nexport {CalendarService as ɵf} from './lib/components/datepicker/services/calendar.service';\nexport {TableService as ɵg} from './lib/components/table/services/table.service';\nexport {NasClassModule as ɵh,NasComponentBase as ɵa} from './lib/core';\nexport {Debounce as ɵe} from './lib/core/decorators/debounce.decorator';"],"names":["isDevMode","Injectable","Directive","Input","HostBinding","NgModule","CommonModule","registerLocaleData","localeEsAr","localePt","localeEnCa","localeFrCa","localeDa","localeDe","localeEs","localeFi","localeFr","localeEnIe","localeIt","localeEn","localeNo","localePl","localeSv","localeEnGb","Observable","EventEmitter","Component","ViewEncapsulation","Output","ViewChild","nextId","Inject","DOCUMENT","Subject","RouterModule","FormsModule","ReactiveFormsModule","HostListener","TripType","BehaviorSubject","ElementRef","ChangeDetectorRef","DatePipe","ViewChildren","ContentChildren","FormControl","Renderer2","PassengerType","DomSanitizer"],"mappings":"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"}