@focuson/form_components
Version:
Components that can be used by @focuson/forms
86 lines (85 loc) • 4.46 kB
TypeScript
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 {};