{"version":3,"file":"ngx-obelisco-example-calendar.mjs","sources":["../../../projects/ngx-obelisco/calendar/o-calendar.component.ts","../../../projects/ngx-obelisco/calendar/o-calendar.component.html","../../../projects/ngx-obelisco/calendar/o-calendar.module.ts","../../../projects/ngx-obelisco/calendar/ngx-obelisco-example-calendar.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActiveDay, CalendarDate } from 'ngx-obelisco-example/core/models';\r\n\r\n@Component({\r\n  selector: 'o-calendar',\r\n  templateUrl: './o-calendar.component.html',\r\n  styleUrls: ['./o-calendar.component.scss']\r\n})\r\nexport class OCalendarComponent implements OnInit {\r\n  @Input() public date!: CalendarDate;\r\n  @Input() public activeDays: ActiveDay[] = [];\r\n  @Input() public isCollapsed: boolean = false;\r\n  @Input() public hasList: boolean = true;\r\n  @Input() public customClasses: string = '';\r\n\r\n  public month: number | null = null;\r\n  public year: number | null = null;\r\n  public start: number = 0;\r\n  public MONTH_TITLE = [\r\n    'Enero',\r\n    'Febrero',\r\n    'Marzo',\r\n    'Abril',\r\n    'Mayo',\r\n    'Junio',\r\n    'Julio',\r\n    'Agosto',\r\n    'Septiembre',\r\n    'Octubre',\r\n    'Noviembre',\r\n    'Diciembre'\r\n  ];\r\n  public DAYS_HEADER_TABLE = ['D', 'L', 'M', 'M', 'J', 'V', 'S'];\r\n  public daysArray: number[] = [];\r\n  public emptyDaysArray: any[] = [];\r\n  public firstWeekDays: number = 0;\r\n  public firstWeekDaysArray: number[] = [];\r\n  public weekDaysArray: number[] = [];\r\n  public analizedActiveDays: ActiveDay[] = [];\r\n\r\n  //Determina el dia de la semana en que empieza del mes de determinado año\r\n  getStartDayOfMonth(year: number, month: number): number {\r\n    const firstDayOfMonth = new Date(year, month - 1, 1);\r\n    const dayOfWeek = firstDayOfMonth.getDay();\r\n    this.start = dayOfWeek;\r\n    return this.start;\r\n  }\r\n\r\n  //Define número de días por mes\r\n  public monthAmountOfDays = (month: number, year?: number): number => {\r\n    if (typeof month !== 'number' || month < 1 || month > 12) {\r\n      return 0;\r\n    }\r\n\r\n    if (month === 4 || month === 6 || month === 9 || month === 11) {\r\n      return 30;\r\n    } else if (month === 2) {\r\n      return (year ? year : 2024) % 4 === 0 ? 29 : 28;\r\n    } else {\r\n      return 31;\r\n    }\r\n  };\r\n\r\n  //Define texto del mes\r\n  public monthsTitles = (month?: number) => {\r\n    if (month && month >= 1 && month <= 12) {\r\n      return this.MONTH_TITLE[month - 1];\r\n    } else {\r\n      return 'Mes inválido';\r\n    }\r\n  };\r\n\r\n  // Genera filas de 7 días cada una\r\n  get weekDaysArrayRows(): { rows: number[][]; counter: number } {\r\n    const rows: number[][] = [];\r\n    const rowSize = 7;\r\n    const arrayLength = this.weekDaysArray.length;\r\n    let counter: number = 0;\r\n\r\n    for (let i = 0; i < arrayLength; i += rowSize) {\r\n      rows.push(this.weekDaysArray.slice(i, i + rowSize));\r\n      counter += 1;\r\n    }\r\n\r\n    // Se añaden elementos vacios si es necesario para completar la última fila\r\n    const lastChunkLength = rows[rows.length - 1].length;\r\n    if (lastChunkLength < rowSize) {\r\n      const remainingSpecials = rowSize - lastChunkLength;\r\n      for (let i = 0; i < remainingSpecials; i++) {\r\n        rows[rows.length - 1].push(-1);\r\n      }\r\n    }\r\n    return { rows, counter };\r\n  }\r\n\r\n  //Evalua si hay numeros de activeDays que coincidan\r\n  isActiveDay(day: number): boolean {\r\n    return !!this.analizedActiveDays?.find((activeDay) => activeDay.day === day);\r\n  }\r\n\r\n  getActiveDay(day: number): ActiveDay | undefined {\r\n    return this.analizedActiveDays?.find((activeDay) => activeDay.day === day);\r\n  }\r\n\r\n  //Convierte array de days en objetos\r\n  convertArrayIntoObject(objeto: any): any[] {\r\n    const dayArray = objeto.day;\r\n    if (Array.isArray(dayArray)) {\r\n      return dayArray.map((day) => ({\r\n        ...objeto,\r\n        day: day\r\n      }));\r\n    } else {\r\n      return [objeto];\r\n    }\r\n  }\r\n\r\n  //Evalua cada activeDay\r\n  generateArrayActiveDays(activeDays: ActiveDay[]): ActiveDay[] | undefined {\r\n    for (const key in activeDays) {\r\n      if (Object.prototype.hasOwnProperty.call(activeDays, key)) {\r\n        const element = activeDays[key];\r\n        if (typeof element.day == 'number') {\r\n          this.analizedActiveDays.push(element);\r\n        } else {\r\n          for (const obj of this.convertArrayIntoObject(element)) {\r\n            this.analizedActiveDays.push(obj);\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return this.analizedActiveDays;\r\n  }\r\n\r\n  //Obtiene clase de cada activeDay acorde al type\r\n  getClassByType(type: string | undefined): string {\r\n    if (type == undefined) {\r\n      return 'active';\r\n    } else if (type == 'secondary') {\r\n      return 'active-secondary';\r\n    } else {\r\n      return `active bg-${type}`;\r\n    }\r\n  }\r\n\r\n  //Obtiene el tipo de day y lo asigna a la lista\r\n  typeOfDays(day: number | number[] | undefined): string {\r\n    if (!day) {\r\n      return '';\r\n    } else if (typeof day === 'number') {\r\n      return `${day}.`;\r\n    } else {\r\n      if (day.length > 2) {\r\n        return `${day[0]} al ${day[day.length - 1]}.`;\r\n      } else {\r\n        return `${day[0]}, ${day[day.length - 1]}.`;\r\n      }\r\n    }\r\n  }\r\n\r\n  constructor() {}\r\n\r\n  ngOnInit(): void {\r\n    if (this.date) {\r\n      this.month = this.date.month;\r\n      this.year = this.date.year;\r\n    }\r\n\r\n    this.getStartDayOfMonth(this.year!, this.month!);\r\n\r\n    this.daysArray = Array.from({ length: this.monthAmountOfDays(this.month!, this.year!) }, (_, index) => index + 1);\r\n\r\n    this.emptyDaysArray = this.start < 7 ? Array.from({ length: this.start }, (_, index) => ({ key: index })) : [];\r\n\r\n    this.firstWeekDays = 7 - this.start;\r\n\r\n    this.firstWeekDaysArray = this.daysArray.slice(0, this.firstWeekDays);\r\n\r\n    this.weekDaysArray = this.daysArray.slice(this.firstWeekDays);\r\n\r\n    if (this.activeDays) {\r\n      this.generateArrayActiveDays(this.activeDays);\r\n    }\r\n  }\r\n}\r\n","<div class=\"calendar\" [ngClass]=\"customClasses\">\r\n  <div class=\"calendar-header\">\r\n    <h2 class=\"calendar-title\">{{ monthsTitles(month!) }}</h2>\r\n    <span class=\"calendar-year\">{{ year }}</span>\r\n  </div>\r\n  <div class=\"calendar-body\">\r\n    <table>\r\n      <thead>\r\n        <tr class=\"calendar-week-header\">\r\n          <th *ngFor=\"let day of DAYS_HEADER_TABLE\">\r\n            <span>{{ day }}</span>\r\n          </th>\r\n        </tr>\r\n      </thead>\r\n      <tbody>\r\n        <tr class=\"calendar-week\">\r\n          <ng-container *ngIf=\"emptyDaysArray.length != 0\">\r\n            <td *ngFor=\"let empatyDay of emptyDaysArray\"></td>\r\n          </ng-container>\r\n          <td *ngFor=\"let day of firstWeekDaysArray\">\r\n            <ng-container *ngTemplateOutlet=\"activeDay; context: { day: day }\"></ng-container>\r\n          </td>\r\n        </tr>\r\n\r\n        <tr class=\"calendar-week\" *ngFor=\"let chunkObject of weekDaysArrayRows.rows\">\r\n          <ng-container *ngFor=\"let day of chunkObject; let i = index\">\r\n            <td>\r\n              <ng-container *ngIf=\"day >= 0\">\r\n                <ng-container *ngTemplateOutlet=\"activeDay; context: { day: day }\"></ng-container>\r\n              </ng-container>\r\n              <ng-container *ngIf=\"day < 0\">\r\n                <span></span>\r\n              </ng-container>\r\n            </td>\r\n          </ng-container>\r\n        </tr>\r\n        <tr class=\"calendar-week\" *ngIf=\"weekDaysArrayRows.counter === 4\">\r\n          <td *ngFor=\"let _ of [1, 2, 3, 4, 5, 6, 7]\">\r\n            <span></span>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n  <div class=\"calendar-footer\" *ngIf=\"activeDays && hasList\">\r\n    <ng-container *ngIf=\"isCollapsed; else calendarList\">\r\n      <div class=\"accordion\">\r\n        <div class=\"card\">\r\n          <button\r\n            class=\"card-header collapsed\"\r\n            data-toggle=\"collapse\"\r\n            [attr.data-target]=\"'#collapse' + monthsTitles(month!)\"\r\n          >\r\n            <i class=\"bx bx-calendar\"></i>\r\n            <span class=\"collapse-title\">Referencias</span>\r\n          </button>\r\n          <div id=\"collapse{{ monthsTitles(month!) }}\" class=\"collapse\">\r\n            <div class=\"card-body\">\r\n              <ng-container *ngTemplateOutlet=\"calendarList\"></ng-container>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #calendarList>\r\n  <ul class=\"calendar-footer-list\">\r\n    <li *ngFor=\"let activeDay of activeDays\">\r\n      <strong>\r\n        {{ typeOfDays(activeDay.day) }}\r\n      </strong>\r\n      {{ activeDay.title }}\r\n    </li>\r\n  </ul>\r\n</ng-template>\r\n\r\n<ng-template #activeDay let-day=\"day\">\r\n  <ng-container *ngIf=\"isActiveDay(day); else notActive\">\r\n    <a\r\n      *ngIf=\"getActiveDay(day)?.url != undefined; else activeNoLink\"\r\n      href=\"{{ getActiveDay(day)?.url }}\"\r\n      class=\"calendar-link\"\r\n      title=\"{{ getActiveDay(day)?.title }}\"\r\n      [class.disabled]=\"getActiveDay(day)?.isDisabled\"\r\n      (click)=\"getActiveDay(day)?.isDisabled && $event.preventDefault()\"\r\n    >\r\n      <span [ngClass]=\"getClassByType(getActiveDay(day)?.type)\">{{ day }}</span>\r\n    </a>\r\n    <ng-template #activeNoLink>\r\n      <span title=\"{{ getActiveDay(day)?.title }}\" [class.disabled]=\"getActiveDay(day)?.isDisabled\">\r\n        <span [ngClass]=\"getClassByType(getActiveDay(day)?.type)\">{{ day }}</span>\r\n      </span>\r\n    </ng-template>\r\n  </ng-container>\r\n  <ng-template #notActive>\r\n    <span>{{ day }}</span>\r\n  </ng-template>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OCalendarComponent } from './o-calendar.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n  declarations: [OCalendarComponent],\r\n  imports: [CommonModule, RouterModule],\r\n  exports: [OCalendarComponent]\r\n})\r\nexport class OCalendarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}