@norwegian/core-components 5.10.3 → 5.10.5

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.
@@ -4996,14 +4996,21 @@
4996
4996
  configurable: true
4997
4997
  });
4998
4998
  DatepickerComboComponent.prototype.ngOnInit = function () {
4999
+ var _this = this;
4999
5000
  if (this.nasFormGroup) {
5000
5001
  if (this.nasFormControlNameOutbound) {
5001
- var outbound = this.nasFormGroup.get(this.nasFormControlNameOutbound).value;
5002
- this.outboundSelectedDate = outbound.date;
5002
+ this.outboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameOutbound)
5003
+ .valueChanges
5004
+ .subscribe(function (outbound) {
5005
+ _this.outboundSelectedDate = outbound === null || outbound === void 0 ? void 0 : outbound.date;
5006
+ });
5003
5007
  }
5004
5008
  if (this.nasFormControlNameInbound) {
5005
- var inbound = this.nasFormGroup.get(this.nasFormControlNameInbound).value;
5006
- this.inboundSelectedDate = inbound.date;
5009
+ this.inboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameInbound)
5010
+ .valueChanges
5011
+ .subscribe(function (inbound) {
5012
+ _this.inboundSelectedDate = inbound === null || inbound === void 0 ? void 0 : inbound.date;
5013
+ });
5007
5014
  }
5008
5015
  }
5009
5016
  };
@@ -5052,6 +5059,10 @@
5052
5059
  return (!this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly))
5053
5060
  || this.exists(this.inboundDisabled);
5054
5061
  };
