{"version":3,"file":"angular-extensions-controls-date-control.mjs","sources":["../../../projects/angular-extensions/controls/date-control/src/date-control.component.ts","../../../projects/angular-extensions/controls/date-control/src/date-control.component.html","../../../projects/angular-extensions/controls/date-control/src/date-control.module.ts","../../../projects/angular-extensions/controls/date-control/src/angular-extensions-controls-date-control.ts"],"sourcesContent":["import {\r\n  ChangeDetectionStrategy, ChangeDetectorRef, Component,\r\n  ComponentRef, ElementRef, EventEmitter, Inject, Input, OnChanges, Output, ViewChild,\r\n} from \"@angular/core\";\r\nimport { MatCalendarHeader, MatCalendarView, MatDatepicker, MatDatepickerContent } from \"@angular/material/datepicker\";\r\nimport { MatDateFormats, MAT_DATE_FORMATS } from \"@angular/material/core\";\r\nimport type { CdkPortalOutlet } from \"@angular/cdk/portal\";\r\n\r\nimport { overrideFunction, SimpleChanges } from \"angular-extensions/core\";\r\nimport { ControlBase, ActionableControl } from \"angular-extensions/controls/base-control\";\r\nimport { AppMatDatepicker, Field } from \"angular-extensions/models\";\r\n\r\n@Component({\r\n  selector: \"date-control\",\r\n  templateUrl: \"./date-control.component.html\",\r\n  styleUrls: [\"./date-control.component.scss\"],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DateControlComponent<TOption, TOptionGroup, TFormattedValue, TControlValue>\r\n  extends ControlBase<Date, TOption, TOptionGroup, TFormattedValue, TControlValue>\r\n  implements ActionableControl, OnChanges {\r\n\r\n  @Input()\r\n  public targetView: \"year\" | \"month\" | \"day\" = \"day\";\r\n\r\n  @Input()\r\n  public startView: MatCalendarView = \"month\";\r\n\r\n  @Input()\r\n  public format: string;\r\n\r\n  @Input()\r\n  public clearable: boolean;\r\n\r\n  @Input()\r\n  public actionButtonVisible = true;\r\n\r\n  @Input()\r\n  public actionButtonIcon?: string;\r\n\r\n  @Input()\r\n  public actionButtonTooltip?: string;\r\n\r\n  @Output()\r\n  public actionButton = new EventEmitter<Field<Date, TOption, TOptionGroup, TFormattedValue, TControlValue>>();\r\n\r\n  @ViewChild(MatDatepicker, { static: true })\r\n  public datePicker: AppMatDatepicker<Date>;\r\n\r\n  private get datepickerContent(): MatDatepickerContent<Date> | null {\r\n    return (this.datePicker._componentRef || this.datePicker._popupComponentRef)?.instance;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef<HTMLElement>,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    @Inject(MAT_DATE_FORMATS) private dateFormats: MatDateFormats,\r\n  ) {\r\n    super();\r\n\r\n    this.format = dateFormats.display.dateInput;\r\n\r\n    // avoid datepicker input blur while popup is open\r\n    elementRef\r\n      .nativeElement\r\n      .addEventListener(\"blur\", event => this.datepickerContent && event.stopPropagation(), { capture: true });\r\n  }\r\n\r\n  public ngOnChanges(changes: SimpleChanges<DateControlComponent<TOption, TOptionGroup, TFormattedValue, TControlValue>>) {\r\n    if (changes.targetView) {\r\n      if (changes.targetView.currentValue == \"year\") {\r\n        this.startView = \"multi-year\";\r\n        this.format = \"yyyy\";\r\n      }\r\n      else if (changes.targetView.currentValue == \"month\") {\r\n        this.startView = \"year\";\r\n        this.format = this.dateFormats.display.monthYearA11yLabel;\r\n      }\r\n      else if (changes.targetView.currentValue == \"day\") {\r\n        this.startView = \"month\";\r\n        this.format = this.dateFormats.display.dateInput;\r\n      }\r\n\r\n      this.changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  public onFieldClick(event: MouseEvent) {\r\n    if (this.elementRef.nativeElement.querySelector(\".mat-form-field-flex\").contains(event.target as HTMLElement)) {\r\n      this.datePicker.open();\r\n    }\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  public dateSelected(date: Date) {\r\n    this.datePicker._model.add(date.withoutTimezone());\r\n\r\n    this.datePicker.close();\r\n\r\n    // hide content since we cannot prevent currentView showing next view\r\n    if (this.datepickerContent) {\r\n      (this.datepickerContent._elementRef.nativeElement as HTMLElement).style.display = \"none\";\r\n    }\r\n\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  public viewChanged(view: MatCalendarView) {\r\n    // fix issue when clicking on year selector it shows \"month\" view which is not correct\r\n    if (this.targetView == \"month\" && view == \"month\") {\r\n      if (this.datepickerContent) {\r\n        this.datepickerContent._calendar.currentView = \"multi-year\";\r\n      }\r\n\r\n      this.changeDetectorRef.markForCheck();\r\n    }\r\n  }\r\n\r\n  public onToggle(event: MouseEvent) {\r\n    if (this.clearable && this.field.control.enabled && this.field.value != null) {\r\n      this.field.control.setValue(null);\r\n\r\n      this.field.control.markAsTouched({ onlySelf: true });\r\n\r\n      event.preventDefault();\r\n      event.stopImmediatePropagation();\r\n\r\n      this.changeDetectorRef.markForCheck();\r\n    }\r\n    else {\r\n      this.focus();\r\n    }\r\n  }\r\n\r\n  public datePickerOpened() {\r\n    setTimeout(() => this.tryPatchPeriodButton(this.datepickerContent));\r\n  }\r\n\r\n  private tryPatchPeriodButton(datePickerContent: MatDatepickerContent<Date, Date>) {\r\n    let calendarHeader = (((datePickerContent\r\n      ._calendar\r\n      ._calendarHeaderPortal as any)\r\n      ._attachedHost as CdkPortalOutlet)\r\n      .attachedRef as ComponentRef<MatCalendarHeader<Date>>)\r\n      .instance;\r\n\r\n    overrideFunction(\r\n      calendarHeader,\r\n      header => header.currentPeriodClicked,\r\n      currentPeriodClicked => {\r\n        if (this.targetView == \"year\") {\r\n        }\r\n        else if (this.targetView == \"month\") {\r\n          calendarHeader.calendar.currentView = calendarHeader.calendar.currentView == \"year\" ? \"multi-year\" : \"year\";\r\n        }\r\n        else {\r\n          currentPeriodClicked();\r\n        }\r\n      });\r\n  }\r\n}\r\n","<base-control #baseControl\r\n              [control]=\"this\">\r\n  <mat-form-field [appearance]=\"appearance\"\r\n                  [ngClass]=\"fieldClass\"\r\n                  (click)=\"onFieldClick($event)\">\r\n    <mat-label>\r\n      {{ field.label }}\r\n    </mat-label>\r\n\r\n    <mat-hint>\r\n      <ng-container *ngTemplateOutlet=\"baseControl.hintTemplate\"></ng-container>\r\n    </mat-hint>\r\n\r\n    <input matInput\r\n           #input\r\n           readonly\r\n           [format]=\"format\"\r\n           [formControl]=\"field.control\"\r\n           [matDatepicker]=\"datePicker\">\r\n\r\n    <a *ngIf=\"actionButtonVisible && actionButtonIcon && actionButton.observed; else toggleTemplate\"\r\n       mat-icon-button\r\n       matSuffix\r\n       [matTooltip]=\"actionButtonTooltip\"\r\n       (click)=\"actionButton.emit(field); $event.preventDefault(); $event.stopImmediatePropagation();\">\r\n      <mat-icon>{{ actionButtonIcon }}</mat-icon>\r\n    </a>\r\n\r\n    <ng-template #toggleTemplate>\r\n      <mat-datepicker-toggle matSuffix\r\n                             [for]=\"datePicker\">\r\n        <mat-icon matDatepickerToggleIcon\r\n                  [matTooltip]=\"clearable && field.control.enabled && field.value != null ? 'Clear' : ''\"\r\n                  (click)=\"onToggle($event)\">\r\n          {{ clearable && field.control.enabled && field.value != null ? 'close' : 'today' }}\r\n        </mat-icon>\r\n      </mat-datepicker-toggle>\r\n    </ng-template>\r\n\r\n    <mat-datepicker #datePicker\r\n                    [restoreFocus]=\"false\"\r\n                    [startView]=\"startView\"\r\n                    (viewChanged)=\"viewChanged($event)\"\r\n                    (yearSelected)=\"targetView == 'year' && dateSelected($event)\"\r\n                    (monthSelected)=\"targetView == 'month' && dateSelected($event)\"\r\n                    (opened)=\"datePickerOpened()\"\r\n                    (closed)=\"blur(); field.control.markAllAsTouched()\"></mat-datepicker>\r\n\r\n    <mat-error *ngIf=\"baseControl.initialized\">\r\n      <ng-container *ngTemplateOutlet=\"baseControl.errorsTemplate\"></ng-container>\r\n    </mat-error>\r\n  </mat-form-field>\r\n</base-control>\r\n","import { format } from \"date-fns\";\r\nimport { ModuleWithProviders, NgModule, Type } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\nimport {\r\n  DateAdapter, MatDateFormats, MatNativeDateModule,\r\n  NativeDateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE,\r\n} from \"@angular/material/core\";\r\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\r\n\r\nimport { NgxDirectivesModule } from \"angular-extensions/directives\";\r\nimport { NGX_DATE_FORMATS } from \"angular-extensions/models\";\r\nimport { NgxBaseControlModule } from \"angular-extensions/controls/base-control\";\r\n\r\nimport { DateControlComponent } from \"./date-control.component\";\r\n\r\n/**\r\n * Configure default behavior of NgxControlsModule like: locale, date adpater, date format, etc.\r\n */\r\nexport interface NgxDateConfig {\r\n\r\n  /**\r\n   * Date adapter used between AngularMaterial and NgxMatDatePicker, by default {@link NgxDateAdapter}\r\n   */\r\n  dateAdapterType: Type<DateAdapter<Date>>;\r\n\r\n  /**\r\n   * Date locale, by default \"en-GB\"\r\n   */\r\n  dateLocale: string;\r\n\r\n  /**\r\n   * Date/time formats, by default {@link NGX_DATE_FORMATS}\r\n   */\r\n  dateFormats: MatDateFormats;\r\n}\r\n\r\nexport class NgxDateAdapter extends NativeDateAdapter {\r\n\r\n  public getFirstDayOfWeek(): number {\r\n    return 1;\r\n  }\r\n\r\n  public format(date: Date, displayFormat: string): string {\r\n    return format(date, displayFormat);\r\n  }\r\n}\r\n\r\nexport const dateConfigDefaults: NgxDateConfig = {\r\n  dateFormats: NGX_DATE_FORMATS,\r\n  dateAdapterType: NgxDateAdapter,\r\n  dateLocale: \"en-GB\",\r\n};\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    MatDatepickerModule,\r\n    MatNativeDateModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDirectivesModule,\r\n  ],\r\n  exports: [\r\n    MatDatepickerModule,\r\n    MatNativeDateModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDirectivesModule,\r\n\r\n    DateControlComponent,\r\n  ],\r\n  declarations: [\r\n    DateControlComponent,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: DateAdapter,\r\n      useClass: dateConfigDefaults.dateAdapterType,\r\n      deps: [MAT_DATE_LOCALE, Platform]\r\n    },\r\n    {\r\n      provide: MAT_DATE_LOCALE,\r\n      useValue: dateConfigDefaults.dateLocale\r\n    },\r\n    {\r\n      provide: MAT_DATE_FORMATS,\r\n      useValue: dateConfigDefaults.dateFormats\r\n    },\r\n  ]\r\n})\r\nexport class NgxDateControlModule {\r\n\r\n  public static configure(config: Partial<NgxDateConfig>): ModuleWithProviders<NgxDateControlModule> {\r\n\r\n    let moduleConfig = Object.assign<NgxDateConfig, Partial<NgxDateConfig>>(dateConfigDefaults, config);\r\n\r\n    if (config.dateFormats) {\r\n      Object.assign(NGX_DATE_FORMATS, config.dateFormats);\r\n    }\r\n\r\n    return {\r\n      ngModule: NgxDateControlModule,\r\n      providers: [\r\n        {\r\n          provide: DateAdapter,\r\n          useClass: moduleConfig.dateAdapterType,\r\n          deps: [MAT_DATE_LOCALE, Platform]\r\n        },\r\n        {\r\n          provide: MAT_DATE_LOCALE,\r\n          useValue: moduleConfig.dateLocale\r\n        },\r\n        {\r\n          provide: MAT_DATE_FORMATS,\r\n          useValue: moduleConfig.dateFormats\r\n        },\r\n      ]\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}