{"version":3,"file":"outerlimitstech-ngx-bootstrap-date-time-picker.mjs","sources":["../../../projects/olt-ngx-bootstrap/date-time-picker/src/date-time-picker.component.ts","../../../projects/olt-ngx-bootstrap/date-time-picker/src/date-time-picker.component.html","../../../projects/olt-ngx-bootstrap/date-time-picker/src/date-time-picker.module.ts","../../../projects/olt-ngx-bootstrap/date-time-picker/outerlimitstech-ngx-bootstrap-date-time-picker.ts"],"sourcesContent":["import { Component, Input, forwardRef } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { OltUtility } from '@outerlimitstech/ngx-app-core';\r\n\r\n@Component({\n    selector: 'olt-ngx-datetime-picker, [formGroupName] olt-ngx-datetime-picker, [formGroup] olt-ngx-datetime-picker',\n    templateUrl: './date-time-picker.component.html',\n    styleUrls: ['./date-time-picker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DateTimePickerComponent),\n            multi: true\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => DateTimePickerComponent),\n            multi: true,\n        }\n    ],\n    standalone: false\n})\r\nexport class DateTimePickerComponent implements ControlValueAccessor, Validator  {\r\n  @Input() placeholder: string | null = \"mm/dd/yyyy\";\r\n  @Input() minDate: Date = new Date('0001-01-01T00:00:00Z');\r\n  @Input() maxDate: Date = new Date('9999-12-31T23:59:59Z'); \r\n\r\n  \r\n  dateValue: Date | any | null = null;  \r\n  timeValue: Date | any | null = null;  \r\n  _timeValue: Date | any | null = null;  \r\n\r\n  disabled = false;\r\n\r\n  onChange: any = () => { };\r\n  onTouched: any = () => { };\r\n  onValidatorChange?: any = () => { };\r\n\r\n\r\n  writeValue(value: Date | null): void {    \r\n    value = value ?? null; //Make sure it's not undefined\r\n    // console.log('writeValue', value);\r\n    this._timeValue = value;\r\n    this.dateValue = value;\r\n    this.timeValue = value;\r\n  }\r\n\r\n  valueChanged(date: Date | null, time: Date | null){\r\n    if (date != null && time != null) {            \r\n      this.dateValue = OltUtility.combineDateAndTime(new Date(date.toDateString()), time);\r\n      this.onChange(this.dateValue);\r\n      return;\r\n    }   \r\n    this.onChange(null);\r\n  }\r\n\r\n  dateChanged(event: Date | null) {\r\n    this.valueChanged(event, this.timeValue);\r\n  }\r\n\r\n  timeChanged(event: Date | null) {    \r\n    if (this._timeValue?.toLocaleTimeString() != event?.toLocaleTimeString()) {\r\n      this._timeValue = event;\r\n      this.valueChanged(this.dateValue, event);  \r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  validate(control: AbstractControl<any, any>): ValidationErrors | null {\r\n    // console.log('validate',  this.dateValue, control);\r\n\r\n\r\n    if (this.dateValue != null) {\r\n      const maxTime = this.maxDate?.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});\r\n      const minTime = this.minDate?.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});\r\n\r\n      \r\n      if (this.dateValue < this.minDate) {\r\n\r\n        if (new Date(this.dateValue.toLocaleDateString()) == new Date(this.minDate.toLocaleDateString())){\r\n          return { minDateTime : { valid: false, message: `Time is before ${minTime}` } };\r\n        } else{\r\n          return { minDateTime : { valid: false, message: `Date/Time is before ${this.minDate?.toLocaleDateString()} ${minTime}` } };\r\n        }      \r\n\r\n      } else if (this.dateValue > this.maxDate) {\r\n\r\n        if (new Date(this.dateValue.toLocaleDateString()) == new Date(this.maxDate.toLocaleDateString())){\r\n          return { minDateTime : { valid: false, message: `Time is after ${maxTime}` } };\r\n        } else{\r\n          return { minDateTime : { valid: false, message: `Date/Time is after ${this.maxDate?.toLocaleDateString()} ${maxTime}` } };\r\n        }    \r\n\r\n      }\r\n    }\r\n    \r\n\r\n    const invalidDate = this.dateValue == null && this.timeValue != null;\r\n    const invalidTime = this.dateValue != null && this.timeValue == null;\r\n\r\n    if (invalidDate) {\r\n      return { invalidDate: { valid: false, message: 'Invalid Date' } };\r\n    } \r\n    \r\n    if (invalidTime) {\r\n      return { invalidTime: { valid: false, message: 'Invalid Time' } };    \r\n    }\r\n    \r\n    return null;\r\n  }\r\n\r\n  registerOnValidatorChange?(fn: () => void): void {\r\n    this.onValidatorChange = fn;\r\n  }\r\n  \r\n  // @HostListener('window:keydown', ['$event'])\r\n  // onKeyDown(event: KeyboardEvent) {\r\n  //   console.log(event);\r\n    \r\n  //   // if (this.appMaskValue && (this.appMaskValue.length === 2 || this.appMaskValue.length === 5) && event.key !== 'Backspace') {\r\n  //   //   this.renderer.setProperty(this.elRef.nativeElement, 'value', this.appMaskValue + '/');\r\n  //   // }\r\n  // }\r\n  \r\n\r\n}\r\n","<div class=\"d-flex\">\r\n    <div class=\"me-2\">\r\n        <div class=\"input-group\">\r\n            <input type=\"text\" class=\"form-control\" #datePicker=\"bsDatepicker\" bsDatepicker \r\n              [placeholder]=\"placeholder\"\r\n              aria-label=\"date\" \r\n              aria-describedby=\"date\"\r\n              [minDate]=\"minDate\"\r\n              [maxDate]=\"maxDate\"\r\n              [disabled]=\"disabled\" \r\n              [(ngModel)]=\"dateValue\" \r\n              (ngModelChange)=\"dateChanged($event)\"               \r\n              (blur)=\"onTouched()\">\r\n            <div class=\"input-group-append\">\r\n              <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"datePicker.toggle()\">\r\n                <i class=\"fa fa-calendar\"></i>\r\n              </button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div>\r\n        <timepicker \r\n            [disabled]=\"disabled\" \r\n            [showSpinners]=\"false\"\r\n            [(ngModel)]=\"timeValue\" \r\n            (ngModelChange)=\"timeChanged($event)\" \r\n            (blur)=\"onTouched()\" />\r\n    </div>\r\n</div>\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\r\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\r\nimport { DateTimePickerComponent } from './date-time-picker.component';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DateTimePickerComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    BsDatepickerModule.forRoot(),\r\n    TimepickerModule.forRoot(),\r\n  ],\r\n  exports: [\r\n    DateTimePickerComponent\r\n  ]\r\n})\r\nexport class OltNgxDateTimePickerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}