{"version":3,"file":"kokotree-inc-ng-bootstrap-date-range-picker.mjs","sources":["../../../projects/ng-bootstrap-date-range-picker/src/lib/constants/date-range-options.ts","../../../projects/ng-bootstrap-date-range-picker/src/lib/enums/date-range.ts","../../../projects/ng-bootstrap-date-range-picker/src/lib/utils/date-ranges-utils.ts","../../../projects/ng-bootstrap-date-range-picker/src/lib/components/date-range-picker/date-range-picker.component.ts","../../../projects/ng-bootstrap-date-range-picker/src/lib/components/date-range-picker/date-range-picker.component.html","../../../projects/ng-bootstrap-date-range-picker/src/lib/date-range-picker.module.ts","../../../projects/ng-bootstrap-date-range-picker/src/lib/enums/date-range-option-enum.ts","../../../projects/ng-bootstrap-date-range-picker/src/public-api.ts","../../../projects/ng-bootstrap-date-range-picker/src/kokotree-inc-ng-bootstrap-date-range-picker.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n// Object mapping display labels to date range options (keys)\nexport const DATE_RANGE_OPTIONS = {\n  Today: 'Today',\n  Yesterday: 'Yesterday',\n  Last7Days: 'Last7Days',\n  Last28Days: 'Last28Days',\n  Last30Days: 'Last30Days',\n  Last90Days: 'Last90Days',\n  ThisMonth: 'ThisMonth',\n  LastMonth: 'LastMonth',\n  Last12Months: 'Last12Months',\n  LastCalendarYear: 'LastCalendarYear',\n  ThisYear: 'ThisYear',\n  Custom: 'Custom'\n};\n","/* eslint-disable @typescript-eslint/naming-convention */\n// Enum representing the available date ranges\nexport enum DateRange {\n  Today = 'Today',\n  Yesterday = 'Yesterday',\n  Last7Days = 'Last 7 Days',\n  Last28Days = 'Last 28 Days',\n  Last30Days = 'Last 30 Days',\n  Last90Days = 'Last 90 Days',\n  ThisMonth = 'This Month',\n  LastMonth = 'Last Month',\n  Last12Months = 'Last 12 Months',\n  LastCalendarYear = 'Last Calendar Year',\n  ThisYear = 'This Year (Jan - Today)',\n  Custom = 'Custom'\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDate, NgbDatepicker, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\n\nimport moment from 'moment-mini';\nimport { DateRange } from '../enums/date-range';\nimport { DateRangeChange } from '../models/date-range-change';\n\nimport { DefaultDateRanges } from '../models/default-date-ranges';\n\n/**\n * A utility class for the date range picker component\n */\n@Injectable()\nexport class DateRangePickerUtils {\n  constructor() {}\n\n  /**\n   * Returns the start and end dates of a given date range key as moment objects.\n   *\n   * @param dateRangeKey The string value representing the selected date range key.\n   *\n   * @returns An array of two moment.Moment objects representing the start and end dates of the selected date range.\n   */\n  getDateRangeAsMoments(dateRangeKey: string): [moment.Moment, moment.Moment] {\n    const dateRanges = this.getDefaultDateRanges();\n    const [startDate, endDate] = dateRanges[dateRangeKey];\n    return [moment(startDate), moment(endDate)];\n  }\n\n  /**\n   * Returns the corresponding DateRange enum value based on a given string key.\n   *\n   * @param rangeKey The string value representing the selected date range key.\n   *\n   * @returns The corresponding DateRange enum value if found, or DateRange.Last28Days as a default.\n   */\n  getDateRangeFromKey(rangeKey: string): DateRange {\n    const range = DateRange[rangeKey as keyof typeof DateRange];\n    return range !== undefined ? range : DateRange.Last28Days;\n  }\n\n  /**\n   * Returns a formatted label for the selected date range, based on the provided start and end moment objects.\n   *\n   * @param fromMoment The moment object representing the start date of the selected date range.\n   * @param toMoment The moment object representing the end date of the selected date range.\n   *\n   * @returns A formatted string label for the selected date range.\n   */\n  getSelectedRangeDateLabel(fromMoment: moment.Moment, toMoment: moment.Moment): string {\n    const dateFormat = 'DD MMM';\n    const dateFormatWithYear = `${dateFormat} YYYY`;\n\n    if (fromMoment.year() === toMoment.year()) {\n      return `${fromMoment.format(dateFormat)}-${toMoment.format(dateFormatWithYear)}`;\n    } else {\n      return `${fromMoment.format(dateFormatWithYear)}-${toMoment.format(dateFormatWithYear)}`;\n    }\n  }\n\n  /**\n   * Focuses on a specific date in a NgbDatepicker component.\n   *\n   * @param dateRangerPicker The NgbDatepicker component to focus on.\n   * @param fromDate The NgbDate object representing the date to focus on.\n   *\n   * @returns None.\n   */\n  focusDateInPicker(dateRangerPicker: NgbDatepicker | undefined, fromDate: NgbDate) {\n    dateRangerPicker?.focusDate(fromDate);\n  }\n\n  /**\n   * Converts a moment object to a NgbDate object.\n   *\n   * @param momentObj The moment object to convert.\n   *\n   * @returns The corresponding NgbDate object.\n   */\n  convertToNgbDate(momentObj: moment.Moment): NgbDate {\n    return new NgbDate(momentObj.year(), momentObj.month() + 1, momentObj.date());\n  }\n\n  /**\n   * Closes the NgbDropdown component if it is open.\n   *\n   * @param dropdown The NgbDropdown component to close.\n   *\n   * @returns None.\n   */\n  closeDropDown(dropdown: NgbDropdown | undefined) {\n    dropdown?.close();\n  }\n\n  /**\n   * Returns an object containing default date ranges for the date range picker.\n   *\n   * @returns An object containing default date ranges, with the keys being the DateRange enum values and the values being arrays of start and end dates as strings.\n   */\n  getDefaultDateRanges(): DefaultDateRanges {\n    const now = moment();\n    const getNowCloned = (m: moment.Moment) => m.clone();\n    const dateRanges: DefaultDateRanges = {};\n\n    for (const rangeKey of Object.keys(DateRange)) {\n      const range = DateRange[rangeKey as keyof typeof DateRange];\n      switch (range) {\n        case DateRange.Today:\n          dateRanges[rangeKey] = [getNowCloned(now).startOf('day'), getNowCloned(now).endOf('day')];\n          break;\n        case DateRange.Yesterday:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(1, 'day').startOf('day'), getNowCloned(now).subtract(1, 'day').endOf('day')];\n          break;\n        case DateRange.Last7Days:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(6, 'day').startOf('day'), getNowCloned(now)];\n          break;\n        case DateRange.Last28Days:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(27, 'day').startOf('day'), getNowCloned(now)];\n          break;\n        case DateRange.Last30Days:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(29, 'day').startOf('day'), getNowCloned(now)];\n          break;\n        case DateRange.Last90Days:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(89, 'day').startOf('day'), getNowCloned(now)];\n          break;\n        case DateRange.ThisMonth:\n          dateRanges[rangeKey] = [getNowCloned(now).startOf('month'), getNowCloned(now).endOf('month')];\n          break;\n        case DateRange.LastMonth:\n          dateRanges[rangeKey] = [\n            getNowCloned(now).subtract(1, 'month').startOf('month'),\n            getNowCloned(now).subtract(1, 'month').endOf('month')\n          ];\n          break;\n        case DateRange.Last12Months:\n          dateRanges[rangeKey] = [getNowCloned(now).subtract(11, 'month').startOf('month'), getNowCloned(now)];\n          break;\n        case DateRange.LastCalendarYear:\n          dateRanges[rangeKey] = [\n            getNowCloned(now).subtract(1, 'year').startOf('year'),\n            getNowCloned(now).subtract(1, 'year').endOf('year')\n          ];\n          break;\n        case DateRange.ThisYear:\n          dateRanges[rangeKey] = [getNowCloned(now).startOf('year'), getNowCloned(now)];\n          break;\n        case DateRange.Custom:\n          dateRanges[rangeKey] = [getNowCloned(now), getNowCloned(now)];\n          break;\n      }\n    }\n    return dateRanges;\n  }\n\n  // /**\n  //  * Returns a string representation of a DateRangeChange object.\n  //  *\n  //  * @param dateRangeChange The DateRangeChange object to convert to a string.\n  //  * @returns A string representing the DateRangeChange object.\n  //  */\n  // dateRangeChangeToString(dateRangeChange: DateRangeChange): string {\n  //   return `${dateRangeChange.dateRange}, ${dateRangeChange.startDate.format('YYYY-MM-DD')} to ${dateRangeChange.endDate.format(\n  //     'YYYY-MM-DD'\n  //   )}`;\n  // }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { NgbCalendar, NgbDate, NgbDateParserFormatter, NgbDatepicker, NgbDropdown } from '@ng-bootstrap/ng-bootstrap';\nimport { Moment } from 'moment-mini';\nimport { DATE_RANGE_OPTIONS } from '../../constants/date-range-options';\nimport { DateRange } from '../../enums/date-range';\nimport { DateRangeChange } from '../../models/date-range-change';\nimport { DateRangePickerUtils } from '../../utils/date-ranges-utils';\n\n@Component({\n  selector: 'app-date-range-picker',\n  templateUrl: './date-range-picker.component.html',\n  styleUrls: ['./date-range-picker.component.scss']\n})\nexport class DateRangePickerComponent implements OnInit {\n  /**\n   * The default date range option to show.\n   * @default DATE_RANGE_OPTIONS.Last28Days\n   */\n  @Input() dateRangeKey = DATE_RANGE_OPTIONS.Last28Days;\n\n  /**\n   * The CSS class to apply to the \"Apply\" button.\n   * @default 'btn-primary'\n   */\n  @Input() btnApplyClass = 'btn-primary';\n\n  /**\n   * The CSS class to apply to the date range picker.\n   * @default ''\n   */\n  @Input() pickerCustomClass = '';\n\n  /**\n   * Emitted when the date range selection is changed.\n   */\n  @Output() readonly rangeChanged: EventEmitter<DateRangeChange> = new EventEmitter<DateRangeChange>();\n\n  @ViewChild('dp') dateRangerPicker: NgbDatepicker | undefined; // Reference to the datepicker element\n  @ViewChild(NgbDropdown) dropdown: NgbDropdown | undefined; // Reference to the dropdown element\n\n  selectedDateRangeKey!: string;\n  selectedDateRangeTempKey!: string;\n\n  selectedRangeLabel!: string; // Selected date range label to display\n  selectedRangeDateLabel!: string; // Selected date range with formatted date range to display\n  selectedRangeTempLabel!: string; // Temporary selected date range label used before applying it\n  selectedDateRange = this.dateRangeKey; // Currently selected date range\n\n  hoveredDate: NgbDate | null = null; // Currently hovered date for the custom date range\n  startNgbDate!: NgbDate; // Start date for the selected date range\n  endNgbDate!: NgbDate | null; // End date for the selected date range, can be null in case of custom date range\n\n  startDate!: Moment; // Moment object for start date\n  endDate!: Moment; // Moment object for end date, can be null in case of custom date range\n\n  dateRangeOptions: { key: string; value: string }[] = [];\n\n  constructor(\n    private dateRangePickerUtils: DateRangePickerUtils,\n    private calendar: NgbCalendar,\n    public formatter: NgbDateParserFormatter\n  ) {}\n\n  ngOnInit(): void {\n    this.dateRangeOptions = Object.entries(DateRange).map(([key, value]) => ({ key, value }));\n\n    // Set the default date range option\n    const [startDate, endDate] = this.dateRangePickerUtils.getDateRangeAsMoments(this.dateRangeKey);\n    this.startNgbDate = this.dateRangePickerUtils.convertToNgbDate(startDate);\n    this.endNgbDate = this.dateRangePickerUtils.convertToNgbDate(endDate);\n\n    this.startDate = startDate;\n    this.endDate = endDate;\n\n    this.selectedRangeLabel = this.selectedRangeTempLabel = this.dateRangePickerUtils.getDateRangeFromKey(this.dateRangeKey);\n    this.selectedRangeDateLabel = this.dateRangePickerUtils.getSelectedRangeDateLabel(startDate, endDate);\n  }\n\n  // onDateSelection(date: NgbDate) {\n  //   if (!this.startNgbDate && !this.endNgbDate) {\n  //     this.startNgbDate = date;\n  //   } else if (this.startNgbDate && !this.endNgbDate && date && date.after(this.startNgbDate)) {\n  //     this.endNgbDate = date;\n  //   } else {\n  //     this.endNgbDate = null;\n  //     this.startNgbDate = date;\n  //   }\n\n  //   this.setRange(DATE_RANGE_OPTIONS.Custom);\n  // }\n\n  isHovered(date: NgbDate) {\n    // Returns true if the start date, hovered date, and selected date satisfy the conditions for a range.\n    return this.startNgbDate && !this.endNgbDate && this.hoveredDate && date.after(this.startNgbDate) && date.before(this.hoveredDate);\n  }\n\n  onDateSelection(date: NgbDate) {\n    // If both the start and end dates are not set, set the start date to the selected date\n    if (!this.startNgbDate && !this.endNgbDate) {\n      this.startNgbDate = date;\n    }\n    // If the start date is set, but not the end date, and the selected date is after the start date, set the end date to the selected date\n    else if (this.startNgbDate && !this.endNgbDate && date && date.after(this.startNgbDate)) {\n      this.endNgbDate = date;\n    }\n    // Reset the selected dates if both the start and end dates are set, or if the selected date is before the start date.\n    else {\n      this.endNgbDate = null;\n      this.startNgbDate = date;\n    }\n\n    // Update the date range to \"Custom\" and emit the rangeChanged event\n    this.setRange(DATE_RANGE_OPTIONS.Custom);\n  }\n\n  isInside(date: NgbDate) {\n    // Returns true if the end date is set, and the selected date is after the start date and before the end date\n    return this.endNgbDate && date.after(this.startNgbDate) && date.before(this.endNgbDate);\n  }\n\n  isRange(date: NgbDate) {\n    // Returns true if the selected date is the start date, the end date, inside the range, or hovered over\n    return (\n      date.equals(this.startNgbDate) || (this.endNgbDate && date.equals(this.endNgbDate)) || this.isInside(date) || this.isHovered(date)\n    );\n  }\n\n  validateInput(currentValue: NgbDate | null, input: string): NgbDate | null {\n    // Parses the input string and returns a NgbDate object if the input is valid and within the calendar range\n    const parsed = this.formatter.parse(input);\n    return parsed && this.calendar.isValid(NgbDate.from(parsed)) ? NgbDate.from(parsed) : currentValue;\n  }\n\n  changeDateRange(rangeKey: string, event: Event) {\n    // Stops the event from propagating and updates the date range\n    event.stopPropagation();\n    this.setRange(rangeKey);\n  }\n\n  cancel() {\n    // Closes the dropdown menu\n    this.dateRangePickerUtils.closeDropDown(this.dropdown);\n  }\n\n  isActiveRange(range: string) {\n    return this.selectedRangeTempLabel === range;\n  }\n\n  apply() {\n    this.selectedDateRangeKey = this.selectedDateRangeTempKey;\n\n    // Update the selected range label\n    this.selectedRangeLabel = this.selectedRangeTempLabel;\n\n    // Calculate the selected range date label based on the selected date range\n    this.selectedRangeDateLabel = this.dateRangePickerUtils.getSelectedRangeDateLabel(this.startDate, this.endDate);\n\n    // Emit the range changed event with the selected range date range\n    this.emitRangeChanged();\n\n    // Close the date range picker dropdown\n    this.dateRangePickerUtils.closeDropDown(this.dropdown);\n  }\n\n  private setRange(dateRangeKey: string) {\n    const dateRange = this.dateRangePickerUtils.getDateRangeFromKey(dateRangeKey);\n\n    this.selectedDateRangeTempKey = dateRangeKey;\n\n    // Check if the selected range is 'Custom'\n    if (dateRangeKey === DATE_RANGE_OPTIONS.Custom) {\n      // If the user has selected both the start and end date\n      if (this.startNgbDate && this.endNgbDate) {\n        // Set the selected range label to 'Custom'\n        this.selectedRangeTempLabel = dateRange;\n      }\n    } else {\n      // Get the start and end moments of the selected range\n      const [startDate, endDate] = this.dateRangePickerUtils.getDateRangeAsMoments(dateRangeKey);\n\n      // Convert start and end moments to NgbDate\n      this.startNgbDate = this.dateRangePickerUtils.convertToNgbDate(startDate);\n      this.endNgbDate = this.dateRangePickerUtils.convertToNgbDate(endDate);\n\n      // Set the start and end dates\n      this.startDate = startDate;\n      this.endDate = endDate;\n\n      // Set the selected range label\n      this.selectedRangeTempLabel = dateRange;\n\n      // Focus on the start date in the date picker\n      this.dateRangePickerUtils.focusDateInPicker(this.dateRangerPicker, this.startNgbDate);\n    }\n  }\n\n  private emitRangeChanged() {\n    // Emit event with selected date range and dates\n    const dateRangeChange: DateRangeChange = {\n      dateRange: this.selectedDateRangeKey,\n      startDate: this.startDate,\n      endDate: this.endDate\n    };\n    this.rangeChanged.emit(dateRangeChange);\n  }\n}\n","<form>\n  <!-- <div class=\"mb-3\"> -->\n  <div class=\"d-flex flex-row {{ pickerCustomClass }}\">\n    <div class=\"p-2\">\n      <div class=\"d-inline-block\" #dropdown=\"ngbDropdown\" [autoClose]=\"'outside'\" ngbDropdown display=\"dynamic\">\n        <div class=\"d-flex align-items-center\" ngbDropdownToggle>\n          <div class=\"date-range-label me-2 p-1\">\n            {{ selectedRangeLabel }}\n          </div>\n          <div class=\"ms-auto d-flex align-items-center\">\n            <div class=\"me-2\">{{ selectedRangeDateLabel }}</div>\n          </div>\n        </div>\n        <div class=\"dropdown-menu date-range-dropdown\" ngbDropdownMenu aria-labelledby=\"dropdownRange\">\n          <div class=\"d-flex flex-row align-items-stretch\">\n            <div class=\"p-2 border-right dropdown-menu-options\">\n              <button\n                class=\"dropdown-item d-flex align-items-center justify-content-between\"\n                *ngFor=\"let range of dateRangeOptions\"\n                [ngClass]=\"{ active: isActiveRange(range.value) }\"\n                (click)=\"changeDateRange(range.key, $event)\"\n                ngbDropdownItem>\n                {{ range.value }}\n                <span class=\"ms-auto\" *ngIf=\"isActiveRange(range.value)\">&#x2713;</span>\n              </button>\n            </div>\n\n            <div class=\"p-2\">\n              <ngb-datepicker\n                #dp\n                [displayMonths]=\"2\"\n                [dayTemplate]=\"t\"\n                (dateSelect)=\"onDateSelection($event)\"\n                outsideDays=\"hidden\"></ngb-datepicker>\n\n              <ng-template #t let-date let-focused=\"focused\">\n                <span\n                  class=\"custom-day\"\n                  [class.focused]=\"focused\"\n                  [class.range]=\"isRange(date)\"\n                  [class.faded]=\"isHovered(date) || isInside(date)\"\n                  (mouseenter)=\"hoveredDate = date\"\n                  (mouseleave)=\"hoveredDate = null\">\n                  {{ date.day }}\n                </span>\n              </ng-template>\n            </div>\n          </div>\n          <div class=\"dropdown-divider\"></div>\n          <div class=\"d-flex flex-row justify-content-end align-items-center px-3 py-2\">\n            <button class=\"btn btn-sm btn-secondary me-2\" (click)=\"cancel()\" type=\"button\">Cancel</button>\n            <button class=\"btn btn-sm {{ btnApplyClass }}\" (click)=\"apply()\" type=\"button\">Apply</button>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <!-- </div> -->\n</form>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgbModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport { DateRangePickerComponent } from './components/date-range-picker/date-range-picker.component';\nimport { DateRangePickerUtils } from './utils/date-ranges-utils';\n\n@NgModule({\n  declarations: [DateRangePickerComponent], // Components declared in this module\n  imports: [FormsModule, CommonModule, NgbModule, NgbDatepickerModule, NgbDropdownModule], // External modules imported by this module\n  exports: [DateRangePickerComponent], // Components, directives, and pipes exported by this module\n  providers: [DateRangePickerUtils] // Services provided by this module\n})\nexport class DateRangePickerModule {}\n","/* eslint-disable @typescript-eslint/naming-convention */\n// Enum representing the available date ranges\nexport enum DateRangeOptionEnum {\n  Today,\n  Yesterday,\n  Last7Days,\n  Last28Days,\n  Last30Days,\n  Last90Days,\n  ThisMonth,\n  LastMonth,\n  Last12Months,\n  LastCalendarYear,\n  ThisYear,\n  Custom\n}\n","/*\n * Public API Surface of ng-bootstrap-date-range-picker\n */\nexport * from './lib/components/date-range-picker/date-range-picker.component';\nexport * from './lib/date-range-picker.module';\nexport * from './lib/utils/date-ranges-utils';\nexport * from './lib/constants/date-range-options';\nexport * from './lib/models/date-range-change';\nexport * from './lib/enums/date-range-option-enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DateRangePickerUtils"],"mappings":"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"}