UNPKG

ngx-custom-date-range-selector

Version:
1 lines 30.4 kB
{"version":3,"file":"ngx-custom-date-range-selector.mjs","sources":["../../../projects/ngx-custom-date-range-selector/src/lib/ngx-custom-date-range-selector.service.ts","../../../projects/ngx-custom-date-range-selector/src/lib/utils/custom-date-range-selector-type.enum.ts","../../../projects/ngx-custom-date-range-selector/src/lib/custom-date-range-picker/custom-date-range-picker.component.ts","../../../projects/ngx-custom-date-range-selector/src/lib/custom-date-range-picker/custom-date-range-picker.component.html","../../../projects/ngx-custom-date-range-selector/src/lib/ngx-custom-date-range-selector.component.ts","../../../projects/ngx-custom-date-range-selector/src/lib/ngx-custom-date-range-selector.component.html","../../../projects/ngx-custom-date-range-selector/src/lib/utils/custom-adapter.ts","../../../projects/ngx-custom-date-range-selector/src/lib/ngx-custom-date-range-selector.module.ts","../../../projects/ngx-custom-date-range-selector/src/public-api.ts","../../../projects/ngx-custom-date-range-selector/src/ngx-custom-date-range-selector.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxCustomDateRangeSelectorService {\n\n constructor() { }\n}\n","\r\nexport enum CustomDateRangeSelectorType {\r\n Today = 'today',\r\n Yesterday = 'yesterday',\r\n LastSevenDays = 'lastSevenDays',\r\n LastWeek = 'lastWeek',\r\n LastTwoWeeks = 'lastTwoWeeks',\r\n LastThirtyDays = 'lastThirtyDays',\r\n ThisMonth = 'thisMonth',\r\n LastMonth = 'lastMonth',\r\n CustomRange = 'customRange'\r\n}\r\n\r\nexport interface ICustomDateRangeSelector {\r\n dateStart?: Date | null;\r\n dateEnd?: Date | null;\r\n typeSelector?: CustomDateRangeSelectorType;\r\n cancel?: boolean;\r\n}","import { Component, ElementRef, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport * as moment from 'moment/moment';\r\nimport { MatCalendar } from '@angular/material/datepicker';\r\nimport { MatDialogConfig, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { CustomDateRangeSelectorType, ICustomDateRangeSelector } from '../utils/custom-date-range-selector-type.enum';\r\n\r\n@Component({\r\n selector: 'ngx-custom-date-range-picker',\r\n templateUrl: './custom-date-range-picker.component.html',\r\n styleUrls: ['./custom-date-range-picker.component.scss']\r\n})\r\nexport class CustomDateRangePickerComponent implements OnInit {\r\n dateOne: Date | null | undefined;\r\n dateTwo: Date | null | undefined;\r\n\r\n maxDate: Date | null | undefined;\r\n minDate: Date | null | undefined;\r\n\r\n currentCustomDateRangeSelectorType: CustomDateRangeSelectorType | undefined;\r\n\r\n @ViewChild('calendarOne', { static: false }) calendarOne: MatCalendar<Date> | undefined;\r\n @ViewChild('calendarTwo', { static: false }) calendarTwo: MatCalendar<Date> | undefined;\r\n\r\n private triggerElementRef: ElementRef | undefined;\r\n private customDataParent: ICustomDateRangeSelector | undefined;\r\n\r\n public get customDateRangeSelectorType(): typeof CustomDateRangeSelectorType {\r\n return CustomDateRangeSelectorType;\r\n }\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<CustomDateRangePickerComponent>,\r\n private dateAdapter: DateAdapter<any>,\r\n @Inject(MAT_DIALOG_DATA) public data: any\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.dateAdapter.setLocale('es-HN');\r\n this.getData();\r\n // this.positionedPicker();\r\n }\r\n\r\n getData(): void {\r\n this.triggerElementRef = this.data.trigger;\r\n this.customDataParent = this.data.customDateRangeSelector;\r\n\r\n this.currentCustomDateRangeSelectorType = this.customDataParent?.typeSelector;\r\n if (this.currentCustomDateRangeSelectorType !== CustomDateRangeSelectorType.CustomRange) {\r\n this.selectType(this.currentCustomDateRangeSelectorType!, false);\r\n } else {\r\n this.dateOne = this.customDataParent?.dateStart;\r\n this.dateTwo = this.customDataParent?.dateEnd;\r\n this.validOrInvalidMaxAndMinDates(true);\r\n }\r\n }\r\n\r\n positionedPicker(): void {\r\n const matDialogConfig: MatDialogConfig = new MatDialogConfig();\r\n const rect = this.triggerElementRef?.nativeElement.getBoundingClientRect();\r\n matDialogConfig.position = { top: `${rect.bottom + 10}px` };\r\n\r\n this.dialogRef.updatePosition(matDialogConfig.position);\r\n }\r\n\r\n closePicker(): void {\r\n const customDateRangeSelector: ICustomDateRangeSelector = {\r\n dateEnd: this.customDataParent?.dateEnd,\r\n dateStart: this.customDataParent?.dateStart,\r\n typeSelector: this.customDataParent?.typeSelector,\r\n cancel: true\r\n };\r\n this.dialogRef.close(customDateRangeSelector);\r\n }\r\n\r\n outputData(): void {\r\n const customDateRangeSelector: ICustomDateRangeSelector = {\r\n dateEnd: this.dateTwo,\r\n dateStart: this.dateOne,\r\n typeSelector: this.currentCustomDateRangeSelectorType,\r\n cancel: false\r\n };\r\n\r\n this.dialogRef.close(customDateRangeSelector);\r\n }\r\n\r\n changeDate(selectedDate: Date, isDateOne: boolean): void {\r\n if (isDateOne) {\r\n this.dateOne = selectedDate;\r\n } else {\r\n this.dateTwo = selectedDate;\r\n }\r\n this.currentCustomDateRangeSelectorType = CustomDateRangeSelectorType.CustomRange;\r\n this.validOrInvalidMaxAndMinDates(true);\r\n }\r\n\r\n get getFormatDateOne(): string {\r\n return moment(this.dateOne).locale('es-ES').format('dddd, D [de] MMMM [del] YYYY');\r\n }\r\n\r\n get getFormatDateTwo(): string {\r\n return moment(this.dateTwo).locale('es-ES').format('dddd, D [de] MMMM [del] YYYY');\r\n }\r\n\r\n selectType(type: CustomDateRangeSelectorType, fromButton: boolean): void {\r\n this.currentCustomDateRangeSelectorType = type;\r\n\r\n if (type === CustomDateRangeSelectorType.Today) {\r\n this.dateOne = this.getCurrentDate;\r\n this.dateTwo = this.getCurrentDate;\r\n } else if (type === CustomDateRangeSelectorType.Yesterday) {\r\n this.dateOne = moment(this.getCurrentDate).subtract(1, 'days').toDate();\r\n this.dateTwo = moment(this.getCurrentDate).subtract(1, 'days').toDate();\r\n } else if (type === CustomDateRangeSelectorType.LastSevenDays) {\r\n this.dateOne = moment(this.getCurrentDate).subtract(1, 'week').toDate();\r\n this.dateTwo = this.getCurrentDate;\r\n } else if (type === CustomDateRangeSelectorType.LastWeek) {\r\n const dayLastWeek = moment(this.getCurrentDate).subtract(1, 'week').toDate();\r\n this.dateOne = moment(dayLastWeek).startOf('isoWeek').toDate();\r\n this.dateTwo = moment(dayLastWeek).endOf('isoWeek').toDate();\r\n } else if (type === CustomDateRangeSelectorType.LastTwoWeeks) {\r\n const dayLastWeek = moment(this.getCurrentDate).subtract(1, 'week').toDate();\r\n const dayTwoWeeksAgo = moment(this.getCurrentDate).subtract(2, 'week').toDate();\r\n this.dateOne = moment(dayTwoWeeksAgo).startOf('isoWeek').toDate();\r\n this.dateTwo = moment(dayLastWeek).endOf('isoWeek').toDate();\r\n } else if (type === CustomDateRangeSelectorType.LastThirtyDays) {\r\n this.dateOne = moment(this.getCurrentDate).subtract(1, 'month').toDate();\r\n this.dateTwo = moment(this.getCurrentDate).toDate();\r\n } else if (type === CustomDateRangeSelectorType.LastMonth) {\r\n const dayLastMonth = moment(this.getCurrentDate).subtract(1, 'month').toDate();\r\n this.dateOne = moment(dayLastMonth).startOf('month').toDate();\r\n this.dateTwo = moment(dayLastMonth).endOf('month').toDate();\r\n } else if (type === CustomDateRangeSelectorType.ThisMonth) {\r\n this.dateOne = moment(this.getCurrentDate).startOf('month').toDate();\r\n this.dateTwo = moment(this.getCurrentDate).endOf('month').toDate();\r\n }\r\n\r\n if (type !== CustomDateRangeSelectorType.CustomRange) {\r\n this.validOrInvalidMaxAndMinDates(false);\r\n\r\n this.changeMonthView(this.dateOne!, true);\r\n this.changeMonthView(this.dateTwo!, false);\r\n\r\n if (fromButton) {\r\n this.outputData();\r\n }\r\n }\r\n }\r\n\r\n changeMonthView(date: Date, isCalendarOne: boolean): void {\r\n setTimeout(() => {\r\n if (isCalendarOne) {\r\n this.calendarOne?._goToDateInView(date, 'month');\r\n } else {\r\n this.calendarTwo?._goToDateInView(date, 'month');\r\n }\r\n }, 50);\r\n }\r\n\r\n validOrInvalidMaxAndMinDates(valid: boolean): void {\r\n this.maxDate = valid ? (this.maxDate = this.dateTwo) : (this.maxDate = null);\r\n this.minDate = valid ? (this.minDate = this.dateOne) : (this.minDate = null);\r\n }\r\n\r\n getStyleItemType(type: CustomDateRangeSelectorType): {} {\r\n const typeString: string = type.valueOf();\r\n let style = {};\r\n for (let item in CustomDateRangeSelectorType) {\r\n if (item.toUpperCase() === typeString.toUpperCase() && type === this.currentCustomDateRangeSelectorType) {\r\n style = { border: '1px solid #0097dc', color: '#ffffff', background: '#0097dc' };\r\n break;\r\n }\r\n }\r\n return style;\r\n }\r\n\r\n get getCurrentDate(): Date {\r\n const date: Date = new Date();\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\r\n }\r\n}\r\n","<mat-dialog-content>\r\n <div class=\"main\">\r\n <div class=\"column-calendar\">\r\n <mat-calendar #calendarOne [maxDate]=\"maxDate\" [(selected)]=\"dateOne\" (selectedChange)=\"changeDate($event, true)\"></mat-calendar>\r\n <span *ngIf=\"dateOne\" class=\"date-label\">{{ getFormatDateOne }}</span>\r\n </div>\r\n <div class=\"column-calendar\">\r\n <mat-calendar #calendarTwo [minDate]=\"minDate\" [(selected)]=\"dateTwo\" (selectedChange)=\"changeDate($event, false)\"></mat-calendar>\r\n <span *ngIf=\"dateTwo\" class=\"date-label\">{{ getFormatDateTwo }}</span>\r\n </div>\r\n <div class=\"controls\">\r\n <div (click)=\"selectType(customDateRangeSelectorType.Today, true)\" class=\"item-option\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.Today)\">Hoy</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.Yesterday, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.Yesterday)\" class=\"item-option\">Ayer</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.LastSevenDays, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.LastSevenDays)\" class=\"item-option\">Últimos 7 días</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.LastWeek, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.LastWeek)\" class=\"item-option\">Última semana</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.LastTwoWeeks, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.LastTwoWeeks)\" class=\"item-option\">Últimas 2 semanas</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.LastThirtyDays, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.LastThirtyDays)\" class=\"item-option\">Últimos 30 días</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.ThisMonth, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.ThisMonth)\" class=\"item-option\">Este mes</div>\r\n <div (click)=\"selectType(customDateRangeSelectorType.LastMonth, true)\" [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.LastMonth)\" class=\"item-option\">Último mes</div>\r\n <div [ngStyle]=\"getStyleItemType(customDateRangeSelectorType.CustomRange)\" class=\"item-option\">Rango personalizado</div>\r\n <div class=\"buttons\">\r\n <div class=\"button apply\" (click)=\"outputData()\">Aplicar</div>\r\n <div class=\"button cancel\" (click)=\"closePicker()\">Cancelar</div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n ","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as moment from 'moment/moment';\r\nimport { CustomDateRangePickerComponent } from './custom-date-range-picker/custom-date-range-picker.component';\r\nimport { ICustomDateRangeSelector } from './utils/custom-date-range-selector-type.enum';\r\n\r\n@Component({\r\n selector: 'ngx-custom-date-range-selector',\r\n templateUrl: './ngx-custom-date-range-selector.component.html',\r\n styleUrls: ['./ngx-custom-date-range-selector.component.scss'],\r\n})\r\nexport class NgxCustomDateRangeSelectorComponent implements OnInit {\r\n @Input() customDateRangeSelector: ICustomDateRangeSelector | undefined;\r\n @Output() change: EventEmitter<ICustomDateRangeSelector> = new EventEmitter<ICustomDateRangeSelector>();\r\n\r\n constructor(private matDialog: MatDialog) {}\r\n\r\n ngOnInit() {}\r\n\r\n openCustomDateRangeSelector(event: any): void {\r\n const target = new ElementRef(event.currentTarget);\r\n const dialogRef = this.matDialog.open(CustomDateRangePickerComponent, {\r\n panelClass: 'custom-date-range-selecter',\r\n disableClose: true,\r\n data: { trigger: target, customDateRangeSelector: this.customDateRangeSelector }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe((data) => {\r\n this.change.emit(data);\r\n });\r\n }\r\n\r\n get getFormatDateRange(): string {\r\n const start = this.customDateRangeSelector?.dateStart;\r\n const end = this.customDateRangeSelector?.dateEnd;\r\n\r\n const partsStart = moment(start).locale('es-MX').format('dddd D MMMM YYYY').split(' ');\r\n const partsEnd = moment(end).locale('es-MX').format('dddd D MMMM YYYY').split(' ');\r\n\r\n const dayStart = partsStart[0].charAt(0).toUpperCase() + partsStart[0].slice(1);\r\n const dateStart = partsStart[1];\r\n const monthStart = partsStart[2].charAt(0).toUpperCase() + partsStart[2].slice(1);\r\n const yearStart = partsStart[3];\r\n const formatStart = `${dayStart.slice(0, 3)}, ${monthStart.slice(0, 3)} ${dateStart}, ${yearStart}`;\r\n\r\n const dayEnd = partsEnd[0].charAt(0).toUpperCase() + partsEnd[0].slice(1);\r\n const dateEnd = partsEnd[1];\r\n const monthEnd = partsEnd[2].charAt(0).toUpperCase() + partsEnd[2].slice(1);\r\n const yearEnd = partsEnd[3];\r\n const formatEnd = `${dayEnd.slice(0, 3)}, ${monthEnd.slice(0, 3)} ${dateEnd}, ${yearEnd}`;\r\n\r\n return `${formatStart} - ${formatEnd}`;\r\n }\r\n}\r\n","<div class=\"container\" (click)=\"openCustomDateRangeSelector($event)\">\r\n <div class=\"date-title\">{{getFormatDateRange}}</div>\r\n <mat-icon class=\"icon\">date_range</mat-icon>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { NativeDateAdapter } from '@angular/material/core';\r\n\r\n@Injectable()\r\nexport class CustomAdapter extends NativeDateAdapter {\r\n override getFirstDayOfWeek(): number {\r\n return 1;\r\n }\r\n}\r\n","import { LOCALE_ID, NgModule } from '@angular/core';\r\nimport { CommonModule, registerLocaleData } from '@angular/common';\r\nimport { DateAdapter, MatNativeDateModule, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport localeesHN from '@angular/common/locales/es-HN';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { NgxCustomDateRangeSelectorComponent } from './ngx-custom-date-range-selector.component';\r\nimport { CustomDateRangePickerComponent } from './custom-date-range-picker/custom-date-range-picker.component';\r\nimport { CustomAdapter } from './utils/custom-adapter';\r\n\r\nregisterLocaleData(localeesHN, 'es');\r\n@NgModule({\r\n declarations: [NgxCustomDateRangeSelectorComponent, CustomDateRangePickerComponent],\r\n imports: [\r\n CommonModule,\r\n MatDialogModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule\r\n ],\r\n providers: [\r\n { provide: MAT_DATE_LOCALE, useValue: 'es-HN' },\r\n { provide: LOCALE_ID, useValue: 'es' },\r\n { provide: DateAdapter, useClass: CustomAdapter }\r\n ],\r\n exports: [NgxCustomDateRangeSelectorComponent, CustomDateRangePickerComponent]\r\n})\r\nexport class NgxCustomDateRangeSelectorModule {}\r\n","/*\n * Public API Surface of ngx-custom-date-range-selector\n */\n\nexport * from './lib/ngx-custom-date-range-selector.service';\nexport * from './lib/ngx-custom-date-range-selector.component';\nexport * from './lib/custom-date-range-picker/custom-date-range-picker.component';\nexport * from './lib/utils/custom-date-range-selector-type.enum';\nexport * from './lib/ngx-custom-date-range-selector.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}