import { Calendar } from 'vanilla-calendar-pro'; import { Options, Reset, Styles } from 'vanilla-calendar-pro/types'; class CustomVanillaCalendar extends Calendar { constructor(selector: HTMLElement | string, options?: Partial) { super(selector, options); const parentSet = this.set; this.set = (options: Options, resetOptions?: Partial) => { if (parentSet) parentSet.call(this, options, resetOptions); if (options.selectedTime && this.onChangeTime) { this.onChangeTime(this, null, true); } if (options.selectedMonth && this.onClickMonth) { this.onClickMonth(this, null); } if (options.selectedYear && this.onClickYear) { this.onClickYear(this, null); } }; } static get defaultStyles() { return { calendar: 'vc', controls: 'vc-controls', grid: 'vc-grid', column: 'vc-column', header: 'vc-header', headerContent: 'vc-header__content', month: 'vc-month', year: 'vc-year', arrowPrev: 'vc-arrow vc-arrow_prev', arrowNext: 'vc-arrow vc-arrow_next', wrapper: 'vc-wrapper', content: 'vc-content', months: 'vc-months', monthsMonth: 'vc-months__month', years: 'vc-years', yearsYear: 'vc-years__year', week: 'vc-week', weekDay: 'vc-week__day', weekNumbers: 'vc-week-numbers', weekNumbersTitle: 'vc-week-numbers__title', weekNumbersContent: 'vc-week-numbers__content', weekNumber: 'vc-week-number', dates: 'vc-dates', date: 'vc-date', dateBtn: 'vc-date__btn', datePopup: 'vc-date__popup', dateRangeTooltip: 'vc-date-range-tooltip', time: 'vc-time', timeContent: 'vc-time__content', timeHour: 'vc-time__hour', timeMinute: 'vc-time__minute', timeKeeping: 'vc-time__keeping', timeRanges: 'vc-time__ranges', timeRange: 'vc-time__range', }; } public logInfo() { console.log('This log is from CustomVanillaCalendar!', this); } } export default CustomVanillaCalendar;