UNPKG

@focuson/form_components

Version:

Components that can be used by @focuson/forms

86 lines (85 loc) 4.46 kB
import { NameAnd } from "@focuson/utils"; import { CommonStateProps, InputOnChangeProps, LabelAlignment } from "./common"; import { LensState, SetJsonReasonEvent } from "@focuson/state"; import { HasPathToLens, ModalContext } from "@focuson/pages"; import { Transform } from "@focuson/lens"; type DateFormat = string; export interface DatePickerDetails { dateFilter: (d: Date) => boolean; } export interface DateInfo { today: string; serverNow: string; holidays: Holidays[]; dateFormat: string; } export interface Holidays { date: string; jurisdiction: string; } export interface UsableDateInfo { today: Date; firstValidDate: Date | undefined; holidays: Date[]; } interface CommonDateRange<S, C> { allowWeekends?: boolean; allowHolidays?: boolean; defaultDay?: boolean; firstSelectableDatePath?: string; } export interface DateRangeInPast<S, C> extends CommonDateRange<S, C> { type: 'past'; } export interface DateRangeInFuture<S, C> extends CommonDateRange<S, C> { type: 'future'; minWorkingDaysBefore?: number; } export interface AnyDateRange<S, C> extends CommonDateRange<S, C> { } export type DateRange<S, C> = DateRangeInPast<S, C> | DateRangeInFuture<S, C> | AnyDateRange<S, C>; export declare const parseDate: (prefix: string, format: string) => (date: string) => Date | string[]; type DateValidation = (date: Date) => string[]; interface DateErrorMessageOptionals { isInPast?: string; isWeekend?: string; isHoliday?: string; beforeFirstValid?: string; } export interface DateErrorMessage { isInPast: string; isWeekend: string; isHoliday: string; beforeFirstValid: string; } export declare const defaultDateErrorMessage: DateErrorMessage; export declare function errorsAnd<T>(ds: (T | string[])[]): [string[], T[]]; export declare function errorsAndT<T>(d: (T | string[])): [string[], T | undefined]; export declare function validateDateInfo<S, C>(dateInfo: DateInfo | undefined, targetJurisdiction: string | undefined, dateRange: DateRange<S, C>, firstValidDate: Date | undefined, dateErrorMessage: DateErrorMessage, debug?: boolean): UsableDateInfo | string[]; export declare function firstAllowedDate<S, C>(today: Date | undefined, holidays: Date[], dateRange: DateRange<S, C>, firstValidDate: Date | undefined, dateErrorMessage: DateErrorMessage): Date; export declare function acceptDateForTest<S, C extends HasPathToLens<S>>(state: LensState<S, any, C>, jurisdiction: string | undefined, dateInfo: DateInfo, dateRange: DateRange<S, C>, dateFormat: string, dateErrorMessage: DateErrorMessage): DateValidation; interface InfoTheDatePickerNeeds { dateAcceptor: (d: Date) => string[]; dateFilter: (d: Date) => boolean; holidays: Date[]; defaultDate: Date | undefined; } export declare function calcInfoTheDatePickerNeeds<S, C extends HasPathToLens<S>>(id: string, state: LensState<S, any, C>, jurisdiction: string | undefined, dateInfo: DateInfo | undefined, dateFormat: DateFormat, dateRange: undefined | DateRange<S, C>, dateErrorMessage: DateErrorMessage, debug: boolean): InfoTheDatePickerNeeds; export interface DatePickerProps<S, C> extends CommonStateProps<S, string, C>, InputOnChangeProps<S, C>, LabelAlignment { label: string; readonly?: boolean; allButtons: NameAnd<JSX.Element>; buttons?: string[]; dateFormat: DateFormat; showMonthYearPicker?: boolean; dateRange?: DateRange<S, C>; jurisdiction?: LensState<S, string, C>; dateInfo?: LensState<S, any, C>; dateErrorMessage?: DateErrorMessageOptionals; } export type DatePickerSelectFn = <S extends any, C extends ModalContext<S>>(debug: boolean, props: DatePickerProps<S, C>) => (eventName: SetJsonReasonEvent, date: string | undefined) => void; export declare const defaultDatePickerWithExtraTxs: <S extends unknown, C extends ModalContext<S>>(txs: (props: DatePickerProps<S, C>, value: string | undefined) => Transform<S, any>[]) => (debug: boolean, props: DatePickerProps<S, C>) => (eventName: SetJsonReasonEvent, date: string | undefined) => void; export declare const defaultDatePickerOnCheck: DatePickerSelectFn; export declare function RawDatePicker<S extends any, C extends ModalContext<S>>(selectFn: DatePickerSelectFn): (props: DatePickerProps<S, C>) => import("react/jsx-runtime").JSX.Element; export declare function DatePicker<S extends any, C extends ModalContext<S>>(props: DatePickerProps<S, C>): JSX.Element; export {};