{"version":3,"file":"sn-calendar.mjs","sources":["../../../projects/sn-calendar-lib/src/lib/sn-calendar.service.ts","../../../projects/sn-calendar-lib/src/lib/sn-calendar.component.ts","../../../projects/sn-calendar-lib/src/lib/sn-calendar.component.html","../../../projects/sn-calendar-lib/src/lib/sn-year/sn-year.component.ts","../../../projects/sn-calendar-lib/src/lib/sn-year/sn-year.component.html","../../../projects/sn-calendar-lib/src/lib/sn-calendar.module.ts","../../../projects/sn-calendar-lib/src/public_api.ts","../../../projects/sn-calendar-lib/src/sn-calendar.ts"],"sourcesContent":["/**\n * This is SnCalendarService\n * Developed By Swapnil Nakate\n * Twitter: @SwapnilNakate7 Email:nakate.swapnil7@gmail.com\n * [***DO NOT REMOVE THIS***]\n */\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SnCalendarService {\n\n  constructor() { }\n  info(message: string) {\n    console.log(message);\n  }\n\n  warn(message: string) {\n    console.warn(message);\n  }\n\n  error(message: string) {\n    console.error(message);\n  }\n}\n","/**\n * This is SnCalendarComponent\n * Developed By Swapnil Nakate\n * Twitter: @SwapnilNakate7 Email:nakate.swapnil7@gmail.com\n * [***DO NOT REMOVE THIS***]\n */\nimport { Component, OnInit, Input, Output, EventEmitter, ElementRef, Renderer2 } from '@angular/core';\nimport moment from 'moment';\nimport { SnCalendarService } from './sn-calendar.service';\nimport { Moment } from 'moment';\nimport { NgClass } from '@angular/common';\n@Component({\n    selector: 'sn-calendar',\n    templateUrl: './sn-calendar.component.html',\n    styleUrls: ['./sn-calendar.component.scss'],\n    standalone: true,\n    imports: [NgClass]\n})\nexport class SnCalendarComponent implements OnInit {\n\n  _weekdays: string[] = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\n  _daysInMonth: number;\n  _currentDayinWeek: number;\n  _today?: any;\n  _monthDays: any;\n  _bigWeekArray: any[];\n  _dayOfMonth: number;\n  _locale: string;\n  _months: string[];\n  _restrictPast: boolean;\n  _dateRange:any[]=[];\n\n  @Input() type?:string;\n  @Input() currentMonth?: Moment;\n\n  @Input() startDayofWeek?: string;\n  @Input() locale?: string;\n  @Input() selectedDate?: Moment;\n  @Input() restrictPast?: boolean;\n  @Input() enableDateRange?:boolean = false;\n  @Output() dateSelected?: EventEmitter<Moment> = new EventEmitter<Moment>();\n  @Output() dateRangeSelected?:EventEmitter<any> = new EventEmitter<any>();\n\n  constructor(private log: SnCalendarService,private renderer:Renderer2) { }\n\n  ngOnInit() {\n    this._locale = this.locale ? this.locale : 'en';\n    this.log.info('Current Locale: ' + this._locale);\n    this._today = moment();\n\n    if(!this.type){\n      this.type='month';\n    }\n\n    if(this.type == 'year'){\n      this.setCurrentMonth(this.currentMonth);\n      this.selectedDate = this.currentMonth;\n    }\n\n    if (!this.selectedDate && this.type == 'month') {\n      this.selectedDate = moment();\n      this.log.warn('CalendarComponent.ngOnInit(): You did not provide the custom date');\n    }\n\n    if (typeof this.restrictPast !== 'undefined') {\n      this._restrictPast = this.restrictPast;\n    }\n\n    this.selectedDate = moment(this.selectedDate.toISOString());\n\n    this.setLocale(this._today, this.selectedDate);\n\n    this._months = this._today['_locale']['_months'];\n\n    if (!this.startDayofWeek) {\n      this._weekdays = this._today['_locale']['_weekdays'];\n      this.log.warn('CalendarComponent.ngOnInit(): You did not provide the custom start of the week');\n    }\n\n    if (this.startDayofWeek && this.startDayofWeek === 'sunday') {\n      this._weekdays = this._today['_locale']['_weekdays'];\n    }\n\n    this.dateSelected.emit(this.selectedDate);\n\n    this._daysInMonth = this.selectedDate.daysInMonth();\n    this._dayOfMonth = this.selectedDate.date();\n\n    this.setCurrentMonth(this.selectedDate);\n\n  }\n\n\n  /**\n   * This function updates the dates corrosponding to the current month\n   * according to the selected date\n   * @selectedDate {Moment}\n   */\n  setCurrentMonth(selectedDate: Moment) {\n    /**\n     * daysOfMonth = | 1,8,15,22,29|\n     *               | 2,9,16,23,30|\n     *               | 3,10,17,24,31|\n     *               | 4,11,18,25   |\n     *               | 5,12,19,26   |\n     *               | 6,13,20,27   |\n     *               | 7,14,21,28   |\n     */\n    const daysOfMonth = [[], [], [], [], [], [], []];\n    let date = 0;\n    let firstDateSet = false;\n    let _weekdayAtstartOfMonth = selectedDate.startOf('month').day();\n    if (this.startDayofWeek === 'monday') {\n      _weekdayAtstartOfMonth = (selectedDate.startOf('month').day() === 0) ? 0 :\n        selectedDate.startOf('month').day() - 1;\n    }\n\n    for (let i = 0, j = 0; i < 7; i++) {\n      if (date === selectedDate.daysInMonth() + 1) {\n        break;\n      }\n      if (i === _weekdayAtstartOfMonth && !firstDateSet) {\n        date = 1;\n        firstDateSet = true;\n      }\n      daysOfMonth[i][j] = date;\n      /**\n       * When first date is set increase the date\n       */\n      if (firstDateSet) {\n        date++;\n      }\n\n      /**\n       * When first week is completed start from 0 and fill the second column in the matrix\n       */\n       if (i === 6) {\n        i = -1;\n        j++;\n      }\n    }\n\n    this._monthDays = daysOfMonth;\n    this._bigWeekArray = this.getNumberOfWeeks(this._monthDays);\n  }\n\n  /**\n   * This  function sets the max _bigWeekArray[] in order to iterate\n   * through the available weeks\n   * @month {Array}\n   */\n  getNumberOfWeeks(month: [[]]) {\n    let maxSize = 0;\n    const weekArray: any[] = [];\n    month.forEach((week) => {\n      if (maxSize < week.length) {\n        maxSize = week.length;\n      }\n    });\n    for (let i = 0; i < maxSize; i++) {\n      weekArray.push(0);\n    }\n    return weekArray;\n  }\n\n  /**\n   * This updates the current date according to the date selection\n   * @date {number}\n   */\n  setCurrentDate(date: number) {\n    this.selectedDate.set('date', date);\n    this._dayOfMonth = this.selectedDate.date();\n    \n    if(this.enableDateRange){\n      this.updateDateRange(date);\n    }\n   \n\n    this.selectedDate = moment(this.selectedDate.toISOString());\n\n    this.dateSelected.emit(this.selectedDate);\n    this.log.info('CalendarComponent.setCurrentDate(): ' + this.selectedDate.toString());\n    this.log.info('CalendarComponent.setCurrentDate(): ' + this._dateRange);\n  }\n\n  updateDateRange(date:number){\n    if(this._dateRange.length == 0 || this._dateRange.length == 2){\n      this._dateRange =[]\n    }\n    if(this._dateRange.length == 1 && this._dateRange[0] < date){\n      this._dateRange.push(date);\n    }else if(this._dateRange.length ==0 && this.selectedDate.daysInMonth() !== date){\n      this._dateRange.push(date);\n    }\n\n    if(this._dateRange.length == 2){\n     let start = moment().set('date',this._dateRange[0]);\n     let end  = moment().set('date',this._dateRange[1]);\n     const eventData = {start,end};\n     this.dateRangeSelected.emit(eventData);\n     console.log('CalendarComponent.setCurrentDate() eventData: ', eventData);\n    }\n  }\n\n\n\n  isDateInRange(date:number){\n     let flag = false;\n     if(this.enableDateRange){\n      if(this._dateRange.length == 2 && this._dateRange[0] <= date && this._dateRange[1] >= date){\n        flag = true;\n      }\n      if(this._dateRange.length == 1 && this._dateRange[0] <= date){\n        flag = true;\n      }\n     }\n     \n    return flag;\n  }\n\n  /**\n   * This updates the month according to month navigation\n   * @updateTo {string}\n   */\n  updateMonth(updateTo: string) {\n    const updateToOperation = { 'next': 1, 'previous': -1 };\n    const month = updateTo ? updateToOperation[updateTo] : 'next';\n\n    this.selectedDate.set('month', this.selectedDate.month() + month);\n    this.selectedDate = moment(this.selectedDate.toISOString());\n\n    this.setCurrentMonth(this.selectedDate);\n    this._dayOfMonth = this.selectedDate.date();\n\n    this.dateSelected.emit(this.selectedDate);\n    this.log.info('CalendarComponent.updateMonth(): ' + this.selectedDate.toString());\n  }\n\n  /**\n   * This will disable all the past dates\n   * @date {number} current date\n   * @selectedDate {Moment} current date\n   */\n  disableDatesBefore(date: number, selectedDate: Moment) {\n    const selectedMonth = selectedDate.month();\n    const selectedYear = selectedDate.year();\n    const currentMonth = this._today.month();\n    const currentYear = this._today.year();\n    const currentDate = this._today.date();\n\n    if (!this._restrictPast) {\n      return false;\n    }\n\n    if (selectedYear === currentYear) {\n      if (selectedMonth < currentMonth) {\n        return true;\n      } else if (selectedMonth === currentMonth && date < currentDate) {\n        return true;\n      }\n    } else if (selectedYear < currentYear) {\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * This will set the locale for given dates\n   * @dates {Moment}\n   */\n  setLocale(...dates: Moment[]) {\n    const locale = this._locale;\n    dates.forEach((date) => {\n      date.locale(locale);\n    });\n\n  }\n\n  /**\n   * returns Month as a string\n   * @index {number}\n   */\n  getMonth(index: number) {\n    if (index < 0) {\n      return this._months[11];\n    }\n    if (index > 11) {\n      return this._months[0];\n    }\n    return this._months[index];\n  }\n\n  /**\n   * returns converted  number according to locale\n   * @number {number}\n   */\n  getLocaleNumber(number: number) {\n    return number.toLocaleString(this._locale);\n  }\n}\n","<div class=\"calendarContainer\">\n  <div class=\"calendarHead\">\n    <button (click)=\"updateMonth('previous')\">\n      {{ getMonth(selectedDate.month() - 1) }}\n    </button>\n    <p>\n      {{ getLocaleNumber(selectedDate.date()) }}\n      {{ getMonth(selectedDate.month()) }}\n      {{ getLocaleNumber(selectedDate.year()) }}\n    </p>\n    <button (click)=\"updateMonth('next')\">\n      {{ getMonth(selectedDate.month() + 1) }}\n    </button>\n  </div>\n  <table>\n    <thead>\n      <tr class=\"weekdays\">\n        <!-- <td class=\"weekdaysText\" *ngFor=\"let _weekday of _weekdays\">\n          {{ _weekday.substr(0, 2) }}\n        </td> -->\n        @for(_weekday of _weekdays;track $index){\n        <td class=\"weekdaysText\">\n          {{ _weekday.substr(0, 3) }}\n        </td>\n        }\n      </tr>\n    </thead>\n\n    <tbody>\n      <!-- <tr  *ngFor='let h of _bigWeekArray;let i=index'>\n        <td  *ngFor=\"let _week of _monthDays;let j=index\" [ngClass]=\"{'active': _dayOfMonth ==_week[i] && _dateRange.length == 0,\n       'disable': disableDatesBefore(_week[i],selectedDate),'dateRangeClicked': _dateRange.indexOf(_week[i]) > -1,'dateRange':isDateInRange(_week[i])}\"\n        (click)=\"disableDatesBefore(_week[i],selectedDate) || setCurrentDate(_week[i])\" >\n           {{_week[i] == 0?'':_week[i]}}\n       </td> \n       </tr> -->\n      @for(h of _bigWeekArray;track i;let i=$index){\n      <tr>\n        @for(_week of _monthDays;track j;let j=$index){\n        <td\n          [ngClass]=\"{\n            active: _dayOfMonth == _week[i] && _dateRange.length == 0,\n            disable: disableDatesBefore(_week[i], selectedDate),\n            dateRangeClicked: _dateRange.indexOf(_week[i]) > -1,\n            dateRange: isDateInRange(_week[i])\n          }\"\n          (click)=\"\n            disableDatesBefore(_week[i], selectedDate) ||\n              setCurrentDate(_week[i])\n          \"\n        >\n          {{ _week[i] == 0 ? \"\" : _week[i] }}\n        </td>\n        }\n      </tr>\n      }\n    </tbody>\n  </table>\n</div>\n","/**\n * This is SnYear\n * Developed By Swapnil Nakate\n * Twitter: @SwapnilNakate7 Email:nakate.swapnil7@gmail.com\n * [***DO NOT REMOVE THIS***]\n */\nimport { Component, Input } from \"@angular/core\";\nimport  { Moment } from \"moment\";\nimport moment from 'moment';\nimport { SnCalendarComponent } from \"../sn-calendar.component\";\n@Component({\n    selector: 'sn-year',\n    templateUrl: 'sn-year.component.html',\n    styleUrls: ['sn-year.component.scss'],\n    standalone: true,\n    imports: [SnCalendarComponent]\n})\nexport class SnYearComponent{\n   _months:string[]=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n   @Input()_year?:string;\n   _currentDate:Moment;\n   _selectedDateForYear:Moment;\n\n   ngOnInit(){\n     console.log(this._year);\n     this._currentDate = moment();\n   }\n\n   getMonth(monthId:any){\n    console.log(monthId);\n     return moment([this._year,monthId]);\n   }\n}\n","@for(month of _months;track i;let i=$index){\n<sn-calendar [type]=\"'year'\" [currentMonth]=\"getMonth(i)\"></sn-calendar>\n}\n<!-- <sn-calendar *ngFor=\"let month of _months;let i=index\"  [type]=\"'year'\" [currentMonth]=\"getMonth(i)\"></sn-calendar> -->\n","/**\n * This is SnCalendarModule\n * Developed By Swapnil Nakate\n * Twitter: @SwapnilNakate7 Email:nakate.swapnil7@gmail.com\n * [***DO NOT REMOVE THIS***]\n */\nimport { NgModule } from '@angular/core';\nimport { SnCalendarComponent } from './sn-calendar.component';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { SnYearComponent } from './sn-year/sn-year.component';\n\n@NgModule({\n    imports: [BrowserModule, SnCalendarComponent, SnYearComponent],\n    exports: [SnCalendarComponent, SnYearComponent]\n})\nexport class SnCalendarModule { }\n","/*\n * Public API Surface of sn-calendar-lib\n * Developed By Swapnil Nakate\n * Twitter: @SwapnilNakate7 Email:nakate.swapnil7@gmail.com\n * [***DO NOT REMOVE THIS***]\n */\n\nexport * from './lib/sn-calendar.service';\nexport * from './lib/sn-calendar.component';\nexport * from './lib/sn-year/sn-year.component';\nexport * from './lib/sn-calendar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SnCalendarService"],"mappings":"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"}