barsa-calendar 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +25 -0
  2. package/esm2020/barsa-calendar.mjs +5 -0
  3. package/esm2020/lib/barsa-calendar.module.mjs +106 -0
  4. package/esm2020/lib/calendar-container/calendar-container.component.mjs +190 -0
  5. package/esm2020/lib/calendar-header/calendar-header.component.mjs +61 -0
  6. package/esm2020/lib/calendar-list/calendar-list.component.mjs +19 -0
  7. package/esm2020/lib/calendar-list-container/calendar-list-container.component.mjs +30 -0
  8. package/esm2020/lib/calendar-list-item/calendar-list-item.component.mjs +14 -0
  9. package/esm2020/lib/calendar-month/calendar-month.component.mjs +244 -0
  10. package/esm2020/lib/calendar-selection-days/calendar-selection-days.component.mjs +193 -0
  11. package/esm2020/lib/calendar-week/calendar-week.component.mjs +182 -0
  12. package/esm2020/lib/constants.mjs +4 -0
  13. package/esm2020/lib/date-time-picker/date-time-picker.component.mjs +324 -0
  14. package/esm2020/lib/day-event-list/day-event-list.component.mjs +53 -0
  15. package/esm2020/lib/day-number-box/day-number-box.component.mjs +105 -0
  16. package/esm2020/lib/days-in-week.pipe.mjs +17 -0
  17. package/esm2020/lib/equal-date.pipe.mjs +23 -0
  18. package/esm2020/lib/event-button/event-button.component.mjs +70 -0
  19. package/esm2020/lib/event-date.pipe.mjs +24 -0
  20. package/esm2020/lib/event-preview/event-preview.component.mjs +60 -0
  21. package/esm2020/lib/event-time.pipe.mjs +22 -0
  22. package/esm2020/lib/from-to-time.pipe.mjs +23 -0
  23. package/esm2020/lib/models.mjs +14 -0
  24. package/esm2020/lib/month-days/month-days.component.mjs +220 -0
  25. package/esm2020/lib/services/calendar.service.mjs +610 -0
  26. package/esm2020/public-api.mjs +21 -0
  27. package/fesm2015/barsa-calendar.mjs +2447 -0
  28. package/fesm2015/barsa-calendar.mjs.map +1 -0
  29. package/fesm2020/barsa-calendar.mjs +2455 -0
  30. package/fesm2020/barsa-calendar.mjs.map +1 -0
  31. package/index.d.ts +5 -0
  32. package/lib/barsa-calendar.module.d.ts +33 -0
  33. package/lib/calendar-container/calendar-container.component.d.ts +73 -0
  34. package/lib/calendar-header/calendar-header.component.d.ts +29 -0
  35. package/lib/calendar-list/calendar-list.component.d.ts +8 -0
  36. package/lib/calendar-list-container/calendar-list-container.component.d.ts +14 -0
  37. package/lib/calendar-list-item/calendar-list-item.component.d.ts +7 -0
  38. package/lib/calendar-month/calendar-month.component.d.ts +70 -0
  39. package/lib/calendar-selection-days/calendar-selection-days.component.d.ts +47 -0
  40. package/lib/calendar-week/calendar-week.component.d.ts +57 -0
  41. package/lib/constants.d.ts +1 -0
  42. package/lib/date-time-picker/date-time-picker.component.d.ts +98 -0
  43. package/lib/day-event-list/day-event-list.component.d.ts +20 -0
  44. package/lib/day-number-box/day-number-box.component.d.ts +30 -0
  45. package/lib/days-in-week.pipe.d.ts +9 -0
  46. package/lib/equal-date.pipe.d.ts +8 -0
  47. package/lib/event-button/event-button.component.d.ts +26 -0
  48. package/lib/event-date.pipe.d.ts +9 -0
  49. package/lib/event-preview/event-preview.component.d.ts +19 -0
  50. package/lib/event-time.pipe.d.ts +9 -0
  51. package/lib/from-to-time.pipe.d.ts +9 -0
  52. package/lib/models.d.ts +107 -0
  53. package/lib/month-days/month-days.component.d.ts +69 -0
  54. package/lib/services/calendar.service.d.ts +70 -0
  55. package/package.json +31 -0
  56. package/public-api.d.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barsa-calendar.mjs","sources":["../../../projects/barsa-calendar/src/lib/models.ts","../../../projects/barsa-calendar/src/lib/services/calendar.service.ts","../../../projects/barsa-calendar/src/lib/days-in-week.pipe.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.html","../../../projects/barsa-calendar/src/lib/constants.ts","../../../projects/barsa-calendar/src/lib/event-date.pipe.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.html","../../../projects/barsa-calendar/src/lib/event-time.pipe.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.html","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.ts","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.html","../../../projects/barsa-calendar/src/lib/equal-date.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.html","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.ts","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.html","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.ts","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.html","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.ts","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.html","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.ts","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.html","../../../projects/barsa-calendar/src/lib/from-to-time.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.html","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.html","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.html","../../../projects/barsa-calendar/src/lib/barsa-calendar.module.ts","../../../projects/barsa-calendar/src/barsa-calendar.ts"],"sourcesContent":["import { DateInfo, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\r\n\r\nexport type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly';\r\nexport type CalendarType = 'Local' | 'CalDAV' | 'Exchange' | 'Subscription' | 'Birthday' | 'Mail';\r\n\r\ninterface Recurrence {\r\n frequency: RecurrenceFrequency;\r\n /**\r\n * Default 1 (every <RecurrenceFrequency>).\r\n */\r\n interval: number;\r\n endDate?: Date;\r\n count?: number;\r\n}\r\n\r\nexport interface Calendar {\r\n id: string;\r\n name: string;\r\n /**\r\n * iOS: same as 'name'\r\n * Android: usually the same as 'name' as well\r\n */\r\n displayName?: string;\r\n /**\r\n * iOS only\r\n */\r\n type?: CalendarType;\r\n}\r\nexport interface Reminder {\r\n minutes: number;\r\n}\r\nexport interface Attendee {\r\n name: string;\r\n url?: string;\r\n /**\r\n * One of: \"Unknown\", \"Pending\", \"Accepted\", \"Declined\", \"Tentative\", \"Delegated\", \"Completed\", \"In Process\"\r\n */\r\n status: string;\r\n /**\r\n * One of: \"Unknown\", \"Required\", \"Optional\", \"Chair\", \"Non Participant\"\r\n */\r\n role: string;\r\n /**\r\n * One of: \"Unknown\", \"Person\", \"Room\", \"Resource\", \"Group\"\r\n */\r\n type: string;\r\n}\r\n\r\nexport interface CalendarEvent {\r\n id: string;\r\n title: string;\r\n location: string;\r\n notes: string;\r\n url?: string;\r\n startDate: Date;\r\n endDate: Date;\r\n allDay: boolean;\r\n calendar: Calendar;\r\n recurrence?: Recurrence;\r\n reminders?: Array<Reminder>;\r\n /**\r\n * iOS only.\r\n */\r\n attendees?: Array<Attendee>;\r\n //\r\n days?: Date[];\r\n order: number;\r\n color?: string;\r\n repeat?: string;\r\n}\r\nexport type CalendarMode = 'month' | 'customMonth' | 'week' | 'day' | 'year' | 'list';\r\nexport enum DayStatus {\r\n Open,\r\n Completed,\r\n Failed\r\n}\r\nexport class CalendarMonthInfo {\r\n dateInfo: DateInfo;\r\n days: Day[];\r\n tasks: any[];\r\n selectedWeek: number;\r\n weeksCount: number;\r\n id: string;\r\n get daysInWeek(): Day[] {\r\n const start = this.selectedWeek * 7;\r\n const days = this.days.slice(start, start + 7);\r\n return days;\r\n }\r\n}\r\n\r\nexport interface Day {\r\n [key: string]: any;\r\n index: number;\r\n momentOfDate: any;\r\n boxBound?: {\r\n data: CalendarMetaobjectDataModel;\r\n top: number;\r\n left: number;\r\n width: number;\r\n height: number;\r\n }[];\r\n dayInMonth: string;\r\n dayInWeek: number;\r\n month: number;\r\n year: number;\r\n dayName: string;\r\n date: Date;\r\n status: DayStatus;\r\n isToday: boolean;\r\n isInMonth: boolean;\r\n isEndOfMonth: boolean;\r\n isStartOfMonth: boolean;\r\n tasks: CalendarMetaobjectDataModel[];\r\n row: number;\r\n col: number;\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n DateService,\n BaseComponent,\n getUniqueId,\n getDateService,\n LogService,\n DateInfo,\n MetaobjectDataModel,\n CalendarFields\n} from 'barsa-novin-ray-core';\nimport { CalendarMode, CalendarMonthInfo, Day, DayStatus } from '../models';\n\n@Injectable()\nexport class CalendarService extends BaseComponent {\n selected$: Observable<CalendarMonthInfo>;\n days$: Observable<Day[]>;\n mode$: Observable<CalendarMode>;\n weekModeDays$: Observable<Day[]>;\n calendars$: Observable<CalendarMonthInfo[]>;\n currentMonthIndex$: Observable<number>;\n today: Date;\n todayDay: Day | undefined;\n _dateService: DateService;\n\n private _todayMonthInfo: CalendarMonthInfo;\n private _calendarsSource = new BehaviorSubject<CalendarMonthInfo[]>([]);\n private _selectedSource: BehaviorSubject<CalendarMonthInfo>;\n private _modeSource = new BehaviorSubject<CalendarMode>('month');\n private _currentMonthIndexSource = new BehaviorSubject<number>(-1);\n private _weekModeDaysSource = new BehaviorSubject<Day[]>([]);\n private _daysSource = new BehaviorSubject<Day[]>([]);\n\n constructor(private _logService: LogService, @Optional() @Inject('Date_Culture') culture?: string) {\n super();\n this._dateService = getDateService(_logService, culture);\n this.days$ = this._daysSource.asObservable();\n this.mode$ = this._modeSource.asObservable();\n this.weekModeDays$ = this._weekModeDaysSource.asObservable();\n this.calendars$ = this._calendarsSource.asObservable();\n this.currentMonthIndex$ = this._currentMonthIndexSource.asObservable();\n this._initilize();\n }\n get todayMonthInfo(): CalendarMonthInfo {\n return this._todayMonthInfo;\n }\n get selectedMonth(): CalendarMonthInfo {\n return this._selectedSource.getValue();\n }\n get calendars(): Array<CalendarMonthInfo> {\n return this._calendarsSource.getValue();\n }\n get weeksCount(): number {\n return this._daysSource.getValue().length / 7;\n }\n get days(): Array<Day> {\n return this._daysSource.getValue();\n }\n get Months(): string[] {\n return this._dateService.monthNames();\n }\n\n loadMonthByDate(value: Date): void {\n const monthInfo = this._dateService.getDateInfo(value);\n this.loadMonth(monthInfo);\n }\n setDateService(primaryCalendarType: string): void {\n let dateService = this._dateService;\n switch (primaryCalendarType) {\n case 'Persian':\n dateService = getDateService(this._logService, 'fa-IR');\n break;\n case 'Gregorian':\n dateService = getDateService(this._logService, 'en-US');\n break;\n case 'Arabic':\n dateService = getDateService(this._logService, 'ar-AE');\n break;\n }\n this._dateService = dateService;\n this._initilize();\n }\n setDays(days: Day[]): void {\n this._daysSource.next(days);\n }\n\n prepareWeek(monthInfo: CalendarMonthInfo, startIndex: number, daysCount: number): void {\n const startDays = monthInfo.days.slice(startIndex, startIndex + daysCount);\n this._weekModeDaysSource.next(startDays);\n }\n setSelected(selected: CalendarMonthInfo): void {\n this._selectedSource.next(selected);\n }\n\n weekDaysMin(): Array<string> {\n return this._dateService.weekdaysMin();\n }\n weekDays(): Array<string> {\n return this._dateService.weekDays();\n }\n gotoToday(): void {\n this.loadMonth(this._todayMonthInfo.dateInfo, 0);\n this.setMode(\n this._modeSource.getValue(),\n this._todayMonthInfo.days.find((c) => c.isToday),\n this._weekModeDaysSource.getValue().length\n );\n }\n rangeSelect(startDay: Day, endDay: Day, monthInfo: CalendarMonthInfo): void {\n const diff = endDay.index - startDay.index;\n if (diff < 7) {\n this.setMode('week', startDay, diff + 1);\n } else {\n const diff2 = diff + 1;\n this.setMode('customMonth');\n this.setMonth(monthInfo, startDay, diff2);\n }\n }\n setMonth(monthInfo: CalendarMonthInfo, startDay?: Day, diff: number = 0): void {\n if (startDay && diff > 0) {\n const startIndex = startDay.index;\n this.loadCalendarMonthInfo(monthInfo);\n this.setDays(monthInfo.days.slice(startIndex, startIndex + diff));\n } else {\n this.loadCalendarMonthInfo(monthInfo);\n this.setDays(monthInfo.days);\n // else if (mode === 'month') {\n // startDay = daysLoaded[0];\n // if (startDay) this.loadMonth(startDay.monthDateInfo);\n // }\n }\n }\n setMode(mode: CalendarMode, startDay?: Day, daysCount?: number): void {\n const oldMode = this._modeSource.getValue();\n this._modeSource.next(mode);\n if (mode === 'month') {\n this.setMonth(this.selectedMonth, startDay);\n return;\n } else if (mode === 'customMonth') {\n this.setMonth(this.selectedMonth, startDay, this.days.length);\n return;\n }\n const daysLoaded = this._weekModeDaysSource.getValue();\n daysCount = daysCount ?? (mode === 'week' ? 7 : 1);\n let startIndex = 0;\n if (!startDay) {\n if (mode === 'week' || mode === 'day') {\n if (oldMode === 'month') {\n startDay = this.selectedMonth.days.find((c) => c.isStartOfMonth);\n } else if (oldMode === 'customMonth') {\n startDay = this.days[0];\n } else {\n startDay = daysLoaded[0];\n }\n }\n }\n\n if (startDay) {\n if (\n startDay.monthDateInfo.month !== this.selectedMonth.dateInfo.month ||\n startDay.monthDateInfo.year !== this.selectedMonth.dateInfo.year\n ) {\n this.loadMonth(startDay.monthDateInfo);\n }\n startIndex = this.selectedMonth.days.findIndex(\n (c) => c.month === startDay?.month && c.dayInMonth === startDay.dayInMonth\n );\n }\n this.prepareWeek(this._selectedSource.getValue(), startIndex, daysCount);\n }\n\n fillWeek(week: { [key: string]: any[] }, daysCount = 7): void {\n const arr: any[] = Object.values(week);\n arr.forEach(\n (\n element: {\n colSpan: number;\n event?: MetaobjectDataModel;\n opacity?: number;\n start?: Date;\n end?: Date;\n }[]\n ) => {\n for (const el of element) {\n const valueDate = el.end;\n if (valueDate && this._dateService.getMoment(valueDate).isBefore(this.today, 'day')) {\n el.opacity = 0.5;\n }\n }\n for (let i = element.length; i < daysCount; i++) {\n element.push({ colSpan: 1 });\n }\n }\n );\n }\n sortTasks(calendarTasks: MetaobjectDataModel[], calendarFields: CalendarFields): Array<MetaobjectDataModel> {\n const startDateField = calendarFields.StartDate;\n const endDateField = calendarFields.EndDate;\n calendarTasks.sort((taskA, taskB) => (taskA[startDateField] < taskB[startDateField] ? -1 : 1));\n calendarTasks.sort((taskA, taskB) => {\n const taskAStartDate = taskA[startDateField];\n const taskBStartDate = taskB[startDateField];\n\n const momentTaskAStartDate = this._dateService.getMoment(taskAStartDate);\n const momentTaskBStartDate = this._dateService.getMoment(taskBStartDate);\n if (momentTaskAStartDate.isSame(momentTaskBStartDate, 'day')) {\n const taskAEndDate = taskA[endDateField];\n const taskBEndDate = taskB[endDateField];\n const dayADiff = momentTaskAStartDate.diff(taskAEndDate, 'day');\n const dayBDiff = momentTaskBStartDate.diff(taskBEndDate, 'day');\n if (dayADiff > dayBDiff) {\n return 1;\n }\n if (dayADiff < dayBDiff) {\n return -1;\n }\n return 0;\n }\n {\n return 0;\n }\n });\n return calendarTasks;\n }\n createWeekTask(\n days: Day[],\n moDataList: MetaobjectDataModel[],\n calendarFields: CalendarFields,\n taskHeight: number\n ): { [key: string]: any[] } {\n const week: { [key: string]: any[] } = {};\n days.forEach((day, dayIndex) => {\n let counter = 0;\n moDataList.forEach((event) => {\n const counterIndex = counter.toString();\n if (!week[counterIndex]) {\n week[counterIndex] = [];\n } else if (week[counterIndex].length > dayIndex) {\n counter++;\n return;\n }\n for (let m = week[counterIndex].length; m < dayIndex; m++) {\n week[counterIndex].push({ colSpan: 1 });\n }\n\n // agar week[counter] colspan ja dasht anjam gardad.\n const newTask: any = { colSpan: 1 };\n const momentDay = this._dateService.getMoment(day.date);\n const momentOfStartEvent = this._dateService.getMoment(event[calendarFields.StartDate]);\n const endDate = event[calendarFields.EndDate];\n const momentOfEndEvent = this._dateService.getMoment(endDate);\n const diff = Math.abs(momentOfStartEvent.diff(momentOfEndEvent, 'day'));\n if (diff === 0 && momentDay.isSame(momentOfStartEvent, 'day')) {\n newTask.colSpan = 1;\n const startMinuteTop = (event.$StartDateInfo.minutes * taskHeight) / 60;\n newTask.top = event.$StartDateInfo.hour * taskHeight + startMinuteTop;\n const endMinuteTop = (event.$EndDateInfo.minutes * taskHeight) / 60;\n newTask.height =\n (event.$EndDateInfo.hour - event.$StartDateInfo.hour) * taskHeight +\n endMinuteTop -\n startMinuteTop;\n newTask.event = event;\n newTask.enddayIsInRow = true;\n newTask.startdayIsInRow = true;\n newTask.isStartDay = true;\n newTask.isEndDay = true;\n newTask.start = newTask.end = day.date;\n newTask.inDay =\n event.$StartDateInfo.hour > 0 ||\n event.$StartDateInfo.minutes > 0 ||\n event.$EndDateInfo.hour > 0 ||\n event.$EndDateInfo.minutes > 0;\n week[counterIndex].splice(dayIndex, 0, newTask);\n day.tasks.push(newTask);\n counter++;\n } else {\n let diffFromEndOfEvent = 0;\n let diffFromStartOfEvent = 0;\n const isBetween =\n momentDay.isSameOrAfter(momentOfStartEvent, 'day') &&\n momentDay.isSameOrBefore(momentOfEndEvent, 'day');\n if (isBetween) {\n diffFromEndOfEvent = 0;\n if (diff === 0) {\n newTask.colSpan = 1;\n newTask.event = event;\n } else {\n diffFromEndOfEvent = Math.abs(momentDay.diff(momentOfEndEvent, 'day'));\n diffFromStartOfEvent = Math.abs(momentDay.diff(momentOfStartEvent, 'day'));\n const isStartDay = momentDay.isSame(momentOfStartEvent, 'day');\n const isEndDay = momentDay.isSame(momentOfEndEvent, 'day');\n let colSpan = diff;\n if (!isStartDay) {\n colSpan = diffFromEndOfEvent;\n } else {\n colSpan = diff + 1; // include the start\n }\n newTask.colSpan = this._calcColSpan(colSpan, dayIndex, days.length);\n newTask.isStartDay = isStartDay;\n newTask.isEndDay = isEndDay;\n newTask.isMiddle = !isStartDay && !isEndDay;\n newTask.event = event;\n }\n if (newTask.isStartDay || dayIndex === 0) {\n for (let span = 0; span < newTask.colSpan; span++) {\n const taskIndex = dayIndex + span;\n if (taskIndex > days.length - 1) {\n break;\n }\n const taskDayInfo = days[taskIndex];\n\n const taskInfo = {\n ...newTask,\n start: taskDayInfo.date,\n end: endDate,\n isStartDay: span === 0 ? newTask.isStartDay : null,\n startTask: event.$StartDayInfo,\n endTask: event.$EndDayInfo,\n startdayIsInRow: dayIndex - diffFromStartOfEvent > -1,\n enddayIsInRow: !!days[diffFromEndOfEvent],\n isMiddle:\n span === 0\n ? newTask.isMiddle\n : this._dateService\n .getMoment(taskDayInfo.date)\n .isBetween(momentOfStartEvent, momentOfEndEvent, 'day'),\n isEndDay:\n span === 0\n ? newTask.isEndDay\n : Math.abs(\n this._dateService\n .getMoment(taskDayInfo.date)\n .diff(momentOfEndEvent, 'day')\n ) <= 1,\n colSpan: span === 0 ? newTask.colSpan : null\n };\n week[counter.toString()].splice(taskIndex, 0, taskInfo);\n taskDayInfo.tasks.push(taskInfo);\n }\n counter++;\n }\n }\n }\n });\n });\n return week;\n }\n\n loadNext(): void {\n const mode = this._modeSource.getValue();\n const selectedMonth = this._selectedSource.getValue();\n switch (mode) {\n case 'customMonth':\n case 'month':\n {\n const days = this.days;\n const newDays = this._loadNextMonth(days, selectedMonth);\n this.setDays(newDays);\n }\n\n break;\n case 'week':\n case 'day':\n {\n const days = this._weekModeDaysSource.getValue();\n const newDays = this._loadNextWeek(days, selectedMonth);\n this._weekModeDaysSource.next(newDays);\n }\n break;\n break;\n case 'list':\n break;\n }\n }\n gotoMonth(monthName: string, monthIndex: number): void {\n const selectedMonth = this.selectedMonth.dateInfo.month;\n const val = monthIndex - selectedMonth;\n this.loadMonth(this.selectedMonth.dateInfo, val);\n }\n gotoYear(year: number): void {\n const selectedYear = this.selectedMonth.dateInfo.year;\n const val = year - selectedYear;\n this.increaseYear(val);\n }\n loadNextYear(): void {\n this.increaseYear(1);\n }\n loadPrevYear(): void {\n this.increaseYear(-1);\n }\n increaseYear(value: number): void {\n const selectedYear = this.selectedMonth.dateInfo.moment.toDate();\n selectedYear.setFullYear(selectedYear.getFullYear() + value); // next year\n this.loadMonthByDate(selectedYear);\n }\n loadPrevious(): void {\n const mode = this._modeSource.getValue();\n const selectedMonth = this._selectedSource.getValue();\n switch (mode) {\n case 'customMonth':\n case 'month':\n {\n const days = this.days;\n const newDays = this._loadPrevMonth(days, selectedMonth);\n this.setDays(newDays);\n }\n break;\n case 'week':\n case 'day':\n {\n const days = this._weekModeDaysSource.getValue();\n const newDays = this._loadPrevWeek(days, selectedMonth);\n this._weekModeDaysSource.next(newDays);\n }\n break;\n break;\n case 'list':\n break;\n }\n }\n loadMonth(dateInfo: DateInfo, addMonth: number = 0): CalendarMonthInfo {\n let loadedMonthDate = this._dateService.getMoment(dateInfo.date);\n if (addMonth > 0) {\n loadedMonthDate = this._dateService.addMonth(loadedMonthDate, addMonth);\n }\n if (addMonth < 0) {\n loadedMonthDate = this._dateService.subtractMonth(loadedMonthDate, Math.abs(addMonth));\n }\n let loadedCalendarMonthInfo = this.calendars.find((c) => c.dateInfo.moment.isSame(loadedMonthDate, 'day'));\n if (!loadedCalendarMonthInfo) {\n loadedCalendarMonthInfo = this.getMonthInfo(loadedMonthDate, this.today);\n }\n this.loadCalendarMonthInfo(loadedCalendarMonthInfo);\n return loadedCalendarMonthInfo;\n }\n\n loadCalendarMonthInfo(loadedCalendarMonthInfo: CalendarMonthInfo): void {\n const calendarsInfo = [...this.calendars];\n const exists = calendarsInfo.find(\n (c) =>\n c.dateInfo.year === loadedCalendarMonthInfo.dateInfo.year &&\n c.dateInfo.month === loadedCalendarMonthInfo.dateInfo.month\n );\n if (!exists) {\n calendarsInfo.push(loadedCalendarMonthInfo);\n this._calendarsSource.next(calendarsInfo);\n }\n this.setSelected(loadedCalendarMonthInfo);\n }\n\n addCalendarMonthInfo(calendarMonthInfo: CalendarMonthInfo): void {\n const newList = this.calendars;\n newList.push(calendarMonthInfo);\n this._calendarsSource.next(newList);\n }\n\n getNumber(value): number {\n const find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];\n const replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n let replaceString = value;\n let regex;\n for (let i = 0; i < find.length; i++) {\n regex = new RegExp(find[i], 'g');\n replaceString = replaceString.replace(regex, replace[i]);\n }\n return Number(replaceString);\n }\n private _initilize(): void {\n this.today = this._dateService.getMoment(new Date());\n const todayMonthInfo = this.getCalendarMonthInfo(new Date());\n this.todayDay = todayMonthInfo.days.find((c) => c.isToday);\n this._selectedSource = new BehaviorSubject<CalendarMonthInfo>(todayMonthInfo);\n this.selected$ = this._selectedSource.asObservable();\n this._calendarsSource.next([todayMonthInfo]);\n this.setDays(todayMonthInfo.days);\n this.setSelected(todayMonthInfo);\n this._currentMonthIndexSource.next(todayMonthInfo.dateInfo.month);\n this._todayMonthInfo = todayMonthInfo;\n this.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe();\n }\n private _calcColSpan(diff: number, dayIndex: number, maxColSpan: number): number {\n if (diff === 0) {\n return 2;\n }\n if (Math.floor(diff / maxColSpan) > 0) {\n return maxColSpan;\n }\n\n if (dayIndex + diff > maxColSpan) {\n return maxColSpan - dayIndex;\n }\n return diff;\n }\n\n private _loadNextMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\n const daysCount = days.length;\n let lastDay = days[daysCount - 1];\n const lastDayIndex = monthInfo.days.findIndex(\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\n );\n let newDays = lastDayIndex > -1 ? monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount) : [];\n if (newDays.length < daysCount) {\n // we move to next month\n if (newDays.length > 0) {\n lastDay = newDays[newDays.length - 1];\n }\n const needCountDay = daysCount - newDays.length;\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\n let startPosition = 0;\n if (needCountDay < 42) {\n startPosition = nextMonth.days.findIndex(\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\n );\n if (startPosition === -1) {\n startPosition = 0;\n } else {\n startPosition++;\n }\n }\n const nextDays = nextMonth.days.slice(startPosition, startPosition + needCountDay);\n newDays = [...newDays, ...nextDays];\n }\n return newDays;\n }\n private _loadNextWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\n const daysCount = days.length;\n const lastDay = days[daysCount - 1];\n const lastDayIndex = monthInfo.days.findIndex(\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\n );\n let newDays = monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount);\n if (newDays.length < daysCount) {\n // we move to next month\n let lastNewDay = newDays[newDays.length - 1];\n if (!lastNewDay) {\n lastNewDay = lastDay;\n }\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\n const lastDayIndex2 = nextMonth.days.findIndex(\n (c) => c.dayInMonth === lastNewDay.dayInMonth && c.month === lastNewDay.month\n );\n newDays = newDays.concat(\n nextMonth.days.slice(lastDayIndex2 + 1, lastDayIndex2 + 1 + (daysCount - newDays.length))\n );\n }\n return newDays;\n }\n\n private _loadPrevMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\n const daysCount = days.length;\n let firstDay = days[0];\n const firstDayIndex = monthInfo.days.findIndex(\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\n );\n let newDays: Day[] = monthInfo.days.slice(\n firstDayIndex - daysCount > 0 ? firstDayIndex - daysCount : 0,\n firstDayIndex\n );\n if (newDays.length < daysCount) {\n // we move to prev month\n if (newDays.length > 0) {\n firstDay = newDays[0];\n }\n const needCountDay = daysCount - newDays.length;\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\n let endPosition = prevMonth.days.length;\n if (needCountDay < 42) {\n endPosition = prevMonth.days.findIndex(\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\n );\n if (endPosition === -1) {\n endPosition = prevMonth.days.length;\n }\n }\n const prevDays = prevMonth.days.slice(endPosition - needCountDay, endPosition);\n newDays = [...prevDays, ...newDays];\n }\n return newDays;\n }\n private _loadPrevWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\n const daysCount = days.length;\n const firstDay = days[0];\n const firstDayIndex = monthInfo.days.findIndex(\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\n );\n const partIndexPrev = firstDayIndex - daysCount;\n let newDays: Day[] = [];\n if (partIndexPrev < 0) {\n newDays = firstDayIndex - 1 >= 0 ? monthInfo.days.slice(0, firstDayIndex - 1) : [];\n } else {\n newDays = monthInfo.days.slice(firstDayIndex - daysCount, firstDayIndex);\n }\n if (newDays.length < daysCount) {\n // we move to prev month\n let firstNewDay = newDays[0];\n if (!firstNewDay) {\n firstNewDay = firstDay;\n }\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\n const firstDayIndex2 = prevMonth.days.findIndex(\n (c) => c.dayInMonth === firstNewDay.dayInMonth && c.month === firstNewDay.month\n );\n newDays = newDays.concat(\n prevMonth.days.slice(firstDayIndex2 - (daysCount - newDays.length), firstDayIndex2)\n );\n }\n return newDays;\n }\n\n private getCalendarMonthInfo(date): CalendarMonthInfo {\n const startOfMonth = this._dateService.startOfMonth(date);\n const momentDate = this._dateService.getMoment(date);\n return this.getMonthInfo(startOfMonth, momentDate);\n }\n private getMonthInfo(date, today): CalendarMonthInfo {\n const days: Day[] = [];\n const activeDate = this._dateService.getMoment(date);\n const startOfMonth: Date = this._dateService.startOfMonth(activeDate);\n const endOfMonth: Date = this._dateService.endOfMonth(activeDate);\n const dateInfo = this._dateService.getDateInfo(activeDate);\n const dayInWeek = this._dateService.day(startOfMonth) + 1; // we add 1 to the dayInWeek because it's starts with zero\n\n let weekCounter = 0;\n let dayCounter = 0;\n for (let i = 0; i < 42; i++) {\n const dateOfStartOfMonth: Date = new Date(startOfMonth);\n dateOfStartOfMonth.setDate(dateOfStartOfMonth.getDate() + i - dayInWeek);\n const { day, isInMonth }: { day: Day; isInMonth: any } = this._getDay(\n dateOfStartOfMonth,\n activeDate,\n today,\n endOfMonth,\n startOfMonth,\n dateInfo,\n i\n );\n days.push(day);\n dayCounter++;\n if (isInMonth && dayCounter > weekCounter * 7) {\n weekCounter++;\n }\n }\n // const endOfMonthIndex = days.findIndex((c) => c.isEndOfMonth);\n // if (endOfMonthIndex > -1 && days.length - endOfMonthIndex > 7) {\n // // days.splice(days.length - 7, 7);\n // }\n const calendarInfo = new CalendarMonthInfo();\n calendarInfo.id = getUniqueId(3);\n calendarInfo.dateInfo = dateInfo;\n calendarInfo.days = days;\n calendarInfo.weeksCount = weekCounter;\n // this.cdr.detectChanges();\n return calendarInfo;\n }\n private _getDay(\n date: Date,\n activeDate: any,\n today: any,\n endOfMonth: Date,\n startOfMonth: Date,\n dateInfo: DateInfo,\n i: number\n ): { day: Day; isInMonth: boolean } {\n const isInMonth = this._dateService.isSame(date, activeDate, 'month');\n const momentOfDate = this._dateService.getMoment(date);\n const isToday = momentOfDate.isSame(today, 'day');\n const dayInMonth = this._dateService.strDate(date);\n const dayInWeek = this._dateService.day(date);\n const isEndOfMonth = momentOfDate.isSame(endOfMonth, 'day');\n const isStartOfMonth = momentOfDate.isSame(startOfMonth, 'day');\n const monthDateInfo = isInMonth ? dateInfo : this._dateService.getDateInfo(date);\n const day: Day = {\n index: i,\n date,\n dayInWeek,\n status: DayStatus.Open,\n dayInMonth,\n dayInMonthN: this.getNumber(dayInMonth),\n isToday,\n isInMonth,\n isEndOfMonth,\n isStartOfMonth,\n momentOfDate,\n month: monthDateInfo.month,\n year: monthDateInfo.year,\n monthName: monthDateInfo.monthName,\n dayName: momentOfDate.format('dddd'),\n tasks: [],\n monthDateInfo,\n row: Math.floor(i / 7 + 1),\n col: 6 - (i % 7)\n };\n return { day, isInMonth };\n }\n}\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { Day } from './models';\r\n\r\n@Pipe({\r\n name: 'daysInWeek'\r\n})\r\nexport class DaysInWeekPipe implements PipeTransform {\r\n constructor() {}\r\n transform(days: Day[], weekNumber: number): Day[] {\r\n return days.slice(7 * weekNumber, 7 * weekNumber + 7);\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport { BaseComponent, PreventDefaulEvent } from 'barsa-novin-ray-core';\nimport { Day } from '../models';\n@Component({\n selector: 'bc-day-number-box',\n templateUrl: './day-number-box.component.html',\n styleUrls: ['./day-number-box.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DayNumberBoxComponent extends BaseComponent implements OnInit, OnChanges {\n @HostBinding('style.display') display;\n @Input() isWeekMode: boolean;\n @Input() isSingleDay: boolean;\n @Input() day: Day;\n @Input() isPickerMode: Day;\n @Input() itemInRange: boolean;\n @Input() isActive: boolean;\n @Output() dayClick = new EventEmitter<Day>();\n @Output() dayMouseDown = new EventEmitter<Day>();\n @Output() dayMouseUp = new EventEmitter<Day>();\n @Output() dayMouseMove = new EventEmitter<Day>();\n @HostBinding('style.cursor') _cursor = 'default';\n @HostBinding('class') _hover = '';\n @HostBinding('class.fd-calendar__item--range') _itemInRange = false;\n @HostBinding('class.is-active') _isActive = false;\n\n @HostListener('mouseup') mouseup(): void {\n this.dayMouseUp.emit(this.day);\n }\n @HostListener('mousedown') mousedown(): void {\n this.dayMouseDown.emit(this.day);\n }\n @HostListener('mousemove') mousemove(): void {\n this.dayMouseMove.emit(this.day);\n }\n @HostListener('click') onClick(): void {\n this.dayClick.emit(this.day);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._cursor = this.isPickerMode ? 'pointer' : 'default';\n this.display = this.isSingleDay ? 'inline-block' : 'flex';\n this._hover = this.isPickerMode ? 'hover' : '';\n }\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n const { itemInRange, isActive } = changes;\n if (itemInRange) {\n this._itemInRange = itemInRange.currentValue;\n }\n if (isActive) {\n this._isActive = isActive.currentValue;\n }\n }\n onDayBoxNumberClick(e, day: Day): void {\n // change calendar mode to Day\n PreventDefaulEvent(e);\n this.dayClick.emit(day);\n }\n}\n","<button\r\n fd-button\r\n (click)=\"onDayBoxNumberClick($event, day)\"\r\n [style.width]=\"isSingleDay ? 'auto' : '100%'\"\r\n [style.maxWidth]=\"isSingleDay ? 'auto' : '100%'\"\r\n>\r\n <div\r\n [ngClass]=\"{\r\n 'fd-avatar--s': isWeekMode,\r\n 'fd-avatar--xs': !isWeekMode || (day.isToday && isPickerMode),\r\n 'fd-avatar': !isPickerMode || day.isToday,\r\n 'fd-avatar--circle': !isPickerMode || day.isToday\r\n }\"\r\n [class.not-today]=\"!day.isToday\"\r\n [style.fontSize]=\"isWeekMode ? '1.7rem' : null\"\r\n >\r\n <span>{{ day.dayInMonth }}</span>\r\n </div>\r\n</button>\r\n","export function getPadedTime(value): string {\r\n return String(value.toString().padStart(2, '0'));\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventDate'\r\n})\r\nexport class EventDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(from: DateInfo, to: DateInfo, onlyTime: boolean = false): string {\r\n const showTime = from.hour || from.minutes || to.hour || to.minutes > 0;\r\n const fromTime = `${getPadedTime(from.hour)}:${getPadedTime(from.minutes)}`;\r\n const toTime = `${getPadedTime(to.hour)}:${getPadedTime(to.hour)}`;\r\n if (onlyTime) {\r\n return `${fromTime}`;\r\n }\r\n\r\n return `${from.strDay} ${from.monthName} ${from.strYear}${showTime ? `, ${fromTime}` : ''} – ${to.strDay} ${\r\n to.monthName\r\n } ${to.strYear}${showTime ? `, ${toTime}` : ''}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n\r\n@Component({\r\n selector: 'bc-event-preview',\r\n templateUrl: './event-preview.component.html',\r\n styleUrls: ['./event-preview.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EventPreviewComponent extends BaseComponent {\r\n @Input() event: MetaobjectDataModel;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() popover: any;\r\n @Input() popover2: any;\r\n @Input() canEdit: boolean;\r\n @Input() canDelete: boolean;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n\r\n onDelete(event, popover, popover2): void {\r\n this.deleteEvent.emit(event);\r\n\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onEdit(event, popover, popover2): void {\r\n this.editEvent.emit(event);\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onClosePopover(popover): void {\r\n this._closePopover(popover);\r\n }\r\n private _closePopover(popover: any): void {\r\n if (popover) {\r\n popover.close();\r\n }\r\n }\r\n}\r\n","<fd-layout-panel style=\"min-width: 400px\">\n <fd-layout-panel-header>\n <fd-layout-panel-actions>\n <fd-toolbar [clearBorder]=\"true\" [fdType]=\"'transparent'\">\n <fdp-button\n *ngIf=\"canEdit\"\n fd-toolbar-item\n glyph=\"edit\"\n buttonType=\"transparent\"\n (click)=\"onEdit(event, popover, popover2)\"\n ></fdp-button>\n <fdp-button\n *ngIf=\"canDelete\"\n fd-toolbar-item\n glyph=\"delete\"\n buttonType=\"transparent\"\n (click)=\"onDelete(event, popover, popover2)\"\n ></fdp-button>\n <fdp-button\n fd-toolbar-item\n glyph=\"decline\"\n buttonType=\"transparent\"\n (click)=\"onClosePopover(popover)\"\n ></fdp-button>\n </fd-toolbar>\n </fd-layout-panel-actions>\n </fd-layout-panel-header>\n <fd-layout-panel-body>\n <fd-quick-view>\n <fd-quick-view-subheader>\n <fd-avatar\n size=\"xs\"\n glyph=\"color-fill\"\n [transparent]=\"true\"\n [style.color]=\"event[calendarFields.Color] ? event[calendarFields.Color] : ''\"\n ></fd-avatar>\n <fd-quick-view-subheader-title>\n {{ event[calendarFields.Title] }}\n </fd-quick-view-subheader-title>\n <fd-quick-view-subheader-subtitle>\n <span>{{ event.$StartDateInfo | eventDate: event.$EndDateInfo }} </span>\n </fd-quick-view-subheader-subtitle>\n </fd-quick-view-subheader>\n\n <fd-quick-view-group>\n <fd-quick-view-group-item *ngIf=\"event | barsaVisibleValue: calendarFields.Notes as notes\">\n <fd-quick-view-group-item-label>\n <fd-icon glyph=\"text-align-justified\"></fd-icon>\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <div fd-quick-view-group-item-content-element style=\"white-space: normal\">\n {{ notes }}\n </div>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n <fd-quick-view-group-item>\n <fd-quick-view-group-item-label>\n <fd-icon glyph=\"appointment\"></fd-icon>\n </fd-quick-view-group-item-label>\n <fd-quick-view-group-item-content>\n <span>کاربر</span>\n </fd-quick-view-group-item-content>\n </fd-quick-view-group-item>\n </fd-quick-view-group>\n </fd-quick-view>\n </fd-layout-panel-body>\n</fd-layout-panel>\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarFields, CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventTime'\r\n})\r\nexport class EventTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel, calendarFields: CalendarFields): string {\r\n const event = task.event;\r\n const dateInfo: DateInfo = event.$StartDateInfo;\r\n const showTime = dateInfo.hour || dateInfo.minutes > 0;\r\n const fromTime = `${getPadedTime(dateInfo.hour)}:${getPadedTime(dateInfo.minutes)}`;\r\n return `${showTime ? fromTime : ''} ${event[calendarFields.Title]}`;\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { PopoverComponent } from '@fundamental-ngx/core';\n\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\n@Component({\n selector: 'bc-event-button',\n templateUrl: './event-button.component.html',\n styleUrls: ['./event-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EventButtonComponent extends BaseComponent implements OnInit {\n @ViewChild('defaultButton', { static: true })\n defaultButtonTemplate: TemplateRef<any>;\n @ViewChild(PopoverComponent, { static: true })\n popoverComponent: PopoverComponent;\n @Input() buttonTemplate: TemplateRef<any>;\n @Input() calendarFields: CalendarFields;\n @Input() task: any;\n @Input() rtl: boolean;\n @Input() canDelete: boolean;\n @Input() canEdit: boolean;\n @Input() deviceSize: string;\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() openPopoverChange = new EventEmitter<boolean>();\n @HostBinding('style.opacity') opacity = 1;\n @HostBinding('attr.rtl') _rtl = true;\n constructor(private _el: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this._rtl = this.rtl;\n this.opacity = this.task.opacity ?? 1;\n if (!this.buttonTemplate) {\n this.buttonTemplate = this.defaultButtonTemplate;\n }\n }\n onPopOverOpenChange(isOpen): void {\n this.openPopoverChange.emit(isOpen);\n }\n}\n","<span [ngClass]=\"{ 'end-day': rtl, 'start-day': !rtl }\" *ngIf=\"!task.startdayIsInRow\"></span>\n<ng-container\n *ngTemplateOutlet=\"\n buttonTemplate;\n context: {\n $implicit: task,\n calendarFields: calendarFields,\n popover: popover\n }\n \"\n></ng-container>\n<span [ngClass]=\"{ 'start-day': rtl, 'end-day': !rtl }\" *ngIf=\"!task.enddayIsInRow\"></span>\n\n<fd-popover\n #popover\n placement=\"bottom\"\n [mobile]=\"deviceSize === 's'\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [title]=\"task.event[calendarFields.Title]\"\n (isOpenChange)=\"onPopOverOpenChange($event)\"\n>\n <bc-event-preview\n [event]=\"task.event\"\n [calendarFields]=\"calendarFields\"\n [popover]=\"popover\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-preview>\n</fd-popover>\n\n<ng-template #defaultButton let-task let-popover=\"popover\" let-calendarFields=\"calendarFields\">\n <button\n fd-button\n [compact]=\"true\"\n [fdPopoverTrigger]=\"popover\"\n [fdType]=\"task.inDay ? 'standard' : 'emphasized'\"\n [label]=\"task | eventTime: calendarFields\"\n [style.background-color]=\"task.event[calendarFields.Color]\"\n class=\"task-title\"\n ></button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\nimport { Day } from '../models';\n@Component({\n selector: 'bc-day-event-list',\n templateUrl: './day-event-list.component.html',\n styleUrls: ['./day-event-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DayEventListComponent extends BaseComponent {\n @Input() day: Day;\n @Input() deviceSize: string;\n @Input() weekDays: string[];\n @Input() calendarFields: CalendarFields;\n @Input() rtl: boolean;\n @Input() canDelete: boolean;\n @Input() canEdit: boolean;\n @Input() popover: any;\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() openPopOver = new EventEmitter<any>();\n\n onClosePopover(popover, popover2?): void {\n popover.close();\n if (popover2) {\n popover2.close();\n }\n }\n}\n","<div fd-bar [barDesign]=\"'header-with-subheader'\">\n <div fd-bar-left>\n <fd-bar-element>\n <fdp-button glyph=\"decline\" [buttonType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></fdp-button>\n </fd-bar-element>\n </div>\n <div fd-bar-middle>\n <fd-bar-element>\n {{ weekDays[day.dayInWeek] }}\n </fd-bar-element>\n </div>\n <div fd-bar-right>\n <fd-bar-element> </fd-bar-element>\n </div>\n</div>\n<div fd-bar [barDesign]=\"'subheader'\">\n <div fd-bar-middle>\n <fd-bar-element [fullWidth]=\"true\">\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\n </fd-bar-element>\n </div>\n</div>\n<ul fd-list>\n <li fd-list-item *ngFor=\"let task of day.tasks\" class=\"task-start-end\" (click)=\"popoverPreview.open()\">\n <span [ngClass]=\"{ 'end-day': rtl, 'start-day': !rtl }\" *ngIf=\"task.isMiddle && !task.isStartDay\"></span>\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\n <span\n [ngClass]=\"{ 'start-day': rtl, 'end-day': !rtl }\"\n *ngIf=\"(task.isMiddle || task.isStartDay) && !task.isEndDay\"\n ></span>\n <fd-popover\n #popoverPreview\n placement=\"bottom\"\n [mobile]=\"deviceSize === 's'\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [title]=\"task.event[calendarFields.Title]\"\n >\n <bc-event-preview\n [event]=\"task.event\"\n [calendarFields]=\"calendarFields\"\n [popover]=\"popoverPreview\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [popover2]=\"popover\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-preview>\n </fd-popover>\n </li>\n</ul>\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'equalDate'\r\n})\r\nexport class EqualDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(value: Date, secondValue: Date | null | undefined): boolean {\r\n if ((value && !secondValue) || (!value && secondValue)) {\r\n return false;\r\n }\r\n const yearEqual = value.getFullYear() === secondValue?.getFullYear();\r\n const monthEqual = value.getMonth() === secondValue?.getMonth();\r\n const dayEqual = value.getDate() === secondValue?.getDate();\r\n return yearEqual && monthEqual && dayEqual;\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport moment from 'moment';\n\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\nimport { Day } from '../models';\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\n\nimport { CalendarService } from '../services/calendar.service';\n\n@Component({\n selector: 'bc-calendar-month',\n templateUrl: './calendar-month.component.html',\n styleUrls: ['./calendar-month.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarMonthComponent extends BaseComponent implements OnChanges, OnInit {\n @Input() monthWeeksCount: number;\n @Input() weekDays: string[];\n @Input() weekDaysMin: string[];\n @Input() today: Date;\n @Input() containerHeight: number;\n @Input() days: Day[];\n @Input() calendarFields: CalendarFields;\n @Input() rtl: boolean;\n @Input() deviceSize: string;\n @Input() moDataList: MetaobjectDataModel[];\n @Input() datePicker = false;\n @Input() rangePicker = false;\n @Input() canDelete = false;\n @Input() canAdd = false;\n @Input() canEdit = false;\n @Input() selectedDate: Date | undefined;\n @Input() startSelectedDayIndex: number | undefined;\n @Input() endSelectedDayIndex: number | undefined;\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() daySelect = new EventEmitter<any>();\n @Output() dayClick = new EventEmitter<Day>();\n @Output() dayMouseMove = new EventEmitter<Day>();\n @Output() dayMouseUp = new EventEmitter<Day>();\n @Output() dayMouseDown = new EventEmitter<Day>();\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\n\n defaultWeeksCountD: number;\n defaultFirstWeekIndex: number;\n selectedWeekDays: string[];\n selected: Day;\n numberOfWeek: number[];\n dayHeight: number;\n taskHeight = 30;\n maxTaskCount: number;\n maxRowTasks: number[];\n weekTasksArray: any;\n extraRow: number[];\n isPickerMode: boolean;\n\n private _hasPopoverOpened: boolean[] = [];\n\n constructor(\n private daysInWeek: DaysInWeekPipe,\n private _cdr: ChangeDetectorRef,\n private _calendarService: CalendarService\n ) {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n let needToDetectChange = false;\n const {\n containerHeight,\n deviceSize,\n moDataList,\n days,\n monthWeeksCount,\n startSelectedDayIndex,\n endSelectedDayIndex\n } = changes;\n if (containerHeight && !containerHeight.firstChange) {\n this.fitToContainer(changes.containerHeight.currentValue);\n }\n if (deviceSize && !deviceSize.firstChange) {\n this.prepareWeekDays(changes.deviceSize.currentValue);\n }\n if (moDataList && !moDataList.firstChange) {\n this._prepareDaysTasks(changes.moDataList.currentValue);\n needToDetectChange = true;\n }\n if (days && !days.firstChange) {\n this.fitToContainer(this.containerHeight);\n this._prepareDaysTasks(this.moDataList);\n needToDetectChange = true;\n }\n if (monthWeeksCount && !monthWeeksCount.firstChange) {\n this.fitToContainer(this.containerHeight);\n this._prepareDaysTasks(this.moDataList);\n needToDetectChange = true;\n }\n if (\n (startSelectedDayIndex && !startSelectedDayIndex.firstChange) ||\n (endSelectedDayIndex && !endSelectedDayIndex.firstChange)\n ) {\n needToDetectChange = true;\n }\n if (needToDetectChange) {\n this._cdr.detectChanges();\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.isPickerMode = this.datePicker || this.rangePicker;\n this.prepareWeekDays(this.deviceSize);\n this._prepareDaysTasks(this.moDataList);\n this.fitToContainer(this.containerHeight);\n }\n\n onDayBoxSelect(day: Day): void {\n this._fireDaySelect(day);\n }\n onDaySelect(weekIndex: number, dayIndex: number): void {\n if (!this.canAdd) {\n return;\n }\n const day = this.days[weekIndex * 7 + dayIndex];\n this._fireDaySelect(day);\n }\n\n onOpenPopoverChange(isOpen: boolean): void {\n this._openPopover(isOpen);\n }\n onMoreButton(e, popover): void {\n this._preventEvent(e);\n popover.open();\n }\n onTask(e, task: CalendarMetaobjectDataModel): void {\n this.showEvent.emit(task);\n }\n onDayClick(day: Day): void {\n this.selected = day;\n this.dayClick.emit(day);\n }\n onDayMouseMove(day: Day): void {\n this.dayMouseMove.emit(day);\n }\n onDayMouseDown(day: Day): void {\n this.dayMouseDown.emit(day);\n }\n onDayMouseUp(day: Day): void {\n this.dayMouseUp.emit(day);\n }\n private _preventEvent(e): void {\n e.stopPropagation();\n e.preventDefault();\n }\n private _fireDaySelect(day: Day): void {\n if (this._hasPopoverOpened.length === 0) {\n this.daySelect.emit(moment(day.date));\n }\n }\n private _openPopover(isOpen: boolean): void {\n if (isOpen) {\n this._hasPopoverOpened.push(true);\n } else {\n setTimeout(() => {\n this._hasPopoverOpened = [];\n }, 0);\n }\n }\n private prepareWeekDays(deviceSize: string): void {\n if (deviceSize !== 's' && deviceSize !== 'm') {\n this.selectedWeekDays = this.weekDays;\n } else {\n this.selectedWeekDays = this.weekDaysMin;\n }\n }\n private fitToContainer(containerHeight): void {\n let _weeksCount;\n\n if (this.monthWeeksCount > 0) {\n const weeksCount = this.monthWeeksCount;\n _weeksCount = weeksCount;\n } else {\n _weeksCount = this.days.length / 7;\n }\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\n this.numberOfWeek = this.numberOfWeek.map((value) => value);\n if (this.isPickerMode) {\n this.dayHeight = 40;\n return;\n }\n this.dayHeight = Math.floor(containerHeight / (_weeksCount + 1));\n\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\n if (this.maxTaskCount > 0) {\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((x, i) => i);\n }\n }\n private _prepareDaysTasks(calendarTasks): void {\n if (this.isPickerMode) {\n this.weekTasksArray = {};\n return;\n }\n\n const calendarFields = this.calendarFields;\n\n // Sort all Tasks\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\n this.days.forEach((day) => (day.tasks = []));\n const weekTasksArray: any = [];\n for (let j = 0; j < this.days.length / 7; j++) {\n const days = this.daysInWeek.transform(this.days, j);\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\n weekTasksArray.push(week);\n }\n\n weekTasksArray.forEach((week) => {\n const arr: any[] = Object.values(week);\n for (let i = arr.length; i < this.maxTaskCount; i++) {\n week[i.toString()] = [];\n }\n });\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\n weekTasksArray.forEach((week) => {\n this._calendarService.fillWeek(week);\n });\n this.weekTasksArray = weekTasksArray;\n }\n}\n","<table fd-table class=\"table-header\" [compact]=\"true\" [attr.picker]=\"datePicker\">\n <thead fd-table-header>\n <tr fd-table-row>\n <th\n class=\"weekday-header\"\n *ngFor=\"let weekDay of selectedWeekDays\"\n fd-table-cell\n [class.noborder]=\"isPickerMode\"\n >\n {{ weekDay }}\n </th>\n </tr>\n </thead>\n <tbody fd-table-body>\n <ng-container *ngFor=\"let weekDay of numberOfWeek\">\n <tr fd-table-row>\n <td\n [style.height.px]=\"dayHeight\"\n fd-table-cell\n colspan=\"7\"\n [style.border]=\"isPickerMode ? 'none' : null\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n renderTasks;\n context: {\n $implicit: isPickerMode ? null : moDataList[weekDay],\n weekIndex: weekDay,\n days: days | daysInWeek: weekDay,\n maxRowTasks: maxRowTasks,\n weekDays: weekDays,\n calendarFields: calendarFields,\n rtl: rtl,\n isPickerMode: isPickerMode\n }\n \"\n ></ng-container>\n </td>\n </tr>\n </ng-container>\n </tbody>\n</table>\n<ng-template\n #renderTasks\n let-task\n let-weekIndex=\"weekIndex\"\n let-weekDays=\"weekDays\"\n let-days=\"days\"\n let-maxRowTasks=\"maxRowTasks\"\n let-calendarFields=\"calendarFields\"\n let-deviceSize=\"deviceSize\"\n let-rtl=\"rtl\"\n let-isPickerMode=\"isPickerMode\"\n>\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\n <tbody>\n <tr fd-table-row class=\"row-day-number\" [attr.rtl]=\"rtl\">\n <td fd-table-cell *ngFor=\"let day of days\" [class.noborder]=\"isPickerMode\">\n <bc-day-number-box\n [class.fd-calendar__item]=\"isPickerMode\"\n [class.fd-calendar__item--other-month]=\"isPickerMode && !day.isInMonth\"\n [class.fd-calendar__item--weekend]=\"isPickerMode && day.isWeekend\"\n [isPickerMode]=\"isPickerMode\"\n [day]=\"day\"\n [isActive]=\"\n day.index === startSelectedDayIndex || day.index === endSelectedDayIndex || day.date\n | equalDate: selectedDate\n \"\n [itemInRange]=\"\n startSelectedDayIndex !== undefined &&\n endSelectedDayIndex !== undefined &&\n day.index >= startSelectedDayIndex &&\n day.index <= endSelectedDayIndex\n \"\n (dayClick)=\"onDayClick(day)\"\n (dayMouseMove)=\"onDayMouseMove(day)\"\n (dayMouseDown)=\"onDayMouseDown(day)\"\n (dayMouseUp)=\"onDayMouseUp(day)\"\n ></bc-day-number-box>\n </td>\n </tr>\n <ng-container *ngIf=\"!isPickerMode\">\n <ng-container\n *ngTemplateOutlet=\"\n renderDayTasks;\n context: {\n $implicit: weekTasksArray[weekIndex],\n maxRowTasks: maxRowTasks,\n weekIndex: weekIndex,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n weekDays: weekDays\n }\n \"\n ></ng-container>\n <tr fd-table-row>\n <td fd-table-cell *ngFor=\"let day of days\" class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\n <ng-container *ngIf=\"maxRowTasks?.length < day.tasks.length\">\n <button\n fd-button\n (click)=\"onMoreButton($event, popover)\"\n [fdType]=\"'transparent'\"\n [compact]=\"true\"\n >\n {{ day.tasks?.length - maxRowTasks?.length }}\n {{ 'More' | bbbTranslate }}\n </button>\n <fd-popover\n #popover\n [mobile]=\"deviceSize === 's'\"\n placement=\"bottom\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n (isOpenChange)=\"onOpenPopoverChange($event)\"\n >\n <bc-day-event-list\n [day]=\"day\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n [weekDays]=\"weekDays\"\n [rtl]=\"rtl\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [popover]=\"popover\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-day-event-list>\n </fd-popover>\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n</ng-template>\n\n<ng-template\n #renderDayTasks\n let-weekTasks\n let-maxRowTasks=\"maxRowTasks\"\n let-weekIndex=\"weekIndex\"\n let-deviceSize=\"deviceSize\"\n let-calendarFields=\"calendarFields\"\n let-weekDays=\"weekDays\"\n>\n <tr fd-table-row *ngFor=\"let rowTask of maxRowTasks; let i = index\">\n <ng-container *ngIf=\"!weekTasks[i] || weekTasks[i].length === 0\">\n <td fd-table-cell *ngFor=\"let day of weekDays\"></td>\n </ng-container>\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\n <td fd-table-cell [attr.colspan]=\"task.colSpan\" *ngIf=\"task.colSpan\">\n <ng-container *ngIf=\"task.event; else newDaySelect\">\n <bc-event-button\n [task]=\"task\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n [rtl]=\"rtl\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\n ></bc-event-button>\n </ng-container>\n <ng-template #newDaySelect>\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Self,\n SimpleChanges\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { BaseComponent, DateService, getDateService, PortalService } from 'barsa-novin-ray-core';\nimport { CalendarMonthInfo, Day } from '../models';\nimport { CalendarService } from '../services/calendar.service';\n@Component({\n selector: 'bc-calendar-selection-days',\n templateUrl: './calendar-selection-days.component.html',\n styleUrls: ['./calendar-selection-days.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DateService,\n useFactory: getDateService\n },\n CalendarService\n ]\n})\nexport class CalendarSelectionDaysComponent extends BaseComponent implements OnChanges {\n @Input() startSelectedDayIndex: number | undefined;\n @Input() endSelectedDayIndex: number | undefined;\n @Input() monthInfo: CalendarMonthInfo;\n @Output() rangeChange = new EventEmitter<{\n startDay: Day;\n endDay: Day;\n monthInfo: CalendarMonthInfo;\n }>();\n selectionMode: 'day' | 'month' | 'year' = 'day';\n\n endSelectedDay: Day | null;\n startSelectedDay: Day | null;\n width$: Observable<number>;\n height: number;\n selectedMonth$: Observable<CalendarMonthInfo>;\n rtl$: Observable<boolean>;\n today: Date;\n weekDaysMin: string[];\n weekDays: string[];\n deviceSize$: Observable<string>;\n months: string[] = [];\n years: string[];\n private _isMouseDown = false;\n constructor(@Self() private _calendarService: CalendarService, _portalService: PortalService) {\n super();\n this.rtl$ = _portalService.rtl$;\n this.width$ = _portalService.deviceSize$.pipe(\n distinctUntilChanged(),\n map((deviceSize) => {\n switch (deviceSize) {\n case 'l':\n case 'xl':\n return 480;\n case 's':\n return 320;\n default:\n return 480;\n }\n })\n );\n this.weekDaysMin = this._calendarService.weekDaysMin();\n this.weekDays = this._calendarService.weekDays();\n this.selectedMonth$ = this._calendarService.selected$;\n this.today = this._calendarService.today;\n this.months = this._calendarService.Months;\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n const { monthInfo } = changes;\n if (monthInfo) {\n this._calendarService.loadCalendarMonthInfo(monthInfo.currentValue);\n }\n }\n onMonthSelected(monthName: string, index: number): void {\n this._calendarService.gotoMonth(monthName, index);\n }\n onYearSelected(year: string): void {\n this._calendarService.gotoYear(+year);\n }\n\n onPrevTap(): void {\n if (this.selectionMode === 'day') {\n this._calendarService.loadPrevious();\n } else if (this.selectionMode === 'month') {\n this._calendarService.loadPrevYear();\n } else if (this.selectionMode === 'year') {\n this._prepareYear(Number(this.years[0]) - 20);\n }\n }\n\n onNextTap(): void {\n if (this.selectionMode === 'day') {\n this._calendarService.loadNext();\n } else if (this.selectionMode === 'month') {\n this._calendarService.loadNextYear();\n } else if (this.selectionMode === 'year') {\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\n }\n }\n\n onToday(): void {\n this._calendarService.gotoToday();\n }\n onDayMouseMove(day: Day, monthInfo: CalendarMonthInfo): void {\n if (this._isMouseDown) {\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\n this.startSelectedDayIndex = startDay?.index;\n this.endSelectedDayIndex = endDay?.index;\n console.log('-move-', this.startSelectedDay?.index, this.endSelectedDay?.index);\n }\n }\n\n onDayMouseDown(day: Day): void {\n this._isMouseDown = true;\n this.startSelectedDay = null;\n this.endSelectedDay = null;\n this.startSelectedDay = day;\n this.startSelectedDayIndex = day.index;\n }\n onDayMouseUp(day: Day, monthInfo, popover): void {\n this._isMouseDown = false;\n\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\n this.startSelectedDay = startDay;\n this.endSelectedDay = endDay;\n this._setFirstAndEndDay(monthInfo, popover);\n }\n onDayClick(day: Day, monthInfo, popover): void {\n this.startSelectedDay = this.endSelectedDay = day;\n this._setFirstAndEndDay(monthInfo, popover);\n }\n private _prepareYear(from: number): void {\n const years: string[] = [];\n for (let i = 0; i < 20; i++) {\n years.push(`${from + i}`);\n }\n this.years = years;\n }\n private getStartAndEndDay(\n monthInfo: CalendarMonthInfo,\n day: Day | null\n ): { endDay: Day | null; startDay: Day | null } {\n let startDay: Day | null = null;\n let endDay: Day | null = null;\n if (this.startSelectedDay && !this.endSelectedDay) {\n if (day && this.startSelectedDay.date > day.date) {\n startDay = day;\n endDay = this.startSelectedDay;\n } else {\n startDay = this.startSelectedDay;\n endDay = day;\n }\n } else if (this.startSelectedDay && this.endSelectedDay) {\n if (day && this.startSelectedDay.date < day.date) {\n startDay = this.startSelectedDay;\n endDay = day;\n } else {\n startDay = day;\n endDay = this.endSelectedDay;\n }\n }\n console.log('-2-', startDay, endDay);\n if (startDay && endDay) {\n const diff = Math.abs(startDay.momentOfDate.diff(endDay.momentOfDate, 'day'));\n if (diff > 6) {\n startDay = monthInfo.days[Math.floor(startDay.index / 7) * 7];\n // const end = endDay.index % 7;\n const indexEnd = Math.ceil((endDay.index + 1) / 7);\n // if (end > 0) {\n // indexEnd++;\n // }\n endDay = monthInfo.days[indexEnd * 7 - 1];\n console.log('-3-', startDay, endDay);\n }\n }\n return { endDay, startDay };\n }\n\n private _setFirstAndEndDay(monthInfo, popover): void {\n console.log('-finish-', this.startSelectedDay, this.endSelectedDay);\n if (this.startSelectedDay && this.endSelectedDay) {\n if (popover) {\n popover.close();\n }\n this.rangeChange.emit({\n startDay: this.startSelectedDay,\n endDay: this.endSelectedDay,\n monthInfo\n });\n }\n }\n}\n","<fdp-button glyph=\"calendar\" buttonType=\"transparent\" [fdPopoverTrigger]=\"popover\"></fdp-button>\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\n <fd-popover-body [style.width.px]=\"width$ | async\">\n <ng-container\n *ngTemplateOutlet=\"\n month;\n context: {\n $implicit: selectedMonth$ | async,\n width: width$ | async,\n height: height,\n rtl: rtl$ | async,\n weekDays: weekDays,\n weekDaysMin: weekDaysMin,\n today: today,\n deviceSize: deviceSize$ | async,\n popover: popover\n }\n \"\n >\n </ng-container>\n </fd-popover-body>\n</fd-popover>\n\n<ng-template\n #month\n let-selectedMonth\n let-width=\"width\"\n let-height=\"height\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-popover=\"popover\"\n>\n <fd-toolbar [fdType]=\"'transparent'\">\n <fdp-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></fdp-button>\n <fdp-button\n buttonType=\"transparent\"\n fd-toolbar-item\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\n (click)=\"onPrevTap()\"\n ></fdp-button>\n <fdp-button\n buttonType=\"transparent\"\n fd-toolbar-item\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\n (click)=\"onNextTap()\"\n ></fdp-button>\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\n <button\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.monthName\"\n (click)=\"selectionMode = 'month'\"\n ></button>\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.year\"\n (click)=\"selectionMode = 'year'\"\n ></button>\n </div>\n </fd-toolbar>\n <ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 33%\"\n *ngFor=\"let month of months; let i = index\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\n [label]=\"month\"\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\n ></button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 25%\"\n *ngFor=\"let year of years\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\n [label]=\"year\"\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\n ></button>\n </div>\n </ng-container>\n <bc-calendar-month\n *ngSwitchDefault\n [style.width]=\"width\"\n [containerHeight]=\"height\"\n [containerWidth]=\"width\"\n [rtl]=\"rtl\"\n [monthWeeksCount]=\"6\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [datePicker]=\"true\"\n [dateRange]=\"true\"\n [days]=\"selectedMonth.days\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\n (dayMouseDown)=\"onDayMouseDown($event)\"\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\n ></bc-calendar-month>\n </ng-container>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Injectable,\n Input,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport {\n BaseComponent,\n BbbTranslatePipe,\n DateService,\n getDateService,\n LogService,\n PortalService,\n BarsaApi\n} from 'barsa-novin-ray-core';\nimport { CalendarMonthInfo, Day } from '../models';\nimport { CalendarService } from '../services/calendar.service';\nimport { DatetimeAdapter, FdDate, FdDatetimeAdapter, TimeComponent, TimeI18n } from '@fundamental-ngx/core';\n@Injectable()\nexport class TimeConfigI18n {\n /** Aria label for the 'increase hours' button */\n increaseHoursLabel = 'Increase hours';\n\n /** label for the 'hours' column */\n hoursLabel = this._bbbTranslate.transform('Hours');\n\n /** Aria label for the 'decrease hours' button */\n decreaseHoursLabel = 'Decrease hours';\n\n /** Aria label for the 'increase minutes' button */\n increaseMinutesLabel = 'Increase minutes';\n\n /** label for the 'minutes' column */\n minutesLabel = this._bbbTranslate.transform('Minutes');\n\n /** Aria label for the 'decrease minutes' button */\n decreaseMinutesLabel = 'Decrease minutes';\n\n /** Aria label for the 'increase seconds' button */\n increaseSecondsLabel = 'Increase seconds';\n\n /** label for the 'seconds' column */\n secondsLabel = this._bbbTranslate.transform('Sec');\n\n /** Aria label for the 'decrease seconds' button */\n decreaseSecondsLabel = 'Decrease seconds';\n\n /** Aria label for the 'increase period' button */\n increasePeriodLabel = 'Increase period';\n\n /** label for the 'period' column */\n periodLabel = 'Period';\n\n /** Aria label for the 'decrease period' button */\n decreasePeriodLabel = 'Decrease period';\n constructor(private _bbbTranslate: BbbTranslatePipe) {}\n}\n\n@Component({\n selector: 'bc-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DatetimeAdapter,\n useClass: FdDatetimeAdapter\n },\n {\n provide: TimeI18n,\n useClass: TimeConfigI18n\n },\n {\n provide: DateService,\n useFactory: getDateService\n },\n CalendarService\n ]\n})\nexport class DateTimePickerComponent extends BaseComponent implements OnInit {\n @Input() placeholder: string;\n @Input() primaryCalendarType: 'Gregorian' | 'Persian' | string;\n @Input() formatPattern: string;\n @Input() value: Date | undefined;\n @Input() timeValue: FdDate;\n @Input() startRangeDate: Date;\n @Input() endRangeDate: Date;\n @Input() isRangePicker: boolean;\n @Input() showTime: boolean;\n @Input() showDate: boolean;\n @Input() rtl = true;\n @Input() readonly: boolean;\n @Input() disabled: boolean;\n @Output() rangeChange = new EventEmitter<{ startDay: Date; endDay: Date }>();\n @Output() valueChange = new EventEmitter<Date>();\n @ViewChild(TimeComponent) timeComponent: TimeComponent<FdDate>;\n valueCaption = '';\n endSelectedDay: Day | null;\n startSelectedDay: Day | null;\n valueDay: Day | null;\n\n selectionMode: 'day' | 'month' | 'year' = 'day';\n todayIndex = -1;\n width$: Observable<number>;\n height: number;\n selectedMonth$: Observable<CalendarMonthInfo>;\n rtl$: Observable<boolean>;\n today: Date;\n weekDaysMin: string[];\n weekDays: string[];\n deviceSize$: Observable<string>;\n isValid = true;\n culture: string;\n months: string[] = [];\n years: string[];\n private _calendarService: CalendarService;\n private _lastValue: Date | undefined;\n\n constructor(\n private _datetimeAdapter: DatetimeAdapter<FdDate>,\n private _logService: LogService,\n _portalService: PortalService\n ) {\n super();\n\n this.rtl$ = _portalService.rtl$;\n this.width$ = _portalService.deviceSize$.pipe(\n distinctUntilChanged(),\n map((deviceSize) => {\n if (!this.showDate) {\n return 260;\n }\n switch (deviceSize) {\n case 'l':\n case 'xl':\n return 560;\n case 's':\n return 320;\n default:\n return 520;\n }\n })\n );\n\n this.height = 420;\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n let culture = 'en-US';\n switch (this.primaryCalendarType) {\n case 'HijriShamsi':\n culture = 'fa-IR';\n break;\n }\n this.culture = culture;\n this._calendarService = new CalendarService(this._logService, culture);\n this.weekDaysMin = this._calendarService.weekDaysMin();\n this.weekDays = this._calendarService.weekDays();\n this.selectedMonth$ = this._calendarService.selected$;\n this.today = this._calendarService.today;\n\n if (this.value) {\n this.timeValue = FdDate.getFdDateByDate(this.value);\n this._setCaption(this.value);\n this._calendarService.loadMonthByDate(this.value);\n } else {\n this.timeValue = FdDate.getFdDateByDate(new Date());\n }\n // if (this.isRangePicker) {\n // if (this.startRangeDate) {\n // this._calendarService.loadMonthByDate(this.startRangeDate);\n // }\n // if (this.endRangeDate) {\n // }\n // } else {\n // this._calendarService.loadMonthByDate(this.value);\n // }\n this.months = this._calendarService.Months;\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\n }\n\n onOpenPopover(popover): void {\n if (this.readonly || this.disabled) {\n return;\n }\n if (this.timeComponent) {\n setTimeout(() => this.timeComponent.refreshColumns(), 0);\n }\n popover.open();\n }\n onMonthSelected(monthName: string, index: number): void {\n this._calendarService.gotoMonth(monthName, index);\n }\n onYearSelected(year: string): void {\n this._calendarService.gotoYear(+year);\n }\n\n onCaptionChanged(e): void {\n if (e.length < 10) {\n return;\n }\n const englishDateStr = BarsaApi.Common.Util.ReplaceFaToArCharchter(e);\n const moment = this._calendarService._dateService.stringToMoment(englishDateStr, 'jYYYY/jM/jD');\n const isValid = moment.isValid();\n const date = moment.toDate();\n if (isValid) {\n this.startSelectedDay = this.endSelectedDay = null;\n this._raisValueChanged(date, false);\n }\n this.isValid = isValid;\n }\n onPrevTap(): void {\n if (this.selectionMode === 'day') {\n this._calendarService.loadPrevious();\n } else if (this.selectionMode === 'month') {\n this._calendarService.loadPrevYear();\n } else if (this.selectionMode === 'year') {\n this._prepareYear(Number(this.years[0]) - 20);\n }\n }\n\n onNextTap(): void {\n if (this.selectionMode === 'day') {\n this._calendarService.loadNext();\n } else if (this.selectionMode === 'month') {\n this._calendarService.loadNextYear();\n } else if (this.selectionMode === 'year') {\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\n }\n }\n\n onToday(): void {\n const today = new Date();\n this.timeValue = this._datetimeAdapter.setTime(\n this.timeValue,\n today.getHours(),\n today.getMinutes(),\n today.getSeconds()\n );\n if (this._calendarService.todayDay) {\n this.startSelectedDay = this._calendarService.todayDay;\n }\n this._calendarService.gotoToday();\n }\n\n onDayClick(day: Day, popover): void {\n this.isValid = true;\n this.startSelectedDay = this.endSelectedDay = day;\n if (this.showTime) {\n return;\n }\n this._setFirstAndEndDay(day, popover);\n }\n\n onPopoverOpenChange(isOpen): void {\n if (isOpen) {\n this._lastValue = this.value;\n } else {\n this._lastValue = undefined;\n }\n }\n\n onOk(popover): void {\n popover.close();\n this.value = this.showDate ? this.startSelectedDay?.date ?? this.value : new Date();\n this.value?.setHours(this.timeValue.hour);\n this.value?.setMinutes(this.timeValue.minute);\n this.value?.setSeconds(this.timeValue.second);\n this._raisValueChanged(this.value);\n }\n\n onCancel(popover): void {\n if (this._lastValue !== this.value) {\n this.value = this._lastValue;\n this._setCaption(this.value);\n }\n popover.close();\n }\n private _prepareYear(from: number): void {\n const years: string[] = [];\n for (let i = 0; i < 20; i++) {\n years.push(`${from + i}`);\n }\n this.years = years;\n }\n private _setCaption(value): void {\n if (!value) {\n this.valueCaption = '';\n return;\n }\n let formatPattern = this.formatPattern.replace('YYYY', 'jYYYY');\n formatPattern = formatPattern.replace('MM', 'jMM');\n formatPattern = formatPattern.replace('DD', 'jDD');\n this.valueCaption = this._calendarService._dateService.getMoment(value).format(formatPattern);\n }\n private _raisValueChanged(date, setCaption = true): void {\n this.value = date;\n if (setCaption) {\n this._setCaption(date);\n }\n this.valueChange.emit(date);\n }\n\n private _setFirstAndEndDay(day: Day, popover): void {\n if (popover) {\n popover.close();\n }\n if (!this.isRangePicker) {\n this._raisValueChanged(day.date);\n return;\n }\n if (this.startSelectedDay) {\n this.endSelectedDay = day;\n } else {\n this.startSelectedDay = day;\n }\n if (this.startSelectedDay && this.endSelectedDay && this.startSelectedDay.date > this.endSelectedDay.date) {\n const temp = this.startSelectedDay;\n this.startSelectedDay = this.endSelectedDay;\n this.endSelectedDay = temp;\n }\n if (this.startSelectedDay && this.endSelectedDay) {\n this.rangeChange.emit({\n startDay: this.startSelectedDay.date,\n endDay: this.endSelectedDay.date\n });\n }\n }\n}\n","<fd-input-group\n placement=\"after\"\n glyph=\"calendar\"\n glyphAriaLabel=\"select day\"\n [placeholder]=\"placeholder\"\n ariaLabelledby=\"fd-input-group-icon-label-2\"\n [button]=\"true\"\n [state]=\"isValid ? 'success' : 'error'\"\n [showFocus]=\"true\"\n (addOnButtonClicked)=\"onOpenPopover(popover)\"\n [ngModel]=\"value | dateTimeToCaption: formatPattern:culture:showDate:showTime\"\n (ngModelChange)=\"onCaptionChanged($event)\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n>\n</fd-input-group>\n<fd-popover\n #popover\n (isOpenChange)=\"onPopoverOpenChange($event)\"\n [focusTrapped]=\"true\"\n [focusAutoCapture]=\"true\"\n [mobile]=\"(deviceSize$ | async) === 's'\"\n>\n <fd-popover-body [style.width.px]=\"width$ | async\">\n <ng-container\n *ngTemplateOutlet=\"\n month;\n context: {\n $implicit: selectedMonth$ | async,\n width: width$ | async,\n height: height,\n rtl: rtl$ | async,\n weekDays: weekDays,\n weekDaysMin: weekDaysMin,\n today: today,\n deviceSize: deviceSize$ | async,\n popover: popover\n }\n \"\n >\n </ng-container>\n <div fd-popover-body-footer *ngIf=\"showTime\">\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-left *ngIf=\"rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n <div fd-bar-right *ngIf=\"!rtl\">\n <container *ngTemplateOutlet=\"footerButtons\"></container>\n </div>\n </div>\n </div>\n </fd-popover-body>\n</fd-popover>\n<ng-template #footerButtons>\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover)\"></fd-button-bar>\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover)\"></fd-button-bar>\n</ng-template>\n<ng-template\n #month\n let-selectedMonth\n let-width=\"width\"\n let-height=\"height\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-popover=\"popover\"\n>\n <fd-toolbar [fdType]=\"'transparent'\">\n <button\n fd-button\n fd-toolbar-item\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\n (click)=\"onToday()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\n (click)=\"onPrevTap()\"\n ></button>\n <button\n *ngIf=\"showDate\"\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\n (click)=\"onNextTap()\"\n ></button>\n <div class=\"month-years-wrapper\" *ngIf=\"showDate\" fd-title fd-toolbar-item>\n <button\n *ngIf=\"selectionMode === 'day' || selectionMode === 'month'\"\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.monthName\"\n (click)=\"selectionMode = 'month'\"\n ></button>\n <button\n fd-button\n [fdType]=\"'transparent'\"\n [label]=\"selectedMonth.dateInfo.year\"\n (click)=\"selectionMode = 'year'\"\n ></button>\n </div>\n </fd-toolbar>\n <div style=\"display: flex\">\n <ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"'month'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 33%\"\n *ngFor=\"let month of months; let i = index\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\n [label]=\"month\"\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\n ></button>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'year'\">\n <div class=\"month-year-selection-wrapper\">\n <button\n style=\"flex-grow: 1; width: 25%\"\n *ngFor=\"let year of years\"\n fd-button\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\n [label]=\"year\"\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\n ></button>\n </div>\n </ng-container>\n <div *ngSwitchDefault style=\"display: flex\">\n <bc-calendar-month\n *ngIf=\"showDate\"\n [style.width]=\"width\"\n [containerHeight]=\"height\"\n [containerWidth]=\"width\"\n [rtl]=\"rtl\"\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [datePicker]=\"true\"\n [dateRange]=\"true\"\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\n [days]=\"selectedMonth.days\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event, popover)\"\n ></bc-calendar-month>\n <div class=\"seperator\"></div>\n <fd-time\n *ngIf=\"showTime\"\n [(ngModel)]=\"timeValue\"\n [compact]=\"(deviceSize$ | async) !== 's'\"\n [displaySeconds]=\"false\"\n ></fd-time>\n </div>\n </ng-container>\n </div>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\n\nimport moment from 'moment';\n\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\nimport { Day } from '../models';\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\nimport { CalendarService } from '../services/calendar.service';\n\n@Component({\n selector: 'bc-month-days',\n templateUrl: './month-days.component.html',\n styleUrls: ['./month-days.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MonthDaysComponent extends BaseComponent implements OnInit, OnChanges {\n @Input() monthWeeksCount: { firstWeekIndex: number; weeksCount: number };\n @Input() weekDays: string[];\n @Input() weekDaysMin: string[];\n @Input() today: Date;\n @Input() containerHeight: number;\n @Input() days: Day[];\n @Input() calendarFields: CalendarFields;\n @Input() rtl: boolean;\n @Input() deviceSize: string;\n @Input() moDataList: MetaobjectDataModel[];\n @Input() datePicker = false;\n @Input() rangePicker = false;\n @Input() startSelectedDayIndex: number | undefined;\n @Input() endSelectedDayIndex: number | undefined;\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() daySelect = new EventEmitter<any>();\n @Output() dayClick = new EventEmitter<Day>();\n @Output() dayMouseMove = new EventEmitter<Day>();\n @Output() dayMouseUp = new EventEmitter<Day>();\n @Output() dayMouseDown = new EventEmitter<Day>();\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\n defaultWeeksCountD: number;\n defaultFirstWeekIndex: number;\n selectedWeekDays: string[];\n selected: Day;\n numberOfWeek: number[];\n dayHeight: number;\n taskHeight = 30;\n maxTaskCount: number;\n maxRowTasks: number[];\n weekTasksArray: any;\n extraRow: number[];\n isPickerMode: boolean;\n\n private _hasPopoverOpened: boolean[] = [];\n constructor(\n private daysInWeek: DaysInWeekPipe,\n private _cdr: ChangeDetectorRef,\n private _calendarService: CalendarService\n ) {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (changes.containerHeight && !changes.containerHeight.firstChange) {\n this.fitToContainer(changes.containerHeight.currentValue);\n }\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\n this.prepareWeekDays(changes.deviceSize.currentValue);\n }\n if (changes.moDataList && !changes.moDataList.firstChange) {\n this._prepareDaysTasks(changes.moDataList.currentValue);\n this._cdr.detectChanges();\n }\n if (changes.monthInfo && !changes.monthInfo.firstChange) {\n this._prepareDaysTasks(this.moDataList);\n this._cdr.detectChanges();\n }\n if (changes.monthWeeksCount && !changes.monthWeeksCount.firstChange) {\n this.fitToContainer(this.containerHeight);\n this._prepareDaysTasks(this.moDataList);\n this._cdr.detectChanges();\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.isPickerMode = this.datePicker || this.rangePicker;\n this.prepareWeekDays(this.deviceSize);\n this._prepareDaysTasks(this.moDataList);\n this.fitToContainer(this.containerHeight);\n }\n\n onDayBoxSelect(day: Day): void {\n this._fireDaySelect(day);\n }\n onDaySelect(weekIndex: number, dayIndex: number): void {\n const day = this.days[weekIndex * 7 + dayIndex];\n this._fireDaySelect(day);\n }\n\n onOpenPopoverChange(isOpen: boolean): void {\n this._openPopover(isOpen);\n }\n onMoreButton(e, popover): void {\n this._preventEvent(e);\n popover.open();\n }\n onTask(e, task: CalendarMetaobjectDataModel): void {\n this.showEvent.emit(task);\n }\n onDayClick(day: Day): void {\n this.selected = day;\n this.dayClick.emit(day);\n }\n onDayMouseMove(day: Day): void {\n this.dayMouseMove.emit(day);\n }\n onDayMouseDown(day: Day): void {\n this.dayMouseDown.emit(day);\n }\n onDayMouseUp(day: Day): void {\n this.dayMouseUp.emit(day);\n }\n private _preventEvent(e): void {\n e.stopPropagation();\n e.preventDefault();\n }\n private _fireDaySelect(day: Day): void {\n if (this._hasPopoverOpened.length === 0) {\n this.daySelect.emit(moment(day.date));\n }\n }\n private _openPopover(isOpen: boolean): void {\n if (isOpen) {\n this._hasPopoverOpened.push(true);\n } else {\n setTimeout(() => {\n this._hasPopoverOpened = [];\n }, 0);\n }\n }\n private prepareWeekDays(deviceSize: string): void {\n if (deviceSize !== 's' && deviceSize !== 'm') {\n this.selectedWeekDays = this.weekDays;\n } else {\n this.selectedWeekDays = this.weekDaysMin;\n }\n }\n private fitToContainer(containerHeight): void {\n let _weeksCount;\n let _firstWeekIndex;\n if (this.monthWeeksCount?.weeksCount > 0) {\n const { weeksCount, firstWeekIndex } = this.monthWeeksCount;\n _weeksCount = weeksCount;\n _firstWeekIndex = firstWeekIndex;\n } else {\n _weeksCount = this.days.length / 7;\n _firstWeekIndex = 0;\n }\n\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\n this.numberOfWeek = this.numberOfWeek.map((value) => value + _firstWeekIndex);\n if (this.isPickerMode) {\n this.dayHeight = 40;\n return;\n }\n this.dayHeight = Math.floor(containerHeight / _weeksCount) + 1;\n\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((x, i) => i);\n }\n private _prepareDaysTasks(calendarTasks): void {\n if (this.isPickerMode) {\n this.weekTasksArray = {};\n return;\n }\n\n const calendarFields = this.calendarFields;\n\n // Sort all Tasks\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\n this.days.forEach((day) => (day.tasks = []));\n const weekTasksArray: any = [];\n for (let j = 0; j < this.days.length / 7; j++) {\n const days = this.daysInWeek.transform(this.days, j);\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\n weekTasksArray.push(week);\n }\n\n weekTasksArray.forEach((week) => {\n const arr: any[] = Object.values(week);\n for (let i = arr.length; i < this.maxTaskCount; i++) {\n week[i.toString()] = [];\n }\n });\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\n weekTasksArray.forEach((week) => {\n this._calendarService.fillWeek(week);\n });\n this.weekTasksArray = weekTasksArray;\n }\n}\n","<table fd-table class=\"table-header\" [compact]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n <th\r\n class=\"weekday-header\"\r\n *ngFor=\"let weekDay of selectedWeekDays\"\r\n fd-table-cell\r\n [class.noborder]=\"isPickerMode\"\r\n >\r\n {{ weekDay }}\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n <ng-container *ngFor=\"let weekDay of numberOfWeek\">\r\n <tr fd-table-row>\r\n <td\r\n [style.height.px]=\"dayHeight\"\r\n fd-table-cell\r\n colspan=\"7\"\r\n [style.border]=\"isPickerMode ? 'none' : null\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\">\r\n <td fd-table-cell *ngFor=\"let day of days | daysInWeek: weekIndex\" [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [class.fd-calendar__item]=\"isPickerMode\"\r\n [class.fd-calendar__item--other-month]=\"isPickerMode && !day.isInMonth\"\r\n [class.fd-calendar__item--weekend]=\"isPickerMode && day.isWeekend\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [class.is-active]=\"day.index === startSelectedDayIndex || day.index === endSelectedDayIndex\"\r\n [class.fd-calendar__item--range]=\"\r\n startSelectedDayIndex &&\r\n endSelectedDayIndex &&\r\n day.index > startSelectedDayIndex &&\r\n day.index < endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n </tr>\r\n <ng-container *ngIf=\"!isPickerMode\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n <td fd-table-cell *ngFor=\"let day of days\" class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n <ng-container *ngIf=\"maxRowTasks.length < day.tasks.length\">\r\n <button\r\n fd-button\r\n (click)=\"onMoreButton($event, popover)\"\r\n [fdType]=\"'transparent'\"\r\n [compact]=\"true\"\r\n >\r\n {{ day.tasks?.length - maxRowTasks.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n <tr fd-table-row *ngFor=\"let rowTask of maxRowTasks; let i = index\">\r\n <ng-container *ngIf=\"!weekTasks[i] || weekTasks[i].length === 0\">\r\n <td fd-table-cell *ngFor=\"let day of weekDays\"></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\" *ngIf=\"task.colSpan\">\r\n <ng-container *ngIf=\"task.event; else newDaySelect\">\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n </ng-container>\r\n <ng-template #newDaySelect>\r\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent } from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\n@Component({\r\n selector: 'bc-calendar-header',\r\n templateUrl: './calendar-header.component.html',\r\n styleUrls: ['./calendar-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarHeaderComponent extends BaseComponent {\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() weekModeDays: Day[];\r\n @Input() hideMode = false;\r\n @Input() modeTitle: string;\r\n @Input() title: string;\r\n @Input() rtl: boolean;\r\n @Input() mode: CalendarMode;\r\n @Output() prevTap = new EventEmitter();\r\n @Output() nextTap = new EventEmitter();\r\n @Output() modeChange = new EventEmitter<CalendarMode>();\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n @Output() today = new EventEmitter();\r\n year: string;\r\n monthName = '';\r\n\r\n onModeChange(mode: CalendarMode): void {\r\n this.modeChange.emit(mode);\r\n }\r\n onRangeChange(range): void {\r\n this.rangeChange.emit(range);\r\n }\r\n onPrint(): void {}\r\n}\r\n","<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\">\r\n <fdp-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></fdp-button>\r\n <fdp-button\r\n buttonType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></fdp-button>\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <fdp-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" buttonType=\"transparent\"></fdp-button>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n\r\n <fd-split-button\r\n *ngIf=\"!hideMode\"\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu>\r\n <li fd-menu-item (click)=\"onModeChange('day')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('week')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item (click)=\"onModeChange('month')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n</fd-toolbar>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'fromToTime'\r\n})\r\nexport class FromToTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel): string {\r\n const event = task.event;\r\n const fromDateInfo: DateInfo = event.$StartDateInfo;\r\n const toDateInfo: DateInfo = event.$EndDateInfo;\r\n const fromTime = `${getPadedTime(fromDateInfo.hour)}:${getPadedTime(fromDateInfo.minutes)}`;\r\n const toTime = `${getPadedTime(toDateInfo.hour)}:${getPadedTime(toDateInfo.minutes)}`;\r\n return `${fromTime} - ${toTime}`;\r\n }\r\n}\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport moment from 'moment';\n\nimport {\n BaseComponent,\n CalendarFields,\n CalendarMetaobjectDataModel,\n MetaobjectDataModel,\n PreventDefaulEvent\n} from 'barsa-novin-ray-core';\nimport { CalendarService } from '../services/calendar.service';\nimport { Day } from '../models';\n\n@Component({\n selector: 'bc-calendar-week',\n templateUrl: './calendar-week.component.html',\n styleUrls: ['./calendar-week.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarWeekComponent extends BaseComponent implements OnChanges, OnInit {\n @ViewChild('tableTop') tableTopEl: ElementRef<HTMLDivElement>;\n @Input() weekDays: string[];\n @Input() weekDaysMin: string[];\n @Input() today: Date;\n @Input() containerHeight: number;\n @Input() calendarFields: CalendarFields;\n @Input() rtl: boolean;\n @Input() inDialog: boolean;\n @Input() deviceSize: string;\n @Input() moDataList: MetaobjectDataModel[];\n @Input() days: Day[];\n @Input() canDelete = false;\n @Input() canAdd = false;\n @Input() canEdit = false;\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\n @Output() daySelect = new EventEmitter<any>();\n @Output() dayClick = new EventEmitter<Day>();\n selectedWeekDays: string[];\n selected: Day;\n numberOfWeek: number[];\n dayHeight: number;\n taskHeight = 30;\n maxTaskCount = 4;\n maxRowTasks: number[];\n weekTasksArray: { [key: string]: [] }[];\n extraRow: number[];\n width: any;\n hours: string[];\n\n private _hasPopoverOpened: boolean[] = [];\n\n constructor(private _cdr: ChangeDetectorRef, private _calendarService: CalendarService) {\n super();\n }\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\n this.prepareWeekDays(changes.deviceSize.currentValue);\n }\n if (changes.moDataList && !changes.moDataList.firstChange) {\n this._prepareDaysTasks(changes.moDataList.currentValue);\n this._cdr.detectChanges();\n }\n if (changes.days && !changes.days.firstChange) {\n this._prepareDaysTasks(this.moDataList);\n this._cdr.detectChanges();\n }\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.hours = new Array(24).fill(0).map((x, i) => `${i > 9 ? '' + i : '0' + i}:00`);\n this.prepareWeekDays(this.deviceSize);\n this._prepareDaysTasks(this.moDataList);\n }\n\n onDayBoxSelect(day: Day): void {\n if (!this.canAdd) {\n return;\n }\n this._fireDaySelect(day.date);\n }\n\n onOpenPopoverChange(isOpen: boolean): void {\n if (isOpen) {\n this._hasPopoverOpened.push(true);\n } else {\n setTimeout(() => {\n this._hasPopoverOpened = [];\n }, 0);\n }\n }\n onColumnClick(e, day: Day): void {\n const { offsetY } = e;\n const hour = Math.floor(offsetY / 50);\n const minutes = Math.floor((offsetY % 50) / 15) * 15;\n const date = new Date(day.date);\n date.setHours(hour);\n date.setMinutes(minutes);\n this._fireDaySelect(date);\n }\n onEventButton(e): void {\n if (e.currentTarget?.localName === 'bc-event-button') {\n PreventDefaulEvent(e);\n }\n }\n onMoreButton(e, popover): void {\n PreventDefaulEvent(e);\n this._openPopover(popover);\n }\n onDayClick(day: Day): void {\n this.selected = day;\n this.dayClick.emit(day);\n }\n private _fireDaySelect(date: Date): void {\n if (this._hasPopoverOpened.length === 0) {\n this.daySelect.emit(moment(date));\n }\n }\n\n private _openPopover(popover: any): void {\n if (popover.isOpen) {\n this._hasPopoverOpened.push(popover);\n } else {\n this._hasPopoverOpened.pop();\n }\n }\n private prepareWeekDays(deviceSize: string): void {\n if (deviceSize !== 's' && deviceSize !== 'm') {\n this.selectedWeekDays = this.weekDays;\n } else {\n this.selectedWeekDays = this.weekDaysMin;\n }\n }\n\n private _prepareDaysTasks(calendarTasks): void {\n const calendarFields = this.calendarFields;\n\n // Sort all Tasks\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\n const taskHeight = 50;\n this.days.forEach((day) => (day.tasks = []));\n\n const weekTasksArray: { [key: string]: any[] }[] = [];\n const days = this.days;\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, taskHeight);\n weekTasksArray.push(week);\n\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\n weekTasksArray.forEach((weekTask) => {\n this._calendarService.fillWeek(weekTask, days.length);\n });\n const tasks = [];\n let counter = 0;\n Object.values(weekTasksArray).forEach(() => {\n Object.values(week).forEach((element) => {\n const filtered = element.some((c) => c.colSpan > 1 || (c.colSpan === 1 && !c.inDay && c.event));\n if (filtered) {\n tasks[counter.toString()] = element;\n counter++;\n }\n });\n });\n this.weekTasksArray = tasks;\n }\n}\n","<div\n class=\"table-container\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n style=\"overflow-y: hidden; flex-shrink: 0\"\n #tableTop\n>\n <table fd-table class=\"table-top\" [compact]=\"true\" [attr.daysCount]=\"days.length\">\n <tbody fd-table-body>\n <tr fd-table-row class=\"week-days\">\n <td class=\"td-time\"></td>\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" *ngFor=\"let day of days\" fd-table-cell style=\"width: 100%\">\n {{ day.dayName }}\n </td>\n </tr>\n <tr fd-table-row class=\"week-numbers\">\n <td class=\"td-time\"></td>\n <td fd-table-cell *ngFor=\"let day of days\" [attr.rtl]=\"rtl\">\n <bc-day-number-box\n [day]=\"day\"\n [isWeekMode]=\"true\"\n [isSingleDay]=\"days.length === 1\"\n (dayClick)=\"onDayClick(day)\"\n ></bc-day-number-box>\n </td>\n </tr>\n <ng-container\n *ngTemplateOutlet=\"\n renderDayTasks;\n context: {\n $implicit: weekTasksArray,\n maxRowTasks: maxRowTasks,\n weekIndex: 0\n }\n \"\n ></ng-container>\n </tbody>\n </table>\n</div>\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\n <ng-container *ngFor=\"let rowTask of weekTasks | keyvalue; let i = index\">\n <tr fd-table-row class=\"task-row\">\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\n <ng-container *ngFor=\"let task of weekTasks[i]; let dayIndex = index\">\n <td\n fd-table-cell\n *ngIf=\"task.colSpan && dayIndex < days.length\"\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\n class=\"td-button\"\n [attr.hasevent]=\"!!task.event\"\n >\n <bc-event-button\n *ngIf=\"task.event && !task.inDay; else newDaySelect\"\n [task]=\"task\"\n [rtl]=\"rtl\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n ></bc-event-button>\n <ng-template #newDaySelect>\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n</ng-template>\n<div\n class=\"table-container\"\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1\"\n [style.height.px]=\"inDialog ? containerHeight : null\"\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\n>\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\n <tbody>\n <tr class=\"tr-time\" style=\"height: 0rem\">\n <td class=\"td-time\" style=\"height: 0rem\"></td>\n <td [colspan]=\"days.length\" style=\"position: relative\" style=\"height: 0rem\">\n <div class=\"tasks-wrapper\">\n <div *ngFor=\"let hour of hours\" class=\"row-border\"></div>\n </div>\n </td>\n </tr>\n <tr fd-table-row style=\"height: 100%\">\n <td fd-table-cell class=\"td-time\">\n <div class=\"calc-time\">\n <div *ngFor=\"let hour of hours\">{{ hour }}</div>\n </div>\n </td>\n <td *ngFor=\"let day of days\" fd-table-cell (click)=\"onColumnClick($event, day)\">\n <div style=\"position: relative; width: 100%; height: 100%\">\n <ng-container *ngFor=\"let task of day.tasks; let index = index\">\n <bc-event-button\n (click)=\"onEventButton($event)\"\n *ngIf=\"task.inDay\"\n [style.background]=\"task.event[calendarFields.Color]\"\n [style.top.px]=\"task.top\"\n [style.right]=\"rtl ? 'calc(' + index * (100 / day.tasks.length) + '%)' : null\"\n [style.left]=\"rtl ? null : 'calc(' + index * (100 / day.tasks.length) + '%)'\"\n [style.width]=\"'calc(100% - ' + index * (100 / day.tasks.length) + '%)'\"\n [style.height.px]=\"task.height\"\n [style.maxHeight.px]=\"task.height\"\n [style.opacity]=\"task.opacity\"\n [style.zIndex]=\"index\"\n [buttonTemplate]=\"eventButtonTemplate\"\n class=\"task-day\"\n [task]=\"task\"\n [calendarFields]=\"calendarFields\"\n [deviceSize]=\"deviceSize\"\n [canDelete]=\"canDelete\"\n [canEdit]=\"canEdit\"\n (deleteEvent)=\"deleteEvent.emit($event)\"\n (editEvent)=\"editEvent.emit($event)\"\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\n ></bc-event-button>\n </ng-container>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n<ng-template #eventButtonTemplate let-task let-popover=\"popover\" let-calendarFields=\"calendarFields\">\n <button\n [style.background]=\"task.event[calendarFields.Color]\"\n class=\"task-title\"\n [style.border]=\"'1px solid white'\"\n fd-button\n [compact]=\"true\"\n [fdType]=\"'emphasized'\"\n [fdPopoverTrigger]=\"popover\"\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\n >\n <ng-container *ngIf=\"task.height > 49\">\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\n </ng-container>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { BaseComponent, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\n@Component({\n selector: 'bc-calendar-list-item',\n templateUrl: './calendar-list-item.component.html',\n styleUrls: ['./calendar-list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarListItemComponent extends BaseComponent {\n @Input() mo: CalendarMetaobjectDataModel;\n}\n","<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <Label [text]=\"mo.$StartTimes\"></Label>\r\n <Label class=\"ela\" [text]=\"'الی'\"></Label>\r\n <Label [text]=\"mo.$EndTimes\"></Label>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"mo.$Color\"></div>\r\n <div class=\"event-wrapper\">\r\n <Label class=\"title\" [text]=\"mo.$Title\"></Label>\r\n <Label class=\"desc\" [text]=\"mo.$Notes\"></Label>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nimport { BaseComponent, MetaobjectDataModel, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\n@Component({\n selector: 'bc-calendar-list',\n templateUrl: './calendar-list.component.html',\n styleUrls: ['./calendar-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarListComponent extends BaseComponent {\n @Input() moDataList: CalendarMetaobjectDataModel[];\n public trackById(index: number, item: MetaobjectDataModel): string {\n return item.Id;\n }\n}\n","<bc-calendar-list-item *ngFor=\"let item of moDataList; trackBy: trackById\" [mo]=\"item\"> </bc-calendar-list-item>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\nimport { Day } from '../models';\n@Component({\n selector: 'bc-calendar-list-container',\n templateUrl: './calendar-list-container.component.html',\n styleUrls: ['./calendar-list-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarListContainerComponent extends BaseComponent {\n @Input() view: any;\n @Input() reportItemComponentName: string;\n @Input() showEvents: boolean;\n @Input() selectedDay: Day;\n @Input() calendarFields: CalendarFields;\n @Output() showEventsTap = new EventEmitter();\n}\n","<bc-calendar-list *ngIf=\"selectedDay\" [moDataList]=\"selectedDay.tasks\"></bc-calendar-list>\r\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { TitleCasePipe } from '@angular/common';\n\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\n\nimport {\n UiReportViewBaseSetting,\n ReportViewBaseComponent,\n DateService,\n LogService,\n getDateService,\n MetaobjectDataModel,\n CalendarMetaobjectDataModel,\n BbbTranslatePipe,\n FindColumnByDbNamePipe,\n UlvMainService,\n PortalService\n} from 'barsa-novin-ray-core';\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\nimport { CalendarService } from '../services/calendar.service';\n\n@Component({\n selector: 'bc-calendar-container',\n templateUrl: './calendar-container.component.html',\n styleUrls: ['./calendar-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: DateService,\n useFactory: getDateService,\n deps: [LogService]\n }\n ]\n})\nexport class CalendarContainerComponent\n extends ReportViewBaseComponent<UiReportViewBaseSetting>\n implements OnInit, OnChanges\n{\n @Input() calendarFields;\n @Output() deleteTask = new EventEmitter<MetaobjectDataModel>();\n @Output() editTask = new EventEmitter<MetaobjectDataModel>();\n @Output() daySelect = new EventEmitter<Date>();\n @Output() loadData = new EventEmitter<{ start: Date; end: any }>();\n selectedDay: Day;\n todayIndex = -1;\n selectedIndex: any;\n calendars: CalendarMonthInfo[];\n showEvents: boolean;\n width: number;\n height: number;\n selectedMonth$: Observable<CalendarMonthInfo>;\n today: Date;\n weekDaysMin: string[];\n weekDays: string[];\n mode$: Observable<CalendarMode>;\n selectedWeek$: Observable<number>;\n weekModeDays$: Observable<Day[]>;\n days$: Observable<Day[]>;\n weeksCount: number;\n firstWeekIndex: number;\n monthWeeksCount$: Observable<number>;\n modeTitle$: Observable<string>;\n title$: Observable<string>;\n eventMoDataList$ = new BehaviorSubject<MetaobjectDataModel[]>([]);\n constructor(\n private _titleCase: TitleCasePipe,\n private _bbbTranslate: BbbTranslatePipe,\n private _calendarService: CalendarService,\n private _dateService: DateService,\n protected _el: ElementRef,\n protected _cdr: ChangeDetectorRef,\n protected _renderer2: Renderer2,\n protected _findColumnByDbName: FindColumnByDbNamePipe,\n protected _ulvMainService: UlvMainService,\n protected _portalService: PortalService\n ) {\n super(_el, _cdr, _renderer2, _findColumnByDbName, _ulvMainService, _portalService);\n }\n ngOnInit(): void {\n super.ngOnInit();\n this.prepare();\n this._setWidthAndHeight();\n this.prepareMoDataList(this.moDataList);\n this.selectedMonth$.pipe(takeUntil(this._onDestroy$)).subscribe((month: CalendarMonthInfo) => {\n this.loadData.emit({\n start: month.days[0].date,\n end: month.days[month.days.length - 1].date\n });\n });\n // this.setTasks(this.calendars, this.moDataList, this.calendarFields);\n }\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n const { moDataList, deviceSize } = changes;\n if (moDataList && !moDataList.firstChange) {\n this.prepareMoDataList(changes.moDataList.currentValue);\n this._cdr.detectChanges();\n }\n if (deviceSize && !deviceSize.firstChange) {\n this._setWidthAndHeight();\n this._cdr.detectChanges();\n }\n }\n\n onDayClick(day: Day): void {\n this._calendarService.setMode('day', day);\n }\n onShowTask(): void {}\n onSlideChange(selected: CalendarMonthInfo): void {\n this._calendarService.setSelected(selected);\n }\n onMonthCarouselLoaded({ object }): void {\n object.selectedPage = 1;\n }\n\n onToday(): void {\n this._calendarService.gotoToday();\n }\n onModeChange(mode: CalendarMode): void {\n this._calendarService.setMode(mode);\n }\n onRangeChange(e: { startDay: Day; endDay: Day; monthInfo: CalendarMonthInfo }): void {\n this._calendarService.rangeSelect(e.startDay, e.endDay, e.monthInfo);\n }\n onPrevTap(): void {\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage - 1);\n this._calendarService.loadPrevious();\n }\n\n onNextTap(): void {\n this._calendarService.loadNext();\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage + 1);\n }\n\n onSelectedChange(day: Day): void {\n this.selectedDay = { ...day };\n }\n\n prepareMoDataList(moDataList: MetaobjectDataModel[]): void {\n this.eventMoDataList$.next(\n moDataList.map((event) => ({\n ...event,\n id: event.Id, // because in core.js calendar selection adapter read id with lowercase\n $StartDateInfo: this._dateService.getDateInfo(event[this.calendarFields.StartDate]),\n $EndDateInfo: this._dateService.getDateInfo(event[this.calendarFields.EndDate])\n }))\n );\n }\n\n addTd(table: any[], tr: any[], event: CalendarMetaobjectDataModel, colSpan: number): void {\n const colSpanCount = tr.length > 0 ? tr.map((c) => c.colSpan).reduce((a, b) => a + b) > 6 : 0;\n if (colSpanCount) {\n table.push(tr);\n tr = [];\n }\n tr.push({ type: 'td', colSpan, event });\n }\n private prepare(): void {\n this.weekDaysMin = this._calendarService.weekDaysMin();\n this.weekDays = this._calendarService.weekDays();\n this.selectedMonth$ = this._calendarService.selected$;\n this.days$ = this._calendarService.days$;\n this.today = this._calendarService.today;\n this.mode$ = this._calendarService.mode$;\n\n this.monthWeeksCount$ = this.mode$.pipe(\n map((mode) => {\n if (mode === 'month') {\n return this._calendarService.selectedMonth.weeksCount;\n }\n return 0;\n })\n );\n this.modeTitle$ = combineLatest([this.days$, this.mode$]).pipe(\n takeUntil(this._onDestroy$),\n switchMap(([, mode]) => {\n if (mode === 'customMonth') {\n return of(`${this._calendarService.weeksCount} ${this._bbbTranslate.transform('Week')}`);\n }\n return of(this._bbbTranslate.transform(this._titleCase.transform(mode)));\n })\n );\n\n this.weekModeDays$ = this._calendarService.weekModeDays$;\n this._calendarService.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe((calendars) => {\n const eventCalendars = [...calendars];\n // eventCalendars = eventCalendars.splice(this.selectedIndex, 3);\n this.calendars = eventCalendars;\n // if (this.monthCarouselView) {\n // this.monthCarouselView.nativeElement.selectedPage = 1;\n // }\n });\n\n // .pipe(takeUntil(this._onDestroy$))\n // .subscribe((todayIndex) => {\n // this.selectedIndex = this.todayIndex = todayIndex;\n // this.gotoPage(this.todayIndex);\n // });\n this.title$ = combineLatest([this.weekModeDays$, this.selectedMonth$, this.days$, this.mode$]).pipe(\n takeUntil(this._onDestroy$),\n switchMap(([weekModeDays, monthInfo, days, mode]) => {\n let monthName = monthInfo.dateInfo.monthName;\n const year = monthInfo.dateInfo.strYear;\n\n if (mode !== 'month') {\n let firstDayInfo: Day;\n let lastDayInfo: Day;\n const daysTemp = mode === 'customMonth' ? days : weekModeDays;\n if (daysTemp.length > 0) {\n firstDayInfo = daysTemp[0];\n lastDayInfo = daysTemp[daysTemp.length - 1];\n monthName = firstDayInfo.monthName;\n if (firstDayInfo.month !== lastDayInfo.month) {\n monthName = `${firstDayInfo.monthName} -\n ${lastDayInfo.monthName}`;\n }\n }\n }\n return of(`${monthName} ${year}`);\n })\n );\n }\n\n private _setWidthAndHeight(): void {\n this.width = this._el.nativeElement.offsetWidth;\n this.height = this._el.nativeElement.offsetHeight - 45;\n }\n}\n","<bc-calendar-header\n [monthInfo]=\"(selectedMonth$ | async)!!\"\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\n [rtl]=\"rtl\"\n [mode]=\"(mode$ | async)!!\"\n [modeTitle]=\"(modeTitle$ | async)!!\"\n [title]=\"(title$ | async)!!\"\n (modeChange)=\"onModeChange($event)\"\n (prevTap)=\"onPrevTap()\"\n (nextTap)=\"onNextTap()\"\n (today)=\"onToday()\"\n (rangeChange)=\"onRangeChange($event)\"\n>\n</bc-calendar-header>\n\n<ng-container [ngSwitch]=\"mode$ | async\">\n <ng-container *ngSwitchCase=\"'week'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'day'\">\n <ng-container\n *ngTemplateOutlet=\"\n weekCalendar;\n context: {\n $implicit: selectedMonth$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n weekModeDays: weekModeDays$ | async,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'list'\"></ng-container>\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"\n monthCalendar;\n context: {\n $implicit: days$ | async,\n moDataList: eventMoDataList$ | async,\n width: width,\n height: height,\n rtl: rtl,\n showEvents: showEvents,\n today: today,\n deviceSize: deviceSize,\n calendarFields: calendarFields,\n monthWeeksCount: monthWeeksCount$ | async,\n access: access\n }\n \"\n ></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template\n #monthCalendar\n let-days\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-monthWeeksCount=\"monthWeeksCount\"\n let-access=\"access\"\n>\n <bc-calendar-month\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [monthWeeksCount]=\"monthWeeksCount\"\n [rtl]=\"rtl\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"days\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-month>\n</ng-template>\n\n<ng-template #listCalendar>\n <bc-calendar-list-container\n [showEvents]=\"showEvents\"\n [selectedDay]=\"selectedDay\"\n [calendarFields]=\"calendarFields\"\n (showEventsTap)=\"showEvents = !showEvents\"\n ></bc-calendar-list-container>\n</ng-template>\n\n<ng-template\n #weekCalendar\n let-selectedMonth\n let-moDataList=\"moDataList\"\n let-width=\"width\"\n let-height=\"height\"\n let-calendarFields=\"calendarFields\"\n let-rtl=\"rtl\"\n let-today=\"today\"\n let-showEvents=\"showEvents\"\n let-deviceSize=\"deviceSize\"\n let-weekModeDays=\"weekModeDays\"\n let-access=\"access\"\n>\n <bc-calendar-week\n [style.width]=\"width\"\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\n [containerWidth]=\"width\"\n [inDialog]=\"inDialog\"\n [calendarFields]=\"calendarFields\"\n [moDataList]=\"moDataList\"\n [rtl]=\"rtl\"\n [canAdd]=\"access.Add\"\n [canEdit]=\"access.Edit\"\n [canDelete]=\"access.Delete\"\n [weekDays]=\"weekDays\"\n [weekDaysMin]=\"weekDaysMin\"\n [today]=\"today\"\n [showEvents]=\"showEvents\"\n [days]=\"weekModeDays\"\n [deviceSize]=\"deviceSize\"\n (dayClick)=\"onDayClick($event)\"\n (showEvent)=\"onShowTask()\"\n (deleteEvent)=\"deleteTask.emit($event)\"\n (editEvent)=\"editTask.emit($event)\"\n (daySelect)=\"daySelect.emit($event)\"\n ></bc-calendar-week>\n</ng-template>\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\r\nimport { CommonModule, TitleCasePipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { FundamentalNgxPlatformModule } from '@fundamental-ngx/platform';\r\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\r\nimport { CardModule } from '@fundamental-ngx/core/card';\r\nimport { QuickViewModule } from '@fundamental-ngx/core/quick-view';\r\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\r\n\r\nimport { BarsaNovinRayCoreModule } from 'barsa-novin-ray-core';\r\n\r\nimport { CalendarContainerComponent } from './calendar-container/calendar-container.component';\r\nimport { CalendarListComponent } from './calendar-list/calendar-list.component';\r\nimport { CalendarListContainerComponent } from './calendar-list-container/calendar-list-container.component';\r\nimport { CalendarListItemComponent } from './calendar-list-item/calendar-list-item.component';\r\nimport { CalendarWeekComponent } from './calendar-week/calendar-week.component';\r\nimport { CalendarMonthComponent } from './calendar-month/calendar-month.component';\r\nimport { CalendarService } from './services/calendar.service';\r\nimport { MonthDaysComponent } from './month-days/month-days.component';\r\nimport { DaysInWeekPipe } from './days-in-week.pipe';\r\nimport { EventDatePipe } from './event-date.pipe';\r\nimport { EventTimePipe } from './event-time.pipe';\r\nimport { FromToTimePipe } from './from-to-time.pipe';\r\nimport { EqualDatePipe } from './equal-date.pipe';\r\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\r\nimport { EventPreviewComponent } from './event-preview/event-preview.component';\r\nimport { DayNumberBoxComponent } from './day-number-box/day-number-box.component';\r\nimport { EventButtonComponent } from './event-button/event-button.component';\r\nimport { DayEventListComponent } from './day-event-list/day-event-list.component';\r\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\r\nimport { CalendarSelectionDaysComponent } from './calendar-selection-days/calendar-selection-days.component';\r\n\r\nconst components = [\r\n CalendarContainerComponent,\r\n CalendarListComponent,\r\n CalendarListContainerComponent,\r\n CalendarListItemComponent,\r\n CalendarWeekComponent,\r\n CalendarMonthComponent,\r\n MonthDaysComponent,\r\n CalendarHeaderComponent,\r\n EventPreviewComponent,\r\n DayNumberBoxComponent,\r\n EventButtonComponent,\r\n DayEventListComponent\r\n];\r\nconst pipes = [DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe];\r\n@NgModule({\r\n schemas: [NO_ERRORS_SCHEMA],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BarsaNovinRayCoreModule,\r\n FundamentalNgxCoreModule,\r\n FundamentalNgxPlatformModule,\r\n PopoverModule,\r\n CardModule,\r\n QuickViewModule\r\n ],\r\n declarations: [...components, ...pipes, DateTimePickerComponent, CalendarSelectionDaysComponent],\r\n providers: [TitleCasePipe, CalendarService, ...pipes],\r\n exports: [...components, DateTimePickerComponent, CalendarSelectionDaysComponent]\r\n})\r\nexport class BarsaCalendarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i8","i9.EventDatePipe","i4.EventPreviewComponent","i5.EventTimePipe","i5","i6.EventPreviewComponent","i7.DayNumberBoxComponent","i1.DaysInWeekPipe","i2.CalendarService","i6","i8.EventButtonComponent","i9.DayEventListComponent","i10","i11.EqualDatePipe","i1.CalendarService","i8.CalendarMonthComponent","i7","i11.CalendarMonthComponent","i7.CalendarSelectionDaysComponent","i6.DayNumberBoxComponent","i7.EventButtonComponent","i8.FromToTimePipe","i2.CalendarListItemComponent","i2.CalendarListComponent","i3.CalendarService","i4.CalendarListContainerComponent","i5.CalendarWeekComponent","i6.CalendarMonthComponent","i7.CalendarHeaderComponent"],"mappings":"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"}