@material-ui/lab
Version:
Material-UI Lab - Incubator for Material-UI React components.
29 lines (28 loc) • 1.86 kB
TypeScript
import * as React from 'react';
import { ExportedPickerProps } from './Picker';
import { ParsableDate } from '../constants/prop-types';
import { SomeWrapper, ExtendWrapper } from '../wrappers/Wrapper';
import { ResponsiveWrapper } from '../wrappers/ResponsiveWrapper';
import { AllAvailableViews } from '../typings/Views';
import { AllSharedPickerProps } from './SharedPickerProps';
import { ToolbarComponentProps } from '../typings/BasePicker';
declare type AllAvailableForOverrideProps = ExportedPickerProps<AllAvailableViews>;
export declare type AllPickerProps<T, TWrapper extends SomeWrapper = SomeWrapper> = T & AllSharedPickerProps & ExtendWrapper<TWrapper>;
export interface MakePickerOptions<T extends unknown> {
name: string;
/**
* Hook that running validation for the `value` and input.
*/
useValidation: (value: ParsableDate, props: T) => string | null;
/**
* Intercept props to override or inject default props specifically for picker.
*/
useInterceptProps: (props: AllPickerProps<T>) => AllPickerProps<T> & {
inputFormat: string;
};
DefaultToolbarComponent: React.ComponentType<ToolbarComponentProps>;
}
export declare type SharedPickerProps<TDate, TWrapper extends SomeWrapper> = ExtendWrapper<TWrapper> & AllSharedPickerProps<ParsableDate<TDate>, TDate | null> & React.RefAttributes<HTMLInputElement>;
declare type PickerComponent<TViewProps extends AllAvailableForOverrideProps, TWrapper extends SomeWrapper> = (props: TViewProps & SharedPickerProps<unknown, TWrapper>) => JSX.Element;
export declare function makePickerWithStateAndWrapper<T extends AllAvailableForOverrideProps, TWrapper extends SomeWrapper = typeof ResponsiveWrapper>(Wrapper: TWrapper, { name, useInterceptProps, useValidation, DefaultToolbarComponent }: MakePickerOptions<T>): PickerComponent<T, TWrapper>;
export {};