// Type definitions for bootstrap-year-calendar v1.1.0 // Project: https://github.com/Paul-DS/bootstrap-year-calendar // Definitions by: Paul David-Sivelle // Definitions: https://github.com/borisyankov/DefinitelyTyped /// /** * Represent a context menu item for the calendar. */ interface CalendarContextMenuItem { /** * The text of the menu item. */ text: string; /** * A function to be called when the item is clicked. */ click?: (event: T) => void; /** * The list of sub menu items. */ submenu?: CalendarContextMenuItem[]; } /** * Represent an element to display in the calendar. */ interface CalendarDataSourceElement { /** * The name of the element. Used for context menu or specific events. */ name?: string; /** * The color of the element. This property will be computed automatically if not defined. */ color?: string; /** * The date of the beginning of the element range. */ startDate: Date; /** * The date of the end of the element range. */ endDate: Date; /** * Indicates whether only the half of start day of the element range should be rendered. */ startHalfDay?: boolean; /** * Indicates whether only the half of last day of the element range should be rendered. */ endHalfDay?: boolean; } /** * Options used for calendar customization. */ interface CalendarOptions { /** * Specifies whether the user can select a range which overlapping an other element present in the datasource. */ allowOverlap?: boolean; /** * Specifies whether the beginning and the end of each range should be displayed as half selected day. */ alwaysHalfDay?: boolean; /** * Specifies the items of the default context menu. */ contextMenuItems?: CalendarContextMenuItem[]; /** * Specify a custom renderer for days. * This function is called during render for each day. */ customDayRenderer?: (element: JQuery, currentDate: Date) => void; /** * Specify a custom renderer for data source. Works only with the style set to "custom". * This function is called during render for each day containing at least one event. */ customDataSourceRenderer?: (element: JQuery, currentDate: Date, events: T[]) => void; /** * The elements that must be displayed on the calendar. */ dataSource?: T[]; /** * The days that must be displayed as disabled. */ disableDays?: Date[]; /** * The days of the week that must be displayed as disabled (0 for Sunday, 1 for Monday, etc.). */ disabledWeekDays?: int[]; /** * The days of the week that must not be displayed (0 for Sunday, 1 for Monday, etc.). */ hiddenWeekDays?: int[]; /** * Specifies whether the data source must be rendered on disabled days. */ displayDisabledDataSource?: boolean; /** * Specifies whether the weeks number are displayed. */ displayWeekNumber?: boolean; /** * Specifies whether the calendar header is displayed. */ displayHeader?: boolean; /** * Specifies whether the default context menu must be displayed when right clicking on a day. */ enableContextMenu?: boolean; /** * Specifies whether the range selection is enabled. */ enableRangeSelection?: boolean; /** * The language/culture used for calendar rendering. */ language?: string; /** * The date until which days are enabled. */ maxDate?: Date; /** * The date from which days are enabled. */ minDate?: Date; /** * Specifies whether the beginning and the end of each range should be displayed as rounded cells. */ roundRangeLimits?: boolean; /** * The year on which the calendar should be opened. */ startYear?: number; /** * Specifies the style used for displaying datasource ("background", "border" or "custom"). */ style?: string; /** * The starting day of the week. This option overrides the parameter define in the language file. */ weekStart?: number; /** * Function fired when a day is clicked. */ clickDay?: (e: CalendarClickEventObject) => void; /** * Function fired when a day is right clicked. */ dayContextMenu?: (e: CalendarDayEventObject) => void; /** * Function fired when the mouse enter on a day. */ mouseOnDay?: (e: CalendarDayEventObject) => void; /** * Function fired when the mouse leaves a day. */ mouseOutDay?: (e: CalendarDayEventObject) => void; /** * Function fired when the calendar rendering is ended. */ renderEnd?: (e: CalendarRenderEndEventObject) => void; /** * Function fired when a date range is selected. */ selectRange?: (e: CalendarRangeEventObject) => void; /** * Function fired when the visible year of the calendar is changed. */ yearChanged?: (e: CalendarYearChangedEventObject) => void; } interface CalendarDayEventObject { /** * The element that contain the fired day. */ element: JQuery; /** * The fired date. */ date: Date; /** * The data source elements present on the fired day. */ events: T[]; } interface CalendarClickEventObject extends CalendarDayEventObject { /** * The clicked button. */ which: number; } interface CalendarYearChangedEventObject { /** * The new year. */ currentYear: number; /** * Indicates whether the automatic render after year changing must be prevented. */ preventRendering: boolean; } interface CalendarRenderEndEventObject { /** * The rendered year. */ currentYear: number; } interface CalendarRangeEventObject { /** * The beginning of the selected range. */ startDate: Date; /** * The end of the selected range. */ endDate: Date; } /** * Calendar instance. */ interface Calendar { /** * Add a new element to the data source. This method causes a refresh of the calendar. * * @param element The element to add. */ addEvent(element: T): void; /** * Gets a value indicating whether the user can select a range which overlapping an other element present in the datasource. */ getAllowOverlap(): boolean; /** * Gets a value indicating whether the beginning and the end of each range should be displayed as half selected day. */ getAlwaysHalfDay(): boolean; /** * Gets the context menu items. */ getContextMenuItems(): CalendarContextMenuItem[]; /** * Gets the custom day renderer. */ getCustomDayRenderer(): (element: JQuery, currentDate: Date) => void; /** * Gets the custom data source renderer. */ getCustomDataSourceRenderer(): (element: JQuery, currentDate: Date, events: T[]) => void; /** * Gets the current data source. */ getDataSource(): T[]; /** * Gets the disabled days. */ getDisableDays(): Date[]; /** * Gets the disabled days of the week. */ getDisabledWeekDays(): int[]; /** * Gets the hidden days of the week. */ getHiddenWeekDays(): int[]; /** * Gets a value indicating whether the data source must be rendered on disabled days. */ getDisplayDisabledDataSource(): boolean; /** * Gets a value indicating whether the weeks number are displayed. */ getDisplayWeekNumber(): boolean; /** * Gets a value indicating whether the calendar header is displayed. */ getDisplayHeader(): boolean; /** * Gets a value indicating whether the default context menu must be displayed when right clicking on a day. */ getEnableContextMenu(): boolean; /** * Gets a value indicating whether the user can make range selection. */ getEnableRangeSelection(): boolean; /** * Gets the data source elements for a specified day. * * @param date The specified day. */ getEvents(date: Date): T[]; /** * Gets the data source elements for a specified range of days. * * @param startDate The beginning of the day range. * @param endDate The end of the day range. */ getEventsOnRange(startDate: Date, endDate: Date): T[]; /** * Gets the language used for calendar rendering. */ getLanguage(): string; /** * Gets the maximum date of the calendar. */ getMaxDate(): Date; /** * Gets the minimum date of the calendar. */ getMinDate(): Date; /** * Gets a value indicating whether the beginning and the end of each range should be displayed as rounded cells. */ getRoundRangeLimits(): void; /** * Gets the current style used for displaying data source. */ getStyle(): string; /** * Gets the starting day of the week. */ getWeekStart(): number; /** * Gets the week number for a specified date. * * @param date The specified date. */ getWeekNumber(Date: Date): number; /** * Gets the year displayed on the calendar. */ getYear(): number; /** * Renders the calendar. */ render(): void; /** * Sets a value indicating whether the user can select a range which overlapping an other element present in the datasource. * * @param allowOverlap Indicates whether the user can select a range which overlapping an other element present in the datasource. */ setAllowOverlap(allowOverlap: boolean): void; /** * Sets a value indicating whether the beginning and the end of each range should be displayed as half selected day. * This method causes a refresh of the calendar. * * @param alwaysHalfDay Indicates whether the beginning and the end of each range should be displayed as half selected day. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setAlwaysHalfDay(alwaysHalfDay: boolean, preventRedering: boolean?): void; /** * Sets new context menu items. This method causes a refresh of the calendar. * * @param contextMenuItems The new context menu items. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setContextMenuItems(contextMenuItems: CalendarContextMenuItem[], preventRedering: boolean?): void; /** * Sets the custom day renderer. This method causes a refresh of the calendar. * * @param handler The function used to render the days. This function is called during render for each day. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setCustomDayRenderer(handler: (element: JQuery, currentDate: Date) => void, preventRedering: boolean?): void; /** * Sets the custom data source renderer. Works only with the style set to "custom". This method causes a refresh of the calendar. * * @param handler The function used to render the data source. This function is called during render for each day containing at least one event. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setCustomDataSourceRenderer(handler: (element: JQuery, currentDate: Date, events: T[]) => void, preventRedering: boolean?): void; /** * Sets a new data source. This method causes a refresh of the calendar. * * @param dataSource The new data source. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDataSource(dataSource: T[], preventRedering: boolean?): void; /** * Sets the disabled days. This method causes a refresh of the calendar. * * @param disableDays The disabled days to set. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDisableDays(disableDays: Date[], preventRedering: boolean?): void; /** * Sets the disabled days of the week. This method causes a refresh of the calendar. * * @param disableDays The disabled days of the week to set. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDisabledWeekDays(disabledWeekDays: int[], preventRedering: boolean?): void; /** * Sets the hidden days of the week. This method causes a refresh of the calendar. * * @param hiddenWeekDays The hidden days of the week to set. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setHiddenWeekDays(hiddenWeekDays: int[], preventRedering: boolean?): void; /** * Sets a value indicating whether the data source must be rendered on disabled days. This method causes a refresh of the calendar. * * @param displayDisabledDataSource Indicates whether the data source must be rendered on disabled days. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDisplayDisabledDataSource(displayDisabledDataSource: boolean, preventRedering: boolean?): void; /** * Sets a value indicating whether the weeks number are displayed. This method causes a refresh of the calendar. * * @param displayWeekNumber Indicates whether the weeks number are displayed. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDisplayWeekNumber(displayWeekNumber: boolean, preventRedering: boolean?): void; /** * Sets a value indicating whether the calendar header is displayed. This method causes a refresh of the calendar. * * @param displayHeader Indicates whether the calendar header is displayed. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setDisplayHeader(displayHeader: boolean, preventRedering: boolean?): void; /** * Sets a value indicating whether the default context menu must be displayed when right clicking on a day. * This method causes a refresh of the calendar. * * @param enableContextMenu Indicates whether the default context menu must be displayed when right clicking on a day. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setEnableContextMenu(enableContextMenu: boolean, preventRedering: boolean?): void; /** * Sets a value indicating whether the user can make range selection. This method causes a refresh of the calendar. * * @param enableRangeSelection Indicates whether the user can make range selection. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setEnableRangeSelection(enableRangeSelection: boolean, preventRedering: boolean?): void; /** * Sets the language used for calendar rendering. This method causes a refresh of the calendar. * * @param language The language to use for calendar redering. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setLanguage(language: string, preventRedering: boolean?): void; /** * Sets the maximum date of the calendar. This method causes a refresh of the calendar. * * @param maxDate The maximum date to set. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setMaxDate(maxDate: Date, preventRedering: boolean?): void; /** * Sets the minimum date of the calendar. This method causes a refresh of the calendar. * * @param minDate The minimum date to set. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setMinDate(minDate: Date, preventRedering: boolean?): void; /** * Sets a value indicating whether the beginning and the end of each range should be displayed as rounded cells. * This method causes a refresh of the calendar. * * @param roundRangeLimits Indicates whether the beginning and the end of each range should be displayed as rounded cells. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setRoundRangeLimits(roundRangeLimits: boolean, preventRedering: boolean?): void; /** * Sets the style to use for displaying data source. This method causes a refresh of the calendar. * * @param style The style to use for displaying data source ("background", "border" or "custom"). * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setStyle(style: string, preventRedering: boolean?): void; /** * Sets the starting day of the week. This method causes a refresh of the calendar. * * @param year The starting day of the week. This option overrides the parameter define in the language file. * @param preventRedering Indicates whether the rendering should be prevented after the property update. */ setWeekStart(weekStart: number, preventRedering: boolean?): void; /** * Sets the year displayed on the calendar. * * @param year The year to displayed on the calendar. */ setYear(year: number): void; } /** * Basic calendar instance. */ interface BaseCalendar extends Calendar { } interface JQuery { /** * Create a new calendar. */ calendar(): BaseCalendar; /** * Create a new calendar. * * @param options The customization options. */ calendar(options: CalendarOptions): BaseCalendar; /** * Create a new calendar. * * @param options The customization options. */ calendar(options: CalendarOptions): Calendar; /** * Function fired when a day is clicked (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ clickDay(handler: (e: CalendarClickEventObject) => void): JQuery; /** * Function fired when a day is clicked (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ clickDay(handler: (e: CalendarClickEventObject) => void): JQuery; /** * Function fired when a day is right clicked (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ dayContextMenu(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when a day is right clicked (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ dayContextMenu(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when the mouse enter on a day (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ mouseOnDay(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when the mouse enter on a day (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ mouseOnDay(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when the mouse leaves a day (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ mouseOutDay(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when the mouse leaves a day (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ mouseOutDay(handler: (e: CalendarDayEventObject) => void): JQuery; /** * Function fired when the calendar rendering is ended (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ renderEnd(handler: (e: CalendarRenderEndEventObject) => void): JQuery; /** * Function fired when a date range is selected (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ selectRange(handler: (e: CalendarRangeEventObject) => void): JQuery; /** * Function fired when the visible year of the calendar is changed (for bootstrap-year-calendar only). * * @param handler A function to execute each time the event is triggered. */ yearChanged(handler: (e: CalendarYearChangedEventObject) => void): JQuery; }