{"version":3,"file":"angular-extensions-controls-time-control.mjs","sources":["../../../projects/angular-extensions/controls/time-control/src/time-control.component.ts","../../../projects/angular-extensions/controls/time-control/src/time-control.component.html","../../../projects/angular-extensions/controls/time-control/src/time-control.module.ts","../../../projects/angular-extensions/controls/time-control/src/angular-extensions-controls-time-control.ts"],"sourcesContent":["import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { MatDatepicker, MatDatepickerContent } from \"@angular/material/datepicker\";\r\nimport { NgxMatTimepickerComponent } from \"@angular-material-components/datetime-picker\";\r\n\r\nimport { ControlBase } from \"angular-extensions/controls/base-control\";\r\nimport { AppMatDatepicker, AppNgxMatTimepickerComponent } from \"angular-extensions/models\";\r\n\r\n@Component({\r\n  selector: \"time-control\",\r\n  templateUrl: \"./time-control.component.html\",\r\n  styleUrls: [\"./time-control.component.scss\"],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TimeControlComponent<TValue> extends ControlBase<TValue, any, any, any, Date> {\r\n\r\n  @Input()\r\n  public initialTime: number[];\r\n\r\n  @Input()\r\n  public clearable: boolean;\r\n\r\n  @Input()\r\n  public disableMinute = false;\r\n\r\n  @Input()\r\n  public showSeconds = false;\r\n\r\n  @Input()\r\n  public format = \"HH:mm\";\r\n\r\n  @ViewChild(MatDatepicker, { static: true })\r\n  public datePicker: AppMatDatepicker<Date>;\r\n\r\n  @ViewChild(NgxMatTimepickerComponent, { static: true })\r\n  public timePicker: AppNgxMatTimepickerComponent<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  ) {\r\n    super();\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 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 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    if (!this.timePicker._model) {\r\n      this.timePicker._model = new Date();\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           readonly\r\n           [format]=\"format\"\r\n           [formControl]=\"field.control\"\r\n           [matDatepicker]=\"datePicker\">\r\n\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\r\n    <mat-datepicker panelClass=\"time-picker-container\"\r\n                    [restoreFocus]=\"false\"\r\n                    (opened)=\"datePickerOpened()\"\r\n                    (closed)=\"blur(); field.control.markAllAsTouched()\">\r\n      <mat-datepicker-actions>\r\n        <div class=\"w-100 d-flex flex-column align-items-center\">\r\n          <mat-divider class=\"w-100 mb-2\"></mat-divider>\r\n\r\n          <ngx-mat-timepicker [formControl]=\"field.control\"\r\n                              [color]=\"'primary'\"\r\n                              [stepMinute]=\"15\"\r\n                              [disableMinute]=\"disableMinute\"\r\n                              [defaultTime]=\"initialTime\"\r\n                              [showSeconds]=\"showSeconds\"\r\n                              (ngModelChange)=\"datePicker._model.add($event)\"></ngx-mat-timepicker>\r\n        </div>\r\n      </mat-datepicker-actions>\r\n    </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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { NgxMatTimepickerModule } from \"@angular-material-components/datetime-picker\";\r\n\r\nimport { NgxBaseControlModule } from \"angular-extensions/controls/base-control\";\r\nimport { NgxDateTimeControlModule } from \"angular-extensions/controls/datetime-control\";\r\nimport { NgxDirectivesModule } from \"angular-extensions/directives\";\r\n\r\nimport { TimeControlComponent } from \"./time-control.component\";\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    NgxMatTimepickerModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDateTimeControlModule,\r\n    NgxDirectivesModule,\r\n  ],\r\n  exports: [\r\n    NgxMatTimepickerModule,\r\n\r\n    NgxBaseControlModule,\r\n    NgxDateTimeControlModule,\r\n    NgxDirectivesModule,\r\n\r\n    TimeControlComponent,\r\n  ],\r\n  declarations: [\r\n    TimeControlComponent,\r\n  ]\r\n})\r\nexport class NgxTimeControlModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAcM,MAAO,oBAA6B,SAAQ,WAAwC,CAAA;IA2BxF,WACU,CAAA,UAAmC,EACnC,iBAAoC,EAAA;AAE5C,QAAA,KAAK,EAAE,CAAC;QAHA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QApBvC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QAGtB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAGpB,IAAM,CAAA,MAAA,GAAG,OAAO,CAAC;;QAmBtB,UAAU;aACP,aAAa;aACb,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5G;AAdD,IAAA,IAAY,iBAAiB,GAAA;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,QAAQ,CAAC;KACxF;AAcM,IAAA,YAAY,CAAC,KAAiB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;AAC7G,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;AAEM,IAAA,QAAQ,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;YAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElC,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAErD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;AAEjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,SAAA;AACI,aAAA;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AACrC,SAAA;KACF;;kHAnEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAiBpB,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,aAAa,EAGb,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,yBAAyB,qFClCtC,6pEAoDA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,uDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDtCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAGT,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6pEAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,CAAA;iIAKxC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAInC,UAAU,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEF3C,oBAAoB,CAAA;;kHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mHAApB,oBAAoB,EAAA,YAAA,EAAA,CAH7B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAjBpB,YAAY;QACZ,sBAAsB;QAEtB,oBAAoB;QACpB,wBAAwB;AACxB,QAAA,mBAAmB,aAGnB,sBAAsB;QAEtB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB;QAEnB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAMX,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YApB7B,YAAY;QACZ,sBAAsB;QAEtB,oBAAoB;QACpB,wBAAwB;AACxB,QAAA,mBAAmB,EAGnB,sBAAsB;QAEtB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB,CAAA,EAAA,CAAA,CAAA;4FAQV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,sBAAsB;wBAEtB,oBAAoB;wBACpB,wBAAwB;wBACxB,mBAAmB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBAEtB,oBAAoB;wBACpB,wBAAwB;wBACxB,mBAAmB;wBAEnB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;AACrB,qBAAA;AACF,iBAAA,CAAA;;;AC/BD;;AAEG;;;;"}