UNPKG

@fremtind/jkl-datepicker-react

Version:
191 lines (190 loc) 8.99 kB
/*** * MIT License * * Copyright (c) 2017 Deseret Digital Media. 2022 Fremtind Forsikring AS. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import type { ValuePair } from "@fremtind/jkl-core"; import React from "react"; import type { YearsToShow } from "../types"; export declare function composeEventHandlers(...fns: Array<React.MouseEventHandler | undefined>): (event: React.MouseEvent) => boolean; /** * Takes a calendars array and figures out the number of months to subtract * based on the current offset and the minDate allowed. * @param {Object} param The param object * @param {Array} param.calendars The calendars array created by the getCalendars function * @param {Number} param.offset The num of months to be subtracted * @param {Date} param.minDate The earliest date we are allow to subtract back to * @returns {Number} The number of months to subtract */ export declare function subtractMonth({ calendars, offset, minDate, }: { calendars: CalendarMonth[]; offset: number; minDate?: Date; }): number; export declare const DEFAULT_YEARS_TO_SHOW = 3; /** * Generates an array of year strings for a year selector component, with min and max dates taken into account. * * @param {number} currentYear - The current year to center the list around * @param {Date | undefined} [minDate] - The minimum date to include in the list of years * @param {Date | undefined} [maxDate] - The maximum date to include in the list of years * * @returns {string[]} - An array of year strings, starting from the earliest year specified by minDate or currentYear - 3, and ending at the latest year specified by maxDate or currentYear + 3 */ export declare function getYearSelectOptions(currentYear: number, minDate: Date | undefined, maxDate: Date | undefined, yearsToShow: YearsToShow): string[]; /** * Returns an array of months that are allowed for selection in the current year based on the minimum and maximum dates. * @param {number} currentYear The current year * @param {string[]} monthNames An array of strings representing the month names * @param {Date | undefined} minDate The minimum date that is allowed for selection * @param {Date | undefined} maxDate The maximum date that is allowed for selection * @returns {ValuePair[]} An array of ValuePairs representing the months that are allowed for selection in the current year */ export declare function getMonthSelectOptions(currentYear: number, monthNames: string[], minDate: Date | undefined, maxDate: Date | undefined): ValuePair[]; /**s * Takes a calendars array and figures out the number of months to add * based on the current offset and the maxDate allowed. * @param {Object} param The param object * @param {Array} param.calendars The calendars array created by the getCalendars function * @param {Number} param.offset The num of months to be added * @param {Date} param.maxDate The furthest date we are allow to add forward to * @returns {Number} The number of months to add */ export declare function addMonth({ calendars, offset, maxDate, }: { calendars: CalendarMonth[]; offset: number; maxDate?: Date; }): number; /** * Takes a calendars array and figures out if the back button should be * disabled based on the minDate allowed. * @param {Object} param The param object * @param {Array} param.calendars The calendars array created by the getCalendars function * @param {Date} param.minDate The earliest date available * @returns {Boolean} Whether the back button should be disabled. */ export declare function isBackDisabled({ calendars, minDate, }: { calendars: CalendarMonth[]; minDate?: Date; }): boolean; /** * Takes a calendars array and figures out if the forward button should be * disabled based on the maxDate allowed. * @param {Object} param The param object * @param {Array} param.calendars The calendars array created by the getCalendars function * @param {Date} param.maxDate The furthest date available * @returns {Boolean} Whether the forward button should be disabled. */ export declare function isForwardDisabled({ calendars, maxDate, }: { calendars: CalendarMonth[]; maxDate?: Date; }): boolean; type GetCalendarProps = { /** The date to start the calendar at */ date: Date; /** Date or dates currently selected. */ selected?: Date | Date[]; /** The earliest date available */ minDate?: Date; /** The earliest date available */ maxDate?: Date; /** The number of months to return in the calendar view */ monthsToDisplay: number; /** The number of months to offset based off the param.date given */ offset: number; /** First day of week, 0-6 (Sunday to Saturday) */ firstDayOfWeek: number; /** Flag to fill front and back weeks with dates from adjacent months */ showOutsideDays: boolean; }; /** * Figures out the months data needed based off the number of monthsToDisplay * and other options provided. * @param {Object} param The param object * @param {Date} param.date The date to start the calendar at * @param {Array.<Date>} param.selected An array of dates currently selected * @param {Number} param.monthsToDisplay The number of months to return in the calendar view * @param {Number} param.offset The number of months to offset based off the param.date given * @param {Date} param.minDate The earliest date available * @param {Date} param.maxDate The furthest date available * @param {Number} param.firstDayOfWeek First day of week, 0-6 (Sunday to Saturday) * @param {Bool} param.showOutsideDays Flag to fill front and back weeks with dates from adjacent months * @returns {Array.<Object>} An array of objects with month data */ export declare function getCalendars({ date, selected, monthsToDisplay, offset, minDate, maxDate, firstDayOfWeek, showOutsideDays, }: GetCalendarProps): CalendarMonth[]; export type CalendarMonth = { firstDayOfMonth: Date; lastDayOfMonth: Date; month: number; year: number; weeks: CalendarWeek[]; }; export type CalendarWeek = CalendarDay[]; export type CalendarDay = DateInfo | string; export type DateInfo = { date: Date; selected: boolean; selectable: boolean; today: boolean; prevMonth: boolean; nextMonth: boolean; }; /** * Check if two Date objects represent the same day * * @param date1 first Date to compare * @param date2 second Date to compare */ export declare function isSameDay(date1: Date, date2: Date): boolean; /** * Check if the date has changed from the previous date * * @param date First date to compare * @param newDate Second date to compare */ export declare function dateHasChanged(date: Date | undefined, newDate: Date): boolean; /** * Check if a given date is outside a given range * * @param date Input date * @param rangeStart Dates before this date should be disabled * @param rangeEnd Dates after this date should be disabled */ export declare function dateIsOutsideRange(date: Date, rangeStart: Date | undefined, rangeEnd: Date | undefined): boolean; /** * Get the correct initial date for initiating the datepicker reducer store * * @param value Value from props * @param initialDate Initial date from porps * @param disableDate Function for checking whether the date should be disabled */ export declare function getInitialDate(value: string | undefined, defaultValue: string | undefined, minDate: Date | undefined, maxDate: Date | undefined): Date | null; /** * Get the initial date to show in the calendar * * @param date The date set in the DatePicker (from props) * @param defaultSelected The defaultSelected prop from DatePicker * @param minDate The earliest selectable date, from props * @param maxDate The latest selectable date, from props * @returns The date to show in the calendar */ export declare function getInitialDateShown(date: Date | null, defaultSelected: Date | undefined, minDate: Date | undefined, maxDate: Date | undefined): Date; export {};