{"version":3,"file":"uiowa-date-range-picker.mjs","sources":["../../../../projects/uiowa/date-range-picker/src/lib/native-date-parser-formatter.ts","../../../../projects/uiowa/date-range-picker/src/lib/date-picker/date-picker.ts","../../../../projects/uiowa/date-range-picker/src/lib/date-picker/date-picker.html","../../../../projects/uiowa/date-range-picker/src/lib/models/date-range.ts","../../../../projects/uiowa/date-range-picker/src/lib/date-range-picker/date-range-picker.ts","../../../../projects/uiowa/date-range-picker/src/lib/date-range-picker/date-range-picker.html","../../../../projects/uiowa/date-range-picker/src/public-api.ts","../../../../projects/uiowa/date-range-picker/src/uiowa-date-range-picker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n/**\r\n * This Service handles how the date is rendered and parsed from keyboard i.e. in the bound input field.\r\n */\r\n@Injectable()\r\nexport class NativeDateParserFormatter extends NgbDateParserFormatter {\r\n  parse(value: string): NgbDateStruct | null {\r\n    if (value) {\r\n      const date = new Date(value);\r\n      if (date instanceof Date && !isNaN(date.valueOf())) {\r\n        return {\r\n          day: date.getDate(),\r\n          month: date.getMonth() + 1,\r\n          year: date.getFullYear(),\r\n        };\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  format(date: NgbDateStruct | null): string {\r\n    return date\r\n      ? new Date(date.year, date.month - 1, date.day).toLocaleDateString('en-US', {\r\n          year: 'numeric',\r\n          month: '2-digit',\r\n          day: '2-digit',\r\n        })\r\n      : '';\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  computed,\r\n  inject,\r\n  input,\r\n  linkedSignal,\r\n  model,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n  NgbCalendar,\r\n  NgbDate,\r\n  NgbDateNativeAdapter,\r\n  NgbDateParserFormatter,\r\n  NgbInputDatepicker,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { NativeDateParserFormatter } from '../native-date-parser-formatter';\r\n\r\n@Component({\r\n  selector: 'date-picker',\r\n  imports: [FormsModule, NgbInputDatepicker],\r\n  providers: [\r\n    NgbDateNativeAdapter,\r\n    { provide: NgbDateParserFormatter, useClass: NativeDateParserFormatter },\r\n  ],\r\n  templateUrl: './date-picker.html',\r\n  styleUrl: './date-picker.css',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DatePicker {\r\n  idFromInput = input('', { alias: 'id' });\r\n  id = computed(\r\n    () => this.idFromInput() || `date-picker-` + Math.random().toString(36).substring(4)\r\n  );\r\n  date = model<Date | null>(null);\r\n  disabled = input(false);\r\n  minDate = input<Date>();\r\n  ngbMinDate = computed(() => {\r\n    const min = this.minDate();\r\n    return min ? this.dateAdapter.fromModel(min)! : { year: 2000, month: 1, day: 1 };\r\n  });\r\n  maxDate = input<Date>();\r\n  ngbMaxDate = computed(() => {\r\n    const max = this.maxDate();\r\n    return max ? this.dateAdapter.fromModel(max)! : { year: 2099, month: 12, day: 31 };\r\n  });\r\n  isInvalid = input(false);\r\n  allowClear = input(false);\r\n\r\n  ngbDate = linkedSignal<NgbDate | null>(() =>\r\n    this.date() ? NgbDate.from(this.dateAdapter.fromModel(this.date()!)) : null\r\n  );\r\n  today = inject(NgbCalendar).getToday();\r\n\r\n  constructor(private readonly dateAdapter: NgbDateNativeAdapter) {}\r\n\r\n  onDateChange(date: NgbDate) {\r\n    const newDate = this.dateAdapter.toModel(date);\r\n    if (newDate) this.date.set(newDate);\r\n  }\r\n\r\n  isWeekend(date: NgbDate) {\r\n    const d = new Date(date.year, date.month - 1, date.day);\r\n    return d.getDay() === 0 || d.getDay() === 6;\r\n  }\r\n  isDisabled = (date: NgbDate) => date.after(this.ngbMaxDate()) || date.before(this.ngbMinDate());\r\n}\r\n","<div class=\"input-group\">\r\n  <input\r\n    ngbDatepicker\r\n    #d=\"ngbDatepicker\"\r\n    class=\"form-control\"\r\n    [class.is-invalid]=\"isInvalid()\"\r\n    name=\"dp\"\r\n    [attr.id]=\"id()\"\r\n    [(ngModel)]=\"ngbDate\"\r\n    (click)=\"d.toggle()\"\r\n    [disabled]=\"disabled()\"\r\n    [minDate]=\"ngbMinDate()\"\r\n    [maxDate]=\"ngbMaxDate()\"\r\n    [markDisabled]=\"isDisabled\"\r\n    [firstDayOfWeek]=\"7\"\r\n    [dayTemplate]=\"dayTemplate\"\r\n    [footerTemplate]=\"footerTemplate\"\r\n    readonly\r\n    (keydown.enter)=\"d.toggle()\"\r\n    (dateSelect)=\"onDateChange($event)\"\r\n    style=\"max-width: 13rem; cursor: pointer\"\r\n    title=\"click to select a date\"\r\n  />\r\n  <button\r\n    type=\"button\"\r\n    class=\"btn btn-outline-secondary\"\r\n    (click)=\"d.toggle()\"\r\n    [disabled]=\"disabled()\"\r\n  >\r\n    📅\r\n  </button>\r\n</div>\r\n\r\n<ng-template\r\n  #dayTemplate\r\n  let-date=\"date\"\r\n  let-today=\"today\"\r\n  let-selected=\"selected\"\r\n  let-disabled=\"disabled\"\r\n  let-focused=\"focused\"\r\n  let-currentMonth=\"currentMonth\"\r\n>\r\n  <span\r\n    class=\"custom-day\"\r\n    [class.weekend]=\"isWeekend(date)\"\r\n    [class.today]=\"today\"\r\n    [class.focused]=\"focused\"\r\n    [class.bg-primary]=\"selected\"\r\n    [class.text-white]=\"selected\"\r\n    [class.disabled]=\"disabled\"\r\n    [class.outside]=\"date.month !== currentMonth\"\r\n  >\r\n    {{ date.day }}\r\n  </span>\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n  <hr class=\"my-0\" />\r\n  <button\r\n    class=\"btn btn-primary btn-sm m-2 float-start\"\r\n    (click)=\"ngbDate.set(today); onDateChange(today); d.close()\"\r\n  >\r\n    Today\r\n  </button>\r\n  @if(allowClear()){\r\n  <button\r\n    class=\"btn btn-secondary btn-sm m-2 float-end\"\r\n    (click)=\"ngbDate.set(null); date.set(null); d.close()\"\r\n  >\r\n    Clear\r\n  </button>\r\n  }\r\n</ng-template>\r\n","/**\r\n * DateRange Type represents start date and end date.\r\n */\r\nexport class DateRange {\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = new DateRange();\r\nconst d2 = new DateRange(new Date(), new Date(2018, 9, 10));\r\n ```\r\n   * @param start [Optional] Start Date. Default: null.\r\n   * @param end [Optional] End Date. Default: null\r\n   */\r\n  constructor(public start: Date | null = null, public end: Date | null = null) {}\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.nextDays(7);\r\n// a date range of next week since today\r\n ```\r\n   * @param n Number of days after today.\r\n   */\r\n  static nextDays(n: number): DateRange {\r\n    const start = new Date();\r\n    const end = new Date();\r\n    end.setDate(end.getDate() + n);\r\n    return new DateRange(start, end);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.lastDays(7);\r\n// a date range of a week before today\r\n ```\r\n   * @param n Number of days before today.\r\n   */\r\n  static lastDays(n: number): DateRange {\r\n    const start = new Date();\r\n    start.setDate(start.getDate() - n);\r\n    const end = new Date();\r\n    return new DateRange(start, end);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.nextTwoWeeks();\r\n// a date range of next two weeks since today\r\n ```\r\n   */\r\n  static nextTwoWeeks(): DateRange {\r\n    return DateRange.nextDays(14);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.nextMonth();\r\n// a date range of next month since today\r\n ```\r\n   */\r\n  static nextMonth(): DateRange {\r\n    const start = new Date();\r\n    const end = new Date();\r\n    end.setMonth(end.getMonth() + 1);\r\n    return new DateRange(start, end);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.lastMonth();\r\n// a date range of last month till today\r\n ```\r\n   */\r\n  static lastMonth(): DateRange {\r\n    const start = new Date();\r\n    const end = new Date();\r\n    start.setMonth(start.getMonth() - 1);\r\n    return new DateRange(start, end);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst d1 = DateRange.create({});\r\n ```\r\n   * @param start start date of range you're creating\r\n   * @param end end date of range you're creating\r\n   */\r\n  static create(start: any, end: any): DateRange {\r\n    let startDate = null;\r\n    let endDate = null;\r\n    if (isValidDate(start)) {\r\n      startDate = new Date(start);\r\n    }\r\n    if (isValidDate(end)) {\r\n      endDate = new Date(end);\r\n    }\r\n    return new DateRange(startDate, endDate);\r\n  }\r\n\r\n  /**\r\n   * Examples:\r\n ```typescript\r\nconst a = new DateRange();\r\nconst isEqual = a.equals(new DateRange());\r\n ```\r\n   * @param dateRange another DateRange object\r\n   */\r\n  equals(dateRange: DateRange): boolean {\r\n    if (!dateRange) {\r\n      return false;\r\n    }\r\n    return dateEqual(dateRange.start, this.start) && dateEqual(dateRange.end, this.end);\r\n  }\r\n\r\n  public toString(): string {\r\n    return `${this.start?.toLocaleDateString()} - ${this.end?.toLocaleDateString()}`;\r\n  }\r\n}\r\n\r\n/**\r\n *\r\n * @param date1 a Date object or NULL\r\n * @param date2 a Date object or NULL\r\n */\r\nexport function dateEqual(date1: Date | null, date2: Date | null): boolean {\r\n  if (date1 === null) {\r\n    return date2 === null;\r\n  } else if (date2 === null) {\r\n    return false;\r\n  }\r\n\r\n  const d1 = date1 instanceof Date ? date1 : new Date(date1);\r\n  const d2 = date2 instanceof Date ? date2 : new Date(date2);\r\n  return d1.toLocaleDateString() === d2.toLocaleDateString();\r\n}\r\n\r\n/**\r\n   * Examples:\r\n ```typescript\r\nconst isValid = DateRange.isValidDate(new Date());\r\n ```\r\n   * @param value date you want to verify as date\r\n   */\r\nexport function isValidDate(value: number | Date | string | null | undefined): boolean {\r\n  if (!value) {\r\n    return false;\r\n  }\r\n\r\n  switch (typeof value) {\r\n    case 'number':\r\n      return true;\r\n    case 'string':\r\n      return !isNaN(Date.parse(value));\r\n    default:\r\n      if (value instanceof Date) {\r\n        return !isNaN(value.getTime());\r\n      }\r\n      return false;\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  computed,\r\n  input,\r\n  linkedSignal,\r\n  model,\r\n  viewChild,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbDate, NgbDateNativeAdapter, NgbInputDatepicker } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DateRange, isValidDate } from '../models/date-range';\r\n\r\n@Component({\r\n  selector: 'date-range-picker',\r\n  imports: [FormsModule, NgbInputDatepicker],\r\n  providers: [NgbDateNativeAdapter],\r\n  templateUrl: './date-range-picker.html',\r\n  styleUrl: './date-range-picker.css',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DateRangePicker implements AfterViewInit {\r\n  idFromInput = input('', { alias: 'id' });\r\n  id = computed(\r\n    () => this.idFromInput() || `date-range-picker-` + Math.random().toString(36).substring(4)\r\n  );\r\n  dateRange = model<DateRange>(new DateRange());\r\n  fromDate = linkedSignal<NgbDate | null>(() =>\r\n    this.dateRange().start\r\n      ? NgbDate.from(this.dateAdapter.fromModel(this.dateRange().start)!)\r\n      : null\r\n  );\r\n  toDate = linkedSignal<NgbDate | null>(() =>\r\n    this.dateRange().end ? NgbDate.from(this.dateAdapter.fromModel(this.dateRange().end)!) : null\r\n  );\r\n  minDate = input<Date | undefined>();\r\n  min = computed(() =>\r\n    this.minDate() ? NgbDate.from(this.dateAdapter.fromModel(this.minDate()!)!) : null\r\n  );\r\n  max = computed(() =>\r\n    this.maxDate() ? NgbDate.from(this.dateAdapter.fromModel(this.maxDate()!)!) : null\r\n  );\r\n  maxDate = input<Date | undefined>();\r\n  disabled = input(false);\r\n  hoveredDate: NgbDate | null = null;\r\n\r\n  private dp = viewChild(NgbInputDatepicker);\r\n\r\n  constructor(private readonly dateAdapter: NgbDateNativeAdapter) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    this.formatInputText();\r\n    if (this.fromDate()) {\r\n      this.dp()!.startDate = {\r\n        year: this.fromDate()!.year,\r\n        month: this.fromDate()!.month,\r\n      };\r\n    }\r\n  }\r\n\r\n  onDateChange(date: NgbDate, dp: NgbInputDatepicker) {\r\n    if (!this.fromDate() && !this.toDate()) {\r\n      this.fromDate.set(date);\r\n    } else if (this.fromDate() && !this.toDate() && date.after(this.fromDate())) {\r\n      this.toDate.set(date);\r\n      dp.close();\r\n    } else {\r\n      this.toDate.set(null);\r\n      this.fromDate.set(date);\r\n    }\r\n    this.dateRange.set(\r\n      new DateRange(\r\n        this.dateAdapter.toModel(this.fromDate()),\r\n        this.dateAdapter.toModel(this.toDate())\r\n      )\r\n    );\r\n  }\r\n\r\n  formatInputText = computed(() => {\r\n    let text = '';\r\n    if (\r\n      this.dateRange().start &&\r\n      this.dateRange().end &&\r\n      isValidDate(this.dateRange().start!) &&\r\n      isValidDate(this.dateRange().end!)\r\n    ) {\r\n      text = this.dateRange().toString();\r\n    }\r\n    return text;\r\n  });\r\n\r\n  isHovered(date: NgbDate) {\r\n    return (\r\n      this.fromDate &&\r\n      !this.toDate &&\r\n      this.hoveredDate &&\r\n      date.after(this.fromDate()) &&\r\n      date.before(this.hoveredDate)\r\n    );\r\n  }\r\n\r\n  isInside = (date: NgbDate) => date.after(this.fromDate()) && date.before(this.toDate());\r\n  isFrom = (date: NgbDate) => date.equals(this.fromDate());\r\n  isTo = (date: NgbDate) => date.equals(this.toDate());\r\n  isWeekend(date: NgbDate) {\r\n    const d = new Date(date.year, date.month - 1, date.day);\r\n    return d.getDay() === 0 || d.getDay() === 6;\r\n  }\r\n  isDisabled = (date: NgbDate) => date.after(this.max()) || date.before(this.min());\r\n  isInFuture = (date: NgbDate) => date.after(this.toDate());\r\n}\r\n","<div class=\"input-group\">\r\n  <input\r\n    ngbDatepicker\r\n    #dp=\"ngbDatepicker\"\r\n    type=\"text\"\r\n    class=\"form-control\"\r\n    style=\"max-width: 13rem; cursor: pointer\"\r\n    readonly\r\n    [attr.id]=\"id()\"\r\n    [disabled]=\"disabled()\"\r\n    autoClose=\"outside\"\r\n    [displayMonths]=\"2\"\r\n    [dayTemplate]=\"t\"\r\n    [showWeekNumbers]=\"false\"\r\n    [markDisabled]=\"isDisabled\"\r\n    [firstDayOfWeek]=\"7\"\r\n    (click)=\"dp.toggle()\"\r\n    (keydown.enter)=\"dp.toggle()\"\r\n    (dateSelect)=\"onDateChange($event, dp)\"\r\n    title=\"click to select a date range\"\r\n    [value]=\"formatInputText()\"\r\n  />\r\n  <button\r\n    type=\"button\"\r\n    class=\"btn btn-outline-secondary d-flex align-items-center\"\r\n    (click)=\"dp.toggle()\"\r\n    [disabled]=\"disabled()\"\r\n  >\r\n    📅\r\n  </button>\r\n</div>\r\n\r\n<ng-template\r\n  #t\r\n  let-date=\"date\"\r\n  let-today=\"today\"\r\n  let-focused=\"focused\"\r\n  let-disabled=\"disabled\"\r\n  let-currentMonth=\"currentMonth\"\r\n>\r\n  <span\r\n    class=\"custom-day\"\r\n    [class.focused]=\"focused\"\r\n    [class.range]=\"isFrom(date) || isTo(date) || isInside(date) || isHovered(date)\"\r\n    [class.faded]=\"isHovered(date) || isInside(date)\"\r\n    [class.weekend]=\"isWeekend(date)\"\r\n    [class.today]=\"today\"\r\n    [class.disabled]=\"disabled\"\r\n    [class.outside]=\"date.month !== currentMonth\"\r\n    (mouseenter)=\"hoveredDate = date\"\r\n    (mouseleave)=\"hoveredDate = null\"\r\n  >\r\n    {{ date.day }}\r\n  </span>\r\n</ng-template>\r\n","/*\r\n * Public API Surface of date-range-picker\r\n */\r\n\r\nexport * from './lib/date-picker/date-picker';\r\nexport * from './lib/date-range-picker/date-range-picker';\r\nexport * from './lib/models/date-range';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}