5062
+ DatepickerComboComponent.prototype.ngOnDestroy = function () {
5063
+ this.inboundValueChangesSubscription.unsubscribe();
5064
+ this.outboundValueChangesSubscription.unsubscribe();
5065
+ };
5055
5066
  DatepickerComboComponent.prototype.updateContainerWidth = function () {
5056
5067
  var containerOffsetWidth = this.container.nativeElement.offsetWidth;
5057
5068
  if (containerOffsetWidth > 0) {
@@ -5349,11 +5360,12 @@
5349
5360
 
5350
5361
  var CalendarComponent = /** @class */ (function (_super) {
5351
5362
  __extends(CalendarComponent, _super);
5352
- function CalendarComponent(dateService, datePipe, calendarService) {
5363
+ function CalendarComponent(dateService, datePipe, calendarService, renderer) {
5353
5364
  var _this = _super.call(this, 'nas-calendar') || this;
5354
5365
  _this.dateService = dateService;
5355
5366
  _this.datePipe = datePipe;
5356
5367
  _this.calendarService = calendarService;
5368
+ _this.renderer = renderer;
5357
5369
  _this.months = new Array();
5358
5370
  _this.weekdays = new Array();
5359
5371
  /**
@@ -5388,6 +5400,11 @@
5388
5400
  * When active date has been changed.
5389
5401
  */
5390
5402
  _this.activeDateChange = new i0.EventEmitter();
5403
+ /**
5404
+ * @description
5405
+ * When click outside the calendar component.
5406
+ */
5407
+ _this.clickOutside = new i0.EventEmitter();
5391
5408
  _this.maxMonthIndex = 13;
5392
5409
  _this.monthNames = new Array();
5393
5410
  _this.shouldFocusCalendarOnAvailableDatesUpdate = false;
@@ -5584,6 +5601,12 @@
5584
5601
  configurable: true
5585
5602
  });
5586
5603
  CalendarComponent.prototype.ngOnInit = function () {
5604
+ var _this = this;
5605
+ this.renderer.listen('window', 'click', function (event) {
5606
+ if (event.target !== _this.calendarElement.nativeElement) {
5607
+ _this.clickOutside.emit();
5608
+ }
5609
+ });
5587
5610
  if (!this.ariaLabelPreviousMonth) {
5588
5611
  this.warnMissingAccessibiltyInput('ariaLabelPreviousMonth');
5589
5612
  }
@@ -5914,7 +5937,7 @@
5914
5937
  CalendarComponent.decorators = [
5915
5938
  { type: i0.Component, args: [{
5916
5939
  selector: 'nas-calendar',
5917
- template: "<div [nasClass]=\"getClass()\">\n <span [nasClass]=\"getClass('arrow')\"></span>\n <div #calendarContent\n tabindex=\"0\"\n [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button type=\"button\"\n #previousMonthRef\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\"\n [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\"\n (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\"\n [type]=\"'arrow-left--light'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect\n [cssClass]=\"getClass('month')\"\n [inline]=\"true\"\n [simple]=\"true\"\n [options]=\"months\"\n [(selected)]=\"selectedMonth\"\n (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button type=\"button\"\n tabindex=\"0\"\n #nextMonthRef\n [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\"\n [disabled]=\"nextMonthDisabled\"\n (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right--light'\"></nas-icon>\n </button>\n </header>\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr>\n <th *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\"\n *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\"\n [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\"\n *ngFor=\"let day of week?.days\"\n #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\"\n *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate\n tabindex=\"0\">\n <button type=\"button\"\n #dateButton\n (keydown)=\"dateKeyDown($event)\"\n tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\"\n (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\"\n [attr.aria-label]=\"day.date | date : 'dd':'UTC'\">{{day.date | date : 'dd':'UTC':locale}}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>",
5940
+ template: "<div #calendarElement [nasClass]=\"getClass()\">\n <span [nasClass]=\"getClass('arrow')\"></span>\n <div #calendarContent\n tabindex=\"0\"\n [nasClass]=\"getClass('content')\">\n <header [nasClass]=\"getClass('header')\">\n <button type=\"button\"\n #previousMonthRef\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelPreviousMonth\"\n [nasClass]=\"getClass('nav')\"\n [disabled]=\"isPreviousMonthDisabled === true\"\n (keydown)=\"onPreviousMonthKeydown($event)\"\n (mousedown)=\"onPreviousMonthMousedown()\">\n <nas-icon tabindex=\"-1\"\n [type]=\"'arrow-left--light'\"></nas-icon>\n </button>\n <ng-container *ngIf=\"months?.length > 0; else currentMonthTemplate\">\n <nas-select #monthSelect\n [cssClass]=\"getClass('month')\"\n [inline]=\"true\"\n [simple]=\"true\"\n [options]=\"months\"\n [(selected)]=\"selectedMonth\"\n (keydown)=\"onMonthSelectKeydown($event)\"></nas-select>\n </ng-container>\n <ng-template #currentMonthTemplate>\n {{currentMonthModel}}\n </ng-template>\n <button type=\"button\"\n tabindex=\"0\"\n #nextMonthRef\n [nasClass]=\"getClass('nav')\"\n [attr.aria-label]=\"ariaLabelNextMonth\"\n [disabled]=\"nextMonthDisabled\"\n (keydown)=\"onNextMonthKeydown($event)\"\n (mousedown)=\"onNextMonthMousedown()\">\n <nas-icon [type]=\"'arrow-right--light'\"></nas-icon>\n </button>\n </header>\n <table [nasClass]=\"getClass('table')\">\n <thead>\n <tr>\n <th *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\"></th>\n <th [nasClass]=\"getClass('cell')\"\n *ngFor=\"let weekday of weekdays\">\n <div [nasClass]=\"getClass('item', 'header')\">{{weekday}}</div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let week of weeks\"\n [nasClass]=\"getClass('row', 'animate')\">\n <td *ngIf=\"exists(displayWeekNumbers)\"\n [nasClass]=\"getClass('week-number')\">\n <span [nasClass]=\"getClass('date', 'week-number')\">{{week.weekNumber}}</span>\n </td>\n <td [nasClass]=\"getClass('cell')\"\n *ngFor=\"let day of week?.days\"\n #tableCells>\n <div [nasClass]=\"getClass('item', 'dummy')\"\n *ngIf=\"day === null; else dayTemplate\"></div>\n <ng-template #dayTemplate\n tabindex=\"0\">\n <button type=\"button\"\n #dateButton\n (keydown)=\"dateKeyDown($event)\"\n tabIndex=\"0\"\n [nasClass]=\"getCellButtonClass(day)\"\n (mousedown)=\"onMouseDown(day.date, $event)\"\n (click)=\"onDayClick(day)\"\n (focus)=\"onDayFocus(day)\">\n <div [nasClass]=\"getClass('date-wrapper')\">\n <span [nasClass]=\"getClass('date')\"\n [attr.aria-label]=\"day.date | date : 'dd':'UTC'\">{{day.date | date : 'dd':'UTC':locale}}</span>\n </div>\n </button>\n </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n <div [nasClass]=\"getClass('footer')\">\n <div *ngIf=\"availableDates?.length === 0 && noAvailableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <nas-icon [icon]=\"'alert'\"></nas-icon>\n {{noAvailableFlightsLabel}}\n </div>\n <div *ngIf=\"availableDates?.length > 0 && noAvailableFlightsLabel && availableFlightsLabel\"\n [nasClass]=\"getClass('footer', 'item')\">\n <div [nasClass]=\"getClass('item', 'available')\"></div>\n <div [nasClass]=\"getClass('footer', 'label')\">{{availableFlightsLabel}}</div>\n <span [nasClass]=\"getClass('item', 'unavailable')\"></span>\n <div [nasClass]=\"getClass('footer', 'label')\">{{noAvailableFlightsLabel}}</div>\n </div>\n </div>\n </div>\n</div>\n",
5918
5941
  encapsulation: i0.ViewEncapsulation.None,
5919
5942
  styles: ["@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@-webkit-keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@-webkit-keyframes fade-out{to{opacity:0}}@keyframes fade-out{to{opacity:0}}@-webkit-keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@-webkit-keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@-webkit-keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-calendar{max-width:375px;float:right;border:3px solid #003251;padding:10px;background-color:#fff;transform-origin:center top;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-animation:flip-in .55s ease both;animation:flip-in .55s ease both;margin-top:3px;position:relative}.nas-calendar__content:active{outline:none;box-shadow:none}.nas-calendar__content:focus{outline:none;box-shadow:none}@media (min-width: 640px){.nas-calendar{margin-right:15px}}.nas-calendar__cover{margin-bottom:16px}.nas-calendar__header{position:relative;display:flex;justify-content:center;height:48px}.nas-calendar__month{max-width:200px;margin:0 auto 21px}.nas-calendar__table{table-layout:fixed;width:100%}.nas-calendar__week-number{font-size:14px;line-height:20px;position:relative;width:20px;display:none}@media (min-width: 640px){.nas-calendar__week-number{display:table-cell}}.nas-calendar__cell{padding:0}.nas-calendar__nav{position:absolute;margin:0 2px 12px;flex-shrink:0;width:24px;height:24px;border-radius:50%;background-color:#003251;transition:transform .2s cubic-bezier(0,0,.1,1),opacity .2s ease-out}.nas-calendar__nav .nas-icon-arrow-left--light,.nas-calendar__nav .nas-icon-arrow-right--light{position:absolute;top:50%;left:50%}.nas-calendar__nav .nas-icon-arrow-left--light{transform:translate(-60%,-50%)}.nas-calendar__nav .nas-icon-arrow-right--light{transform:translate(-40%,-50%)}.nas-calendar__nav:first-child{left:0}.nas-calendar__nav:last-child{right:0}.nas-calendar__nav:hover,.nas-calendar__nav:focus{background-color:#002a3a;outline:none;border:3px solid #3b99fc}.nas-calendar__nav:active{transform:translateY(2px)}.nas-calendar__nav[disabled]{pointer-events:none;opacity:.5}.nas-calendar__item{font-size:14px;line-height:20px;display:flex;flex-direction:column;cursor:pointer;overflow:hidden;width:100%;height:36px;text-align:left;outline:0;padding:2px;border:1px solid #fff;transition:transform .17s cubic-bezier(0,0,.1,1);border-radius:0;align-items:center;justify-content:center;pointer-events:none;opacity:.5;background-color:#fff}.nas-calendar__item .nas-calendar__date{color:#002a3a}@media (min-width: 640px){.nas-calendar__item{padding:2px 6px}}@media (min-width: 1000px){.nas-calendar__item{padding:2px 3px}}@media (min-width: 1180px){.nas-calendar__item{padding:2px 6px}}.nas-calendar__item--large{height:36px}.nas-calendar__item--header{pointer-events:none;height:auto;background-color:transparent;border:0;opacity:1}@media (min-width: 640px){.nas-calendar__item--header{padding-left:11px}}.nas-calendar__item--dummy{visibility:hidden}.nas-calendar__item--today .nas-calendar__date{font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:bold;color:#002a3a}.nas-calendar__item--cheapest{font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:bold;color:#d81939}.nas-calendar__item--empty{pointer-events:none;opacity:.3;border-color:#fff;background-color:#fff}.nas-calendar__item--empty .nas-calendar__date{color:inherit}.nas-calendar__item--available{pointer-events:all;opacity:1;border-color:#fff;background-color:#c3c3c3}.nas-calendar__item--available .nas-calendar__date{color:#002a3a}.nas-calendar__item--active{border-color:#003251;border-width:3px}.nas-calendar__item--before{pointer-events:none;color:#a1a1a1;opacity:.55}.nas-calendar__item:hover,.nas-calendar__item:focus{border-color:#003251;border-width:3px;box-shadow:inset 0 0 2px #c3c3c3,inset 0 0 2px 3px #3b99fc}.nas-calendar__item:active{transform:translateY(3px)}.nas-calendar__item--selected,.nas-calendar__item:active{color:#fff;background-color:#d81939}.nas-calendar__item--selected:hover,.nas-calendar__item--selected:focus,.nas-calendar__item:active:hover,.nas-calendar__item:active:focus{border-color:#003251;border-width:3px}.nas-calendar__item--selected .nas-calendar__date,.nas-calendar__item:active .nas-calendar__date{color:inherit}.nas-calendar__item--sold-out{pointer-events:none;opacity:.8;border-color:#fff;background-color:#fff}.nas-calendar__item--sold-out .nas-calendar__date{color:#002a3a}.nas-calendar__item[disabled]{pointer-events:none}.nas-calendar__date{font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:normal;color:#626363}.nas-calendar__date--week-number{top:6px;right:6px}.nas-calendar__price{font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:bold;color:inherit;letter-spacing:-.04em}@media (min-width: 640px){.nas-calendar__price{font-size:14px;line-height:1.1}}@media (min-width: 1280px){.nas-calendar__price{font-size:16px}}.nas-calendar__price--before{font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:normal;text-decoration:line-through;font-size:.8em;line-height:1}@media (min-width: 1000px){.nas-calendar__price--before{margin-bottom:2px}}.nas-calendar__sold-out{position:absolute;bottom:2px;left:2px;line-height:1;overflow-wrap:break-word;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;letter-spacing:-.015em;color:#818282;font-size:.75em}@media (min-width: 640px){.nas-calendar__sold-out{font-size:.9em;bottom:6px;left:6px}}@media (min-width: 1000px){.nas-calendar__sold-out{left:3px}}@media (min-width: 1180px){.nas-calendar__sold-out{left:6px}}.nas-calendar__transit{position:relative;display:flex;max-width:3.8em;width:calc(100% - 12px);padding:0 .5em 0 .3em;height:8px;justify-content:space-around;margin-bottom:2px;transform:scale(.85);transform-origin:left;background-color:inherit}@media (min-width: 640px){.nas-calendar__transit{transform:none;padding:0 .5em 0 .3em;margin-bottom:3px}}.nas-calendar__transit:before,.nas-calendar__transit:after{content:\"\";position:absolute}.nas-calendar__transit:before{top:calc(50% - 1px);width:100%;left:0;height:2px;background-color:currentColor}.nas-calendar__transit:after{width:8px;height:8px;right:0;border-right:2px solid currentColor;border-top:2px solid currentColor;transform:rotate(45deg)}.nas-calendar__transit-indicator{position:relative;width:8px;height:8px;flex-shrink:0;border-radius:50%;border:2px solid currentColor;background-color:#fff}.nas-calendar__asterisk{font-size:.67em;top:-.36em;margin-left:.1em}.nas-calendar__footer{display:flex;justify-content:center}.nas-calendar__footer .nas-calendar__item{width:25px;height:25px;margin-right:3px}.nas-calendar__footer .nas-calendar__item--unavailable{border:1px solid #003251}.nas-calendar__footer--item{margin-top:12px}.nas-calendar__footer--label{flex-shrink:0;margin-right:12px;display:flex;flex-direction:column;justify-content:center;font-size:14px;line-height:20px}.nas-calendar__arrow{position:absolute;width:16px;height:16px;top:-10px;left:calc(50% - 8px);background-color:inherit;transform:rotate(45deg);border-top:3px solid #003251;border-left:3px solid #003251}@-webkit-keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}@keyframes lowfare-item-in{0%{opacity:0;transform:scale(0)}}\n"]
5920
5943
  },] }
@@ -5922,13 +5945,15 @@
5922
5945
  CalendarComponent.ctorParameters = function () { return [
5923
5946
  { type: DateHelper },
5924
5947
  { type: i1.DatePipe },
5925
- { type: CalendarService }
5948
+ { type: CalendarService },
5949
+ { type: i0.Renderer2 }
5926
5950
  ]; };
5927
5951
  CalendarComponent.propDecorators = {
5928
5952
  previousMonthRef: [{ type: i0.ViewChild, args: ['previousMonthRef',] }],
5929
5953
  nextMonthRef: [{ type: i0.ViewChild, args: ['nextMonthRef',] }],
5930
5954
  tableCells: [{ type: i0.ViewChildren, args: ['tableCells',] }],
5931
5955
  dateButtons: [{ type: i0.ViewChildren, args: ['dateButton',] }],
5956
+ calendarElement: [{ type: i0.ViewChild, args: ['calendarElement',] }],
5932
5957
  calendarContent: [{ type: i0.ViewChild, args: ['calendarContent',] }],
5933
5958
  monthSelectRef: [{ type: i0.ViewChild, args: ['monthSelect',] }],
5934
5959
  noAvailableFlightsLabel: [{ type: i0.Input }],
@@ -5951,7 +5976,8 @@
5951
5976
  monthChange: [{ type: i0.Output }],
5952
5977
  focusOnNextChange: [{ type: i0.Output }],
5953
5978
  selectedDateChange: [{ type: i0.Output }],
5954
- activeDateChange: [{ type: i0.Output }]
5979
+ activeDateChange: [{ type: i0.Output }],
5980
+ clickOutside: [{ type: i0.Output }]
5955
5981
  };
5956
5982
  __decorate([
5957
5983
  Debounce(150)
@@ -6233,6 +6259,10 @@
6233
6259
  });
6234
6260
  Object.defineProperty(DatepickerComponent.prototype, "activeDate", {
6235
6261
  get: function () {
6262
+ if (this.selectedDate && this.activeDateValue &&
6263
+ this.dateService.isLessThan(this.activeDateValue, this.selectedDate, false, true, true)) {
6264
+ return this.activeDateValue;
6265
+ }
6236
6266
  if (this.activeDateValue) {
6237
6267
  return this.activeDateValue;
6238
6268
  }
@@ -6253,12 +6283,26 @@
6253
6283
  this.activeDateValue = date;
6254
6284
  clearTimeout(this.activeDateTimeout);
6255
6285
  this.activeDateTimeout = setTimeout(function () {
6256
- _this.model = _this.datePipe.transform(_this.dateService.date(_this.activeDate), _this.dateDisplayFormat, 'UTC', _this.locale);
6286
+ _this.model = _this.datePipe.transform(_this.dateService.date(_this.selectedDate), _this.dateDisplayFormat, 'UTC', _this.locale);
6257
6287
  });
6258
6288
  },
6259
6289
  enumerable: false,
6260
6290
  configurable: true
6261
6291
  });
6292
+ Object.defineProperty(DatepickerComponent.prototype, "clickOutside", {
6293
+ /**
6294
+ * @description
6295
+ * Set selected month.
6296
+ */
6297
+ get: function () {
6298
+ return this.clickOutsideValue;
6299
+ },
6300
+ set: function (clickIsOutside) {
6301
+ this.clickOutsideValue = clickIsOutside;
6302
+ },
6303
+ enumerable: false,
6304
+ configurable: true
6305
+ });
6262
6306
  DatepickerComponent.prototype.ngOnInit = function () {
6263
6307
  var _this = this;
6264
6308
  if (this.nasFormGroup && this.nasFormControlName) {
@@ -6473,7 +6517,7 @@
6473
6517
  DatepickerComponent.decorators = [
6474
6518
  { type: i0.Component, args: [{
6475
6519
  selector: 'nas-datepicker',
6476
- template: "<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper')\">\n <div [nasClass]=\"getClass('controls', show && 'active')\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent\n [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input\n [nasClass]=\"getClass('date-picker')\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-haspopup]=\"true\"\n (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\"\n (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\"\n (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\"\n (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\"\n [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\"\n [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\"\n (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"availableDates\"\n [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\"\n [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\"\n (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\">\n </nas-calendar>\n </div>\n <nas-backdrop [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\"\n [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-select #timeSelector\n [selected]=\"selectedTimeOption\"\n (selectedChange)=\"onTimeSelected($event)\"\n (keydown)=\"onTimeSelectorKeydown($event)\">\n <nas-option *ngFor=\"let time of timeOptions\"\n [option]=\"time\"></nas-option>\n </nas-select>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>",
6520
+ template: "<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper')\">\n <div [nasClass]=\"getClass('controls', show && 'active')\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent\n [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input\n [nasClass]=\"getClass('date-picker')\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-haspopup]=\"true\"\n (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\"\n (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\"\n (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\"\n (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\"\n (focusout)=\"clickOutside && closeCalendar()\"\n [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\"\n [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\"\n (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"availableDates\"\n [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\"\n [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\"\n (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\"\n (clickOutside)=\"clickOutside\">\n </nas-calendar>\n </div>\n <nas-backdrop [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\"\n [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-select #timeSelector\n [selected]=\"selectedTimeOption\"\n (selectedChange)=\"onTimeSelected($event)\"\n (keydown)=\"onTimeSelectorKeydown($event)\">\n <nas-option *ngFor=\"let time of timeOptions\"\n [option]=\"time\"></nas-option>\n </nas-select>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n",
6477
6521
  encapsulation: i0.ViewEncapsulation.None,
6478
6522
  styles: ["@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@-webkit-keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@-webkit-keyframes fade-out{to{opacity:0}}@keyframes fade-out{to{opacity:0}}@-webkit-keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@-webkit-keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@-webkit-keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}:host{display:flex}.nas-datepicker{position:relative;top:0;left:0;width:100%;height:100%;overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px;max-height:98vh;overflow-y:visible}.nas-datepicker__date-picker-wrapper{position:relative;padding-bottom:3px;border-bottom:3px solid #c3c3c3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker{display:block;width:100%;height:35px;padding:0 16px 9px;border:0;border-radius:0;transition:all .2s cubic-bezier(0,0,.1,1);font-family:inherit;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;color:#003251;font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:normal;font-size:16px;line-height:26px;position:relative;z-index:3;background-color:inherit}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker[disabled]{color:#909090;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-ms-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-webkit-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:focus~.nas-datepicker__input-line{border-color:#003251}.nas-datepicker__date-picker-wrapper .nas-datepicker__calendar-icon{position:absolute;right:15px;top:50%;margin-top:-12px;vertical-align:middle;cursor:pointer;z-index:3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label{padding:9px 16px 0;position:relative;z-index:3;color:#003251;font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px;line-height:20px;background-color:inherit;display:flex}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label--disabled{color:#909090}.nas-datepicker__date-picker-wrapper nas-calendar{position:absolute;top:75px;vertical-align:middle;right:0px;z-index:4}@media (min-width: 640px){.nas-datepicker__date-picker-wrapper nas-calendar{right:-15px}}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls{background-color:#fff}.nas-datepicker__time-selector-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker__time-selector-wrapper nas-select{display:flex}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select{margin-bottom:0;margin-left:3px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select:after{bottom:26px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{border:3px solid #fff;background-color:#fff;height:64px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{height:60px}}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select:focus{border-color:#003251}.nas-datepicker--has-time{padding-right:3px}.nas-datepicker nas-spinner{position:absolute;top:300px;left:45%;right:45%}.nas-datepicker__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0019292b;-webkit-animation:datepicker-backdrop .7s ease-out both;animation:datepicker-backdrop .7s ease-out both}.nas-datepicker--compact{padding:0;margin-bottom:0}@-webkit-keyframes datepicker-backdrop{0%{opacity:0}}@keyframes datepicker-backdrop{0%{opacity:0}}\n"]
6479
6523
  },] }
@@ -6517,7 +6561,8 @@
6517
6561
  selectedMonthChange: [{ type: i0.Output }],
6518
6562
  openChange: [{ type: i0.Output }],
6519
6563
  focusOnNextChange: [{ type: i0.Output }],
6520
- focusOnPreviousChange: [{ type: i0.Output }]
6564
+ focusOnPreviousChange: [{ type: i0.Output }],
6565
+ clickOutside: [{ type: i0.Input }]
6521
6566
  };
6522
6567
 
6523
6568
  /**